[Powered by Google Translate] [Săptămâna 8] [David J Malan] [Universitatea Harvard] [Acest lucru este CS50.] [CS50.TV] Bine ai venit înapoi. Acest lucru este CS50, iar acest lucru este începutul de 8 săptămâni. Un tânăr de oportunități în această săptămână, printre ele această discuție aici, la unele alimente care vor fi servite. Pentru mai multe detalii verifica afară de slide-uri, care sunt on-line. Și, de asemenea un alt eveniment de săptămâna aceasta de către propria noastră Thomas Carriero. El este unul dintre CS50 lui semenii fostul didactice cap, care este acum la Dropbox, și el e tipul care ne-a cuplat cu știi ce, așa că, dacă vrei mai mult de acel cap de Discuție lor această după-amiază pentru Dropbox și mai mult. CS50 masa de prânz este aceasta vineri. Face să ni se alăture, dacă sunteți în măsură, 1:15, ca de obicei, la Fire and Ice. Și acum ne arunca cu capul în ceva numit Seminarii. Seminarii noastre CS50, retragere de pe piață, sunt aceste cursuri opționale conduse de către colegii de predare și asistenți curs și prieteni ai cursului, oameni dintr-un grup în campus numit ABCD, care este un grup de tehnofili în campus, precum și un grup numit HCS, Harvard Computer Society, studenții care sunt interesați în mod similar în calcul. Lotul din acest an de seminarii include seminarii pe Android și iOS și JavaScript și PHP, Unix, Vim, și mai mult, astfel încât să realizeze aceste seminarii se apropie. Dacă doriți să RSVP pentru ca nici una dintre ele merge la acea adresă URL acolo. Apoi vom posta pe site-ul cursului de ori și locurile odată ce acestea sunt finalizate. Dar să știi că merită despre 5 ani de seminarii anterioare disponibile on-line, dintre care multe sunt încă foarte mult curent, în ceea ce privește tehnologiile s-ar putea vrei să joci cu ei pentru proiectele dvs. finale, deci nu merge pentru unele videoclipuri disponibile ale acestora. CSS, aceia dintre voi care sunt familiarizați cu CSS deja, ceea ce este într-o coajă de nucă? Ce este CSS? E foi de stil în cascadă, și ce înseamnă asta? Ce face asta pentru noi, CSS? În regulă, hai să se încălzească cu una mai ușoară, HTML, Hypertext Markup Language. Ce face asta pentru noi? Oricine, la toate? Devine foarte ciudat cer aceste întrebări. HTML, Hypertext Markup Language. Da? Nu? [Răspuns studentul neauzit] Bine, bine, ne permite pentru a marca text pentru a afișa într-un browser Web. Nu este un limbaj de programare. E într-adevăr un limbaj de marcare, ceea ce inseamna ca browser-ul instruiește cum să afișați informații, astfel încât cea mai simplă încarnare a acestui după cum am văzut este ceva de super-simplu ca boldfacing, deschis suport suport b închisă spune face acest text aldin, și că, de fapt, e doar una dintre mai multe moduri în care putem face acest lucru, și, într-adevăr, în aceste zile o mai bună abordare pentru a stilizării pagina dvs. de web, făcând lucruri îndrăznețe și cursive și centrat și justificate și ca, nu se face prin tag-uri HTML în monoterapie ci mai degrabă cu o tehnica numita CSS, Cascading Style Sheets. Acesta este un limbaj în sine. Acesta nu prea este un limbaj de programare, dar- toată lumea, aceasta este Dan, care ține alături de noi astăzi. Unele dificultăți tehnice. Nu este o problemă. CSS ne permite să stiliza o pagină prin stabilirea de ceea ce se numesc proprietăți, deci haideți să aruncăm o privire la acest prin intermediul unor exemple de bază. Lasă-mă să intru în aparatul de astăzi. Am sursa de 8 luni de la directorul aici, și am de gând să merg într-un director numit CSS în cazul în care avem o grămadă de fișiere de așteptare pentru noi aici, și, în acest folder avem, de exemplu, de la search0.html ultima dată. Acum, amintesc cu search0 am plecat pe această notă de un fel de punere în aplicare Google sau de fapt doar front-end pentru o săptămână sau cam asa ceva în urmă, și observați că am avut unele tag-uri noi acolo. Am avut H1 pentru o poziție de mare, îndrăzneț, formă, care ne-a permis să avem de fapt un formular HTML pentru introduse de utilizator. Acțiune, care a fost sensul unui atribut acțiune pe eticheta formularul HTML? Care a fost sensul prezentei acțiuni,? Vreau doar să fac acest lucru astăzi. Acțiunea este destinația la care formularul urmează să fie prezentate. Faptul că această acțiune = spune "google.com / search" înseamnă că, atunci când utilizatorul face clic pe butonul submit sau echivalent indiferent de forma domeniile pe care le completat vor fi trimise la serverul nostru nu sau aparatul nostru, ci mai degrabă de a specifica faptul că URL-ul de la Google. Și metoda pe care o va folosi este numit obține, și de a lua, de acum, este doar o tehnica de trecere de-a lungul informații la un server de web prin intermediul URL-ul, deci haideți să aruncăm o privire rapidă înapoi la cum funcționează. Observați că există o intrare al cărui nume este q Tipul a cărui este un text și apoi o intrare al doilea tip prezintă Valoarea cărui este CS50 căutare, și într-adevăr, dacă ne deschidem acest fișier aici, search0.html, este o forma super-simplu, și dacă am căutare pentru ceva de genul informatică și a lovit apoi introduceți sau faceți clic pe Căutare CS50 observați că ceea ce se întâmplă este dincolo de a ajunge la Google Am ajuns în mod special la această adresă URL în partea de sus, google.com / search q =? + calculator știință, și informatică este în mod evident ceea ce am tastat inch + Înseamnă doar că e în cazul în care un caracter spațiu a fost, și se face de către browser-ul doar pentru a vă asigura că nu există nici o confuzie și spațiu alb în URL-ul real. Și apoi q, desigur, este numele parametrului. Nu am vazut cum putem, programator, poate accesa de fapt, încă q. Putem presupune că Google știe ce să facă cu asta aici, dar vom ajunge acolo în timp util de astăzi. Dar permiteți-mi să aruncăm o privire la locul search1.html, care arată un pic diferit pentru ca am decis că această formă a fost aici, doar un pic lame. Adică, e în partea stângă sus. Nu e chiar nici o estetica la ea, și așa vreau să stiliza această un pic mai mult ca Google, a cărui pagină de start, rechemare, chiar dacă nu l-ar putea vizita pe care de multe ori, se pare ca acest lucru astăzi de Halloween. Dacă deschidem loc la versiunea 1 a acestui fișier, căutare 1.html, l-am centrat. , Încă destul de urât, dar cel puțin acum am inceput sa controleze estetica această pagină nu doar marcarea acestora. Să aruncăm o privire la căutare 1, și nu e doar o diferenta aici, care ar putea sari la tine, sau poate nu, dar ceea ce e linia de una sau fragment de diferență? Nu e stilul acestui atribut, deci se pare că, în HTML cele mai multe elemente, cele mai multe tag-uri pot avea un atribut de stil pe ele, și în interiorul acestui atribut stil este un șir citat, și că șirul este citat CSS. Puteți pune foaie de stil cascada acolo prin specificarea ca un nume de proprietate urmată de două puncte, urmată de o valoare. Aceasta este un fel de decizii de proiectare nefericit cu câțiva ani în urmă faptul că CSS este un limbaj în sine, dar punct de vedere sintactic este foarte diferit de HTML. În acest caz, vom vedea ca in interiorul lui pagina mea de web, care este scrisă în HTML, Am CSS interiorul acestor citate, și Convenția pentru CSS este că aveți ceea ce se numește o proprietate, urmat de, din nou, un colon, urmată de valoarea a bunului, astfel încât nu există nici un semn egal. Nu e nici citate suplimentare. E doar această pereche de colon separat valoarea cheii, și linia de text face exact ceea ce spune. Aceasta aliniază textul din corpul paginii, care este într-adevăr curajul de pagini, în centru. Bine, rezultatul final, apoi, să fie clar, este aceasta. Nu toate că mai sexy, dar cel puțin este centrat și un pic mai mult ca adevarata Google. Dar ce se întâmplă dacă am deschide loc la versiunea 2 a acestui și subliniez aici o etichetă cu totul nouă? Acum, în capul paginii mele, care anterior a avut doar ceea ce tag-ul în toate exemplele anterioare? Ea a avut doar acest lucru, titlu. Un moment în urmă tag-ul capului arăta acest lucru. Acum, în loc are o etichetă în interiorul stil de ea, și asta, îmi cer scuze, punct de vedere sintactic arata foarte diferit de HTML, dar te obișnuiești cu el, prin interiorul tag-stil Pot factor acum ce a fost un moment în urmă un atribut, atributul style, si eu pot pune la foarte de sus a paginii. De ce? Ei bine, acesta este un pas spre curățare lucrurile, la fel ca în scris cod C ne-ar scrie, uneori, funcțiile de factorul în funcționalitatea comună. E doar un pic mai curat pentru a începe de factoring lucruri, cum ar fi estetica la o singură locație centrală, mai degrabă decât având în totul de-a lungul presăra HTML. Aceasta prea face ceea ce spune, chiar dacă există un pic de noua sintaxă. Acest lucru aici este un selector, și corpul înseamnă doar selectați elementul organism și să aplice următoarele proprietăți la aceasta. Ei bine, proprietatea este exact la fel. Pentru o bună măsură am adăugat o virgulă la sfârșitul anului, care tinde să fie convenție, și am înfășurat toată această proprietate în acolade pentru că am putea avea de fapt lucruri diferite aici. Am putea spune, de fapt ceva de genul culoare: albastru; Acum, acest prea nu va fi un pas spre ceva tot ce mai frumoasa, dar daca ma duc acum la versiunea 2 am făcut, cel puțin acum corpul meu Pagina de text toate albastru. Butonul rămâne același pentru că e un input. Nu e de text pur. Dar totul altceva, care este un text, cum ar fi CS50 Căutare până sus, este în albastru fapt. Din nou, tot ce am făcut acum este scoateți din tag-ul body, Notă, atributul de stil, și am luat-l aici. Aceasta nu este o îmbunătățire uriașă, dar dacă vom lua acest pas mai departe observați ceea ce putem face în această a treia versiune aici. În search3.html pagina web este aproape identică , cu excepția pentru ceea ce etichetă nouă acum? Link-ul, astfel încât acesta nu este foarte bună dreptate numit pentru că nu sunteți de legătură în sensul unui hyperlink se poate face clic. Mai degrabă, ești un fel de a face echivalentul a # include în C prin tag-ul link-ul cu un atribut href și un atribut rel spune merge mai departe și copie inserați conținutul unui fișier denumit search3.css chiar aici, în esență. Ea nu face destul de asta, dar asta e spiritul de ea. Se spune că merge deschis dosar, search3.css, și trata ca și cum utilizatorul ar fi introdus-o chiar aici, în capul paginii la fel cum am făcut-o în exemplul anterior. Search3.css, între timp, este destul de simplu. Este într-adevăr doar conține exact ceea ce a fost un moment în urmă în tag-ul stil, dar eu am luat-l aici la dosarul propriu. Chiar dacă nu ne-am petrecut mult timp, la toate în format HTML sau programare web doar intuitiv ce e motivația, probabil, pentru factoring din acest fragment de mici, chiar de CSS în propriul fișier și apoi, inclusiv cu această etichetă de link aici? [Răspuns studentul neauzit] Bine, e mai ușor de citit, în sensul că aveți CSS-ul într-un fișier CSS. Ai HTML în fișierul HTML, asa ca este mult mai ușor de citit în acest sens. Ce altceva ar putea fi convingătoare? Da,. [Răspuns studentul neauzit] Da, astfel încât aveți posibilitatea să includeți-l de mai multe ori, așa că acum facem aceste exemple de bază cu fișiere individuale, dar să presupunem că sunteți de fapt face un site adevarat ca tine va pentru PSET 7 sau proiectul final, probabil, și doriți să aveți mai multe pagini Web, astfel cum este, cu siguranță comună pe Web lumea actuală Wide, și ar fi un fel de lame trebui să copiați și să lipiți aceeași culoare albastră și același text aliniat centru în fiecare dintre aceste pagini. Mai degrabă face mai mult sens să țină afară, la fel ca am facut in C cu fișierul. h, pune-l într-un loc central, în acest caz search3.css, și apoi se lasă orice fișier în site-ul dvs. pentru a include, de fapt acel fisier prin intermediul acestei etichete aici, în linia 16. Așa cum este de obicei cazul, am început cu versiunea 0, ce fel de lucrări dar nu este neapărat cel mai bun, si cu fiecare pas, căutare 1, căutare 2, 3 și acum caută-am luat acești pași pentru copii spre modele care sunt un pic mai curat și sunt mai pregătitoare pentru mai multe pagini complexe cu care ne-ar putea face pe drum. Lasă-mă să deschid un exemplu ultima aici doar pentru a vedea o pagină și mai stilizate, dar mai întâi să ne uităm la HTML. Acest lucru este search4.html, și observați că structural este aproape aceeași , cu excepția pentru introducerea unei etichete noi, div. Div este o etichetă care introduce o divizie a paginii. Vă puteți gândi la acest lucru ca un dreptunghi invizibil. Este un fel de creează o fâșie de suprafață în pagina Web pe care le puteți stiliza pe toate o dată. Ceea ce am făcut aici este după cum urmează. Interiorul tag corpul meu, care a fost acolo tot timpul, Spun crea o divizie a paginii aici prin intermediul liniilor 45, prin 47, și asta înseamnă în esență, da-mi un dreptunghi invizibil de-a lungul partea de sus a paginii. Atunci dă-mi un dreptunghi al doilea, deși invizibil, de mai jos, care, și-l identifice prin conținutul nume, apoi în cele din urmă, da-mi o divizie treime din pagină la partea de jos ID-ul numit. Vom vedea de ce am făcut acest lucru în doar un moment, dar conceptual, am o divizie antet. Am o divizie de conținut, și am o divizie subsol a paginii chiar dacă acestea sunt doar în marcaj. Utilizatorul nu este de gând să vadă 3 dreptunghiuri, dar un fel de structural acolo în spatele scenei de fapt ele sunt prezente. Acum, cui îi pasă? De ce de fapt acest lucru? Orice altceva pe pagină este același ca le-am vazut inainte. Aici e forma mea. Iată de intrare meu, intrarea mea, un sfârșit de linie și așa mai departe. Iată o imagine, deși, așa că vom vedea în cazul în care aceasta a venit de la intr-un moment. Aici e un subsol, care este nou, doar pentru că am vrut să introducă Conținutul ceva mai mult aici. Dacă am parcurge observați că ID-ul de la acest div este antet. ID-ul acestui div este conținutul, și ID-ul acesta este subsol. Și, după cum sugerează și numele, atunci când aveți un atribut ID în HTML, prin definiție, trebuie să identifice în mod unic unul dintre elemente, una dintre cele etichetele în pagina ta. Sarcina este total pe tine să vă amintiți că aveți un ID de antet deja. Ai un subsol. Aveți deja un ID de conținut. Computerul nu este de gând să dau seama ce este disponibil un ID pentru tine, astfel încât ai putea da accidental 2 tag-uri un ID de antet, și că ar fi greșit. Trebuie să păstrați în minte ceea ce ati creat, dar odată ce ați făcut asta Notă ce putem face aici. Eu pot specifica acum în tag-ul stilul meu de la partea de sus sau echivalent în dosarul meu CSS, dacă am fost încă folosesc acea versiune, Eu pot să spun # antet, și ceea ce înseamnă că este că, indiferent de tag-ul în această pagină web are un ID de antet # și, doar prin convenție umană, reprezintă ID-ul. Semnul ascuțit sau diez reprezintă ID-ul. Antet este numele pe care l-am dat. Acest lucru înseamnă aplică această proprietate CSS la orice etichetă în această pagină poartă un ID de antet. Aceeași afacere aici. Aplicați această proprietate, care se întâmplă să fie la fel, la orice element de al cărui ID este conținut, și apoi în jos aici Am observat un pic crescator cu subsol. Orice element a cărui identitate este subsol, din care nu poate fi doar unul prin definiție, mergeți mai departe și face ca dimensiunea de font mai mic, greutatea sa îndrăzneț font, marja sa de 20 de pixeli. Ce înseamnă asta? E doar o marjă de pe partea de sus, de jos, și stânga și dreapta. Acest lucru înseamnă să-mi dai o marjă de 20 de pixeli invizibil în jurul valorii de ea doar pentru a împinge orice altceva de la ea un pic, ca tine s-ar putea face în Word, Microsoft Word sau pagini sau similar. Și apoi alinia textul centru. Să vedem rezultatul final, iar apoi vom merge înapoi până la fragmentul cea care rămâne de CSS acolo. Aceasta este versiunea 4, ultima noastră pentru exemplele de căutare, și e mai sexy mult, mult. Acum, în corectitudine, am cautat pe Google doar "logo-ul Google generator de font." Și asta mi-a permis să creeze un GIF, un format de imagine, care arată ca asta acolo. De fapt, puteți face acest lucru prea. Avem "Google generator de fonturi logo-ul." Să vedem dacă putem face acest lucru. Bine, cred că acest lucru este site-ul am folosit. Putem spune CE 10, de exemplu, și să le facă propriile lor. Puteți juca cu asta toată ziua de lungă și apoi faceți clic dreapta pe el și apoi descărca GIF real, care este tot ceea ce am făcut. Și într-adevăr, de aceea in HTML meu, reamintesc, aici Am avut o etichetă imagine, pe care am văzut săptămâna trecută pe scurt a căror sursă este logo.gif. Și ce a fost din nou motivația pentru a avea acest atribut ALT, această alternativă atribut? Da,. [Răspuns studentul neauzit] Bine, deci 2 motive într-adevăr, în cazul în care browser-ul nu poate trage imaginea pentru că aveți o conexiune la rețea lentă sau imaginea este corupt sau ceva de genul asta, cel puțin uman poate vedea "CS50 căutare," și apoi, de asemenea, din motive de accesibilitate. Dacă aveți un utilizator care este orb și este folosind un cititor de ecran și, prin urmare, în mod evident, nu pot vedea imaginile pe care le pot, cel puțin auzi textul cazul în care computerul lor este de a le vorbește. În general, acest lucru este cel mai bine practică atunci când vine vorba de accesibilitate a paginilor astfel încât utilizatorii chiar și în această situație pot auzi sau vedea, ca să spunem așa, ceea ce este că e pe pagina ta. Nu e un alt lucru pe care am făcut-o aici care este un pic interesant, și vom vedea mai multe despre acest lucru în problema set 7 prin intermediul uneia dintre cele pantaloni scurți conduse de unul dintre semenii didactice. Dar # conținut se referă la tag-ul al cărui conținut este ID-ul, dar apoi există un caracter spațiu, și apoi e de intrare cuvântul. Ei bine, ce e interesant despre CSS este faptul că puteți se referă la tag-uri într-un fel de pagină ierarhic, și ce înseamnă acest fragment de CSS este că tag-ul al cărui conținut este ID-ul, iar apoi se aplică următoarele proprietăți la toate etichetele de intrare, care sunt descendenti de conținut, care este, care sunt indentate în interiorul de ea. Indentare, din nou, este important doar pentru calculatorul, nu om, dar, prin convenție, am liniuță lucrurile așa cum vom merge mai adânc într-o pagină, astfel, aceasta înseamnă aplică o marjă de 5 pixeli la orice element de intrare asta e undeva in interiorul sau imbricate în interiorul  elementul al cărui conținut este ID-ul. Cine se care se aplică? Ei bine, nu e de fapt doar aceste 2 tipi aici. Observați că în interiorul formularului există două intrări, ca acolo a fost pentru toate aceste exemple. Dar observați că aceste două intrări se întâmplă să fi imbricate în interiorul, deși un pic profund, un cuplu de indentare straturi, interiorul tag-ul al cărui conținut este ID-ul. Ce înseamnă? Dacă mergem la browser-ul aici puteti vedea vreodată atât de ușor- permiteți-mi să mări-că există un pic de umplutură între butonul și între câmpul de text. Permiteți-mi să dezactivați temporar aia. Lasă-mă să merg până la CSS mea, și lasă-mă să merg mai departe și doar schimba această marjă de la 5 la 0 pixeli pixeli. Lasă-mă să mergeți mai departe și salva fișierul, du-te înapoi la motorul de căutare și reîncărca, și urmăriți de mijloc a paginii. Totul a fost comprimat, împreună, și când am biciuit primul acest exemplu M-am gândit că părea a fi prostesc cu câmpul text și apoi butonul de imediat sub ea. Am vrut să-pad-l un pic, așa că am introdus margini. Ceea ce nu vom face în prelegerea se trece prin câteva zeci de Proprietățile CSS care există deoarece, din nou, există lucruri, cum ar fi dimensiunea fontului, greutate font, profit, textul alinia, și alte câteva zeci, si te vom referi la problema setat la 7 la tutoriale diverse on-line și referințele care vă permit să iau aceste lucruri. Dar ceea ce este cu adevărat important, la sfârșitul zilei este de a intelege modul in care aceste lucruri sunt aplicate. Din nou, dacă avem tag-ul interior stilul de care pot merge pe selectorii, tip de identificare care specifică la care vrei să se aplice acestor proprietăți, si apoi ai pus proprietățile ca pereche de valori-cheie separate de două puncte și apoi sa încheiat cu un punct și virgulă, sau puteți înregistra toate că afară și pune-l într-un fișier separat CSS sine. În regulă, orice probleme referitoare la conceptele sau imaginea de ansamblu a CSS? Veți vedea din nou, mai mult de ea în PSET 7, dar ne vom păstra, în general, destul de simplu. Nu? Bine. E timpul pentru un limbaj de programare actuală, și ne vom întoarce la un pic de CSS în formă de un exemplu. PHP este de fapt un limbaj accesibil minunat în sensul că este sintactic aproape echivalent cu C. Cu alte cuvinte, dacă știi C, știi pentru PHP cea mai mare parte, cel puțin sintactic, chiar dacă există unele caracteristici noi și unele concepte noi vom trebui să se uite la. Dar pentru cea mai mare parte, acum că am tranziția de la C la PHP de cele mai multe lucruri noi este cu adevărat în imaginea de ansamblu, modul în care utilizați un limbaj pentru programarea pe Web, spre deosebire de la linia de comandă sau într-un prompt clipește cum am făcut până acum. Pentru referință, în special cu PSET 7 și mai departe final al proiectului, nu profita de acest URL aici, dacă doriți să citiți pe formalitățile de PHP. E ca si cum de fapt un manual online gratuite eficient, și veți găsi, de asemenea, că ceea ce e cu adevarat frumos despre PHP este că există sute de functii care vin cu ea, întrucât, în C nu ai avea neapărat acces la mai multe funcții decât erau în bibliotecă matematică, biblioteca CS50. În PHP și o mulțime de limbi moderne, Python și Ruby printre ei, ai acces la mai multe funcții, astfel, ceea ce înseamnă că veți obține pentru a scrie mult mai puțin cod, deoarece vă poate sta pe umerii altor oameni care s-au scris deja anumite lucruri pentru tine. Să luăm un tur rapid de sintaxa PHP și apoi scrie câteva exemple. Ce e frumos despre PHP, în primul rând este nu există nici o funcție principală. Dacă doriți să scrieți un program în PHP începi scrierea de cod, și nu trebuie să vă faceți griji cu privire la principal. Nu e nici o int. Nu e nici o întoarcere. Nu e nici o argv, argc care este necesar, atunci când scrieți programul. Mai degrabă puteți începe doar scrierea de cod, și acest lucru este în parte pentru că PHP este ceea ce se numește un limbaj interpretat. C a fost compilat, și a fost compilat în sensul că începe să cu codul sursă, acesta trece prin zăngănit, care este un compilator, și în cele din urmă, după un numar de pasi vei obține codul obiect, 0s și 1s. PHP și Python și Ruby si Pearl și altele sunt tipuri diferite de limbile în care nu le compila. Tu nu te duci de la codul sursă la 0s și 1s. Tu doar să rulați codul sursă, și aveți o codul sursă prin scrierea într-un fișier text obișnuit, care se încheie în. php, în acest caz, în loc de c,. și ceea ce face programul pe computer se interpretează literal linia de cod de linie cu linie. Cu alte cuvinte, mai degrabă decât a scrie un program și rulați programul direct în loc să scrii un program cu un fișier care se termină în. php. Atunci când executați un program real numit php.exe, dacă sunteți pe Windows, sau doar PHP daca esti pe Mac OS sau Linux, și va oferi ca intrare pentru programul PHP codul sursa proprie, și scopul său în viață este de a citi codul de top în jos, de la stânga la dreapta, și face tot ce-am spus să facă. Să vedem ce se va însemna punct de vedere sintactic. În PHP avem condiții. Acest slide este identic cu ceea ce ai văzut în săptămâna 1 deoarece condițiile punct de vedere sintactic, IFS și IFS altă și altă în PHP arata exact ca asta. Când vine vorba de expresii booleene au de gând să arate exact ca asta. Când vine vorba de anding lucrurile împreună, ca booleans se va arata exact ca asta. Întreruperi arata la fel, și veți obține avantajul suplimentar în PHP că switch-uri în C ar putea trece doar pe un char sau int-o. Tu nu ar putea trece pe o valoare șir. În PHP puteți avea de fapt o expresie că este o variabilă a cărei conținut este un șir de caractere, și puteți face de fapt comparație șir în mod intuitiv real, Nu comparație indicatorul, în scopul de a decide dacă să facă caz ​​i sau j sau altceva. Vom vedea că potențial înainte de lung. Bucle prea minunat sunt la fel. Pentru bucle au o initializare, o conditie, si un numar de actualizări. În timp ce există, de asemenea bucle în PHP. Face în timp ce există, de asemenea bucle în PHP, și matrice există în PHP, dar aici e în cazul în care sintaxa începe pentru a obține un pic diferit, dar conceptele sunt aceleași, iar conceptele sunt într-adevăr aceleași așa cum au fost în Săptămâna 0 cu Scratch. În primul rând este semnul $. Aceasta a fost o decizie de design în PHP, prin care orice variabilă în PHP de design începe cu semnul $. Nu e nici mai mult X, Y, Z. Acum e $ X, Y $, $ Z doar pentru că. E ceva pentru a păstra în minte, iar acum pe partea dreaptă acest lucru pare similar cu o matrice, dar suntem folosind paranteze pătrate aici. În PHP și în JavaScript, așa cum vom vedea în cele din urmă, a declara o matrice faci suport deschis si inchis pătrat suport pătrat, și atunci aveți o listă separată prin virgulă de valori, dacă Ints sau siruri de caractere sau caractere, ce vrei, în interiorul acestei expresie acolo. Acum, cum am face așa ceva în C? Care a fost sintaxa de declarare static o serie de numere cunoscute? A fost acolade, diferență atât de minoră aici, dar în ambele PHP și în cele din urmă JavaScript-l folosește doar între paranteze drepte, astfel încât într-adevăr detalii numai interesant aici este semnul $ pentru numele variabilei și, de asemenea, între paranteze drepte, și nu e un lucru curios care a fost omise, precum și pe partea stângă a semnului =. Ceea ce lipsește pe care le-am fost necesitând pentru săptămâna acum? Da,. [Răspuns studentul neauzit] Dimensiunea, deci nu exista nici o mentiune de dimensiunea tabloului. Sincer, nu e nici o mențiune de paranteze pătrate pe partea stângă a semnului =, și ce altceva lipseste din linia? Da >> [elevului răspunsul neauzit]. Tipul, astfel încât ceea ce este interesant, în special, despre PHP este faptul că aceasta nu este un limbaj puternic tipizat ca C este, și care este puternic tastat în sensul că trebuie să spui char, trebuie să spun int, trebuie să vă spun float. Oricand vrei o variabilă trebuie să-i spun ce tip zăngănit sa este. PHP este un pic mai leneși. Este vag tastat în sensul că poti avea flotoare și caractere și șiruri și Ints și așa mai departe, dar limba în sine nu-i pasă cu adevărat ceea ce ai pus în interiorul unei variabile. Nu trebuie să-l informeze în prealabil ce tip de date se întâmplă într-o variabilă. Este în întregime până la tine, așa că acest lucru este frumos în care nu trebuie să vă faceți griji la fel de mult despre datele tastarea și îngrijorătoare ce argumentele tale sunt și așa mai departe. Acest lucru înseamnă, de asemenea, eventual funcții în PHP sunt de gând să fie în măsură să se întoarcă fie cea mai mare o int de timp, și poate o dată într-un timp vor returna o bool, un boolean fals, de exemplu, pentru a semnifica faptul că ceva a mers prost. Acest lucru ne dă câteva upsides, dar, de asemenea, ne va face de către un fel de proiectare un pic mai leneș atunci când vine vorba de tastarea datelor. Ce altceva este acolo pentru a păstra în minte aici? Variabile arata destul de genul asta, deci $ s = "Hello, World". Asta e, probabil, deduse din exemplul anterior, și avem un alt tip de buclă. Aceasta vom vedea de fapt, o dată într-un timp, deoarece este destul de la îndemână, un foreach construi. În acest caz, bucla foreach ia în interiorul ei paranteze 3 cuvinte de obicei, $ Ceva mai întâi, care este ceea ce vrei matrice pentru a itera peste membrii, apoi literalmente cuvântul cheie ca, și apoi în cele din urmă, un alt nume variabila că veți obține pentru a alege. Acesta poate fi foo, bar, sau element, și ceea ce face acest construct este dacă array $ conține 10 elemente pe fiecare iterație a acestei matrice-rău, pe fiecare iterație a buclei acest elementul variabil chemat urmează să fie actualizată pentru a fi primul element din matrice, apoi al doilea element din matrice, apoi al treilea element al matricei, eliminând astfel necesitatea pentru a face notația ușor enervant suport pătrat și $ I, în scopul de a indicelui într-o matrice. PHP face toate care lucreaza pentru tine si la fiecare iterație doar iti da urmatorul element din matrice fără a fi nevoie să cunoască sau pasă de locația sa indice numeric. Și apoi în cele din urmă, pentru moment, există un alt element din PHP care va fi extrem de utilă, mai ales atunci când vom începe de programare pe Web, și care este cunoscut ca un tablou asociativ. Tablouri pe care le cunosc, astfel, ceea ce de 20 de secunde în urmă și pentru ultimii 8 săptămâni sunt indexate numeric tablouri, un fel de matrice tradiționale în cazul în care indicii sunt Ints, 0, 1, 2, tot drumul pe sus. Tablouri asociative sunt mult mai puternice. Ele vă permit să aibă chei arbitrare, Indicii arbitrare și valori arbitrare. Întrucât într-o matrice tradițională este 0, 1, 2, într-un tablou asociativ puteți avea un index sau o cheie de foo a căror valoare este de bar. Puteți avea apoi o altă cheie al cărui nume este Baz și a căror valoare este qux. Din nou, stupide informatică denumirile generice variabile aici, dar ideea este că această matrice nu are suport 0 sau suport 1. Este în schimb va avea suport foo și suport Baz. Acest lucru este mult mai versatil, în care vom fi capabili să se asocieze cuvinte cu alte cuvinte, chei cu valori complet arbitrar, și vom fi în măsură pentru a obține aceste valori înapoi în timp constanta deoarece sub capota ceea ce o matrice asociativă este într-adevăr este un tabel hash. Amintiți-vă că un tabel hash vă permite să pună în unele de intrare Vrei pus în cuvântul lui David, dacă doriți să inserați lui David într-un fel de dicționar, și apoi te întorci o anumită valoare de obicei. În caz de abecedar, adevărat sau fals. David sau orice cuvânt este sau nu este în dicționar. Un tablou asociativ este de fapt doar un tabel hash, dar este o întrupare de utilizator mult mai prietenos din ea. După cum vom vedea, o să ne permită să facem unele lucruri foarte, foarte usor. Să aruncăm o privire la unele de bază, PHP exemple și să vedem ce putem face cu acest limbaj. Lasă-mă să mergeți mai departe și să deschidă în directorul sursă noastră de astăzi un fișier numit hello1.php. Acest fișier este în comentariu mai mult decât este codul actual, asa ca lasa-ma elimina de fapt toate comentariile de la dosar și pentru a vă prezenta, probabil, cel mai simplu program de PHP chiar aici. 5 linii, iar unele dintre aceștia sunt spații albe, observați astfel încât unele diferențe cheie aici. Fișierul este denumit hello1.php. Linie foarte în primul rând, deși, este ,? Înseamnă că e pentru codul meu PHP. Să vedem cum să executați acest lucru. Mă duc să mă întorc la fereastră terminal mea aici. Am de gând să meargă în directorul meu PHP. Observați că avem o grămadă de fișiere, prima dintre care este hello.php. Lasă-mă să mergeți mai departe și a alerga acest hello1.php,, introduceți. Permisiune refuzată. Bine. Cum am stabilit lucruri, cum ar fi acest lucru în trecut? Ce-i asta >> [elevului răspunsul neauzit]? Avem nevoie de citească și să scrie, dar permiteți-mi să fac ls-l. Amintiți-vă această ieșire oarecum criptic, prin care hello1 pare a fi citit si scris de mine dar poate fi citit de oricine altcineva. Se pare ca aceasta de fapt nu este un pas în direcția cea bună. Diferența, din nou, cu un limbaj interpretat este să nu executați programul direct. Tu conduci în schimb un interpret și predați-l codul pe care le-ați scris astfel încât să poată interpreta aceasta linie cu linie. În acest caz, interpretul sau programul eu de fapt vreau să ruleze este literalmente numit PHP. Undeva pe acest hard-disk de aparat există un program de altcineva a scris numit PHP, sau pe Windows php.exe. Ce am de gând să fac aici este că am de gând să fugi de fapt, PHP dar da-l ca un argument de linie de comandă codul pe care l-am scris, și apoi mă voi depărta și a lovit introduceți. Se rulează programul meu pentru mine, de sus în jos, de la stânga la dreapta. Lasă-mă să mergeți mai departe și de a deschide o variație ușoară a acestui. În anunțul de hello2.php că acest lucru prea este cea mai mare parte comentariile, asa ca lasa-ma sa scap de cei ca o distragere a atenției, și ceea ce este în mod clar diferit acum despre acest fișier? Există această linie nouă, oarecum criptic în partea de sus. În line 1 e #! / Bin / php. Bin este o convenție pe Linux și Mac OS pentru binare, deci / bin înseamnă acest lucru este un dosar care conține o grămadă de binare care este programat, dintre care unul este PHP. #! este poreclit shebang, care este calea rapidă de a spune ea, și ce înseamnă este că, atunci când executați acest program acum nu mai e un indiciu de la partea de sus a fișierului care spune computerului ce interpret pentru a utiliza. Ea devine un pic enervant, dacă a trebuit să spun utilizatorii dvs. și clienții dvs. "Hei, am scris acest program numit hello1.php." Tot ce trebuie să faceți este să rulați PHP pentru totdeauna și apoi numele acestui program. Sincer, ar fi frumos doar pentru a rula hello1.php, și, într-adevăr, dacă putem să facem următoarele. Lasă-mă să mergeți mai departe și de a face ls-l, și aviz în hello2 este încă citit doar scrie și apoi citește citesc, asa ca nu pot face încă acest lucru, hello2.php. Dar am introdus această vreodată atât de scurt de timp trecută, comanda chmod. Dacă aș face un chmod + x, ceea ce înseamnă toate executabil, plus, și apoi hello2.php și apoi se ls-l observați din nou ce a fost modificat. Unul, Linux este arătându-mi numele de fișier în verde pentru a transmite ideea că e executabil, dar, mai important, pe partea stângă observați că biți reprezentând x pentru executabil a fost acum stabilit. Ce înseamnă acest lucru acum este ca eu pot rula ./hello2.php ca de obicei, apăsați enter, și din cauza shebang de la foarte de sus a fișierului asta e un indiciu, din nou, la Linux care spune utiliza acest interpret pentru a rula acest fișier. Nu vă faceți griji cu privire la forțând utilizatorul să tastați de fapt. Și ceea ce este frumos este acum un fel e de irelevante pentru clienții mei sau prietenii mei ce limba am scris acest program în, așa că am putea merge mai departe cu mv și redenumi acest lucru pentru a hello2, de exemplu. Și acum, dacă eu fac ./hello2 și zoom out programul meu continuă să funcționeze. Aceste extensii de fișiere sunt o convenție umană care este necesar pentru ceva de genul zăngănit și de a face, care le caute. Dar pentru PHP, am putea numi acest ceva extensia vreau. Aș putea pacali lumea să creadă că eu sunt foarte bun la Ruby, și am putea scrie hello2.rb și apoi rulați acest lucru, și voila, acum am versiunea Ruby, care este o minciună completă. Dar extensiile de fișiere sunt lipsite de sens în cazul în care fișierul este executabil si are acest indiciu special la partea de sus a fișierului. Acum, ca o paranteză, lasă-mă să-ți arăt repede versiunea 3, care este un fel de truc util să știu. În hello3 am făcut ceva greșit puțin pe care o voi actualiza online codul sursă. În versiunea 3 se dovedește că pe majoritatea calculatoarelor Linux exista un program numit env pentru mediu, și ceea ce puteți face aici este dacă nu aveți nici o idee de unde PHP este instalat pe hard disc, pentru că într-adevăr, s-ar putea varia în funcție de calculator că cineva se utilizează, ENV spune doar rulați env, care se află pe cele mai multe sisteme, și dau seama unde este PHP. Doar un truc comun, astfel încât să nu trebuie să vă faceți griji despre găsirea în cazul în care un program este. Dar dacă faci grijă pentru a afla în cazul în care un program este și nu ați îngrijit până în prezent puteți folosi comanda care. Lasă-mă să zoom out și tipul care php, și observați că acesta mi-a spus că e de fapt in usr / bin / php. E un fel de minciună. Este, de asemenea, în coșul de gunoi. E doar aratandu-mi primul hit. Dacă ați întrebat vreodată de unde este zăngănit, care face să răsune, care este în usr / bin / zăngănit, ceea ce face, usr / bin / face, și ceea ce înseamnă că este tot acest timp Ai fi putut fi tastarea usr / bin / zăngănit introduceți pentru a rula zăngănit, dar e un fel de obositor să faci asta, asa ca unii dosare cum ar fi usr / bin bin și se presupune a fi implicite astfel încât computerul știe să caute în ele pentru tine. Orice întrebări cu privire la scrierea unui super, super-simplu program de Hello World în PHP și apoi rulează? Pentru că acum vom începe să introducă sintaxă mai convingătoare. În regulă, aici vom merge. Aceste programe ne-am văzut de fapt, toate acestea înainte. Dacă aș deschide, de exemplu, să facem beer1.php, nu vom trece prin mai multe versiuni ale acestui, dar ceea ce am făcut am fost așezat și turnat sau convertite codul meu C la codul PHP aici. Cele mai multe dintre partea de sus a fișierului este de comentarii aici. Se pare că nu e o funcție nouă ne trebuie numit readline. GetString, rechemare, de la Săptămâna 0 ulterior a fost un lucru CS50. PHP vine cu propriul user-friendly funcție numită readline care durează 1 argument care specifică prompte pe care doriți să arate la utilizator, și ceea ce face readline se returnează, indiferent de utilizator tipuri de inch În acest caz, am declara o variabilă numită $ n. Sunt stocarea în ea valoarea de returnare a readline după fapt care ia determinat utilizatorul cu acest șir. Doar pentru copii de rezervă, pentru a rula de fapt acest lucru, permiteți-mi să merg mai departe și a alerga php beer1.php. Câte sticle vor fi acolo? Hai să facem doar 2 de data asta. Enter. Asta e tot. Programul este funcțional identic cu versiunea C de la săptămâni în urmă. Dar hai să vedem ce punct de vedere sintactic e diferit. După ce am obține o int de la anunțul de utilizator care fac niște verificări eroare, și dacă n este mai mic de 1 am renunțat și am imprima un mesaj de scuze pentru utilizator și de ieșire cu 1. Acest lucru este de asemenea un pic diferit.  În ceea ce C-am făcut? În C ne-am întors 1. În PHP ieși cu 1, pe care sincer cred că este un pic mai intuitiv pentru ca esti ieșirea literalmente programului. Toate dreapta, și apoi în jos aici melodia enervant este identic sintactic cu excepția variabilei, astfel încât aici, în linia 24 mai departe observați mea pentru bucla este aproape aceeași, dar am $ in fata lui i și n, și ceea ce este, de asemenea, lipsește de la linia 26 pe care le-am avut în trecut Atunci când declarăm o variabilă i? Nu e nici un tip. Este incorect să spun în PHP int. Tu pur și simplu nu trebuie să faci asta. Calculator, PHP interpret este suficient de inteligent pentru a realiza că, dacă ai pus un număr în $ I se va trata ca un număr pentru tine. Și apoi aici am conectați $ i, $ i, $ i - 1. Toate că este aceeași, și apoi în jos aici vom face un "Wow, asta e enervant" printf și apoi ieșiți (0). Din nou, aici este livrata acasa, că, chiar dacă am de gând să petreacă relativ puțin timp în PHP, cu siguranță, față de ceea ce am făcut în C, e aproape la fel, și așa mai departe ceea ce vom face astăzi și săptămâna viitoare și dincolo este să se concentreze într-adevăr pe unele din ideile noi. Doar pentru a vedea că un alt lucru se traduce preluat de la C, acest lucru a fost un program de super-simplu am făcut în Săptămâna 1 sau 2, care tocati o valoare. Dar ceea ce a fost interesant la timp despre acest program este faptul că a introdus noțiunea de funcție particularizată scris că ne-a scris. Sintaxa în PHP este aproape aceeași. Iată programul meu până sus. Observă din nou absent este orice noțiune de principal. Am început scrierea de cod, și aceasta este ceea ce se întâmplă pentru a obține executat de către interpret. Am imprima x este acum 2, probabil. Apoi m-am pretind cubaj ... Apoi am apela funcția cub și să treacă în $ x și atribuie valoarea returnata la $ x. Apoi am pretinde că este tocata, iar apoi spun acest lucru, care, sperăm, va spun x este acum 8. Sintaxa pentru funcția în PHP este vreodată atât de ușor diferită. Din nou, lipsește este tipul de retur. Din nou, lipsește este tipul de returnare și, de asemenea, lipsește este ceea ce alt tip? [Răspuns studentul neauzit] Ei bine, bine, asta e bine. Să revenim la faptul că într-o secundă. Noi nu avem, de exemplu, int aici. Noi nu, de exemplu, s-au int aici pentru că, din nou, în PHP pur si simplu nu este nevoie să și nu ar trebui să facă asta, ci mai degrabă e un cuvânt cheie nou, denumit funcție. În PHP e aproape un pic mai clar, deoarece atunci când doriți o funcție ai spus literalmente funcție, vă dau un nume și apoi o listă separată prin virgulă în cazul în care oricare dintre argumentele sale. Nu este nevoie să spun nule sau ceva de genul asta, si apoi retur este aceeași, $ $ A * a * $ o. Ce este, de asemenea, lipsește? Sammy a subliniat acest lucru aici. În partea de sus a fișierului complet absente in PHP, de asemenea, este un prototip. Acest lucru este de asemenea de proiectare. Limbi și interpreți, cum ar fi PHP sunt mai deștepți decât a fost vreodată C în compilatoare cum ar fi zăngănit. Amintiți-vă că zăngănit, dacă nu ai spune ca acel cub există, dacă nu l-ați spus că există ca printf, cu un prototip sau cu o # include, de asemenea, a fost de gând să țipe la tine și nu compila chiar codul. PHP și mai multe limbi moderne sunt mult mai deștept când vine vorba de acest lucru. Ei vor lua asupra lor pentru a citi prin toate codului și să strige la tine, apoi numai în cazul în care constată nicăieri cub. Nu contează dacă cub este în partea de jos sau de sus, sau chiar, în unele dosar separat. Limbi PHP și similare sunt acum destul de inteligent pentru a privi înainte la tot ceea ce înainte de asimilare tine ca au facut o greseala. În cazul în care nu ne lasă asta? Să facem un exemplu aici ultima în condiții, și dacă am deschide Notă conditions2.php prea Sintaxa aici este aproape aceeași. Sunt folosind readline loc de getString, dar că linia este la fel ca înainte, "Aș dori un întreg vă rog." Am avea atunci o condiție în cazul în care, în cazul în care o parte, și apoi un altul, dar funcțional acest program este, de asemenea, identic cu ceea ce am făcut săptămâni în urmă, așa că, dacă am rula acest lucru, php de conditions2, si eu dau un număr de ca 23 - Am ales un număr pozitiv. Dacă eu dau -1 am ales un număr negativ. Dacă eu dau 0 am luat într-adevăr 0. Deci, cine îi pasă de toate astea? Ei bine, unul dintre un fel distractiv de exerciții aici pentru mine cel puțin a fost să se întoarcă și a vedea cât de repede am putut pune în aplicare PSET 5, greșeli de ortografie PSET. Reamintească faptul că a existat acest fișier numit speller.c, și acolo a fost un fișier numit dictionary.c. Ceea ce am făcut a fost că un fel de petrecut câteva minute și m-am convertit cod C la codul PHP, iar noi nu va petrece prea mult timp pe abecedar pentru că la fel ca în PSET 5 nu ai nevoie cu adevărat să petrec mult timp pe care descifrează în sine, deoarece atenția ta era pe dicționar. Este suficient să spun că, dacă ați citit prin abecedar, acest fișier aici, e destul de mult echivalent cu codul C v-am dat pentru PSET 5. Am adăugat doar câteva $ în locuri. M-am schimbat anumite nume de funcții în cazul în care nu există în PHP. Nu e un lucru suplimentar aici, preg_match, care este modul în care un pic crescator de a face ceva, dar vom reveni la cele din urmă. Dar, în scurt, descifrează este aproape identic, iar daca te uiti la partea de jos foarte ceea ce în cele din urmă scuipă e asta aici, cuvinte scrise greșit, cuvinte în dicționar, cuvinte în text. În regulă, deci ce e interesant acum este următorul. La partea de sus a dosarul meu am nevoie dictionary.php. Așa cum și-a C # include PHP are o funcție specială numită necesita că destul de mult face acelasi lucru, necesită un fișier numit dictionary.php. Cum pot merge despre punerea în aplicare a PSET 5? Lasă-mă să mergeți mai departe și de a deschide un fișier aici. Lasă-mă să iau un pic de referință aici. Și lasă-mă să creați un fișier nou și începe de asteptare acest dictionary.php. Lasă-mă să-l pun într-un alt dosar astfel încât să putem face acest lucru trăi. Și acum voi mări inch Am de gând să înceapă dosarul meu PHP cu suport php deschis închis suport. Și apoi aici, au existat cateva functii care aveam nevoie pentru punerea în aplicare pentru PSET 5, asa ca lasa-mi să încep de punere în aplicare unele dintre acestea, Deci, a verifica funcția, care a trebuit să ia un cuvânt într-un argument ca. Vom face asta și vin înapoi să-l într-o clipă. Nu a fost de încărcare funcție, care a avut în ceea ce ca un argument? Dicționar, astfel încât fișierul pe care am vrut de fapt să se încarce. Nu a fost dimensiunea funcție, care nu a luat nici un argument și acolo a fost funcția de-ceea ce a fost alta? Unload, care nu a luat nici un argument, fie. Acestea sunt cele 4 functii pe care mi-ar trebui să pună în aplicare în prezent în PHP, și ceea ce am de gând să faceți este să mergeți mai departe și de a face acest lucru. O mulțime de ai folosit un tabel de distribuire în PSET 5, asa ca lasa-mi merge mai departe și de a crea un tabel hash în PHP. Adoptată. Asta îmi dă un tabel hash. Ei bine, de ce? Unul, variabila se numeste $ tabel, doar pentru a evoca ideea unui tabel hash. Parantezele pătrate, deși, reamintim, reprezintă ce? O matrice, dar în matrice PHP nu trebuie să fie numeric indexat. Ele pot fi, de asemenea, tablouri asociative, ceea ce înseamnă că puteți avea cheile și valorile arbitrare. La fel ca în PSET 5, aceia dintre voi care au facut implementari hash de masă ați inserat, probabil, cuvântul și apoi introdus-o într-un lanț de liste legate, sau ați stocat undeva valoarea adevărată sau ceva în acest sens. Ți-ai amintit cumva faptul că cuvântul a fost acolo. Pentru moment, care va fi masa mea hash, și așa mai departe acum de a merge despre punerea în aplicare funcția de verificare Trebuie doar să te uiți în interiorul tabelului hash și a vedea dacă un cuvânt este acolo. Ceea ce am de gând să faceți este să am de gând să spun, dacă- să zicem isset, care este o funcție PHP care literalmente înseamnă doar este set-cheie, astfel isset ($ tabel [$ cuvânt], și dacă da, return true. Asta e tot. Asta e PSET 5 in PHP. Ei bine, în corectitudine, bine. Altfel întoarce false, așa că nu e acolo. Ce se întâmplă de fapt aici? Ei bine, dacă tabelul hash-sau masa aici mai general, este un tablou asociativ care înseamnă că poate indexa în ea cu un cuvânt cum ar fi "cuvant", și trebuie să mă întorc o valoare. Suntem un fel de a face cu un pas înaintea noastră. Acesta ar fi un fel de frumos dacă am incarcat de fapt, primul fișier, deci sarcina nu este la fel de simplu, dar lasă-mă să merg mai departe și bici  o punere în aplicare foarte repede de încărcare. Lasă-mă să mergeți mai departe și spun cuvinte devine dicționarul fișier. Funcția fișier în PHP deschide un fișier și se întoarce la tine o matrice de toate cuvintele din acest fișier, doar le inmaneaza pentru tine. Asta a fost o mare durere prea, nu-i așa? Acum foreach, aceasta este noua noastră construct, foreach ($ cuvinte precum $ cuvânt). Această buclă este de gând să înceapă iterarea peste cuvintele matrice și atribuie variabilei $ cuvânt fiecare cuvânt în fișierul de la prima la a doua la a treia și a patra tot felul așa că nu trebuie să fac enervant [i] notația și place. Și ceea ce am de gând să fac pur și simplu, pentru fiecare din aceste cuvinte este stoca în masa mea de indexare în tabelul si apoi faci adevărat, pentru că să-și amintească faptul că un cuvânt este în dicționar mea tot ce am într-adevăr trebuie să fac este un fel de flip un pic și să spună acest cuvânt în masa mea hash este acolo, adevărat. Și dacă nu e acolo, eu nu am să afișezi explicit false, altfel mi-ar trebui pentru a pune false pentru toate cuvintele posibile în univers. Este suficient pentru mine doar pentru a stabili o valoare a indicelui pentru adevărat dacă un cuvânt este, de fapt, în masa mea hash. Acum, am o pereche de tăiere colțuri aici că voi flutur mâinile puțin pentru moment, dar acum funcția de încărcare se face. Am încărca toate cuvintele din fișierul într-o matrice. Am itera peste asta matrice, și pentru fiecare cuvânt în matrice L-am conectați în tabelul meu de distribuire cu 1 linie de cod. Acest lucru este distractiv. Știi cum putem implementa dimensiunea acum? Ei bine, marimea este intotdeauna destul de ușor, în corectitudine. Aici putem face reveni doar numărul de masă. Asta e destul de ușor prea, conta numărul de lucruri în tabel. Asta e de fapt un fel de a nu mai eficient. Ar trebui să am, probabil, o dimensiune variabilă numită astfel încât să putem face acest lucru în timp constant, dar asta e destul de ușor. Oh, și apoi descărcarea, dacă vrem cu adevărat să fie anal aici putem spune că e modul în care descărcați ceva. Puteți seta doar variabilă egală cu o matrice goală, și-l scapa de tot ce a fost acolo. Nu este nevoie pentru a apela gratuit. Din nou, am tăiat niște colțuri, și îmi cer scuze pentru setul de probleme pentru atribuirea 5 probabil în C, dar dacă mergem acum mai departe și a alerga acest lucru, Mă duc să curgă de fapt versiunea pe care am scris în avans doar pentru ca nu am face nici un fel de greșeli sintactice. Lasă-mă să mergeți mai departe și a alerga abecedar. Utilizare este același. Aici este un fișier de dicționar care conține doar cuvântul foo. Aici este un fișier text care conține doar foo bar. Să vraja verifica acest lucru, asa abecedar, folosind acest fișier dicționar la acest fișier text. Nu e un cuvânt greșit ortografiat, bar, și voila. Adoptat cu PSET 5. Să luăm o pauză de 5 minute aici, și ne vom întoarce și mai mult pe PHP. În regulă, ne-am întors. Să-mi fac-urăsc pentru o vreme. Să vedem acum dacă acest fapt nu a fost un rezultat pozitiv punere în aplicare a, de fapt acest lucru în PHP. Desigur, a fost nevoie de 45 secunde pentru a pune în aplicare. Dar să mergem mai departe și a alerga acum lucrurile. Lasă-mă să merg mai departe și a alerga o versiune C de pronuntie, iar noi îl vom rula pe unul dintre cele mai mari fișiere, care este Biblia King James. Și aici este faptul că, în-să mergem în directorul nostru C, descifrează pe King James cincea. O mulțime de cuvinte ortografiate greșit. Ok, deci asta e, probabil, de ieșire ai luat, chiar dacă vremurile sunt un pic diferite, daca ai totul funcționează corect, și așa dată în total pentru verificarea ortografiei King James Bible a fost 0.38 secunde, deci destul de bine cu ajutorul că punerea în aplicare. Acum, lasă-mă să intru în versiunea PHP, pe care tocmai am scris. Permiteți-mi să ruleze pe care descifrează King James. Hopa, ignora această eroare. Sunt în directorul greșit. Descifrează pe King James cincea. Aproape am terminat. Bine, observator atent va da seama că a fost mai mult de 3 secunde acolo. Aceasta este adevărata timpul de funcționare. Se pare că este nevoie de timp să scuipe o mulțime de text din din cauza tamponare probleme, dar povestea pe scurt, care a fost de 3.15 secunde masina a timpului, CPU de timp, față de ceea ce a fost un moment în urmă? Ca 0.3. Adică, e un ordin de mărime mai lent, astfel încât în ​​cazul în care este faptul că încetinirea ridicol provin din? Ei bine, cum a fost cazul cu cele mai multe orice decizie de design care le-am făcut în clasa in ultimele 9 săptămâni există aproape întotdeauna acest compromis. Uneori, doar între spațiu, uneori între spațiu și timp, spațiu, timp și efort de dezvoltare, și într-adevăr aici, chiar dacă am salvat o cantitate mare de timp, poate eventual 10-20-30 oră de timpul de dezvoltare de punere în aplicare verificatorul ortografic prin biciuire-l în doar 45 de secunde, cu aceasta limba prețul pe care îl plătiți este că e un ordin de mărime mai lent, ca rezultat, și acesta este, în general, cazul cu cele mai multe orice limbaj interpretat, PHP, Python, Ruby, Pearl sau altele prin care dacă ai de gând să-l rulați prin intermediul unui interpret și l-au citit codul linie cu linie, de sus în jos, de la stânga la dreapta, că intermediar este de gând să ia ceva timp proprie, și ceea ce te simți aici, în cele 3 secunde, spre deosebire de 0.3 secunde este faptul că nu există acest intermediar, care trebuie să interpreteze literal codul nostru linie cu linie, și Doamne ferește, dacă ești în interiorul unei bucle cu un fișier imens care conține sute de mii de cuvinte. Această aeriene se va adăuga și adăuga până și se adaugă în sus și adăuga până. Pentru un instrument ca aceasta, nu e probabil cel mai bun de a utiliza limbajul pentru punerea în aplicare a un corector ortografic, dacă iminența este de interes pentru utilizatorii dvs. și pentru tine. Dar avem de lux într-o clipă, dacă este folosesc un limbaj cum ar fi PHP sau o mulțime de limbi interpretate în contextul Web, pentru care contează, aveți avantajul faptul că internetul este mult mai lent decât majoritatea calculatoarelor. Ai un procesor GHz în calculatorul dvs., 2 GHz, poate chiar mai mult in aceste zile. Dar realitatea este pe internet există o cantitate mare de latență prin care, pentru un browser pentru a vorbi cu un server, chiar dacă am văzut săptămâna trecută că e destul de rapid, de o jumătate de milisecunde sau cam asa ceva, că prea adaugă în sus, și dacă sunteți descărcarea lucruri cum ar fi o imagine sau o fotografie pe Facebook sau pentru a obține mesaje instant peste palavrageala pe Facebook, Gchat sau similare, toate aceste ori tur-retur între browser și serverul de pornire pentru a adăuga în sus, ceea ce face alegerea dvs. special a limbii, în multe cazuri, Nu tot ceea ce este relevant, deci esti bine folosind un limbaj ușor mai lent cum ar fi PHP sau Python sau Ruby dar pentru care există upsides uriașe pentru dvs. și colegii dvs. și prietenii tăi pentru că puteți pune în aplicare lucrurile așa, atât de mult mai repede. Și, în plus, aveți risc mult mai mic de defecte de securitate anumitor. Nu e nici pointeri în PHP. Nu e nici defecte pe care le SEG pot induce cu ușurință în același mod în care ar putea, în C. Cu C esti super-aproape la hardware-ul. Cu limbi PHP și similare ești un fel de nivel superior, ca să spunem așa, cu o mulțime de apărare între tine și ceea ce se întâmplă de fapt pe în interiorul mașinii, și e doar un compromis. Noi am ajuns la punctul de a avea aceste mai moderne, limbi la nivel înalt cum ar fi PHP, din cauza lecțiilor învățate în limbi, cum ar fi PHP în C. Dar dacă nu înțeleg ce se întâmplă sub capotă tot acest timp cu siguranță nu pot lua deciziile corecte de proiectare, și cu siguranță atunci când vine vorba de a lucra într-un loc cum ar fi Facebook sau Google sau oricare dintre aceste locuri, care sunt din ce în ce joaca cu seturi mari de date chiar dacă te duci înapoi și nu student la medicina și sunt de lucru cu unele MD pe unele mari de date stabilit implicând pacienți și medici și cum ar fi utilizarea instrumentelor adecvate este extrem de convingatoare pentru că altfel analiza de un anumit set de date poate dura câteva secunde, sau s-ar putea să ia literalmente de ore. Acesta este doar un exemplu, să nu te frustra, cu un efort cât mai mult era în C, dar pentru a vă ajuta să apreciem că, atunci când se pune în aplicare ceva în C te înțelege cu adevărat, sau în teorie, să înțeleagă cu adevărat cum totul este sau ar trebui să fie de lucru, și aveți un control aproape complet asupra a ceea ce se întâmplă pe sub capota, si cu aceste limbi de nivel superior va trebui să renunțe la controlul mai mult la oamenii care le-au inventat și sunt supuse mai mult pentru a deciziile de design lor decât a ta. Dar dacă ne ia acordat pentru faptul că performanța nu este la fel de important pe internet din cauza acestor alte aspecte, doar viteze de rețea sunt un pic mai lent decât viteza CPU, oricum, astfel încât să putem rezolva de permite de a utiliza un limbaj ușor mai lent în cazul în care sunt upsides putem dezvolta lucrurile de 10 ori mai repede sau chiar mai mult. Să vedem cum putem începe să utilizați acest. Lasă-mă să merg într-un dosar printre exemplele de azi numit frosh.ims, și acest lucru a fost de fapt personal motivată de faptul că foarte primul lucru Am scris pentru Web de ani în urmă după ce a luat CS50 CS51 și a fost un site pentru programul Frosh AI, sport intramural boboc, care, la momentul acesta a fost în urmă cu ani suficiente că, la momentul nu a existat nici site-ul pentru programul, chiar dacă a existat un web, și în loc a existat o Proctor în Wigglesworth, prin care, dacă ai vrut să se înregistreze pentru volei sau fotbal sau orice altceva v-ar umple o bucată de hârtie. Tu ar merge apoi prin curte. V-ar bate la usa, apoi și diapozitive în ușa lor sau o parte a Proctor o bucată de hârtie cu numele tău pe ea, sau nu vrei sa fi un căpitan de echipă, ce sport ai vrut să faci, și ce dormitorul ai fost inch A fost un fel de mod de școală veche de a face lucrurile, iar acest lucru a fost un prim posibilitatea de a automatiza o mulțime de acest proces. Tu du-te la site-ul web. Tastați ceva inch Veți obține un email de confirmare, iar boom-ul, ați terminat. Acesta a fost primul lucru am făcut, deși într-un limbaj numit Pearl, dar este relativ ușor de făcut în PHP, iar acest lucru este un fel de reprezentant dintre problemele pe care le puteți începe rezolvarea atunci când vă puteți exprima programatic și nu trebuie să se bazeze pe lucruri cum ar fi site-urile Google sau Excel sau instrumente care sunt predate la tine. Voi avea acum capacitatea de a face lucruri de genul asta. Aceasta este o versiune super-urat a unui formular, dar hai sa folosesc doar pentru începutul conversației prin care acest lucru este aproximativ ceea ce semăna cu formularul de ani în urmă pentru noi pentru a permite persoanelor de pe Web pentru a vă înscrie pentru Frosh AI. Am cerut un nume, o casetă de selectare pentru a vedea dacă sunt sau nu au vrut să fie căpitan, bărbat sau femeie, și apoi ceea ce au fost în cămin, și apoi le va prezenta acest formular. Să ne uităm mai întâi sub capota de la HTML care reprezintă această pagină web. Lasă-mă să intru în froshims0, si ca o paranteza, pentru PSET 7 Iau de la sine directoarele și folderele pe care am pune lucrurile inch Vă vom plimba prin exact unde lucrurile trebuie să meargă în aparat, Mod comenzi pe care trebuie sa fugi, așa că nu vă faceți griji despre toate detalii stupide sincronizarea de la get-du-te aici. În regulă, aici e froshims0.php. Lasă-mă să defilați în jos, și ceea ce e curios aici, acesta este un fișier PHP, dar ceea ce este în interiorul ei, în mod clar? E o mulțime de HTML, PHP și într-adevăr, despre originile într-adevăr au fost pentru a fi un limbaj Web-centrice. Un moment în urmă am folosit-o pentru a pune în aplicare exemplul bere, în condițiile exemplu, exemplu salut, și asta e bine. Aveți posibilitatea să utilizați PHP ca limbaj de scripting în cazul în care un script este de fapt doar nomenclatura dat un program rapid și murdar sau ceva pe care le scrie într-un scenariu sau mai mult, în general, un limbaj interpretat. PHP este super util pentru că, din cauza ați văzut cât de repede relativ putem biciul de programe în PHP. Dar a fost într-adevăr conceput pentru a fi utilizat pentru Web, și concepute pentru Web în sensul că observați aici, la partea de sus a fișierului Eu încep cu