[Powered by Google Translate] [Java 8] [David J Malan] [Universiteti i Harvardit] [Kjo është CS50.] [CS50.TV] Mirëpritur mbrapa. Kjo është CS50, dhe ky është fillimi i javës 8. Një çift i mundësive të kësaj jave, në mesin e tyre këtë diskutim këtu, në të cilën disa ushqime do të shërbehet. Për më shumë detaje shikoni slides që janë online. Dhe gjithashtu një tjetër ngjarje e kësaj jave nga vet Carriero tonë Thomas. Ai është një nga miqtë e CS50 mësimdhënies ish-kreu i cili është tani në Dropbox, dhe ai është djalosh i cili i tëri na me ju e dini se çfarë, kështu që nëse ju doni më shumë të atij kokën me pëshpëritjet e tyre këtë pasdite për Dropbox dhe më shumë. CS50 drekë është kjo e premte. A na bashkohen në qoftë se ju jeni në gjendje, 01:15, si zakonisht, në zjarr dhe akull. Dhe tani ne pikiatë në diçka të quajtur Seminare. Seminare CS50 tanë, kujtoj, janë këto klasa fakultative udhëhequr nga shokët e mësimdhënies dhe asistentë kurs dhe miqtë e kursit, folks nga një grup në kampus quajtur ABCD, e cila është një grup i technophiles në kampus, si dhe një grup të quajtur HCS, Shoqëria kompjuterike Harvardit, studentë të cilët janë të interesuar në mënyrë të ngjashme në informatikë. Regjistri i këtij viti i seminareve përfshin seminare për Android dhe iOS dhe JavaScript dhe PHP, Unix, Vim, dhe më shumë, në mënyrë të kuptojë se këto seminare janë të ardhur deri. Nëse ju dëshironi të RSVP për ndonjë prej tyre shkojnë në atë URL atje. Ne pastaj do të postoni në faqen e internetit kursin e herë dhe vendet kur ata janë finalizuar. Por e di se ka vlerë 5 vjeçare e seminareve të mëparshme në dispozicion online, shumë prej të cilave janë ende shumë aktuale në drejtim të teknologjive ju mund të duan të luajnë me të për projektet tuaja finale, kështu që shkojnë atje për disa video në dispozicion të tyre. CSS, ata prej jush të cilët janë të njohur me CSS tashmë, çfarë është ajo në një fjalë? Çfarë është CSS? Është Cascading fletë stili, dhe çfarë do të thotë kjo? Çfarë do të bëni për ne, CSS? Të gjithë të drejtë, le të ngrohtë deri me një e më të lehtë, HTML, HyperText Markup Language. Çfarë do të bëni për ne? Çdokush në të gjitha? Është me të vërtetë duke kërkuar këto pyetje të vështirë. HTML, HyperText Markup Language. Po? Jo? [Përgjigja e padëgjueshme Student] Mirë, mirë, ai na lejon për të shënuar deri tekstit të shfaqur në një shfletues web. Kjo nuk është një gjuhë programimi. Kjo është me të vërtetë një gjuhë markup, që do të thotë se udhëzon shfletuesit se si për të shfaqur informacion, kështu që mishërimi i thjeshtë këtë si ne kemi parë është diçka e thjeshtë si super boldfacing, hapur parantezë parantezë b mbyllura thotë të bëjë ky tekst bold, dhe kjo është në fakt vetëm një nga shumë mënyra në të cilën ne mund ta bëjmë këtë, dhe në të vërtetë, këto ditë një qasje më të mirë stylizing për faqen tuaj të internetit, duke bërë gjëra të guximshme dhe Italics dhe u përqendrua dhe justifikuar dhe si, nuk është bërë me anë të HTML tags vetmuar por me një teknikë të quajtur CSS, Cascading Style Sheets. Kjo është një gjuhë në vetvete. Edhe ajo nuk është një gjuhë programimi, por- të gjithë, kjo është Dan, i cili mban bashkuar me ne sot. Disa vështirësi teknike. Nuk është një problem. CSS na lejon të stilizoj një faqe duke vendosur se çfarë janë quajtur pronat, kështu që le të marrin një vështrim në këtë me anë të disa shembujve bazë. Më lejoni të shkoj në aplikim sot. Unë kam 8 dosjen burim hënën në këtu, dhe unë jam duke shkuar për të shkuar në një direktori të quajtur CSS, ku ne kemi një bandë e tërë e dosjeve duke pritur për ne të drejtë këtu, dhe në këtë dosje ne kemi, për shembull, search0.html nga koha e kaluar. Tani, kujtojnë me search0 ne e kemi lënë në këtë shënim nga lloj i zbatimit Google apo me të vërtetë vetëm fundin e përparme për atë një javë apo më shumë më parë, dhe vini re se ne kishim disa etiketa të reja atje. Ne kishim h1 për një titull të madh, të guximshme, formë, e cila na lejohet që në fakt kanë një formë HTML për input të përdoruesit. Veprim, ajo ishte domethënia e një atribut të veprimit në HTML tag formë? Cili ishte kuptimi i këtij veprimi,? Unë vetëm do të bëj këtë sot. Veprimi është destinacioni ku formulari do të dorëzohet. Fakti se që thotë veprim = "google.com / kërko" do të thotë se kur përdoruesi klikimeve butonin paraqesë ose ekuivalent çfarëdo forme Fushat ata plotësuar do të dërgohen për të mos serverin tonë apo aplikim tonë, por më tepër për atë URL të veçantë në Google. Dhe metoda se do të përdorë quhet marrë, dhe për të marrë, tani për tani, është vetëm një teknikë për kalimin informacion së bashku në një web server me mënyrën e URL, kështu që le të marrin një vështrim të shpejtë mbrapa se si kjo funksionon. Vini re se ka një input emri i të cilit është q Lloji i të cilit është teksti dhe pastaj një input i dytë i llojit të paraqesë vlera e të cilit është CS50 Search, dhe në të vërtetë, në qoftë se ne hapim këtë skedë këtu, search0.html, kjo është një formë super të thjeshtë, dhe në qoftë se unë kërkoni për diçka si shkenca kompjuterike dhe pastaj hit enter ose kliko mbi CS50 Kërko vini re se ajo që ndodh është përtej marrjen në Google Unë e kam përfunduar në mënyrë specifike deri në këtë URL në krye, google.com / Search? q = + kompjuter shkenca, shkenca kompjuterike dhe është padyshim ajo që unë typed in Shenja + thjesht do të thotë se ku ishte një karakter hapësirë, dhe kjo është bërë nga shfletuesi vetëm për të siguruar se nuk ka asnjë konfuzion dhe hapësirë ​​të bardhë në URL aktuale. Dhe pastaj q, sigurisht, është emri parametri. Ne nuk kemi parë se si ne, programues, në fakt mund të hyni në q ende. Ne mund të supozojmë se Google e di se çfarë të bëjë me këtë këtu, por ne do të merrni atje në kohën e duhur sot. Por më lejoni të marrë një sy në vend search1.html, e cila duket pak më ndryshe, sepse unë kam vendosur që kjo formë këtu ishte vetëm pak çalë. Unë do të thotë, kjo është në të majtë të lartë. Ka të vërtetë nuk ka estetikë të tij, dhe kështu që unë dua të stilizoj këtë pak më shumë si Google, të cilit homepage, risjell, edhe pse ju nuk mund të vizitoni atë që shpesh, duket sikur kjo sot në Halloween. Në qoftë se ne vend hapë version 1 të këtij file, 1.html kërko, unë kam përqëndruar atë. , Ende mjaft e shëmtuar, por të paktën tani kam filluar për të kontrolluar estetikë e kësaj faqeje jo vetëm duke shënuar deri tij. Le të marrin një vështrim në kërkim 1, dhe nuk është me të vërtetë vetëm një dallim këtu, që mund të hidhen jashtë në ju, ose ndoshta jo, por ajo është një linjë apo copëza të ndryshim? Ka këtë atribut stil, kështu rezulton se në HTML Elementet shumica, shumica tags mund të ketë një atribut stil mbi to, dhe brenda kësaj atribut stil është një varg cituar, dhe që string cituar është CSS. Ju mund të vënë fletë Cascading Style në atje duke specifikuar atë si një emër të pronës pasuar nga një zorrë e trashë të pasohet nga një vlerë. Kjo është lloj i një vendimi të projektimit fatkeq disa vjet më parë që CSS është një gjuhë në vetvete, por syntactically kjo është shumë e ndryshme nga HTML. Në këtë rast, ne shohim se brenda faqen time, e cila është shkruar në HTML, Kam CSS brendësi të këtyre thonjëza, dhe konventa për CSS është se ju keni atë që quhet një pronë e ndjekur nga, përsëri, një zorrë e trashë, pasuar nga vlera e kësaj pasurie, kështu që nuk ka asnjë shenjë të barabartë. Nuk ka kuotat shtesë. Është vetëm ky i ndarë zorrës së trashë kyçe vlera palë, Teksti dhe linja e bën pikërisht atë që ajo thotë. Ajo aligns tekstin në trupin e faqe, e cila është me të vërtetë guxim e faqe, në qendër. Mirë, atëherë rezultati përfundimtar, të jetë i qartë, është kjo. Jo të gjithë që sexier, por të paktën është e përqëndruar dhe një pak më shumë si Google reale. Por çfarë nëse unë në vend të hapur versionin 2 të këtij dhe theksoj këtu poshtë një kod të ri krejt? Tani në krye të faqes sime, e cila më parë kishte vetëm cilën tag në të gjitha shembujt e mëparshme? Ajo vetëm kishte këtë, titullin. Një moment më parë kreu tag dukej si kjo. Tani ajo ka një vend brenda tag stil të saj, dhe kjo shumë, unë kërkoj falje, syntactically duket shumë e ndryshme nga HTML, por ju merrni përdorur për të, ku në brendësi të tag stil Unë tani mund të faktor se çfarë ishte një moment më parë një atribut, atribut stil, dhe unë mund të vënë atë në krye të faqen time. Pse? E pra, ky është një hap drejt pastrimin gjërat, ashtu si në shkrim kod C ne do të shkruaj ndonjëherë funksione të faktorit jashtë funksionalitetit të përbashkët. Kjo është vetëm një pastruese pak për të filluar nga gjëra të tilla si factoring estetikë në një vend qendror në vend që të gjitha shpërndaj gjithë HTML tuaj. Kjo shumë e bën atë që thotë, edhe pse ka një grimë e sintaksës së re. Kjo këtu është një përzgjedhës, dhe trupi do të thotë vetëm të zgjidhni elementin trupit dhe të zbatojë vetitë e mëposhtme për të. E pra, prona është saktësisht e njëjtë. Për masë të mirë unë kam shtuar një pikëpresje në fund, e cila ka tendencë të jetë konventë, dhe unë e kam mbështjellë tërë këtë pronë në formatimin e teksteve kaçurrel, sepse unë në fakt mund të ketë gjëra të ndryshme këtu. Unë në fakt mund të them diçka si ngjyra: blu; Tani edhe kjo nuk do të jetë një hap drejt çdo gjë gjithçka që prettier, por në qoftë se unë tani kthehem në versionin 2 kam bërë së paku tani trupin e mia Teksti Faqe gjitha blu. Butonin qëndron e njëjtë, sepse kjo është një input. Kjo nuk është tekst i pastër. Por çdo gjë tjetër që është teksti, si CS50 Kërkimi deri krye, është në fakt blu. Përsëri, të gjithë ne kemi bërë tani është hequr nga tag trupit, njoftim, atribut stil, dhe ne kemi faktorizuar atë këtu. Kjo nuk është një përmirësim i madh, por në qoftë se ne kemi marrë këtë hap më tej njoftim se çfarë ne mund të bëjmë në këtë version të tretë këtu. Në search3.html faqe është pothuajse identike përveç për atë tag re tani? Lidhje, kështu që kjo nuk është shumë me vend të quajtur sepse ju nuk jeni lidhur në kuptimin e një hyperlink klikueshme. Përkundrazi, ju jeni lloj i bërë ekuivalentin e C # përfshijë në ku tag lidhja me një atribut href dhe një atribut rel thotë të shkojnë përpara dhe kopje ngjisni përmbajtjen e një file të quajtur search3.css të drejtë këtu, në thelb. Ajo nuk ka fare të bëjë këtë, por kjo është fryma e saj. Ajo thotë se të shkoni hapur këtë dosje, search3.css, dhe trajtojnë atë sikur përdoruesi ka shtypur atë të drejtë këtu në krye të faqes ashtu si kam bërë në shembullin e mëparshëm. Search3.css, ndërkohë, është shumë e thjeshtë. Ajo me të vërtetë vetëm përmban saktësisht se çfarë ishte një moment më parë në tag stil, por kam faktorizuar atë këtu për dosjen e vet. Edhe pse ne nuk kemi shpenzuar shumë kohë në të gjitha në HTML ose web programim vetëm intuitive çfarë është motivimi, ndoshta, për factoring jashtë kjo copë e vogël madje CSS në dosjen e vet dhe pastaj duke përfshirë edhe atë me këtë tag Lidhje këtu? [Përgjigja e padëgjueshme Student] Mirë, kjo është më e lehtë për të lexuar në kuptimin që ju keni CSS tuaj në një skedar CSS. Ju keni HTML tuaj në dosjen tuaj HTML, kështu që është më i lexueshëm në këtë kuptim. Çfarë tjetër mund të jetë bindëse? Po. [Përgjigja e padëgjueshme Student] Yeah, kështu që ju mund të përfshijë atë shumë herë, kështu që tani që ne jemi duke bërë këto shembuj themelore me fotografi individuale, por mendoj që ju jeni në të vërtetë duke e bërë një faqe interneti të vërtetë si ju do të për pset 7 apo projekt përfundimtar ndoshta, dhe ju dëshironi që të ketë webpages të shumta, siç është e zakonshme në siguri Web aktual World Wide, dhe kjo do të jetë lloj i çalë të ketë të kopjoni dhe ngjisni të njëjtën ngjyrë blu dhe teksti njëjtën linjë qendra në çdo një prej këtyre faqeve. Përkundrazi kjo e bën më shumë kuptim për faktor jashtë, ashtu si kemi bërë në C me dosjen. h, e vënë atë në një vend qendror, në këtë search3.css rast, dhe pastaj të lejojë ndonjë skedar në faqen tuaj të vërtetë të përfshijë këtë dosje me anë të këtij tag këtu në linjë 16. Si zakonisht është rasti, kemi filluar me versionin 0, cili lloj i punimeve por nuk është domosdoshmërisht më të mirë, dhe me çdo hap, Kërkim 1, kërko 2, 3 dhe tani kërkoni që ne kemi marrë këto hapa të fëmijës drejt harton që janë të pastër dhe pak më përgatitore për faqet më komplekse që ne mund të bëjmë poshtë rrugës. Më lejoni të hapë një shembull të fundit këtu vetëm për të treguar një faqe edhe më të stilizuar, por së pari le të shohim në HTML. Kjo është search4.html, dhe vëreni se strukturalisht kjo është pothuajse e njëjtë përveç për futjen e një tag të ri, div. Div është një tag që prezanton një ndarje të faqes. Ju mund të mendoj për këtë si një drejtkëndësh të padukshme. Ai lloj i krijon një brez i kositur i zonës në faqen që ju mund të stilizoj të gjitha përnjëherë. Ajo që unë kam bërë këtu është si vijon. Brenda tag trupin tim, i cili ka qenë atje të gjithë së bashku, Unë jam duke thënë se të krijuar një ndarje të faqes këtu nëpërmjet linjave 45 deri 47, dhe që do të thotë në thelb më jepni një drejtkëndësh padukshme përgjatë krye të faqes. Pastaj më jepni një drejtkëndësh të dytë, megjithëse të padukshme, më poshtë se, dhe për të identifikuar atë nga përmbajtja emrin, dhe pastaj së fundi, më jepni një ndarje të tretë të faqes në fund quajtur ID. Ne do të shohim se pse e kam bërë këtë në vetëm një moment, por konceptualisht Unë kam një ndarje header. Unë kam një ndarje përmbajtje, dhe unë kam një ndarje futboll e faqes edhe pse këto janë vetëm në Markup. Ky përdorues nuk do të shoh 3 rectangles, por lloj strukturalisht ka prapa skenave ata janë të pranishëm në të vërtetë. Tani, i cili kujdeset? Pse në të vërtetë e bëjnë këtë? Çdo gjë tjetër në faqe është e njëjtë siç kemi parë më parë. Këtu është forma ime. Ja input im, input ime, një pushim line dhe kështu me radhë. Këtu është një imazh, edhe pse, kështu që ne do të shohim kur kjo erdhi nga në vetëm një moment. Këtu është një futboll, i cili është i ri, vetëm sepse kam kërkuar për të futur Përmbajtja e disa më shumë këtu. Nëse ne lëvizni lart vëreni se ID e këtij div është header. ID i këtij div është përmbajtje, dhe ID i këtij njërit është Fundfaqe. Dhe si emri sugjeron, kur ju keni një atribut identiteti në HTML, sipas definicionit duhet të identifikojnë unike një nga elementët, një nga Etiketimet në faqen tuaj. Barra është krejtësisht për ju të mbani mend se ju keni një ID header tashmë. Ju keni një futboll. Ju keni një ID të përmbajtjes tashmë. Kompjuteri nuk do të kuptoj se çfarë është një ID dispozicion është për ju, kështu që ju mund të aksidentalisht jepni 2 etiketa një ID të header, dhe se do të jetë vetëm e gabuar. Ju duhet të mbani në mend atë që ju keni krijuar, por sapo ju të keni bërë këtë njoftim se çfarë ne mund të bëjmë këtu. Unë tani mund të specifikojë në tag tim stil në krye ose ekuivalente në CSS dosjen time, në qoftë se unë isha ende duke përdorur atë version, Unë mund të them # header, dhe se çfarë do të thotë është se çfarëdo tag në këtë faqe ka një ID të header dhe #, vetëm nga Konventa e njeriut, përfaqëson ID. Shenja të mprehta ose paund shenjë përfaqëson ID. Header është emri që unë i dha atë. Kjo do të thotë të zbatohet këtë pronë CSS për çfarëdo tag në këtë faqe mban një ID të header. Marrëveshja same here. Aplikoni këtë pronë, i cili ndodh të jetë i njëjtë, për çdo element ID cilit është i kënaqur, dhe pastaj këtu poshtë njoftimit kam marrë një pak njohës me futboll. Çdo element të cilit ID është futboll, e cila nuk mund të jetë vetëm një nga definicioni, të shkojnë përpara dhe të bëjë madhësia e saj të vogël font, pesha e saj font bold, diferencë e saj 20 pixels. Çfarë do të thotë kjo? Kjo është vetëm një diferencë në krye, në fund, dhe majtës dhe të djathtës. Kjo do të thotë më jepni një diferencë 20-pixel padukshme rreth saj vetëm për të shtyrë çdo gjë tjetër larg nga ajo pak, si ju mund të bëni në Word, Microsoft Word ose Pages apo si. Dhe pastaj teksti align qendër. Le të shohim rezultatin përfundimtar, dhe pastaj ne do të kthehemi deri në copëza e mbetur të një CSS atje. Ky është versioni 4, e fundit tonë për shembujt e kërkimit, dhe kjo është shumë, shumë sexier. Tani, në drejtësi, unë vetëm googled "google logo gjenerator font". Dhe kjo lejohet mua për të krijuar një GIF, një format imazh, i cili duket sikur se ka. Në fakt, ju mund ta bëni këtë shumë. Ne kemi "Google gjenerator fonts logo." Le të shohim nëse ne mund ta bëjmë këtë. Mirë, unë mendoj se kjo është faqja e internetit kam përdorur. Ne mund të themi KE 10, për shembull, dhe t'i bëjë ata të tyren. Ju mund të luajnë me këtë ditë të gjithë të gjatë dhe pastaj right click mbi atë dhe pastaj shkarko GIF aktuale, e cila është e gjitha që kam bërë. Dhe vërtet, kjo është arsyeja pse në HTML time, kujtoj, mbi këtu Unë kisha një etiketë imazh, i cili shkurtimisht pamë javën e kaluar cilit burim është logo.gif. Dhe çfarë ishte përsëri motivimi për të pasur këtë atribut alt, Ky atribut alternativë? Po. [Përgjigja e padëgjueshme Student] Mirë, kështu që 2 arsye të vërtetë, nëse shfletuesi nuk mund të tërheqë deri imazhin sepse ju keni një lidhje të ngadaltë të rrjetit ose imazh është i korruptuar ose diçka si kjo të paktën njeriut mund të shihni "CS50 kërkim," dhe pastaj edhe për arsye të aksesueshmërisë. Nëse ju keni një përdorues i cili është i verbër dhe është duke përdorur një lexues ekran dhe prandaj natyrisht që nuk mund të shohin imazhet ata mund te pakten dëgjoni tekstin në qoftë se kompjuteri i tyre flet atyre. Në përgjithësi, kjo është praktikë e mirë kur është fjala për qasjen e faqeve në mënyrë që përdoruesit edhe në atë situatë mund të dëgjojnë ose shohin, kështu që të flasin, çfarë është ajo që është në faqen tuaj. Ka një gjë tjetër që kam bërë këtu cila është një pak interesant, dhe ne do shih më shumë lidhje kjo në problemit vendosur 7 nëpërmjet njërit prej shorts drejtuara nga një nga Fellows mësimdhënies. Por # Përmbajtja referohet tag ID cilit është i kënaqur, por pastaj ka një karakter hapësirë, dhe pastaj nuk ka të dhëna fjala. E pra, çfarë është interesante në lidhje me CSS është se ju mund të referohen Etiketimet në një lloj faqja e hierarkike, dhe atë që kjo copë e mjeteve CSS është gjetur tag ID cilit është i kënaqur, dhe pastaj të zbatohet vetitë e mëposhtme të gjithë tags dhëna që janë pasardhësit e përmbajtjes, kjo është që janë prerë në brendësi të saj. Gjurmë, përsëri, është e rëndësishme vetëm në kompjuter, jo të njeriut, por nga Konventa ne porosit gjërat si të shkojmë më thellë në një faqe, kështu që kjo do të thotë të aplikojnë një diferencë prej 5 pixel për çdo element të dhëna që është diku brenda apo mbivendosur brenda  element i të cilit është i kënaqur ID. Kush e bën që të aplikojnë për të? E pra, nuk ka në fakt vetëm këto 2 djemtë këtu. Vini re se brenda të formularit ka 2 inputeve, si ka qenë për të gjithë këto shembuj. Por njoftim se ato 2 inputeve të ndodhë që të mbivendosur brenda, megjithëse pak të thellë, një çift i kryeradhës shtresa, në brendësi të tag cilit ID është i kënaqur. Çfarë do të thotë kjo? Nëse ne do të shkojmë në shfletuesin këtu ju mund të shihni ndonjëherë në mënyrë pak- më lejoni të zoom in-që ka një grimë mbushje mes butonin dhe në mes fushën e tekstit. Më lejoni që përkohësisht të kthehet off. Më lejoni të shkoj deri në CSS e mia, dhe më lejoni të shkojnë përpara dhe vetëm ndryshuar këtë diferencë prej 5 pixel në 0 pixels. Më lejoni të shkojnë përpara dhe pastaj ruani skedarin, shkoni prapa në search engine dhe rifreskoni, dhe të shikojnë mes të faqes. Gjithçka u ngjeshur së bashku, dhe kur kam parë këtë shembull whipped up Kam menduar se dukej budallallëk me fushën e tekstit dhe pastaj butonin menjëherë poshtë atë. Unë të kërkuar për të pad atë pak, kështu që unë futur kufijtë. Ajo që ne nuk do të bëjmë në leksion është të shkoni nëpër disa dhjetra Pronat CSS se ekzistojnë, sepse, përsëri, nuk janë gjëra të tilla si madhësia e shkronjave, pesha font, margin, text lidhur, dhe disa të tjerë duzinë, dhe ne do t'ju rekomandojë në problemin vendosur për 7 tutorials ndryshme online dhe referencat që ju lejon të marr këto gjëra deri. Por ajo që është me të vërtetë e rëndësishme në fund të ditës është për të kuptuar se si këto gjëra janë zbatuar. Përsëri, në qoftë se ne kemi tag stil brenda të cilave mund të shkoni selectors, lloj i identifikuesve që specifikojnë për të cilin ju dëshironi të aplikoni këto prona, dhe pastaj ju vënë prona si palë vlerë kyçe ndarë nga një zorrë e trashë dhe përfundoi pastaj me një pikëpresje, ose ju mund të shqyej të gjitha atë jashtë dhe e vënë atë në një skedar të veçantë CSS vetvete. Të gjithë të drejtë, ndonjë pyetje mbi konceptet ose foto e madhe e CSS? Ju do të shikoni përsëri më shumë nga ajo në pset 7, por ne do të mbani atë në përgjithësi shumë e thjeshtë. Jo? Dakord. Është koha për një gjuhë programimi aktual, dhe ne do kthehen tek një pak e CSS në formën e një shembull. PHP është në fakt një gjuhë mrekullisht arritshme në atë që është syntactically pothuajse ekuivalente me C. Me fjalë të tjera, nëse ju e dini C, ju e dini për PHP pjesën më të madhe, paktën syntactically, edhe pse ka disa karakteristika të reja dhe disa koncepte të reja, ne do të duhet të shikoni në. Por për pjesën më të madhe, tani që ne kalimi nga C për PHP shumica e gjëra të reja është me të vërtetë në foto e madhe, si ju përdorni një gjuhë për programin në Web në krahasim me në command line ose në një keq të shpejtë siç kemi bërë deri tani. Për referencë, veçanërisht me pset 7 dhe në vazhdim përfundimtare të projektit, do të përfitojnë nga kjo URL këtu në qoftë se ju dëshironi të lexoni deri në formalitetet e PHP. Është në fakt si një tekst falas online në mënyrë efektive, dhe ju do të gjeni se çfarë është me të vërtetë e bukur për PHP është se ka me qindra e funksioneve që vijnë me të, ndërsa në C ju nuk domosdoshmërisht të kenë qasje në Funksionet më shumë se ishin në bibliotekë matematikë, të CS50 bibliotekë. Në PHP dhe një shumë prej gjuhëve moderne, Python dhe Ruby në mesin e tyre, që ju të merrni qasje në kaq shumë funksione më shumë, që do të thotë që ju të merrni për të shkruar Kodi shumë pak, sepse ju mund të qëndrojnë mbi supet e njerëzve të tjerë që kanë shkruar tashmë gjëra të caktuara për ju. Le të marrin një turne të shpejtë të sintaksës e PHP dhe pastaj shkruaj disa shembuj. Çfarë është e bukur për të parë dhe më kryesorja PHP po nuk ka funksioni kryesor. Nëse ju doni të shkruani një program në PHP qe sapo filloni të shkruani kodin, dhe ju nuk keni për t'u shqetësuar rreth kryesore. Nuk ka asnjë int. Nuk ka kthim. Nuk ka, argv argc që është e nevojshme kur ju shkruani programin. Përkundrazi vetëm ju mund të filloni të shkruani kodin, dhe kjo është pjesërisht sepse PHP është ajo që quhet një gjuhë interpretuar. C është përpiluar, dhe ajo u përpiluar në kuptimin që ju të filloni me kod burim, e drejtuar atë nëpërmjet tingëllimë, e cila është një përpilues, dhe eventualisht pas disa numrin e hapave që ju të merrni kodin objekt, 0s dhe 1s. PHP dhe Python dhe Ruby dhe Pearl dhe të tjerët lloje të ndryshme të gjuhëve në të cilat ju nuk përpilojnë ato. Ju nuk shkoni nga kodi burim për 0s dhe 1s. Ju vetëm të drejtuar kodin burimor, dhe ju drejtuar kodin burimor duke shkruar në një skedar teksti të zakonshme, duke i dhënë fund në. php në këtë rast në vend të. c, dhe çfarë programi bën në kompjuterin tuaj është ajo fjalë për fjalë interpreton linjë kodin tuaj duke rresht pas rreshti. Me fjalë të tjera, në vend se të shkruani një program dhe të drejtuar programin direkt ju në vend që të shkruani një program me një skedar përfundon në. php. Pastaj ju drejtuar një program të quajtur php.exe aktuale, nëse ju jeni në Windows, ose thjesht PHP nëse ju jeni në Mac OS apo Linux, dhe ju ofrojnë si input për programin PHP kodin tuaj burim, dhe qëllimi i tij në jetë është për të lexuar kodin tuaj të lartë në fund, e majta në të djathtë, dhe çdo gjë që ju bëni kam thënë atë për të bërë. Le të shohim se çfarë kjo do të thotë syntactically. Në PHP kemi kushte. Kjo rrëshqitje është identike me atë që ju pashë përsëri në 1 javë sepse syntactically kushtet, IFS dhe IFS tjetër dhe tjetër në PHP duken tamam si kjo. Kur është fjala për shprehje boolean ata do të duken tamam si kjo. Kur është fjala për anding gjëra së bashku si booleans ajo do të duken tamam si kjo. Switches duken të njëjta, dhe ju merrni përfitimin shtuar në PHP që ndizet në C vetëm mund të kaloni në një char apo Int. Ju nuk mund të kaloni në një vlerë string. Në PHP ju mund të vërtetë kanë një shprehje që është një ndryshore përmbajtja e së cilës janë një varg, dhe ju në fakt mund të bëni krahasimin varg në mënyrë të vërtetë intuitive, Nuk krahasim akrep, me qëllim që të vendosë nëse do të bëjë apo rast unë j apo diçka tjetër. Ne do të shohim se potencialisht para se të gjatë. Sythe shumë mrekullisht janë të njëjta. Për sythe kanë një initialization, një kusht, dhe disa numri i përditësime. Ndërsa sythe gjithashtu ekzistojnë në PHP. Bëni ndërsa sythe ekzistojnë edhe në PHP, dhe vargjeve ekzistojnë në PHP, por këtu është ku fillon sintaksë për të marrë një pak më ndryshe, por konceptet janë të njëjta, dhe konceptet me të vërtetë janë të njëjta si ata ishin në javë me 0 Scratch. Së pari dhe më kryesorja është $ shenjë. Ky ishte një vendim i projektimit në PHP ku çdo variabël në PHP nga dizajni fillon me $ shenjë. Nuk ka asnjë më të X, Y, Z. Ajo është tani $ X, Y $, $ Z vetëm për shkak. Kjo është diçka për të mbajtur në mend, dhe tani në anën e djathtë kjo duket e ngjashme me një grup, por ne jemi duke përdorur kllapa katrore këtu. Në PHP dhe JavaScript, si ne do të shohim përfundimisht, të deklarojë një rrjet që ju bëni kllapa katrore hapur dhe mbyllur kllapa katrore, dhe atëherë ju keni një listë të ndara me presje e vlerave, nëse ints ose strings ose karaktere, çdo gjë që ju dëshironi, brenda e asaj shprehjes atje. Tani, si u bëjmë diçka si kjo në C? Cili ishte sintaksë për statically deklaruar një grup të numrave të njohura? Ajo ishte formatimin e teksteve kaçurrel, kështu që diferenca të vogla këtu, por në dy PHP dhe përfundimisht JavaScript ajo vetëm përdor kllapa katrore, në mënyrë që me të vërtetë detaje vetëm interesante këtu është $ shenjë për emrin e ndryshueshme dhe gjithashtu kllapa katrore, dhe nuk është një gjë e çuditshme që i janë hequr, si edhe në anën e majtë e shenjës =. Çfarë është zhdukur që ne kemi qenë duke kërkuar për disa javë tani? Po. [Përgjigja e padëgjueshme Student] Madhësia, kështu që nuk ka asnjë përmendje të madhësisë së grup. Sinqerisht, nuk ka përmendur kllapa katrore në anën e majtë e shenjës =, dhe çfarë tjetër është zhdukur nga vija? Po. >> [Përgjigja e padëgjueshme Student] Lloji, kështu që çfarë është interesante në veçanti në lidhje me PHP është që ajo nuk është një gjuha fort shtypen si C është, dhe që është shtypur me forcë, në kuptimin që ju duhet të thoni char, ju duhet të them int, ju duhet të them noton. Çdoherë ju doni një ndryshore që ju duhet të tregoni se çfarë lloji tingëllimë saj është. PHP është pak lazier. Është shtypur lirshëm në kuptimin që ju mund të keni gjithandej dhe karaktere dhe vargjet dhe ints dhe kështu me radhë, por gjuha vetë nuk ka të vërtetë kujdes atë që keni vënë në brendësi të një variable. Ju nuk keni për të informuar atë më parë se çfarë lloji të dhënave është duke shkuar në një ndryshore. Kjo është plotësisht deri në ju, kështu që kjo është e bukur në se ju nuk keni për t'u shqetësuar aq shumë për të dhënat e shtypur dhe shqetësuese se çfarë argumentet tuaja dhe kështu me radhë. Kjo gjithashtu do të thotë përfundimisht funksione në PHP do të jetë në gjendje të kthehen ose një më të int e kohës, dhe ndoshta një herë në një kohë ata do të kthehen një bool, një FALSE boolean, për shembull, për të ditur se diçka shkoi keq. Kjo na jep disa upsides, por ajo gjithashtu do të na bëjë lloj i dizajnit nga pak lazier kur është fjala për të dhënat e shtypur. Çfarë tjetër është atje për të mbajtur në mendje këtu? Variablat duken mjaft si kjo, kështu që $ s = "Hello, World". Kjo është ndoshta nënkuptura për t'u ulur nga shembullin e mëparshëm, dhe ne kemi një tjetër lloj lak. Ky i fundit ne do të shohim në fakt një herë në një kohë që është mjaft i dobishëm, a foreach ndërtimin. Në këtë rast, lak foreach merr brenda kllapa e saj 3 fjalë tipike, $ Diçka e parë, e cila është ajo array ju doni të iterate mbi anëtarët e, pastaj fjalë fjalen si, dhe pastaj së fundi, një tjetër emër ndryshueshme që ju të merrni për të zgjedhur. Ajo mund të jetë foo, bar, apo element, dhe çfarë e bën këtë konstrukt është nëse $ array përmban 10 elemente në çdo përsëritje të kësaj grup-keq, në çdo përsëritje të këtij lak Elementi i quajtur variabël do të jenë të përditësuar të jetë elementi i parë në grup, atëherë elementi i dytë në grup, pastaj elementi i tretë i grup, duke obviating nevojën për të bërë shënim pak bezdisshëm katror parantezë dhe $ I në mënyrë që të indeksit në një rrjet. PHP ka të gjithë atë punë për ju dhe në çdo përsëritje vetëm duart ju element tjetër nga grup pa ju pasur nevojë të dinë rreth ose kujdesen për vendndodhjen e saj numerike tregues. Dhe pastaj në fund, tani për tani, nuk ka një tipar tjetër të PHP që do të jetë jashtëzakonisht e dobishme, sidomos kur kemi filluar programimin në Web, dhe kjo është e njohur si një grup shoqëruese. Vargjeve që ne e dimë deri më tani si e 20 sekonda më parë dhe për 8 javët e fundit janë të indeksuar numerikisht vargjeve, lloj i vargjeve tradicionale ku indekset janë ints, 0, 1, 2, gjithë mënyrë më lart. Vargjeve associative janë shumë më të fuqishme. Ato ju lejojnë të ketë çelësat arbitrare, indekset arbitrare dhe vlerat arbitrare. Ndërsa në një grup tradicionale ajo është 0, 1, 2, në një grup associative ju mund të ketë një indeks ose një kyç i foo vlera e të cilave është bar. Ju pastaj mund të ketë një tjetër emri i të cilit është kyç Baz dhe vlera e të cilave është qux. Përsëri, emrat budallaqe shkenca kompjuterike generic ndryshueshme këtu, por pikë është se ky grup nuk ka kllapa 0 ose 1 kllapa. Është vend do të ketë parantezë parantezë foo dhe Baz. Kjo është një shumë më të shkathët në atë që ne jemi duke shkuar të jetë në gjendje që të lidhen Fjalët me fjalë të tjera, çelësat me vlera krejtësisht arbitrare, dhe ne do të jetë në gjendje për të marrë ato vlera prapa në kohë konstante sepse nën kapuç se çfarë një grup shoqerues është me të vërtetë është një tabelë hash. Kujtojnë se një tabelë hash ju lejon për të vënë në disa të dhëna si të vënë në fjalë Davidit në qoftë se ju doni të futur Davidin në disa lloj fjalori, dhe pastaj ju merrni mbrapa disa vlera tipike. Në rastin e speller, e vërtetë apo e rreme. David apo çfarëdo fjalë është ose nuk është në fjalor. Një grup asociativ është me të vërtetë vetëm një tabelë hash, por kjo është një mishërim më shumë përdorues miqësore për të. Siç do të shohim, kjo do të na lejojë të bëjmë disa gjëra shumë, shumë e lehtë. Le të marrin një vështrim në disa PHP bazë shembuj dhe shikoni se çfarë mund të bëjmë me këtë gjuhë. Më lejoni të shkojnë përpara dhe të hapur deri në directory tonë burimor sot një file të quajtur hello1.php. Kjo skedë është komenti më shumë se ajo është kodi aktual, prandaj më lejoni të vërtetë të hequr të gjitha komenteve nga dosja dhe të pranishëm për ju ndoshta thjeshtë të programit PHP drejtë këtu. 5 linja, dhe disa prej atyre që janë të hapësirë ​​të bardhë, kështu që të vëreni disa dallime kyçe këtu. File quhet hello1.php. Linja e parë, megjithatë, është , Thotë se është ajo për kodin PHP tim. Le të shohim se si për të drejtuar këtë. Unë jam duke shkuar për të shkuar mbrapa në dritaren time terminal këtu. Unë jam duke shkuar për të shkuar në directory time PHP. Vini re se ne kemi një bandë e tërë e dosjeve, i pari prej të cilave është hello.php. Më lejoni të shkojnë përpara dhe për të drejtuar këtë hello1.php,, hyjnë. Leja mohoi. Rregull. Si e kemi fiksuar gjëra të tilla si kjo në të kaluarën? Çfarë është ajo? >> [Përgjigja padëgjueshme Student] Ne kemi nevojë për të lexuar dhe shkruar, por më lejoni të bëj ls-l. Mbani mend këtë dalje disi fshehta ku hello1 duket të jetë i lexueshëm dhe të shkruhet nga mua por i lexueshëm nga të gjithë të tjerët. Kjo rezulton nga kjo në fakt nuk është një hap në drejtimin e duhur. Dallimi, përsëri, me një gjuhë të interpretohet është që ju nuk do të kandidojë programin direkt. Ju në vend të drejtuar një përkthyes dhe dorëzojë atë kod që ju keni shkruar kështu që mund të interpretojnë atë rresht pas rreshti. Në këtë rast, përkthyesi apo program unë në fakt doni të drejtuar fjalë për fjalë është quajtur PHP. Diku në këtë hard drive e pajisjes nuk është një program dikush tjetër shkroi quajtur PHP, ose në Windows php.exe. Ajo që unë jam duke shkuar për të bërë këtu është që unë jam duke shkuar për të vërtetë të drejtuar PHP por të japë atë si një argument command line kodin që kam shkruar, dhe pastaj unë do të zoom jashtë dhe e goditi të hyjë. Ajo shkon programin tim për mua, nga lart poshtë, e majta në të djathtë. Më lejoni të shkoj përpara dhe të hapur një grindje të vogël të kësaj. Në njoftimin hello2.php se kjo shumë është kryesisht komente, kështu që më lejoni të shpëtoj nga ata si një çmenduri, dhe çfarë është në mënyrë të qartë të ndryshme në lidhje me këtë dosje tani? Nuk është kjo linjë e re, disi i fshehtë në krye. Në linjë 1 është #! / Bin / php. Bin është një konventë në Linux dhe Mac OS për binare, kështu / bin do të thotë kjo është një dosje që përmban një bandë e binare që është programuar, një nga të cilat është PHP. #! është mbiquajtur mesele, e cila është mënyra më e shpejtë për të thënë atë, dhe çfarë kjo do të thotë është se kur ju drejtuar këtë program tani ka një aluzion në krye të file që tregon se çfarë kompjuterin përkthyes për t'u përdorur. Ajo merr pak i bezdisshëm, nëse keni pasur për të treguar përdoruesit tuaj dhe klientët tuaj "Hej, ne shkruar këtë program të quajtur hello1.php." Të gjithë ju duhet të bëni është të drejtuar përgjithmonë PHP dhe pastaj emrin e këtij programi. Sinqerisht, kjo vetëm do të jetë nicer për të kandiduar hello1.php, dhe në të vërtetë, ne mund të qoftë se ne bëjmë në vijim. Më lejoni të shkojnë përpara dhe të bëjë ls-l, dhe njoftim në hello2 është ende vetëm lexuar shkruani dhe pastaj lexoni lexuar, kështu që unë ende nuk mund ta bëjë këtë, hello2.php. Por ne kemi prezantuar këtë ndonjëherë kaq pak kohë për herë të fundit, komanda chmod. Nëse unë bëj një chmod + x, që do të thotë të gjitha përmbarueshmëria plus, dhe pastaj hello2.php dhe pastaj do ls-l sërish njoftim se çfarë ndryshuar. Një, Linux është treguar mua emrin e file në të gjelbër për të përcjellë idenë se kjo ekzekutueshme, por më e rëndësishmja, në anën e majtë vini re se pak përfaqëson X për ekzekutues tani është vendosur. Çfarë kjo do të thotë që tani është që unë mund të kandidojë ./hello2.php si zakonisht, goditur të hyjë, dhe për shkak të mesele në krye të dosjes kjo është një aluzion, përsëri, për të Linux që thotë se përdorni këtë përkthyes për të drejtuar këtë file. Mos u shqetësoni detyruar përdoruesit të tipit të vërtetë atë. Dhe ajo që është e bukur tani është lloji i parëndësishëm për klientët e mi, ose miqtë e mi çfarë gjuhe kam shkruar këtë program në, kështu që unë mund të shkojë përpara me TM dhe të riemërtoni këtë gjë për të hello2, për shembull. Dhe tani, nëse unë bëj ./hello2 dhe zoom nga programi im vazhdon për të kandiduar. Këto file extensions janë një konventë njerëzore që është e nevojshme për diçka si tingëllimë dhe të bëjë që të shikoni për ta. Por për PHP, unë mund të telefononi këtë gjë file extension dua. Unë mund të gënjejnë botën në duke menduar se unë jam me të vërtetë mirë në Ruby, dhe unë mund të shkruaj hello2.rb dhe pastaj të drejtuar këtë, dhe voila, tani kam versionin rubin, e cila është një gënjeshtër plotë. Por file extensions janë të pakuptimta nëse skedari është i ekzekutueshëm dhe ka këtë aluzion të veçantë në krye të file. Tani, si një mënjanë, më lejoni të ju tregojnë shpejt version 3, e cila është një lloj mashtrim dobishme të dinë. Në hello3 kam bërë diçka të gabuar pak se unë do update online kodin burim. Në versionin 3 rezulton se në shumicën e kompjuterëve Linux ka një program të quajtur env për mjedisin, dhe çfarë ju mund të bëni këtu është nëse ju nuk keni ide se ku PHP është instaluar në hard drive lokale, sepse vërtet ajo mund të ndryshojnë bazuar në kompjuter se dikush është duke përdorur, env vetëm thotë drejtuar env, e cila është në shumicën e sistemeve, dhe të kuptoj se ku PHP është. Vetëm një mashtrim të përbashkët në mënyrë që ju nuk duhet të shqetësohen për të gjetur se ku programi është. Por në qoftë se ju bëni kujdes për të gjetur se ku është një program dhe ju nuk janë kujdesur deri më tani ju mund të përdorni komandën e cila. Më lejoni të zoom jashtë dhe lloji e cila php, dhe vini re kjo tregon mua kjo është në të vërtetë në usr / bin / php. Kjo është lloj i një gënjeshtër. Është gjithashtu në kazan. Është vetëm tregon mua hit parë. Nëse keni menduar ndonjëherë ku është tingëllimë, i cili tingëllimë, që është në usr / bin / tingëllimë, të cilat e bëjnë, usr / bin / të bërë, dhe çfarë do të thotë se është e gjitha kjo kohë ju mund të keni qenë të shtypur usr / bin / tingëllimë të hyjë për të kandiduar tingëllimë, por kjo është lloj i lodhshëm për të bërë këtë, kështu që disa dosje si usr / bin dhe bin supozohen të jenë defaults kështu që kompjuteri di të shikoni në to për ju. Çdo pyetje për të shkruar një super, super program të thjeshtë Hello World në PHP dhe pastaj drejtimin e tij? Sepse tani ne do të fillojnë për të futur sintaksë më bindës. Të gjithë të drejtë, këtu ne do të shkojmë. Këto programe që ne kemi parë në të vërtetë të gjitha ato para. Nëse unë të hapur, për shembull, le të bëjë beer1.php, ne nuk do të kalojnë nëpër disa versione të kësaj, por ajo që kam bërë Unë u ula dhe ia derdhi vajin ose konvertuar Kodi C ime për kodin PHP këtu. Shumica e krye të file is deri këtu. Ajo rezulton se ka një funksion të ri të quajtur linja leximi ne kemi nevojë. GetString, risjell, nga 0 Java e tutje ishte një CS50 gjë. PHP vjen me funksionin e saj vet user-friendly quajtur linja leximi që merr 1 argument që specifikon shpejtë se ju doni të tregojnë të përdoruesit, dhe çfarë e bën linja leximi është ajo kthehet çdo gjë që përdoruesit lloje in Në këtë rast, unë jam deklaruar një ndryshore të quajtur $ n. Unë jam në atë ruajtjen e vlerës së kthimit të linja leximi pas bërë përdoruesit me këtë varg. Vetëm për të mbështetur, për të vërtetë të drejtuar këtë gjë, më lejoni të shkoj përpara dhe të drejtuar beer1.php php. Sa shishe do të ketë? Le të vetëm të bëjë këtë kohë 2. Enter. Kjo është e gjitha. Programi është funksionalisht identike me versionin e C javë më parë nga. Por syntactically le të shohim se çfarë është e ndryshme. Pasi kam marrë një int nga njoftimi përdorues që unë jam duke bërë disa kontrolluar gabim, dhe nëse n është më pak se 1 kam lënë dhe unë të shtypura nga një mesazh të keq për përdoruesit dhe dalje me 1. Kjo shumë është pak më ndryshe.  Në C Çfarë kemi bërë? Në C kthyem 1. Në PHP dilni me 1, që sinqerisht unë mendoj se është pak më shumë intuitiv sepse ju jeni fjalë për fjalë programin e daljes. Të gjithë të drejtë, dhe pastaj këtu poshtë këngë bezdisshëm është identike syntactically me përjashtim të ndryshueshme, kështu që këtu poshtë në linjë 24 e tutje njoftim tim për lak është pothuajse e njëjtë, por unë kam $ në frontin e I dhe n, dhe çfarë është gjithashtu mungon nga linjë 26 që ne kemi pasur në të kaluarën kur shpalljen i ndryshueshëm? Nuk ka asnjë lloji. Kjo është e gabuar në PHP për të thënë int. Ju thjesht nuk keni nevojë të bëni këtë. Kompjuteri, PHP përkthyes është mjaft i zgjuar për të realizuar se në qoftë se ju vendosni një numër në $ unë do të trajtojmë atë si një numër për ju. Dhe pastaj këtu poshtë kemi plug në $ i, $ i, $ i - 1. Të gjithë e që është e njëjtë, dhe pastaj këtu poshtë bëjmë një "Wow, se është i bezdisshëm" printf dhe pastaj dalje (0). Përsëri, takeaway këtu është se edhe pse ne jemi duke shkuar për të shpenzuar relativisht pak kohë në PHP, sigurisht kundrejt asaj që kemi bërë në C, ajo është pothuajse e njëjtë, dhe kështu çfarë ne do të bëjmë sot dhe javën e ardhshme dhe më tej është të përqëndrohet me të vërtetë në disa prej ideve të reja. Vetëm për të parë se një gjë tjetër nuk përkthehet përsipër nga C, kjo ishte një program super të thjeshtë që ne e bëmë në Javën e 1 ose 2 që cubed një vlerë. Por ajo që ishte interesante në kohë në lidhje me këtë program është se ajo paraqiti idenë e një funksioni me porosi me shkrim që ne vetë shkruante. Sintaksa në PHP është pothuajse e njëjtë. Ja programi im deri krye. Njoftim përsëri mungon është çdo nocioni i kryesor. Unë të filloni të shkruani kodin, dhe kjo është ajo që do të merrni ekzekutuar nga përkthyesi. Unë të shtypura nga x 2 është tani, me sa duket. Pastaj unë pretendojnë cubing ... Pastaj unë e quaj funksion kubike dhe të kalojë në $ x dhe të caktojë vlerën e kthimit në $ x. Atëherë unë pretendojnë se kjo është Cubed, dhe atëherë unë them këtë, që shpresojmë se do të thonë tani është x 8. Sintaksa për funksionin në PHP është ndonjëherë në mënyrë pak ndryshe. Përsëri mungon është lloji kthimit. Përsëri mungon është lloji kthimit dhe gjithashtu mungon është se çfarë lloji tjetër? [Përgjigja e padëgjueshme Student] E pra, në rregull, kjo është e mirë. Le të kthehen në se në një sekondë. Ne nuk kemi, për shembull, int këtu. Ne nuk e bëjnë, për shembull, e kanë int këtu, sepse, përsëri, në PHP ju thjesht nuk keni nevojë për të dhe nuk duhet ta bëjë këtë, por nuk është kjo fjalen e re e quajtur funksion. Në PHP është pothuajse pak më të qarta, sepse kur ju doni një funksion ju thoni fjalë për fjalë funksion, ju t'i jepte një emër dhe më pas një listë të ndara me presje në qoftë se ndonjë nga argumentet e saj. Nuk ka nevojë për të thënë pavlefshëm ose diçka të tillë, dhe pastaj kthimi është i njëjtë, $ A * $ a * $ a. Çfarë është gjithashtu i mungon? Sammy vuri këtë këtu. Në krye të file krejtësisht mungon në PHP gjithashtu është një prototip. Kjo shumë është me dashje. Gjuhë dhe përkthyesit si PHP janë të zgjuar se C ndonjëherë ishte në hartuesit si tingëllimë. Kujtojnë se tingëllimë, në qoftë se ju nuk e tregoni atë se kubike ekziston, në qoftë se ju nuk e tregoni atë që printf ekziston si një prototip me ose me nje # përfshijnë, gjithashtu, se do të bërtas me ju dhe as përpilojnë kodin tuaj. PHP dhe gjuhë më moderne janë shumë të zgjuar, kur është fjala për këtë. Ata do të marrin mbi vete për të lexuar nëpër të gjitha kodin tuaj dhe pastaj bërtas në ju vetëm nëse ajo gjen askund kubike. Kjo nuk ka rëndësi nëse kubike është në fund apo krye apo edhe në disa dosje të veçantë. Gjuhët PHP dhe të ngjashme janë tani mjaft i zgjuar për të shikojmë përpara në çdo gjë para gjykon si ju ka bërë një gabim. Ku na çon kjo? Le të bëjmë një shembull të fundit këtu në kushte, dhe në qoftë se unë i hapur deri njoftim conditions2.php shumë Sintaksa këtu është pothuajse e njëjtë. Unë jam duke përdorur linja leximi vend të getString, por që linja është e njëjtë si më parë, "Unë do të doja një numër të plotë ju lutem." Unë pastaj të ketë një kusht, nëse, një tjetër në qoftë se, dhe pastaj një tjetër, por funksionalisht ky program është edhe identik me atë që kemi bërë javë më parë, kështu që në qoftë se unë të drejtuar këtë gjë, php e conditions2, dhe unë t'i jepte një numër si 23 - I kap një numër pozitiv. Nëse unë jap atë -1 unë kap një numër negativ. Nëse unë jap se unë me të vërtetë kap 0 0. Pra, kush kujdeset për të gjithë këtë? Pra, një nga lloj fun e ushtrime këtu për mua të paktën ishte për të shkuar mbrapa dhe shikoni se sa shpejt unë mund të zbatojë pset 5, pset misspellings. Kujtojnë se nuk ishte ky file i quajtur Shkruaj një fjalë, dhe atje ishte një file i quajtur dictionary.c. Ajo që unë kam qenë unë lloj i kaluar pak minuta dhe unë konvertuar kodin C për kodin PHP, dhe ne nuk do të shpenzojnë shumë kohë në speller sepse ashtu si në pset 5 ju nuk duhet të vërtetë për të kalojnë shumë kohë në speller vetë, sepse vëmendja juaj ishte në fjalor. Mjafton të them se në qoftë se ju lexoni me anë të speller, Vlerësoni këtë fotografi këtu, kjo është shumë e shumë të barabartë me kodin C kemi dhënë ju për pset 5. Unë kam shtuar vetëm disa $ në vende. Unë kam ndryshuar emrat e disa funksion, nëse ata nuk ekzistojnë në PHP. Ka një gjë tjetër këtu, preg_match, e cila është mënyra më pak njohës të bërë diçka, por ne do të kthehen me atë përfundimisht. Por në të shkurtër, speller është pothuajse identike, dhe në qoftë se ju shikoni në fund shumë ajo përfundimisht pështyn jashtë është kjo këtu, fjalë misspelled, fjalë me fjalë, fjalor në tekst. Të gjithë të drejtë, kështu që çfarë është interesante tani është në vijim. Në krye të dosjen time unë jam duke kërkuar dictionary.php. Ashtu si C # ka përfshirë PHP ka një funksion të veçantë të quajtur kërkojnë që shumë e shumë të bën të njëjtën gjë, të kërkojë një skedar të quajtur dictionary.php. Si mund të shkoj në lidhje me zbatimin e pset 5? Më lejoni të shkoj përpara dhe të hapur një skedë këtu. Më lejoni të marrë një referencë pak këtu. Dhe më lejoni të krijoni një skedar të ri dhe të fillojnë duke e quajtur këtë dictionary.php. Më lejoni të vënë atë në një tjetër dosje kështu që ne mund të bëjmë këtë jetojmë. Dhe tani unë do të zoom in Unë jam duke shkuar për të filluar dosjen time PHP me kllapa hapur php mbyllur kllapa. Dhe pastaj këtu ka pasur disa funksione që unë e nevojshme për të zbatuar për pset 5, kështu që më lejoni të filloj zbatimin e disa prej atyre, kështu që kontrolloni funksion, i cili kishte për të marrë një fjalë në si një argument. Ne do të bëjmë që dhe të vijnë përsëri në atë në një moment. Nuk ishte ngarkesës funksion, i cili mori në atë si argument? Fjalor, kështu file që unë në fakt donte të ngarkesës. Nuk ishte madhësia funksion, i cili nuk ka marrë ndonjë argumente dhe nuk kishte funksion-çfarë ishte tjetër? Shkarkoj, i cili nuk ka marrë ndonjë argumente ose. Këto janë 4 funksionet që unë do të duhet për të zbatuar tani në PHP, dhe atë që unë jam duke shkuar për të bëni është të shkoni përpara dhe të bëjë këtë. Një shumë prej jush përdorur një tabelë hash në pset 5, kështu që le të shkoj përpara dhe të krijojë një tabelë hash në PHP. Bërë. Kjo më jep një tabelë hash. E pra, pse? Një, quhet ndryshueshme $ tavolinë, vetëm për të sjell në mendje deri idenë e një tabelë hash. Kllapa katrore, megjithatë, kujtoj, përfaqëson çfarë? Një grup, por në vargjeve PHP nuk duhet të jenë të indeksuar numerikisht. Ata gjithashtu mund të jenë të vargjeve associative, që do të thotë që ju mund të keni çelësat arbitrare dhe vlerat. Pjesa më e madhe si në pset 5, atyre prej jush që e bëri Implementimi hash tryezë ndoshta keni futur fjalën dhe pastaj futur atë në një zinxhir të listave të lidhura, ose ju ruajtur vlerën e vërtetë diku apo diçka për këtë qëllim. Ju disi mend faktin se fjala ishte aty. Tani për tani, kjo do të jetë tryezën time hash, dhe kështu që tani për të shkuar në lidhje me zbatimin e funksionit të kontrollit Unë vetëm duhet të shikoni brenda asaj tabelës hash dhe të shohim nëse një fjalë është atje. Ajo që unë jam duke shkuar për të bërë është që unë jam duke shkuar për të thonë se nëse- le të themi isset, i cili është një funksion PHP që fjalë për fjalë do të thotë vetëm është vendosur kyç, kështu isset ($ table [$ fjalë], dhe nëse po kthehen vërtetë. Kjo ishte. Kjo është pset 5 në PHP. E pra, në drejtësi, në rregull. Kthimit të rreme tjetër, kështu që nuk është atje. Çfarë është me të vërtetë ndodh këtu? E pra, nëse tavolinë apo tabelë hash-këtu më në përgjithësi, është një grup shoqerues që do të thotë që ju mund të indeksit në të me një fjalë si "fjalë", dhe ju duhet të merrni mbrapa disa vlera. Ne jemi lloj të marrë një hap përpara nga vetja. Ajo do të jetë mirë në qoftë se llojin e ne fakt ngarkuar skedarin e parë, kështu ngarkesës nuk është mjaft e thjeshtë, por më lejoni të shkoj përpara dhe nxit  një zbatim të vërtetë të shpejtë të ngarkesës. Më lejoni të shkojnë përpara dhe të thonë fjalët e merr fjalorin file. Funksioni fotografi në PHP hap një skedar dhe ju kthehet në një koleksion të të gjitha fjalë në këtë dosje, vetëm duart e tyre për ju. Kjo ishte një dhimbje e madhe shumë, nuk është ajo? Tani foreach, kjo është ndërtimin tonë të re, foreach ($ $ fjalë si fjalë). Kjo lak do të fillojë iterating mbi fjalët array dhe të caktojë për variablin $ fjalës çdo fjalë në dosjen nga e para të dytë të tretë të katërt gjithë rrugës kështu që unë nuk duhet të bëjë bezdisshëm [I] simbol dhe si. Dhe atë që unë jam thjesht do të bëni për secilin nga këto fjalë është ruajtur atë në tryezën time, duke indeksimit në tryezë dhe pastaj duke bërë vërtetë, sepse për të kujtuar se një fjalë është në fjalorin tim të gjitha unë me të vërtetë duhet të bëni është lloj i shfletoj pak dhe thonë se kjo fjalë në tryezën time hash është atje, e vërtetë. Dhe në qoftë se kjo nuk është atje, unë nuk kam për të vënë në mënyrë eksplicite të rreme, përndryshe unë do të keni për të vënë të rreme për të gjitha fjalët e mundshme në univers. Kjo mjafton për mua vetëm për të vendosur një vlerë indeksi të vërtetë nëse një fjalë në fakt është në tryezën time hash. Tani, unë jam duke prerë një çift të qoshet këtu se unë do të tundë duart e mia në për tani, por tani funksioni ngarkesës është bërë. I ngarkesës të gjitha fjalët nga skedari në një rrjet. Unë iterate mbi atë grup, dhe për çdo fjalë në rrjet Unë plug it në tryezën time hash me 1 linjë të kodit. Kjo është e bukur. Ti e di se si ne mund të zbatojë masën tani? E pra, madhësia është gjithmonë shumë e lehtë, në drejtësi. Këtu ne vetëm mund të kthehen numërimin e tabelës. Kjo është goxha e lehtë shumë, të numëruar numrin e gjërave në tabelë. Kjo është lloj i vërtetë nuk më efikase. Unë ndoshta duhet të ketë një madhësi të ndryshueshme quajtur kështu që ne mund të bëjmë atë në kohë të vazhdueshme, por kjo është goxha e lehtë. Oh, dhe pastaj zbraz, në qoftë se ne të vërtetë duan të jenë të anal këtu mund të themi se është se si ju të shkarkoj diçka. Ju vetëm të vendosur ndryshoren barabartë me një rrjet të zbrazët, dhe ajo merr shpëtoj nga gjithçka që ishte atje. Nuk ka nevojë për të thirrur të lirë. Përsëri, unë kam shkurtuar disa qoshe, dhe unë kërkoj falje për të vendosur caktimin e problemit 5 ndoshta në C, por në qoftë se ne tani të shkojnë përpara dhe për të drejtuar këtë, Unë jam duke shkuar për të drejtuar versionin e vërtetë që kam shkruar më parë vetëm kështu që unë nuk kam bërë ndonjë gabime syntactical whatsoever. Më lejoni të shkojnë përpara dhe të drejtuar speller. Përdorimi është i njëjtë. Këtu është një fotografi e cila sapo fjalor përmban foo fjalë. Këtu është një file teksti që përmban vetëm foo bar. Le të spell check këtë, speller kështu, duke përdorur këtë skedë në këtë fjalor skedar teksti. Ka një fjalë misspelled, bar, dhe voila. Bërë me pset 5. Le të marrin një pushim 5-minutëshe këtu, dhe ne do të kthehen dhe më shumë në PHP. Të gjithë të drejtë, ne jemi të kthyer. Le të mos-urrejnë për një kohë. Le të shohim nëse tani në fakt kjo nuk ishte një pozitiv në fakt zbatimin e këtë gjë në PHP. Dhënë, ai mori 45 sekonda për të zbatuar. Por le të shkojnë përpara dhe të drejtuar gjëra tani. Më lejoni të shkojnë përpara dhe për të drejtuar një version C i speller, dhe ne do të drejtuar atë në një prej dosjeve mëdha, cila është King James Bibla. Dhe që këtu është-le të shkojnë në dosje C tonë, speller në King James 5. Një shumë e fjalë misspelled. Mirë, kështu që është prodhimi ju ndoshta mori edhe nëse kohët janë pak më ndryshe, në qoftë se ju mori gjithçka punon si duhet, dhe kështu që është koha në total për të spell check James Mbreti Bibla ishte 0,38 sekonda, në mënyrë mjaft të mirë duke përdorur se zbatimi. Tani më lejoni të shkoj në versionin PHP, të cilat ne vetëm shkruante. Më lejoni të drejtuar speller në King James. Uh, injorojnë atë gabim. Unë jam në directory gabuar. Speller në King James 5. Bërë gati. Mirë, vëzhguesi i zgjuar do të kuptojë se ishte më shumë se 3 sekonda atje. Kjo është koha e vërtetë running. Ajo rezulton se kjo merr kohë për të nxjerr shumë të tekstit jashtë për shkak të buffering çështje, por histori të gjatë të shkurtër, që ishte 3.15 sekonda të kohës, koha makinës CPU, kundrejt asaj ishte një moment më parë? Ashtu si 0,3. Unë do të thotë, është një urdhër i madhësisë ngadalshëm, kështu që ku është Ngadalësimi qesharake që vijnë nga? E pra, siç ka qenë rasti me vendimin më ndonjë dizajn që kemi bërë në klasë gjatë 9 javëve të fundit ka pothuajse gjithmonë këtë tradeoff. Ndonjëherë vetëm në mes të hapësirës, ​​nganjëherë në mes të hapësirës dhe kohës, , hapësirë ​​kohë dhe përpjekje të zhvillimit, dhe në të vërtetë këtu, edhe pse kemi ruajtur një sasi të madhe të kohës, ndoshta potencialisht 10-20-30 orë e kohës për zbatimin e zhvillimit spell checker nga kurbanit atë në vetëm 45 sekonda me këtë gjuhë çmimi që ne të paguajë është se ajo është një urdhër i madhësisë ngadalshëm si rezultat, dhe kjo në përgjithësi është rasti me gjuhën më të madhe çdo interpretuar, PHP, Python, Ruby, Pearl ose të tjerët ku nëse ju jeni duke shkuar për të drejtuar atë nëpërmjet një përkthyesi dhe kanë lexuar kodin tuaj rresht pas rreshti, nga lart poshtë, e majta në të djathtë, që ndërmjetës do të marrë disa kohë për të vetin, dhe atë që ju u ndjenjë këtu në 3 sekonda, në krahasim me 0,3 sekonda është fakti se nuk është ky ndërmjetës i cili ka fjalë për fjalë interpretuar kodin tonë rresht pas rreshti, dhe Perëndia ndalon nëse ju jeni në brendësi të një lak me një fotografi të madhe që përmban qindra e mijëra fjalë. Kjo lart do të shtoni deri dhe të shtoni deri dhe të shtoni deri dhe të shtoni deri. Për një mjet si kjo nuk është ndoshta gjuha e mira për të përdorur për zbatimin e a spell checker nëse menjëhershme është në interes të përdoruesit tuaj dhe për ju. Por luksoze ne kemi në një moment është në qoftë se ju përdorin një gjuhë si PHP ose një shumë të gjuhëve interpretuar në kontekstin e Web, për këtë çështje, ju keni dobi se në internet është shumë më e ngadalshme se shumicën e kompjuterëve. Ju keni një CPU GHz në kompjuterin tuaj, 2 GHz, ndoshta edhe më shumë këto ditë. Por realiteti është në internet ka një sasi të lartë të fshehtë ku për një shfletues të bisedoni me një server, edhe pse pamë javën e kaluar se kjo është goxha e shpejtë, një gjysmë Millisekonda apo më shumë, shton se shumë lart, dhe nëse ju jeni të shkarkimit gjëra të tilla si një imazh apo një foto Facebook ose marrjen e mesazheve të menjëhershme mbi kërcëllimë Facebook, Gchat apo të ngjashme, të gjitha këto vajtje-ardhje herë midis shfletuesit dhe server fillimit të shtoni deri, gjë që e bën zgjedhjen tuaj të veçantë të gjuhës në shumë raste jo të gjithë që e rëndësishme, kështu që ju jeni mirë duke përdorur një gjuhë pak më e ngadalshme si PHP ose Python Ruby ose por për të cilat nuk janë upsides madh për ju dhe kolegët tuaj dhe miqtë tuaj, sepse ju mund të zbatojë gjërat kështu, në mënyrë shumë të shpejtë. Dhe për më tepër, ju keni rrezik shumë më pak të meta të sigurisë të caktuara. Nuk ka pointers në PHP. Nuk ka gabime seg që ju lehtë mund të nxisin në të njëjtën mënyrë që ju mund të në C. Me C se ju jeni super në afërsi të hardware. Me gjuhë PHP dhe të ngjashme ju jeni lloj i nivelit të lartë, në mënyrë që të flasin, me një shumë prej mbrojtjes midis jush dhe çfarë është në të vërtetë ndodh brenda makinës, dhe kjo është vetëm një tradeoff. Ne kemi marrë deri në pikën e të pasurit më moderne, këto gjuhë të nivelit të lartë si PHP për shkak të mësimeve të nxjerra në gjuhët PHP si në C. Por në qoftë se ju nuk e kuptoni atë që është në vazhdim e sipër nën kapuç gjithë këtë kohë ju me siguri nuk mund të bëjnë vendime të drejta projektimit, dhe sigurisht kur vjen puna për të punuar në një vend si Facebook apo Google apo ndonjë nga këto vende që janë gjithnjë e duke luajtur me të dhëna të mëdha përcakton edhe në qoftë se ju shkoni mbrapa dhe mos premed dhe janë duke punuar me disa MD në disa të dhënave të mëdha vendosur që përfshin pacientët dhe mjekët dhe si duke përdorur mjetet e drejtë është jashtëzakonisht bindës sepse përndryshe analiza tuaj të disa të dhënave mund të marrë sërë sekonda, ose ajo mund të marrë fjalë për fjalë orë. Ky është vetëm një shembull, për të mos irrituar me përpjekje sa më shumë ajo ishte në C, por për t'ju ndihmuar të vlerësojmë se kur ju bëni diçka të zbatojë në C ju me të vërtetë kuptojnë, ose në teori, të vërtetë kuptojnë se si çdo gjë është ose duhet të punojnë, dhe ju keni kontroll pothuajse të plotë mbi atë që po ndodh nën kapuç, dhe me këto gjuhë të nivelit të lartë ju duhet të heqë dorë nga kontrolli më shumë për njerëzit që shpiku ato dhe i nënshtrohen më shumë për vendimet e tyre të projektimit se tuajat. Por në qoftë se ne kemi marrë për të dhënë se performanca nuk është mjaft aq i rëndësishëm në Web për shkak të këtyre çështjeve të tjera, vetëm me shpejtësi të rrjetit janë pak të ngadalshëm se sa CPU shpejtësi gjithsesi, kështu që ne mund të lloj të përballojë për të përdorur një gjuhë pak më të ngadalshme nëse upsides janë gjëra që ne mund të zhvillojnë 10 herë më të shpejtë, ose edhe më shumë. Le të shohim se si ne mund të filloni duke përdorur këtë. Më lejoni të shkoj në një dosje ndër shembujt e sotme quhet frosh.ims, dhe kjo ishte në fakt i motivuar personalisht nga fakti se gjëja e parë Kam shkruar për Web vjet më parë pas marrjes CS50 dhe CS51 ishte një website për programin IMs Frosh, sportive fillestar i brendshëm, e cila në atë kohë kjo ishte vjet mjaft parë se në kohën nuk kishte faqen e internetit për programin, edhe pse ka pasur një Web, dhe në vend ka pasur një Proctor në Wigglesworth ku në qoftë se ju të kërkuar të regjistroheni për volejboll ose futboll ose çfarëdo që ju do të plotësoni një copë letër. Ju pastaj do të ecin nëpër oborr. Ju pastaj do të trokasin në derën e tyre dhe rrëshqitje në derën e tyre, ose dora në Proctor një copë letër me emrin tuaj në të, ose nëse nuk ju duan të jenë një kapiten i ekipit, atë sport që ju të kërkuar për të bërë, dhe çfarë ju keni qenë fjetore in Ajo ishte lloj i një mënyrë të shkollës së vjetër të bërë gjëra, dhe kjo ishte një kryeministër mundësi për të Automate një shumë të këtij procesi. Ju thjesht shkoni në faqen e internetit. Ju shkruani diçka in Ju merrni një konfirmim email, dhe bum, ju jeni bërë. Kjo ishte gjëja e parë që kam bërë, megjithëse në një gjuhë quajtur Pearl, por është relativisht e lehtë për të bërë në PHP, dhe kjo është lloj i përfaqësuesit nga problemet që ju mund të filloni zgjidhjen, kur ju mund të shprehin veten programuar dhe nuk duhet të mbështetet në gjëra të tilla si faqet e Google ose Excel ose mjete që janë dorëzuar për ju. Ju djema tani kanë mundësinë për të bërë gjëra të tilla si kjo. Ky është një version super e shëmtuar e një formë, por le të vetëm e përdorin atë për fillimin e bisedës ku kjo është e afërsisht çfarë forme dukej si vjet më parë për ne për të mundësuar njerëzit në Web për të nënshkruar për Frosh IMS. Ne kemi kërkuar për një emër, një checkbox për të nëse janë apo jo ata dëshironin të jenë kapiten, mashkull apo femër, dhe pastaj atë që ata ishin në fjetore, dhe atëherë ata do të paraqesin këtë formë. Le të shikojmë të parë nën kapuç në HTML që përfaqëson këtë faqe. Më lejoni të shkoj në froshims0, dhe si një mënjanë, për pset 7 Unë jam duke marrë për të dhënë drejtoritë dhe dosjet që unë jam vënë gjërat in Ne do të ecin ju nëpërmjet saktësisht se ku stuff ka për të shkuar në aplikim, i cili urdhëron mod ju keni për të kandiduar, kështu që mos u bëni merak për të gjithë të Detajet budallaqe syncing në nga get-go këtu. Të gjithë të drejtë, këtu është froshims0.php. Më lejoni të lëvizni poshtë, dhe çfarë është kurioz këtu, kjo është një fotografi PHP, por ajo që është në brendësi të saj, në mënyrë të qartë? Kjo është një tërësi shumë të HTML, dhe në të vërtetë, origjina e php me të vërtetë kanë qenë për të qenë një Web-centrike gjuhë. Një moment më parë ne kemi përdorur atë për të zbatuar shembullin birrë, kushtet shembull, shembulli Përshëndetje, dhe kjo është në rregull. Ju mund të përdorni PHP si gjuhë e shkruar ku një dorëshkrim është në të vërtetë vetëm nomenklatura dhënë një program të shpejtë dhe të pista apo diçka që ju shkruani në një gjuhë shkruar një ose më në përgjithësi interpretuar. PHP është super e dobishme për shkak se ju keni parë se sa shpejt relativisht ne mund të nxit programe në PHP. Por ajo është projektuar të vërtetë për t'u përdorur për Web, dhe i projektuar për Web në kuptimin që vërejnë deri këtu në krye të dosjes Unë të fillojë me