[Powered by Google Translate] [Hét 8] [David J Malan] [Harvard Egyetem] [Ez a CS50.] [CS50.TV] Üdv újra. Ez CS50, és ez a kezdete hét 8. Egy pár lehetőségek ezen a héten, köztük ez a beszélgetés itt, ahol néhány élelmiszer kerül felszolgálásra. További részletekért nézd meg a lemezeket, amelyek online. És azt is, egy másik esemény ezen a héten a saját Thomas Carriero. Ő az egyik CS50 egykori feje tanítási fickók, akik most a Dropbox, és ő az, aki minket akasztott fel a tudod mit, így ha többet szeretne e fej saját talk ma délután a Dropbox és így tovább. CS50 ebéd ezen a pénteken. Ne csatlakozzon hozzánk, ha tudja, 1:15, mint mindig, a Fire and Ice. És most belevetik magukat valami úgynevezett szemináriumok. A CS50 Szemináriumok, visszahívás, ezek a választható osztályok által vezetett oktatási ösztöndíjas és persze asszisztensek és barátai a kurzus, emberek egy csoportja az egyetemen nevű ABCD, ami egy csoport technofilek az egyetemen, valamint a csoport az úgynevezett HCS, A Harvard Computer Society, egyetemi hallgatók, akik szintén érdeklődnek a számítástechnikában. Az idei naptárban szemináriumok magában szemináriumok Android és iOS és JavaScript és a PHP, Unix, Vim, és így tovább, így észre, hogy ezek a szemináriumok jönnek létre. Ha azt szeretné, hogy Küldjön RSVP visszajelzést, ezek közül bármelyik fejét, hogy az URL-ott. Ezt követően teszi közzé a kurzus honlapján időpont és hely, amint véglegesítik. De tudom, hogy a 5 éves érdemes a korábbi szemináriumok online elérhető, amelyek közül sok még mindig nagyon aktuális szempontjából a technológia lehet, szeretne játszani a végleges projekteket, így irány ott néhány rendelkezésre álló videók cikke. CSS, azoknak, akik ismerik a CSS már, mi ez dióhéjban? Mi az a CSS? Ez stíluslapokat, és mit jelent ez? Mit csinál nekünk, CSS? Rendben, a warm up egy egyszerűbb egy, HTML, Hypertext Markup Language. Mit csinál nekünk? Bárki, aki egyáltalán? Ez kezd nagyon kínos átgondolva a fenti kérdéseket. HTML Hypertext Markup Language. Igen? Nem? [Hallhatatlan hallgatói válasz] Oké, jó, ez lehetővé teszi számunkra, hogy jelölje ki a szöveget megjeleníteni a böngészőben. Ez nem egy programozási nyelv. Ez valóban egy leíró nyelv, ami azt jelenti, hogy utasítja a böngésző hogyan jelenítse meg információkat, így a legegyszerűbb megtestesülése ezt láttuk van valami szuper egyszerű, mint boldfacing nyitott zárójel b zárva tartó hozzászólás hogy ez a szöveg félkövér, és ez valójában csak egy a sok szempontból ahol tudunk csinálni, sőt, ezekben a napokban egy jobb megközelítés A stilizáló a weboldal, a dolgok félkövér és dőlt és középre és indokolni és hasonló, nem keresztül történik HTML egyedül hanem inkább a technika az úgynevezett CSS stíluslapokat. Ez egy olyan nyelv hozzátok is. Ez is nem egy programozási nyelv, de- mindenki, ez a Dan, aki folyamatosan csatlakozik hozzánk ma. Néhány technikai nehézségeket. Nem probléma. CSS lehetővé teszi számunkra, hogy stilizál oldal azáltal, hogy úgynevezett tulajdonságait, ezért vessünk egy pillantást a útján néhány alapvető példát. Hadd menjek be a készüléket ma. Nekem van a forrás 8 hétfő könyvtárban van, és én megyek be egy könyvtárba nevű CSS, ahol van egy csomó A fájlok vár ránk itt, és ebben a mappában van, például, az utolsó search0.html alkalom. Most, felidézni a search0 mi maradt e feljegyzés a fajta végrehajtási Google, vagy tényleg csak a front end mert egy hét múlva ezelőtt, , és vegyük észre, hogy mi volt néhány új tag is. Volt h1 egy nagy, merész címsor, formában, amely lehetővé tette számunkra, hogy valóban van egy HTML űrlap felhasználói bevitel. Action, mi volt az értelme kereset attribútum A HTML form tag? Mi volt az értelme ennek, keresetet? Én csak ezt ma. Fellépés a cél, ahol a forma fog benyújtani. Az a tény, hogy azt mondja action = "google.com / search" azt jelenti, hogy ha a felhasználó rákattint a küldés gombot, vagy az azzal egyenértékű bármilyen űrlapmezőket azokat kitöltve fognak küldeni, hogy ne a mi szerver vagy a készülék, hanem az adott URL-t a Google-nál. És a módszerrel fog használni az úgynevezett kap, és kap, most, csak egy módszer az áthaladó információk mellett egy web szerver útján az URL-címet, ezért vessünk egy gyors pillantást, hogy ez hogyan működik. Figyeljük meg, hogy van egy input, akinek a neve q amelynek típusa szöveg, és azután egy második bemeneti típusú kattintson amelynek értéke CS50 Search, és valóban, ha megnyitja ezt a fájlt itt, search0.html, ez egy szuper egyszerű formában, és ha keressen valami hasonló számítástechnika , majd nyomd meg az Entert, vagy kattintson CS50 Search észre, hogy mi történik, túl kezd a Google Én kifejezetten végül a következő URL a tetején, google.com / search? q = számítógép + tudomány, és számítástechnika nyilvánvalóan mit gépelt be A +, csak azt jelenti, hogy ott egy szóköz karakter volt, és ez végzi a böngésző, csak hogy győződjön meg arról, hogy nincs zavart és white space a tényleges URL. És akkor q, természetesen, a paraméter neve. Nem láttuk, hogy mi, a programozó, ténylegesen hozzáférhet q még. Azt feltételezzük, hogy a Google tudja, mit kell tenni, hogy ennek itt, de mi lesz ott időben ma. De hadd nézzem inkább meg search1.html, amely úgy néz ki, egy kicsit más, mert úgy döntött, hogy ezt az űrlapot itt volt egy kicsit béna. Úgy értem, ez a bal felső sarokban. Itt tényleg nincs esztétika, és ezért szeretném ezt stilizál egy kicsit több, mint a Google, amelynek honlap, visszahívása, bár lehet, hogy nem látogat meg, hogy gyakran, így néz ki ma a Halloween. Ha ehelyett nyitni 1-es verzióját a fájl, keresés 1.html, már középre is. Mégis elég csúnya, de legalább most már elkezdtem, hogy ellenőrizzék az esztétika az oldalon nem csak a jelölés felfelé cikke. Vessünk egy pillantást a keresés 1, és ott tényleg csak egy különbség van, ami kiugrik rád, vagy talán nem, de mi az egy vonalra, vagy kódrészletet a különbség? Van ez a stílus attribútum, így kiderül, hogy a HTML-ben legtöbb eleme, a legtöbb tag lehet egy stílus attribútum őket, és belül, hogy a stílus attribútum jegyzett string, és hogy idézett karakterlánc CSS. Tudod, hogy lépcsőzetes stíluslap ott megadásával, mint egy tulajdonság nevét kettőspont követ, majd egy értékkel. Ez a fajta egy sajnálatos tervezési döntés néhány évvel ezelőtt hogy a CSS egy olyan nyelv, hozzátok is, de szintaktikailag nagyon eltér HTML. Ebben az esetben azt látjuk, hogy belsejében a weboldal ami meg van írva a HTML-ben, Van CSS belül ezek az idézetek, és az egyezmény a CSS hogy van az úgynevezett ingatlan után, ismét egy kettőspont, majd az értékét, hogy az ingatlanok, így nincs egyenlőségjel. Nincsenek további idézetek. Csak ez colon elválasztott kulcs-érték párt, és szöveges sor pontosan, amit mond. Úgy igazítja a szöveget a szervezetben az oldalon, ami valóban a belek az oldal, a központban. Oké, a végeredmény akkor, hogy világos legyen, nem ez. Nem minden szexisebb, de legalább ez középre és egy kicsit több, mint az igazi Google. De mi van, ha inkább nyitni 2-es verzióját az e és rámutatnak ide egy új tag összesen? Most a fejét az én oldalon, ami korábban csak voltak, amelyek tag Minden korábbi példát? Csak volt ez a cím. Egy pillanattal ezelőtt a head tag nézett ki, mint ez. Most ahelyett, hogy van egy stílusa tag belsejébe, és ezt is, elnézést kérek, szintaktikailag nagyon különbözik HTML, de meg lehet szokni, amely belsejében a stílus címke Most már vennünk, hogy mi volt, egy perccel ezelőtt egy attribútum, a stílus attribútum, és én tedd legtetején Az oldalam. Miért? Nos, ez a lépés takarítás dolgokat, akárcsak írásban C kódot mi lenne néha írni funkciót faktor ki közös alkalmassága. Ez csak egy kicsit tisztább kezdeni faktoring ki dolgokat, mint az esztétika egy központi helyen, ahelyett, hogy minden közbeszór egész HTML. Ez is azt teszi, amit mond, bár egy kicsit az új szintaxist. Ez itt egy választó, és a test csak azt jelenti, válassza ki a body elem és alkalmazza a következő tulajdonságokat is. Nos, az ingatlan pontosan ugyanaz. A jó intézkedés, adtam egy pontosvesszőt a végén, amely hajlamos arra, hogy ilyen egyezmény, és már csomagolják az egész ingatlan A kapcsos zárójelek mert ténylegesen különböző dolgokat. Azt már valóban mond valamit, mint a színe: kék; Most ez is nem lesz lépés bármi minden szebb, de ha most menj vissza a 2-es verziója, amit legalább most már a test az én oldal szövege minden kék. A gomb marad ugyanaz, mert ez egy bemenet. Ez nem tiszta szöveget. De minden mást, ami a szöveg, mint a CS50 Search up top, valójában kék. Ismét minden tettünk Most vegyük ki a body tag, felirat, a stílus attribútum, és mi volna tényezőként meg itt. Ez nem egy nagy javulás, de ha ezt egy lépéssel tovább észre, mit tehetünk ebben a harmadik verziót itt. A search3.html a weboldalon közel azonos kivéve az, amit az új tag most? Link, így ez nem nagyon találóan elnevezett mert nem össze abban az értelemben, egy kattintható hivatkozást. Inkább, te valami csinál a megfelelője # include a C ahol a link tag egy href attribútum és a rel attribútum azt mondja, gyerünk és másolja be a tartalmát egy fájlt a search3.css itt, lényegében. Ez nem egészen megtenni, de ez a szellem is. Azt mondja, menj nyitva a fájl, search3.css, és kezelni a dolgot, mintha a felhasználó már gépelt ez itt a fejét az oldal mint én az előző példában. Search3.css, eközben nagyon egyszerű. Ez tényleg csak tartalmaz, pontosan mi volt, egy perccel ezelőtt a stílus tag, de már faktorált ki ide, hogy a saját fájlt. Annak ellenére, hogy nem sok időt töltött egyáltalán HTML vagy web programozás Csak ösztönösen, mi a motiváció, talán, a faktoring-ből ezt a kis kódrészletet akár CSS-ba a saját fájlba majd többek között azt meg ezt a linket tag itt? [Hallhatatlan hallgatói válasz] Oké, ez könnyebb olvasni, abban az értelemben, hogy van a CSS-ben a CSS fájlban. Megvan a HTML a HTML-fájlban, így olvashatóbb ebben az értelemben. Mi más lehet kényszerítő? Igen. [Hallhatatlan hallgatói válasz] Igen, így magában sokszor, így most csináljuk ezeket az alap, példák egyes fájlokat, de tegyük fel, hogy tényleg így egy igazi weboldal, mint fogsz a Pset 7, vagy a projekt végső talán, , és azt szeretné, hogy több weboldalt, a biztosan gyakori A tényleges World Wide Web, és lenne ilyen béna hogy másolja és illessze be az azonos színű és ugyanazt a szöveget igazítva központ minden egy ilyen oldalakat. Inkább több értelme faktor ki, ugyanúgy, mint tettünk C a. h fájlt, helyezze egy központi helyen, Ebben az esetben a search3.css, majd hagyjuk a fájlt a webhelyére, hogy valóban tartalmazza, hogy a fájl útján ezt a címkét itt a sorban 16. Mint általában a helyzet, kezdtük 0-s verzió, milyen munkák de nem szükségszerűen a legjobb, és minden lépésnél, keresés 1, keresés 2, és most keresés 3 vettünk ezeket a baba lépéseket felé minták egy kicsit tisztább és több előkészítő bonyolultabb oldalakat, hogy talán nem az úton. Hadd nyit egy utolsó példát itt csak megmutatni még stilizált oldalon, de előbb nézzük meg a HTML. Ez search4.html, és észreveszi, hogy szerkezetileg ez majdnem ugyanaz kivéve a bevezetett új címke, Div. Div olyan tag, amely bemutatja a szétválás az oldal. Azt hiszem, hogy ez egy láthatatlan téglalap. Ez a fajta teremt rendet a terület a weboldal hogy akkor stilizál egyszerre. Amit tettem itt a következő. Belül a testem tag, amely már ott végig, Azt mondom, hozzon létre egy részlege az oldal itt vezetékeken keresztül 45 keresztül 47, és ez azt jelenti alapvetően adjon nekem egy láthatatlan téglalap mentén az oldal tetején. Akkor adj egy második téglalap, bár láthatatlan, alatti, és azonosítja azt a nevet tartalom, majd végül adj egy Division az oldal alján úgynevezett ID. Majd meglátjuk, hogy miért tettem ezt, csak egy pillanatra, de fogalmilag van egy fejléc alá. Nekem van egy tartalma részlege, és van egy részlege lábléc az oldal annak ellenére, hogy ezek csak a jelölő. A felhasználó nem fog látni 3 téglalapok, hanem egyfajta szerkezetileg ott a színfalak mögött ők ténylegesen jelen van. Nos, kit érdekel? Miért ténylegesen ezt? Minden más az oldalon ugyanaz, mint láttuk korábban. Itt a formában. Itt a bemenet, a bemenet, a sortörést és így tovább. Itt egy kép, bár, úgyhogy majd meglátjuk, ha ez jött egy pillanat. Itt egy láblécet, ami új, csak azért, mert azt akartam, hogy vezessenek be valamivel több tartalom van. Ha felfelé észre, hogy ID ennek div van fejléc. Az ID Ennek div tartalmát, valamint a azonosítóját ez egy lábléc. És ahogy a neve is sugallja, ha van egy attribútum HTML definíció szerint azt kell egyedileg azonosítják egyik eleme, az egyik tag-eket az oldalon. A teher teljesen rád emlékezni, hogy van egy fejléc azonosítója már. Van egy láblécet. Van egy tartalom azonosító már. A számítógép nem fog rájönni, hogy mi a rendelkezésre álló azonosító az Ön számára, így véletlenül így 2 tag Az azonosító fejléc, és hogy ez csak rossz. Meg kell szem előtt tartani, hogy mi magunk hoztunk létre, de ha egyszer tettél, hogy hirdetmény mit tehetünk itt. Most már meg az én stílusom tag tetején vagy azzal egyenértékű az én CSS fájlt, ha én még mindig használja azt a verziót, Mondhatom # header, és hogy ez mit jelent az, hogy bármilyen címke Az e weboldalon van egy azonosítója fejléc és a #, csak emberi konvenció képvisel ID. Az éles jel vagy kettőskereszt jelentése ID. Fejléc a nevet adtam. Ez azt jelenti, ezt a CSS tulajdonság hogy bármilyen címke ezen az oldalon viseli ID fejléc. Ugyanez a helyzet itt. Alkalmazza ezt a tulajdonságot, ami történik, hogy ugyanaz legyen, hogy bármely elemét amelynek ID tartalom, majd itt lent észre Van egy kicsit cifrább a lábléc. Minden olyan elem, amelynek ID lábléc, amelyből nem lehet csak egy definíció szerint, megy előre, és megteszi betűméret kisebb, a font súly félkövér, a különbözet ​​20 pixel. Mit jelent ez? Ez csak egy margin a felső, az alsó, a bal és a jobb oldalon. Ez azt jelenti, hogy nekem egy 20-pixel láthatatlan margin körül Csak, hogy álljon minden mást tőle egy kicsit, mint te talán nem a Word, Microsoft Word vagy Pages vagy hasonló. És akkor szöveget igazítsa központ. Lássuk a végeredményt, aztán megyünk vissza az egy megmaradt kódrészletet a CSS ott. Ez a 4-es verzió, az utolsó a keresési példák, és ez sokkal, de sokkal szexisebb. Most, a méltányosság, csak googled "google font logo generátor." És ez lehetővé tette számomra, hogy hozzon létre egy GIF képet formátum, ami úgy néz ki, mint, hogy van. Tény, hogy meg tudod csinálni ezt is. Van "google betűtípus logo generátor." Lássuk, meg tudjuk csinálni. Oké, azt hiszem, ez a honlap használtam. Elmondhatjuk Ec 10, például, és azokat a saját. Ön tud játszani ezzel egész nap, majd jobb klikk rá majd töltse le a tényleges GIF, amely minden, amit tettem. És valóban, ez az, amiért az én HTML, emlékszem, ide Volt egy kép tag, amit láttunk röviden a múlt héten amelynek forrása logo.gif. És mi újra volt a motiváció, hogy ilyen alt attribútumot, ezzel az alternatív attribútumot? Igen. [Hallhatatlan hallgatói válasz] Jó, tehát 2 okból igazán, ha a böngésző nem húzza ki a képet mert lassú a hálózati kapcsolat, vagy a kép sérült vagy valami ilyesmi, hogy legalább az ember megjelenik a "CS50 kereső," és akkor is, a hozzáférhetőség miatt. Ha egy felhasználót, aki vak, és használ a képernyőolvasó és ezért nyilvánvalóan nem látják a képeket, hogy a legalább hallani szöveg, ha a számítógép beszél nekik. Általában ez a legjobb gyakorlat, amikor a hozzáférhetőségét oldalak hogy még a felhasználók ebben a helyzetben lehet hallani, vagy látni, hogy úgy mondjam, mi az, ami az oldalon. Van még egy másik dolog, hogy én tettem ide ami egy kicsit érdekes, és meglátjuk meg többet erről a probléma készlet 7 keresztül az egyik sort vezette az egyik tanítási ösztöndíjasok. De # content utal, hogy a tag amelynek ID tartalom, de akkor van egy szóköz karaktert, és akkor ott van a szó bemenet. Nos, mi érdekes a CSS, hogy meg lehet nézze meg a címkék az oldal egyfajta hierarchikus, és mi ez a kódrészletet a CSS azt jelenti megtalálják a tag amelynek ID tartalom, majd alkalmazza a következő tulajdonságokkal az összes bemeneti címkék, amelyek leszármazottai tartalom ez az, hogy be vannak húzva benne. Behúzás, újra, csak az a fontos, hogy a számítógép, nem pedig az emberi, de megegyezés mi francia dolgokat, ahogy haladunk beljebb egy oldalt, tehát ez azt jelenti, alkalmazni mozgásteret 5 pixel bármely input elem ez valahol vagy beágyazott belsejében  elem, amelynek azonosítója tartalom. Ki, hogy alkalmazni? Nos, valójában csak e 2 srácok itt. Figyeljük meg, hogy belsejében a formanyomtatvány van 2 bemenet, mivel van már az összes ezeket a példákat. De vegyük észre, hogy a 2 bemenet történetesen beágyazva, bár egy kicsit mélyen, egy pár réteg behúzás, belül a tag, amelynek azonosítója tartalom. Mit jelent ez? Ha megy a böngésző itt lehet látni alig láthatóan, hadd Nagyításhoz-, hogy van egy kis padding között a gomb közötti, valamint a szövegmezőbe. Hadd ideiglenesen kapcsold ki. Hadd menjek fel a CSS, és hadd menjen előre, és csak a módosításához margin 5-0-ra pixel pixel. Hadd menjek előre, majd, és mentse a fájlt, menj vissza a kereső és újra, és nézd meg az oldal közepén. Minden kapott tömörített együtt, és amikor először vert fel ezt a példát Azt hittem, hogy nézett ki a hülye a szövegmezőbe, majd a gomb közvetlenül alatta. Akartam pad egy kicsit, úgyhogy be különbözet. Amit nem fogunk csinálni előadás megy keresztül a több tucat CSS tulajdonságok léteznek, mert ismét, vannak dolgok, mint a betűméret, font súly, margó, szöveg igazítása, és néhány tucat mások, és mi utalja Önnek problémája készlet 7 különböző oktatóanyagok online és hivatkozások, amelyek lehetővé teszik, hogy vegye ezeket a dolgokat. De ami igazán fontos, az a nap végén az, hogy megértsük, hogyan alkalmazzák ezeket a dolgokat. Ismét, ha van stílusa tag belsejében, amely mehet a választók, az a fajta azonosítók, amelyek meghatározzák akinek akarod alkalmazni ezeket a tulajdonságokat, és akkor tesz a tulajdonságokkal rendelkezik, mint kulcs-érték párt kettősponttal elválasztva, majd véget ért a pontosvessző, vagy tudod rip minden, hogy ki és tedd egy külön CSS fájlban nektek is. Rendben, bármilyen kérdése van a fogalmak vagy a nagy képet CSS? Majd ismét többet látni azt Pset 7, de majd tartani, hogy általában elég egyszerű. Nem? Rendben van. Itt az ideje egy valódi programozási nyelv, és mi jön vissza egy kicsit a CSS formájában egy példát. PHP valójában egy csodálatosan érthető nyelven , mivel szintaktikailag majdnem azonos a C. Más szóval, ha tudod, C, tudod, hogy a legtöbb PHP, legalább szintaktikailag, bár van néhány új funkciók és néhány új fogalmat kell majd nézni. De a legtöbb, most, hogy átmenet C és PHP a legtöbb új cucc valóban a nagy képet, hogyan használja a nyelvet a program az interneten, szemben a a parancssorban vagy egy villogó azonnali ahogy csináltam eddig. Referenciaként, különösen a Pset 7, és a végleges projekt kezdve nem kihasználni ezt az URL ide, ha azt szeretné, hogy olvassa fel az alaki PHP. Ez tulajdonképpen, mint egy ingyenes online tankönyv hatékonyan és akkor is megtalálja, hogy mi az igazán szép a PHP-ről az, hogy több száz funkciók, hogy jöjjön vele, mivel a C, hogy nem feltétlenül férnek hozzá több funkciót, mint volt a matematikai könyvtár, CS50 könyvtár. A PHP és a sok modern nyelvek, Python és Ruby köztük kapsz hozzáférést, így több funkciót, ami azt jelenti, hogy kell írni sokkal kevesebb kódot, mert akkor álljon a vállára más emberek akik már írt bizonyos dolgokat az Ön számára. Vessünk egy gyors túra a szintaxis a PHP és írjuk be néhány példát. Mi a jó a PHP-ről elsősorban van nincs fő funkciója. Ha azt szeretnénk, hogy írjon egy programot a PHP, csak kezdjük el beírni kódot, és nem kell aggódnia fő. Nincs int. Nincs visszatérés. Nincs argv, argc, ami szükséges, ha írsz a programot. Inkább akkor csak elkezd kód írása, és ez részben mivel a PHP az úgynevezett interpretált nyelv. C-t összeállítani, és azt állították össze, abban az értelemben, hogy elkezdi A forráskód, futtasd át csenget, ami egy fordító, és végül miután néhány számos lépést kapsz tárgykód, 0s és 1s. PHP és Python és Ruby és a Pearl és mások Különböző típusú nyelv, amit nem állítanak össze őket. Nem megy forráskódot 0s és 1s. Csak fuss a forráskódot, és futtatja a forráskód írásban a szokásos szöveges fájl, végződik. php ebben az esetben helyett. c, és mi a program nem a számítógépen A szó szerint értelmezi a kódot sorról sorról sorra. Más szavakkal, nem pedig levelet programot és futtassa közvetlenül, ahelyett levelet program egy fájlt végződő. php. Ezután futtassa a tényleges program neve php.exe, ha a Windows, vagy csak PHP, ha te vagy a Mac OS vagy Linux és biztosítják, mint hozzájárulás a PHP program saját forráskódját, és célja az életben, hogy olvassa el a kódot, felülről lefelé, balról jobbra, és nem, amit már mondtam, hogy igen. Lássuk, mit fog ez jelenteni szintaktikailag. A PHP van feltételeket. Ez a dia megegyezik azzal, amit láttál vissza hét 1 mert szintaktikailag feltételek, IFS és IFS és máshol másnak PHP nézzen ki, mint ez. Amikor boolean kifejezéseket fognak nézni pontosan, mint ez. Amikor AND művelet a dolgokat együtt Logikai ez fog kinézni pontosan olyan, mint ez. Kapcsolók ugyanúgy néz ki, és megkapod az előnye a PHP-ben hogy a kapcsolók C csak bekapcsolni a char vagy int. Nem lehetett bekapcsolni a string értéket. A PHP akkor valóban van egy kifejezés ez egy változó, amelynek tartalma egy string, és akkor ténylegesen karakterlánc-összehasonlítás az igazi intuitív módon, nem mutató összehasonlítás, annak eldöntésére, hogy kell csinálni ügyben i vagy j vagy valami más. Majd meglátjuk, hogy a potenciálisan nemsokára. Hurkok is csodálatosan megegyeznek. A hurkok van inicializálás feltétel, és némely frissítések számát. Míg a hurkokat is léteznek PHP. Do while ciklusok is léteznek PHP, és tömbök léteznek a PHP, de itt, ahol a szintaxis kezd egy kicsit más, de a fogalmak az azonos, és a fogalmak valóban az ugyanaz mint volt a 0. héten a Scratch. Az első és legfontosabb a $ jel. Ez egy tervezési döntés a PHP, amellyel bármely változó PHP-by design kezdődik $-jel. Nincs több X, Y, Z. Ez most $ X, Y $, $ Z csak mert. Ez valami olyasmi, hogy tartsa szem előtt, és most a jobb oldali ez hasonlít egy tömb, de mi a szögletes zárójelben van. A PHP és a JavaScript, mivel mi végül látni, állapítsa tömb te nyitott szögletes zárójel és zárt szögletes zárójel, és akkor van egy vesszővel elválasztott értéklista, hogy ints vagy a vonósok, vagy karakter, amit akarsz, belső e kifejezés ott. Most, hogy csináltunk valamit, mint ez a C? Mi volt a szintaxis statikusan nyilvánító egy sor ismert számokat? Ez volt kapcsos zárójelek, így csekély a különbség itt, hanem mind a PHP és végül a JavaScript ez csak használ szögletes zárójelben, így igazán az egyetlen érdekes részlet itt van a $ jel a változó neve valamint a szögletes zárójelek, és van egy furcsa dolog ez kimaradt, valamint a bal oldali a = jel. Mi hiányzik, amit már hetek igénylő most? Igen. [Hallhatatlan hallgatói válasz] A méret, így nincs említés a méret a tömb. Őszintén szólva, nincs említés a szögletes zárójelek a bal oldalon Az = jel, és mi más hiányzik a sorból? Aha. >> [Hallhatatlan tanulói válasz] A típus, szóval mi érdekes, különösen a PHP-ről az, hogy ez nem egy erősen tipizált nyelv, mint c, és ez határozottan írt abban az értelemben, hogy meg kell mondani, char, meg kell mondani, int, meg kell mondjam, úszó. Bármikor szeretne egy változót meg kell mondani, hogy mi a csengés típusa. A PHP egy kicsit lassabb. Ez lazán gépelt abban az értelemben, hogy a akkor már úszók és a karakterek és karakterláncok és ints és így tovább, de a nyelv maga nem igazán érdekel, mit betenni egy változó. Nem kell, hogy tájékoztassa előre milyen adattípust megy egy változó. Ez teljesen rajtad múlik, így ez a szép az, hogy nem kell aggódnia, mint sokat adatok gépelés és aggasztó milyen érvek és így tovább. Ez azt is jelenti végül függvények PHP lesznek tudja visszaküldeni vagy egy int a legtöbb időt, és talán egyszer-egyszer fognak visszatérni a bool, a boolean false például, annak jeléül, hogy valami rosszul sült el. Ez ad nekünk néhány upsides, de ez is tesz bennünket egyfajta by design egy kicsit lustábbak, amikor az adatok gépelés. Mi van még szem előtt tartani itt? Változók nézd nagyon szeretem ezt, így $ s = "hello, world". Ez talán inferable az előző példában és mi más típusú hurok. Ez akkor valóban látni néha, mert elég praktikus, a foreach konstrukció. Ebben az esetben, a foreach ciklus veszi belső cikkére zárójelben 3 szó jellemzően, $ Valami első, amely az, amit array akarsz navigálhat tagjai felett, akkor szó szerint a kulcsszót, majd végül másik változó neve, hogy kapsz választani. Ez lehet foo, bar, vagy elem, és mi ez a konstrukció nem az, ha a $ array tartalmaz 10 lencsetag minden iterációs ezen array-sajnáljuk, minden iterációs e ciklus a változó nevű elem lesz frissíteni hogy az első elem a tömbben, akkor a második elem a tömbben, akkor a harmadik eleme a tömb, ezáltal szükségtelenné téve tenni a kissé idegesítő szögletes zárójel és a jelölés $ I index annak érdekében, hogy egy tömb. PHP nem az összes, hogy a munka az Ön számára, és minden iteráció csak átadja neked a következő elemet a tömbből nélküled kelljen tudni, vagy érdekli a numerikus index location. És végül, mert most, van egy másik jellegzetessége PHP ez lesz rendkívül hasznos, különösen, amikor elkezdünk programozást az interneten, és ez ismert, mint egy asszociatív tömb. A tömbök, hogy tudjuk, eddig 20-másodperc és az elmúlt 8 hétben a numerikusan indexelt tömbök, fajta hagyományos tömbök, ahol az indexek ints, 0, 1, 2, egészen akár. Asszociatív tömbök sokkal erősebb. Ezek lehetővé teszik, hogy tetszőleges kulcs, önkényes indexek és tetszőleges értékeket. Mivel egy hagyományos tömbben ez 0, 1, 2, Egy asszociatív tömb akkor van az index vagy kulcs az ize melynek értéke bar. Ezután egy másik gombot, akinek a neve baz, és amelyek értéke qux. Ismét hülye számítástechnika generikus változó nevek itt, de a lényeg az, hogy ez a tömb nem tartó konzol 0 vagy 1. Ez inkább megy, hogy konzol foo és konzol BAZ. Ez egy sokkal sokoldalúbb, hogy fogunk tudni társítani szavak más szavakkal, a kulcs az értékek teljesen önkényesen, és mi lesz, tudja, hogy ezek az értékek vissza az időben állandó mert a motorháztető alatt, amit egy asszociatív tömbben valóban egy hash tábla. Emlékezzünk vissza, hogy a hash tábla lehetővé teszi, hogy hozzanak néhány bemeneti mint helyezze be a szót David, ha szeretné beszúrni David valamiféle szótár, és akkor kap vissza valamilyen értéket általában. Abban az esetben, helyesírás, igaz vagy hamis. David vagy bármi szó, vagy nem szerepel a szótárban. Egy asszociatív tömb tényleg csak egy hash táblát, de ez egy sokkal inkább felhasználóbarát megtestesülése is. Mint látni fogjuk, ez lesz, hogy tőlünk néhány dolgot Nagyon, nagyon könnyen. Vessünk egy pillantást néhány alapvető PHP példák, és mit tehetünk ezen a nyelven. Hadd menjek előre, és nyissa fel a forrás könyvtárban ma nevű fájlt hello1.php. Ez a fájl több hozzászólás, mint a tényleges kód, hadd valójában távolítsa el az összes észrevételek fájlból és a jelenlegi Önnek talán a legegyszerűbb PHP program itt. 5 sor, és néhány ezek white space, így észre néhány fontos különbség van. A fájl neve hello1.php. Az első sorban, de az, Azt jelenti, hogy ennyi az én PHP kódot. Lássuk, hogyan kell futtatni ezt. Én megyek vissza a terminál ablak van. Én megyek az én PHP könyvtárba. Figyeljük meg, hogy van egy csomó kép, az első ezek közül az egyik hello.php. Hadd menjek előre, és fuss ez, hello1.php írja. Engedély megtagadva. Oké. Hogyan tudjuk megállapítani dolgok, mint ez a múltban? Mi ez? >> [Hallhatatlan tanulói válasz] Meg kell írni és olvasni, de hadd tegyek ls-l. Ne feledje, ez a némileg rejtélyes kimenet, amellyel hello1 Úgy tűnik, hogy olvasható és írható by me de olvasható mindenki más. Kiderült, hogy ez valójában nem egy lépés a helyes irányba. A különbség ismét egy értelmezett nyelv van, hogy ne fogyjon a programot közvetlenül. Te inkább fuss egy tolmács és add meg a kódot amit írtam így értelmezni sorról sorra. Ebben az esetben, a tolmács vagy a program Igazából futtatni kívánt szó szerint hívják PHP. Valahol ezen a merevlemezen a készülék van egy program valaki írt nevű PHP, vagy Windows php.exe. Mit fogok csinálni itt fogom a ténylegesen megtett PHP de hogy ez egy parancssori argumentum a kódot, hogy én írtam, és aztán kicsinyíteni és nyomd meg az Entert. Ez fut a program nekem, felülről lefelé, balról jobbra. Hadd menjek előre, és nyit egy kis variancia ezt. Ebben hello2.php észre, hogy ez is többnyire kommentek, hadd megszabadulni e, mint a figyelemelterelés, és mi egyértelműen különbözik most ezt a fájlt? Van ez az új vonal, kissé rejtélyesek a tetején. In line 1 ez: #! / Bin / php. Bin egy egyezményt a Linux és a Mac OS a binárisokat, így / bin jelent ez tartalmazó mappát egy csomó binárisok hogy van programozva, amelyek közül az egyik az a PHP. A #! a beceneve kocsma, amely a gyors módja a mondás, és mit jelent ez hogy amikor futtatni ezt a programot most van egy tipp a tetején a fájl hogy megmondja a számítógép, amit tolmács használni. Nem lesz egy kicsit bosszantó, ha kellett, hogy mondja el a felhasználók és az ügyfelek "Hé, mi ezt írta nevű programot hello1.php." Mindössze annyit kell tennie, hogy örökre fut a PHP, majd a neve ennek a programnak. Őszintén szólva, ez csak szebb futtatni hello1.php, és valóban, tudjuk, ha mi a következőket. Hadd menjek előre, és nem ls-l, és a hirdetmény hello2 ez még mindig csak olvasni írni majd olvasd el olvasni, így nem tudok még csinálni, hello2.php. De mi vezetett e valaha is olyan rövid utoljára a chmod parancsot. Ha megteszem chmod a + x, ami azt jelenti, minden plusz végrehajthatósága, majd hello2.php majd tegye ls-l újra észre, mi változott. Egy, Linux megmutatta nekem a fájlnév zöld közvetíteni az ötlet , hogy ez az végrehajtható, de ami még fontosabb, a bal oldali észre, hogy a képviselő bit x végrehajtható most állítva. Mi ez most azt jelenti, nem tudok futni ./hello2.php, mint rendesen, nyomd meg az Entert, és mert a kocsma legtetején a fájl ez egy tipp, ismét a Linux, hogy azt mondja Ezzel tolmácsot futtatni ezt a fájlt. Ne aggódj kényszeríti a felhasználót, hogy ténylegesen írja. És milyen szép most ez a fajta lényegtelen az én ügyfelek vagy a barátaimmal milyen nyelven írtam ezt a programot, így tudok menni előre mv és nevezd át ez a dolog, hogy hello2, például. És most, ha megteszem ./hello2 és kicsinyítés a program tovább fut. Ezek a fájl kiterjesztések emberi konvenciót, hogy ez szükséges valami, mint a csengés és a Make akik keresik őket. De PHP tudtam hívni ezt a file kiterjesztés, amit akarok. Tudtam becsapni a világot azt gondolni, hogy én vagyok igazán jó Ruby, és nem tudtam írni hello2.rb majd futtassa ezt, és íme, most már a Ruby változat, ami egy teljes hazugság. De a fájl kiterjesztések értelmetlen ha a fájl végrehajtható, és e különleges hint a tetején a fájlt. Most, mint egy félre, hadd mutassam meg gyorsan 3-as verziójú, amely egyfajta hasznos trükk, hogy tudja. Az hello3 tettem valamit kicsit rosszul hogy fogom frissíteni a forráskódot online. A 3-as verzió, kiderül, hogy a legtöbb Linux számítógépen Van egy program neve env környezetvédelmi, és mit lehet itt csinálni, ha nem tudod hol PHP telepítve van a helyi merevlemezre, mert valóban lehetett függően változik a számítógépen hogy valaki használja, env csak mondja fuss env, mely a legtöbb rendszeren, és kitalálni, hol PHP. Csak egy közös trükk, így nem kell aggódnia, kideríteni, ha egy program. De ha érdekel, hogy megtudja, hol a program, és még nem törődött eddig akkor használja a melyik parancsot. Hadd kicsinyítés és típusjellel php, , és vegyük észre azt mondja nekem, hogy ez ténylegesen usr / bin / php. Ez a fajta hazugság. Ez is bin. Ez csak megmutatta nekem az első találatot. Ha valaha is csodálkoztam, ha csenget, melyik csenget, ez a usr / bin / csenget, amelyek, usr / bin / make, és hogy mit jelent ez az egész idő akkor lehetett volna gépelni usr / bin / csenget be futtatni csenget, de ez a fajta unalmas tenni, hogy így néhány mappák mint usr / bin és a bin Feltételezzük, hogy alapértelmezett így a számítógép tudja, hogy nézze meg őket. Bármilyen kérdésre írásban egy szuper, szuper egyszerű Hello World programban PHP-ben, majd fut? Mert most kezdjük bevezetni vonzóbb szintaxist. Rendben, itt vagyunk. Ezek a programok láttunk valójában mindegyikük előtt. Ha én nyit, például csináljuk beer1.php, mi nem megy keresztül több változatát is, de amit tettem volt, leültem, és öntötte vagy átalakított a C kód PHP kód itt. A legtöbb tetején a fájl megjegyzések itt. Kiderült, hogy van egy új funkció van szükségünk hívott readline. GetString, visszahívás, a hét 0-től volt CS50 dolog. PHP jön a saját felhasználóbarát nevezett funkció readline vevő 1 érv, amely meghatározza a prompt kívánt mutatni a felhasználónak, és mit csinál readline A adja vissza, amit a felhasználó a be Ebben az esetben, én nyilvánító változó neve $ n. Én tárolja benne a visszatérési értéke readline után a felhasználó megkérdezése ezzel a string. Csak biztonsági mentéséről, hogy valóban futtatni ezt a dolgot, hadd menjen előre és fuss php beer1.php. Hány üveg lesz-e? Csak csináljuk 2 ebben az időben. Az Enter billentyűt. Ez minden. A program funkcionálisan megegyezik a C verziót héttel ezelőtt. De szintaktikailag lássuk, mi más. Miután kap egy int a felhasználó észreveszi, hogy csinálok néhány hibaellenőrzés, és ha n értéke kevesebb, mint 1 abbahagytam, és azt ki kell nyomtatni szomorú üzenetet küld a felhasználónak és kilép, 1. Ez is egy kicsit más.  A C-ben mit csinálunk? A C-ben visszatértünk 1. A PHP kilép 1, amelyet őszintén van azt hiszem, egy kicsit intuitív mert te szó szerint kilép a program. Rendben, majd itt lent a bosszantó dal azonos szintaktikailag kivéve a változó, ezért itt lent sorban 24-től észre a for ciklus közel azonos, de van $ elé i és n, és mi is hiányzik a 26, hogy már a múltban amikor nyilvánító i változó? Nincs típus. Ez téves PHP mondani int. Egyszerűen nem kell megtenni. A számítógép, a tolmács PHP elég okos ahhoz, hogy észre hogy ha tesz egy számot a $ I fog kezelni számként az Ön számára. És akkor ide is plug in $ i, $ i, $ i - 1. Minden, ami ugyanaz, aztán ide tesszük a "Wow, ez bosszantó" printf majd kilép (0). Ismét az elvitelre itt az, hogy bár fogunk költeni viszonylag kevés az idő a PHP, biztosan versus mit csináltunk a C, ez majdnem ugyanaz, és így fogjuk tenni ma, és a jövő héten és azon túl összpontosít tényleg néhány új ötleteket. Csak látom, hogy egy dolog nem fordít át C, ez egy szuper egyszerű program tettük Hét 1 vagy 2, hogy CubeD értéket. De milyen érdekes volt abban az időben ezt a programot, hogy bevezette a fogalmat egyéni írásbeli funkciót, hogy mi magunk írt. A szintaxis a PHP-ben közel azonos. Itt a program kidolgozása tetején. Figyeljük meg ismét hiányzik bármilyen fogalma fő. Kezdek kód írása, és ez az, hogy mi fog kerül végrehajtásra a tolmács. Én kinyomtatni x ma 2, feltehetőleg. Aztán azt állítják, kocka ... Akkor hívom a kocka függvényt, és adja át a $ x és hozzá a visszatérési érték a $ x. Aztán azt állítják, hogy ez kockára vágott, aztán mondom ezt, ami remélhetőleg fogja mondani x most 8. A szintaxis a funkció a PHP-ben valaha is olyan kissé eltérő. Ismét hiányzik a visszatérési típus. Ismét ki a hiányzó visszatérési típusa, valamint a hiányzó, ami más típusú? [Hallhatatlan hallgatói válasz] Nos, oké, ez jó. Akkor gyere vissza, hogy a második. Nincs, például, int itt. Nem, például, már int itt, mert, ismét, PHP egyszerűen nem kell, és nem arra, hanem ott van az új kulcsszót nevű funkciót. A PHP majdnem egy kicsit világosabb, mert ha akarsz egy funkció szó szerint azt funkcióval, akkor adja meg a nevét, majd egy vesszővel elválasztott lista ha bármely érveit. Nem kell mondani, semmis vagy ilyesmi, aztán vissza ugyanaz, $ A * $ a * $ a. Mi is hiányzik? Sammy rámutatott erre itt. A tetején a fájl teljesen hiányzik a PHP-ben is egy prototípus. Ez is a design. Nyelvek és tolmácsok, mint a PHP okosabbak, mint valaha is volt C A fordítóprogramok, mint csenget. Emlékezzünk vissza, hogy csenget, ha nem mondja meg, hogy a kocka létezik, ha nem mondja azt, hogy a printf létezik, mint a prototípus vagy egy # include, nos, ez meg fog kiabálni veled, és nem is fordítsa le a kódot. PHP és a modern nyelvek sokkal okosabb, amikor ezt. Fogják venni, hogy magukra, hogy olvassa el az összes kódot majd kiabálni csak akkor, ha úgy találja kocka sehol. Nem számít, ha a kocka az alsó vagy a felső, vagy még néhány külön fájlba. PHP és hasonló nyelven most elég okos, hogy előre nézni mindent, mielőtt úgy ítélte meg úgy, mint amelyek hibázott. Hova vezet ez hagy minket? Csináljunk egy utolsó példa itt körülmények között, és ha nyit conditions2.php nyilatkozat is szintaxis itt majdnem ugyanaz. Én használ readline helyett getString, azonban hogy a vonal az ugyanaz, mint korábban, "Szeretnék egy egész kérem." Aztán van egy, ha a feltétel, az else if, majd egy más, de funkcionálisan ez a program is azonos azzal, amit csináltunk héttel ezelőtt, így ha elfutok ez a dolog, php a conditions2, és azt, hogy ez egy több, mint 23 - Felvettem egy pozitív szám. Ha adok neki -1 Felvettem egy negatív szám. Ha adok neki 0 I valóban felvette 0. Szóval, aki törődik mindezt? Nos, az egyik a móka fajta gyakorlatok itt nekem legalábbis az volt, hogy menjen vissza, és látni, milyen gyorsan tudok végrehajtani Pset 5, A helyesírási hibák Pset. Emlékezzünk vissza, hogy volt ez a nevű fájlt speller.c, és ott volt egy nevű fájlt dictionary.c. Amit nem én voltam az a fajta töltöttem pár perc, és én át a C-kódot A PHP kódot, és mi nem töltenek sok időt a helyesírás mert akárcsak Pset 5 ha nem igazán kell töltenek sok időt a helyesírás is, mert a figyelem a szótárban. Elég annyit mondani, hogy ha olvassa végig helyesírás, ezt a fájlt itt, ez nagyjából megegyezik a C kód adtunk neked Pset 5. Most adunk néhány $-helyeken. Már megváltozott bizonyos funkció nevét, ha nem létezik a PHP. Van egy további dolog itt, preg_match, ami egy kicsit szakértő módon csinál valamit, de majd jön vissza, hogy végül. De rövid, helyesírás majdnem azonos, és ha megnézi az legalján amit végül kiköpi ez itt, szavak elgépelt szavak a szótárban, a szavak a szövegben. Rendben, mi az érdekes, most a következő. A tetején a fájl vagyok igénylő dictionary.php. Csakúgy, mint a C-# include PHP rendelkezik egy speciális funkciót nevű igényel hogy nagyjából ugyanazt teszi szükségessé nevű fájlt dictionary.php. Hogyan megy a végrehajtási Pset 5? Hadd menjek előre, és megnyitja a fájlt ide. Engedjék meg, hogy egy kis utalás van. És hadd hozzon létre egy új fájlt és indítsa hívja ezt dictionary.php. Hadd tegye a másik mappába, így tudjuk ezt élni. És most én Nagyítás Fogom kezdeni a PHP fájl nyitó zárójel php zárt tartót. És akkor itt volt egy pár funkciót kellett megvalósítani az Pset 5, ezért hadd kezdjem végrehajtásának néhány ilyen, így funkció csekket, ami kellett, hogy egy szót érvként. Fogjuk csinálni, és gyere vissza, hogy egy pillanat alatt. Volt funkció terhelés lépett, amit érvként? Szótár, így a fájl, hogy én tényleg akartam tölteni. Volt funkció mérete, amely nem vállal semmilyen érvet és ott volt a funkció-mi volt a másik? Unload, amely nem vállal semmilyen érvet sem. Ezek a 4 funkció, hogy én kell most végrehajtani PHP, és mit fogok csinálni az megy előre, és ezt. Sok használt egy hash táblát Pset 5, hadd menjen előre, és hozzon létre egy hash táblát PHP. Kész. Ez ad nekem egy hash táblát. Nos, miért? Az egyik, a változó neve $ tabla, csak idézik fel az ötlet egy hash tábla. A szögletes zárójelek, bár emlékszem, képviseli mi? Egy tömb, de a PHP tömbök nem kell numerikusan indexelt. Ők is asszociatív tömbök, ami azt jelenti, hogy tetszőleges kulcsokat és értékeket. Sok hasonlóan Pset 5, azok, akik nem hash tábla implementációk akkor valószínűleg be a szót, majd beilleszteni azt egy láncot kapcsolt listák vagy tárolt értékét true valahol, vagy valami ebben az értelemben. Te valahogy eszébe jutott az a tény, hogy a szó volt. Most, hogy az lesz az én hash tábla, és így most megy a végrehajtó az ellenőrzés funkció Csak meg kell nézni, hogy a belső hash tábla , és ha egy szó van. Mit fogok tenni, hogy én fogok mondani, ha- mondjuk isset, ami egy PHP függvény, amely a szó szoros értelmében csak azt jelenti, a kulcs készlet, így isset ($ table [$ szó], és ha igen, vissza igaz. Ennyi. Ez Pset 5 in PHP. Nos, a méltányosság, oké. Else return false, így nincs ott. Mi folyik itt valójában? Nos, ha a tábla vagy hash tábla itt több általánosan egy asszociatív tömb, amely azt jelenti, hogy index bele egy szó, mint a "szó", és van, hogy újra valami értéket. Mi vagyunk a fajta szerzés egy lépéssel magunkat. Lenne ilyen jó, ha ténylegesen berakodott a fájl első, így terhelés nem olyan egyszerű, de hadd menjen előre, és felkap  egy igazán gyors végrehajtását terhelés. Hadd menjek előre, és azt mondják, szó lesz fájl szótárban. A fájl PHP függvény megnyit egy fájlt és visszatér Önnek egy tömb összes szó, hogy a fájl, Csak átadja el Önnek. Ez volt a nagy fájdalom is, nem igaz? Most foreach, ez az új konstrukció, foreach ($ szavak as $ szó). Ez a hurok fog kezdeni iterációjával az array szavak és hozzá a $ változó szó minden szó a fájlban az első és a második, hogy a harmadik és a negyedik végig így nem kell csinálni a bosszantó [i] jelölést és hasonlók. És amit én egyszerűen nem megy minden ilyen szavak A tároljuk az én tábla indexelő figyelembe táblázat majd ezzel igaz, mert emlékezni hogy egy szó van a szótárban minden, amit igazán csinálni az a fajta fordítsa egy kicsit, és azt mondják ezt a szót én hash tábla ott van, igaz. És ha nincs ott, nem kell kifejezetten fel hamis, egyébként azt kell tenni false összes lehetséges szavak az univerzumban. Elég nekem, csak állítsa be az index értéke az igaz, ha a szó valóban az én hash táblában. Nos, én egy pár vágás sarkok, hogy itt fogok integetni a kezem a most, de most a terhelés függvényében történik. Én betölteni a szavakat a fájlt egy tömb. Én iterációkhoz hogy tömb, és minden szó a tömbben Én dugja be a hash tábla 1 sor kódot. Ez a móka. Tudja, hogyan tudjuk végrehajtani Méret most? Nos, méret mindig elég könnyű, a méltányosság. Itt is csak azt vissza száma asztalra. Ez elég egyszerű is, számolja meg a dolgok a táblázatban. Ez tulajdonképpen a fajta nem a leghatékonyabb. Azt kéne rendelkeznie nevű változó méretű, így tudjuk csinálni állandó, de ez nagyon egyszerű. Ja, és majd kirak, ha valóban akarjuk, hogy az anális itt azt mondhatjuk, hogy ez hogyan kirakodásához valamit. Csak állítsa a változót egyenlő egy üres tömböt, és megszabadul mindent, ami ott volt. Nem kell hívni ingyen. Megint vágott néhány sarkok, és elnézést kijelölése probléma set 5 talán a C, de ha most megy előre, és fuss ez, Megyek ténylegesen futtatják verziót írtam előre csak azért, hogy én nem semmilyen szintaktikai hibák nélkül. Hadd menjek előre, és fuss helyesírás. A használat az ugyanaz. Itt van egy szótár fájl, ami tartalmazza a szót, csak foo. Itt van egy szöveges fájl, amely tartalmazza a csak foo bar. Nézzük ezt a helyesírás-ellenőrzés, így a helyesírás, ezzel a szótár fájlt a szöveges fájl. Van egy elírt szó, bár, és íme. Kész a Pset 5. Vessünk egy 5-perces szünet van, és mi jön vissza, és inkább a PHP. Rendben, mi vissza. Hadd ne-utálsz egy darabig. Nézzük most valóban látni, ha ez nem volt pozitív ténylegesen végrehajtó ez a dolog a PHP-ben. Nyújtott, azt 45 másodperc végrehajtani. De menjünk előre, és most fut a dolgokat. Hadd menjek előre, és fuss a C változat A Speller, és mi fuss ez az egyik legnagyobb fájlokat, amely a King James Biblia. És ez itt in-menjünk a mi C mappába, Speller a King James az 5.. Sok elgépelt szavakat. Oké, ez a kimenet akkor valószínűleg van akkor is, ha az idő egy kicsit más, ha van minden megfelelően működik, és így időt összesen helyesírás-ellenőrzés A King James Biblia 0,38 másodperc, így nagyon jó, hogy a végrehajtási használatával. Most hadd menjen be a PHP verzió, amit most írtam. Hadd futni helyesírás a King James. Hoppá, figyelmen kívül hagyja, hogy a hiba. Én vagyok a rossz könyvtárban. Speller a King James az 5.. Majdnem kész. Oké, a ravasz megfigyelő rájönnek, hogy több volt, mint 3 másodpercig ott. Ez az igazi működési idő. Kiderül, hogy időbe telik, hogy köpni sok szöveg-ből mert a puffer kérdések, de hosszú történet rövid, volt 3,15 másodperccel a gép idő, CPU időt, versus mi volt egy perce? Like .3. Úgy értem, ez egy nagyságrenddel lassabb, ezért hol van, hogy a Nevetséges lassulás jön? Nos, mint volt a helyzet a legtöbb bármilyen tervezési döntést hoztunk az osztály az elmúlt 9 hetes ott szinte mindig ilyen cserét. Néha csak a tér között, néha között térben és időben, tér, idő és fejlesztési erőfeszítések, sőt itt, bár megmentettük hatalmas mennyiségű időt, talán potenciálisan 10-20-30 óra A fejlesztési idő végrehajtása a helyesírás-ellenőrző által ostorozó fel mindössze 45 másodperc alatt ezen a nyelven az ára az, hogy ez egy nagyságrend lassabb ennek eredményeként, és ez általában a helyzet a legtöbb bármely értelmezett nyelv, PHP, Python, Ruby, Pearl vagy mások, amellyel ha akarsz futtatni tolmács segítségével, és azt olvassa a kódot soronként, felülről lefelé, balról jobbra, hogy a közvetítő fog tartani egy ideig a saját, és mit érzés itt a 3 másodperc, szemben a 0,3 másodperc az a tény, hogy ez a közvetítő, aki szó szerint értelmezi a kódot sorról sorra, és Isten őrizz, ha belül egy hurok egy hatalmas tartalmazó fájlt több százezer szavak. Ezt a felső fog hozzá, és add fel, és adjunk hozzá, és add fel. Egy eszköz, mint ez, hogy ez valószínűleg nem a legjobb nyelv használatát végrehajtási A helyesírás-ellenőrző, ha közvetlenség is érdekes, hogy a felhasználók és az Ön számára. De a luxus van egy pillanat, ha nyelvet használnak, mint a PHP vagy sok értelmezett nyelv keretében a weben, ami azt illeti, van az előny hogy az internet sokkal lassabb, mint a legtöbb számítógép. Van egy GHz CPU a számítógép, 2 GHz-es, talán még ezekben a napokban. De a valóság az interneten van egy nagy mennyiségű látencia amely a böngésző, hogy beszéljen a szerver, bár láttuk a múlt héten hogy elég gyors, egy fél milliszekundum, vagy úgy, ez is összeadja, és ha le dolgokat, mint egy kép vagy egy Facebook fénykép vagy kapok egy azonnali üzeneteket Facebook fecsegést, Gchat vagy a hasonló, az összes ilyen menettérti idő között, a böngésző és a szerver kezdet add fel, ami az adott választott nyelv sok esetben egyáltalán nem olyan fontos, szóval jól egy kicsit lassabb nyelv mint a PHP vagy Python vagy Ruby de amelynek vannak hatalmas upsides hogy Ön és kollégái és barátai, mert akkor végre dolgokat, így sokkal gyorsabb. Sőt, akkor sokkal kisebb a kockázata bizonyos biztonsági hibái. Nincs pointers PHP-ben. Nincs seg hiba, hogy könnyedén indukálni ugyanúgy tudna a C A C te szuper közel a hardvert. A PHP és hasonló nyelven te valami magasabb szintre, hogy úgy mondjam, sok védekező közted és mi ténylegesen folyik a gép belsejében, és ez csak egy üzlet. Kaptunk a pont, amelyek ezeket a modern, magas szintű nyelven mint a PHP, mert a tanulságok nyelven, mint a PHP-ben C. De ha nem érted, mi folyik a motorháztető alatt egész idő akkor biztosan nem tud a tervezési döntéseket, és természetesen, amikor a munka egy olyan helyen, mint a Facebook vagy a Google vagy bármely ezeken a helyeken, hogy az egyre inkább játszik nagy adathalmazok akkor is, ha visszamegyek, és nem gyakornok, és dolgozunk néhány MD A néhány nagy adatkészlet bevonásával betegek és az orvosok és hasonló a megfelelő eszközök is rendkívül meggyőző mert különben az elemzés egyes adathalmaz eltarthat másodpercig vagy esetleg szó szerint órákig. Ez csak egy példa, hogy nem meghiúsítsa az Ön számára, hogy sokkal több erőfeszítést ez volt a C, hanem, hogy segítsen értékelni, hogy amikor te végre valami C igazán érti, vagy elmélet, hogy valóban megértsék hogy minden, vagy ki kell dolgozni, és akkor már szinte teljes ellenőrzést át, mi folyik a motorháztető alatt, és ezek magasabb szintű nyelven van, hogy lemondjanak több ellenőrzés, hogy az emberek, akik kitalálták őket és ezekre inkább azok tervezési döntéseket, mint a tiéd. De ha magától értetődőnek, hogy a teljesítmény nem annyira fontos az interneten, mert ezeknek az egyéb kérdéseket, Csak hálózati sebesség egy kicsit lassabb, mint a CPU sebesség egyébként, így tudjuk rendezni az engedheti meg magának, hogy egy kicsit lassabb nyelv ha a upsides itt tudjuk fejleszteni a dolgokat 10-szer gyorsabb, vagy még több. Lássuk, hogyan tudjuk kezdeni ezzel. Hadd menjek be egy mappába napjaink példák nevű frosh.ims, és ez ténylegesen személyesen motiválta a tény, hogy a legelső dolog Írtam a webes éve miután CS50 és CS51 volt a honlap a Frosh IMS-program, gólya intramurális sport, amely abban az időben ez elég volt évekkel ezelőtt, hogy az időben nem volt honlapja a program, bár volt egy Web, és helyette volt Proctor a Wigglesworth amellyel, ha akarod regisztrálni a röplabda vagy foci vagy bármi mást kíván, töltse ki az egy darab papír. Te aztán gyalog át az udvaron. Te aztán kopogtattak az ajtón, és csúsztassa a saját ajtaját, vagy kézzel a Proctor- egy darab papírt az Ön nevét rajta, vagy nem szeretné, hogy a csapatkapitány, milyen sport akartál csinálni, és mit kollégiumi voltál be Ez a fajta egy régi iskola módja a dolgok, és ez volt a legfontosabb alkalom automatizálni sok ezt a folyamatot. Csak megy a honlapon. Azt írja valami be Kapsz egy visszaigazoló e-mailben, és bumm, kész. Ez volt az első dolog, amit tettem, bár a nyelv úgynevezett Pearl, de ez viszonylag könnyen megoldható a PHP, és ez a fajta reprezentatív A probléma akkor kezdődik, amikor megoldásához tudja kifejezni magát programból, és nem kell támaszkodnia dolgok, mint például a Google webhelyein vagy Excel vagy szerszámokat, amelyek adni neked. Srácok, most már képes olyan dolgokat, mint ez. Ez egy szuper csúnya változatát egy űrlapot, De tételezzük fel, használja azt az elején a beszélgetés, amelyben ez a nagyjából milyen formában volt, mint évekkel ezelőtt nekünk annak érdekében, hogy az emberek az interneten, hogy iratkozzon fel Frosh PM. Megkérdeztük egy név, egy jelölőnégyzetet e vagy nem lenni kapitánynak, férfi vagy nő, és akkor mi kollégiumi voltak, és akkor fog benyújtani ezt a nyomtatványt. Nézzük először megvizsgálja a motorháztető alatt, a HTML, amely ezt a weboldalt. Hadd menjek be froshims0, és mint félre, mert Pset 7 veszem biztosra a könyvtárak és a mappák leteszem dolgokat be Majd végigvezeti hol dolog van, hogy menjen a készüléket, mely mod parancsokat kell futtatni, úgyhogy ne aggódj minden hülye details szinkronizálását-tól a get-go ide. Rendben, itt van froshims0.php. Hadd lapozzunk lefelé, és mi kíváncsi itt, ez egy PHP fájl, de mi van a belsejében, tisztán? Ez egy csomó HTML, és valóban, a PHP eredete tényleg voltak, hogy egy Web-központú nyelv. Egy pillanattal ezelőtt használta, hogy hajtsák végre a sör például, a feltételeket például a helló példa, és ez rendben van. Használhatja PHP egy programozási nyelv ahol a script tényleg csak a nómenklatúra adott egy gyors és piszkos programot vagy valami, hogy írsz egy előre megírt, vagy általában az értelmezett nyelv. PHP szuper hasznos, mert láttad, hogy milyen gyorsan Viszonylag tudunk felkap programok PHP. De ez tényleg tervezték, hogy kell használni az interneten, és céljuk a webes abban az értelemben, hogy észre ide a tetején a fájl Tudom kezdeni