>> JASON HIRSCHHORN: Velkommen, alle til uge 10.
Det er en spændende uge, fordi i morgen er Quiz 1, som vi vil få
til i en anden.
I dag i afsnittet, vi kommer til at gå over nogle ressourcer til quizzen, og
så vil jeg besvare enhver og alle spørgsmål, du fyre har.
Og vi vil til sidst ende med nogle praksis problemer.
>> Vi kan tilbringe hele afsnittet besvare spørgsmål.
Vi kan tilbringe hele afsnittet går over praksis problemer.
Vi vil bare ekspandere til at fylde rum og tid, vi har.
>> Så jeg sætte denne liste op hver uge, men det er særligt vigtigt i denne uge.
For at studere, hvis du ikke har startede allerede, oh boy.
Men forhåbentlig har du allerede begyndt.
Og du går igennem de materialer, og ressourcer, der er anført her.
Jeg vil varmt anbefale en række af disse.
>> Især noter er utroligt vigtigt og hjælpsomme.
Den study.cs50.net giver en stor primer på en masse
de emner, vi dækket.
Det har også nogle store øve problemer.
Og så, Google er stor, også.
Jeg ved ikke, hvad du ville bruge det til.
Men bruge Google, så godt.
>> Nå ud til mig, hvis du har nogen spørgsmål, kommentarer eller bekymringer.
Kig over revisionen sessionen lysbilleder fra i aftes.
Eller, hvis du har lidt tid, se videoen.
De giver en masse nyttige materiale og information.
Og prøv og dække hvis ikke alle, mange af de emner, vi har dækket, og at du
måske se på quizzen.
>> Tale af quizzen, at vil være i morgen.
Det er 75 minutter lang.
Mange af jer tager det ved 1 Klokken, og nogle af jer er
tager det på 5:30.
For den tid, du tager det, og placering du tager det, så sørg
du tjekke dokumentet på CS50.net hjemmeside.
>> Husk, at du kan få en 8 1/2 med 11 ark til at tage med dig.
Ofte folk ikke bruge denne ark på alle under quizzen.
Men virkelig, det er en utrolig nyttige undersøgelse værktøj.
Så at sammensætte dette blad er hvad Jeg tilbragte sandsynligvis tre eller fire timer
gør, når jeg studerede for CS50, og der var let den mest hjælpsomme
måde jeg kunne studere til quizzen.
Så selv hvis du har nogle andre menneskers studievejledninger at se på og
bruge som referencer, jeg varmt anbefale gøre din egen undersøgelse guide, sætte
at ting sammen.
Det er virkelig hjælper dig med at lære alt materialet.
>> Sidst men ikke mindst i dette afsnit, efter quizzen i morgen der er en
mere foredrag -
næste mandag.
Der er endnu en del, ikke næste Tirsdag før Thanksgiving, men den
Tirsdag efter det.
Vi vil mødes sammen til en endelig afskedsfest og også gør nogle cool
ting at få jer begejstrede yderligere undersøgelser i datalogi.
>> Der er en mere projektorienteret, en mere retfærdig, en mere hackathon.
Vi nærmer sig slutningen af ​​CS50, der er spændende -
men også, hvis du ligesom mig lidt trist.
Før jeg går videre, er der nogen der har eventuelle spørgsmål om, hvad
vi har dækket indtil nu?
>> OK, godt lad os gå over nogle spørgsmål at du har for quizzen og emner
vi kan dække.
Så dette er en liste, som jeg sat sammen.
Det er på ingen måde udtømmende, men forhåbentlig vil jogge din hukommelse, hvis du
har nogle spørgsmål om nogen af ​​disse emner, eller hvis du har spørgsmål om
problemer praksis fra quizzer i de forløbne år.
>> Jeg havde et par spørgsmål, der var mailet til mig, men jeg ønsker at holde ud
på dem, for et sekund.
Er der nogen har nogen spørgsmål, problemer, de ikke forstår,
svar, de ikke forstod at få os i gang?
Avi.
>> PUBLIKUM: Kan du bare gå over DOM og Ajax virkelig hurtig?
Ligesom, hvad vi har brug for at vide eller burde forstå dem?
>> JASON HIRSCHHORN: Jeg har tænkt mig at besvare generelt dette spørgsmål om, hvad gør jeg
behøver at vide om givent emne x?
Fordi jeg har en følelse mange af jer kommer til at spørge mig, eller er
nysgerrig om det.
Så i det omfang, at emnet var dækket i foredrag, eller § eller på
study.cs50.net, et problem indstillet, bør være bekendt med det.
>> Så du behøver ikke at kende alle typer af tag, der er tilgængelige i HTML eller
enhver form for attribut eller egenskab du kan give noget i CSS.
Men hvis du så det i et foredrag eksempel hvis du så det på et problem
sæt, bør du nok være bekendt med det, især ting du så
i foredraget.
Så vi drøftede dokument objekt model en smule i
sektion, så meget mere i foredraget.
Du skal være fortrolig med, at meget af det.
>> Og du skal være fortrolig med Ajax i samme omfang.
Vi har aldrig set utroligt avanceret eller komplicerede eksempler på Ajax, så
du kommer ikke til at blive bedt om at gøre noget utroligt kompliceret.
Men du kan blive spurgt, hvordan gør jeg foretage et opkald ved hjælp af Ajax jQuery?
Hvilket er noget, du har set en række gange før, både i
gennemgå session og i foredrag, og Det er kun to-ish linjer kode.
>> Så det er noget du bør være bekendt med.
Men igen, for alle disse emner, hvis du har set det
før, det er fair spil.
Og vi kan spørge dig - naturligvis, vi er vil bede dig ting, du
ikke har set før.
Coding noget, du ikke har set før.
Hvilket ikke at sige, at du ikke har set de værktøjer til at løse
dette problem før.
Du har set disse værktøjer.
>> For eksempel, på quiz 1 hvis du nødt til at kode strlen.
Vi har ikke kodet strlen før.
Men du ved hvordan man bruger en for-løkke, du ved, hvordan at bruge, hvis forhold.
Du ved, hvordan man skriver variabler i C. Det kommer til at være det samme her.
Du kommer ikke til at blive bedt om at gøre noget, du ikke har set før, men
kan du blive bedt om at, ligesom, sætte noget sammen på en ny måde, eller
løse en anden type problem.
>> Undskyld, det var ikke specifikke for din spørgsmål, men jeg kan ikke svare på om
hver enkelt emne, hvad du gør eller ikke brug for at vide.
Men også, undskyld, sidste ting på det.
Vi har brugt betydeligt mere tid på på link-lister, end vi har på Ajax.
Du ikke bruge Ajax i et problem sæt.
En af de centrale elementer i at Problemet sæt, var link lister.
Og vi har brugt en masse tid i foredrag og sektion bruge det.
>> Så odds er link liste vil komme op mere ofte på quizzen end Ajax vilje.
Eller de spørgsmål, der har at gøre med link Listen vil være værd flere point.
Så du kan helt sikkert fokusere og smal ind på ting, der er mere
tilbøjelige til at komme op, fordi vi har brugt mere tid på dem.
>> OK andre spørgsmål?
Ja.
>> PUBLIKUM: Kan vi gå over brugen af anonyme funktioner i JavaScript?
Jeg er er lidt forvirret over det.
>> JASON HIRSCHHORN: Så i JavaScript -
Jeg forsøger at tænke, hvordan jeg kunne skrive dette på -
så lad os faktisk åbne denne kode.
Så dette er kode, som vi gjorde i sidste uge.
Og du har set det før, hvis du var her i afsnittet i sidste uge.
Eller du har set noget ligner dette før.
>> Men du kan se på denne første linje.
Dette er, hvordan du starter -
alles set det før.
Hvis du ønsker at sætte nogle JavaScript-kode, du sætter det inde i denne, under forudsætning af
du bruger JQuery.
Det siger, ikke gør noget indtil dokumentets ladt.
>> Og så, Curt, du se lige her vi gør noget som dette -
funktion åben paren, lukket paren.
Så vi ikke giver denne fungere et navn.
Vi kommer ikke til at definere denne funktion er meningen at køre og derefter
kalde det en masse gange.
Vi siger bare dette dokument allerede tager en funktion.
Et par ting at gøre.
>> Og vi ønsker ikke at bruge tid på give den et navn eller gemme den til
evighed.
Vi ønsker blot at køre nogle ting.
Så en anonym funktion slags af tjener dette formål.
Når du ikke kommer til at bruge noget igen og igen, så du ikke behøver
at give den et navn - du bare ønsker at bruge det én gang -
ville du bare sige funktion, eksempel, i dette tilfælde, og du er bare
definition noget, du kunne give et navn.
>> Ligesom, vi kunne trække denne funktion ud og give den et navn og derefter kalde det
fungere her.
Men vi behøver ikke at fordi vi ikke ønsker at spilde tid på at give det et navn eller
spilder noget i vores navn rummet.
Og du vil se, at en masse.
For eksempel ser vi, at en masse i denne kode, men du har set dette før, når
du klikker på noget -
køre denne type kode.
>> Vi kunne definere den kode, vi ønsker at køre, når vi klikker, i dette tilfælde,
dette id, som en særskilt funktion og derefter køre denne funktion.
Men i dette tilfælde, er vi bare springe dette skridt og flytte den ind i her og
bare for at definere alt at vi ønsker at ske, og
ikke at give den et navn.
Det måske stadig ikke har besvaret dit spørgsmål.
>> PUBLIKUM: Nej, det gør.
Jeg mener, jeg tror jeg bare ikke rigtig få, hvorfor det ville være en
fungere på alle, selv om.
Fordi det ikke er virkelig at blive kaldt.
Det betyder egentlig ikke noget navn.
>> JASON HIRSCHHORN: Det er en funktion i forstand, at det er en række trin,
ligesom du ville sætte i en funktion.
Og så det er derfor, vi kalder den anonyme funktion.
Vi kommer ikke til at give det et navn.
Vi kommer ikke til at spilde prøve at nævne det, men vi kunne.
>> Anonyme funktioner du kan altid give et navn.
Så for eksempel denne kode lige her, vi kunne sætte denne kode inde i en
funktion og derefter kalde denne funktion her.
I stedet siger vi, vi ikke kommer at genere med.
Vi vil bare skrive det hele lige her.
>> Det er ligesom nogle gange, når du skriver en fire loop i C - jer
har set det før - måske er du iteration gennem en forloop
ind i lig 0.
I er mindre end strlen.
Eller du går gennem nogle array, kan du spare matrix
indeks i i nogle variabel.
Og du bruge denne variabel.
Så du behøver ikke at omskrive matrix beslag jeg igen og igen og igen.
>> Og det er lidt ligesom en dummy-variabel.
Det er ikke tjener meget andet formål end gøre din kode en smule renere
og lettere at læse.
Lignende funktion her.
Bare gør det lidt lettere, men funktionelt er der ingen forskel.
Besvarer det dit spørgsmål?
>> PUBLIKUM: Ja.
>> JASON HIRSCHHORN: OK ..
Mario?
>> PUBLIKUM: I går de ofte sætte funktion parenteser begivenhed.
Betyder det noget?
Eller er det for ting som at de ville gøre
document.ready funktion begivenhed.
>> JASON HIRSCHHORN: Vi har set dette, og igen, disse er mindre ting, der
sandsynligvis Jeg ønsker ikke at bruge for meget tid på.
Fordi nogle gange ønsker jeg ikke folk bliver ellevild, at de ikke har
hørt om disse ting så meget.
Men vi snakkede lidt om hændelseshandlere.
Så sker der noget, og så denne funktion udføres.
Og så ønsker vi også at vide nogle detaljer om hvad
skete i denne begivenhed.
>> Så tænk tilbage til problemet set 4.
Det er formentlig den nemmeste måde at forstå, at bryde ud.
Der var nogle kode -
som en hændelse ville ske, men begivenhed kan betyde mange ting.
Hvis kunne betyde musen er klikket, er det kan betyde, at du ramte en piletast, et
cetera, et cetera.
>> Men det er alle gemt i denne generiske ting kaldet begivenheder.
Og så kan vi sige, er denne begivenhed denne ting?
Eller er denne begivenhed denne ting?
Eller hvad slags skete med denne begivenhed?
Så det er derfor du opretter denne variabel der for at redde denne ekstra information
om, hvad der præcist skete, at du vil ønsker at
udnytte i funktionen.
Men igen, det er nok en af ​​de mindre vigtige ting at være super
bekendt med.
>> OK, hvad andre spørgsmål har folk havde, eller anstødssten, de har
stødt mens du gennemgår?
Vi vil tilbage til denne liste.
Hvad under træningen quizzer, hvis mennesker har taget dem, der allerede?
Hvad var nogle problemer, som udløst jer op?
Jeg kender til en kendsgerning, at sidste års quiz var virkelig hårdt.
>> PUBLIKUM: Kan du forklare, hvad en SQL-injektion angreb er?
>> JASON HIRSCHHORN: OK, godt.
Så vi talte om det en smule.
Der er et foredrag om sikkerhed.
Og igen, som jeg nævnte tidligere, dette er en side.
Men du vil blive frustreret på quizzen når du læser nogle små to point
spørgsmål, og du er ligesom, når gjorde jeg nogensinde lærer det?
>> Alle disse ting i disse foredrag at du ikke tror, ​​du havde brug for at
kender, eller du kan dække over, fordi de ikke har at gøre med den
problem sæt, der vil sandsynligvis komme op igen på quizzen.
Så, seje, sjove ting, som du bare troede David fortalte for dig at
nyde, han fortæller dig at du nyde og gøre dig bare være super
begejstrede lære alt der er at lære
om datalogi.
Disse ting også komme op på quizzer.
Så selv disse små ting, som ikke direkte forholde sig til dit problem
indstillet, da du fyre kender fra Quiz 0, sandsynligvis vil komme op.
Og det er et godt eksempel af noget.
>> Så en SQL-injektion angreb er, når du få nogle oplysninger fra brugeren og
du ønsker at indsætte det i en tabel ved hjælp en SQL indsætte erklæring, men du
ikke rense input før tid.
Så selvfølgelig har vi set SQL-sætninger.
Jeg vil bare åbne op -
lad os gå -
vi vil gå til revisionen -
Jeg tror, ​​der dækkede det?
Jeg tror Samala gjorde.
Så vi kan få -
>> PUBLIKUM: Hvor fandt du den?
>> JASON HIRSCHHORN: Så hvis du går til CS50.net, quizzer, og så kan du
rulle over og få dias fra gennemgangen session.
Men du kan se det er et godt eksempel af en SQL-injektion angreb.
Vi tager nogle oplysninger fra brugeren og de giver os en snor, og så vi
ønsker at indsætte denne streng i en database.
Generelt vil vi sanitize at input, som betyder, at der er nogle
tegn, der er farlige.
>> For eksempel i SQL strenge, disse citater -
enkelte citationstegn eller anførselstegn -
betyde noget.
De betyder afslutte denne streng her.
Og så hvis brugeren giver dig et enkelt eller en dobbelt citat, kunne de være
forsøger at spænde ben for din SQL-forespørgsel og indsætte nogle dårlige ting i det.
Og hvis de gør det, de kunne vinde kontrol af databasen eller gøre nogle
ting, som du ikke ønsker dem til at gøre.
>> Så det er derfor, hver gang vi tager SQL forespørgsler, vi rense input før
sætte det ind i databasen, som betyder, at vi undslippe disse tegn.
Vi taler om, at der i et sekund.
Men lang historie kort, en SQL-injektion angreb er, hvis du ikke gør det -
hvis du ikke tage sig af input de gav dig før du sætter dit
database, kan de, som du kan se ned her, køre en forespørgsel, at i virkeligheden -
de lægger i deres kode hernede og denne vælge linje hernede vælger
alt fra tabellen uanset af, hvad adgangskoden er givet.
Fordi du har den eller 1 er lig med 1.
>> Så det er dybest set, lang historie kort, en måde at overtage databasen.
Spørgsmålet er så, til jer, er hvor i p sæt 7 har du rense alle
input til din SQL-forespørgsler?
Hvor kom det skridt ske?
Hvor vil du forhindre SQL-injektion angreb fra sker i p indstille 7?
Ja.
>> PUBLIKUM: Crypt?
>> JASON HIRSCHHORN: Så det var ikke krypt.
Vi gjorde ikke, at du gør dette for dette særligt problem indstillet, men det sker
i forespørgslen funktionen.
Vi har faktisk skrev det for dig, og vi tog sig af
desinfektion indgange for dig.
Men i de forløbne år har de studerende haft at skrive indgangene på egen hånd.
I p sæt 7, en masse af jer -
lad mig åbne en anden fil.
>> Så du vil bemærke her en masse mennesker, i problem indstille 7, kaldte ikke
denne funktion på strenge.
Denne funktion, htmlspecialchars, igen -
denne streng kan have nogle ting der i HTML betyde noget andet.
Ligesom en bandage, en firkant eller en vinkel beslag betyde noget i HTML.
>> Og så hvis du udskriver det ud til den skærmen, eller hvis du bare tage det og
printe det ud til din HTML, som måske gøre noget, du ikke forventer.
Så htmlspecialchars går over alle dem, tegn, der har særlige
møde og undslipper dem.
Så det bliver printet ud som teksten du ønsker at se, i stedet for
skrue op din HTML.
Vi kaldte denne funktion i overskriften.
Og en masse mennesker har glemt at kalder denne funktion i
kode, du skrev.
>> Så, for eksempel, havde hvis en bestand navn en vinkelbeslag i det, og du har glemt
at kalde denne funktion, at vinklen beslag kunne have smidt hvad
din HTML lignede.
Men at kalde denne funktion vil slippe at så det faktisk udskrives som en
vinkelbeslag og ikke smide fra din HTML-kode.
>> Den samme grund, vi har set, til tider, skråstreger før anførselstegn i en
printf linje, fordi vi ikke ønsker, at anførselstegn ned strengen.
Vi ønsker at udskrive dem ud til skærmen.
Så alt dette er den samme idé.
Besvarer det dit spørgsmål?
>> PUBLIKUM: Kind of.
>> JASON HIRSCHHORN: Kan du have en opfølgning?
>> PUBLIKUM: Jeg gætter SQL-injektion angreb har at gøre med det?
Jeg forstår ikke, hvordan de to er beslægtede.
Hvorfor ville du gøre specialchars?
>> JASON HIRSCHHORN: OK, så SQL injektion angreb er, når du injicerer
nogle ondsindede strenge i nogens program, og de bare tage den og køre
SQL-forespørgslen med en snor du gav dem.
Som du kan se ned her, at kunne være problematisk.
Så den måde du forebygge mod det er du tager deres streng, som de giver
dig - så denne streng lige her -
og du rense det.
Du slippe alle de ting, er potentielt problematisk.
Så du behøver ikke fortolke dem som noget der betyder noget.
>> Og et eksempel på, at med HTML er denne funktion.
Så det er den samme idé her.
Og jeg var bare at vise dig andre eksempler på, når du har
set denne idé før.
Undslippe brugerinput før udskrivning det ud til en skærm eller sætte det
inde i en SQL-sætning.
>> PUBLIKUM: Så i dette tilfælde, at brugeren er rode med programmøren.
>> JASON HIRSCHHORN: Ja.
Med alle disse angreb på sikkerheden, det er altid generelt brugeren, eller
nogen, der forsøger at rod med dig, programmør.
Og disse er måder, du kan forebygge mod dem.
>> PUBLIKUM: Så jeg har et spørgsmål om hashfunktioner.
I Quiz 1 fra 2011, er der to spørgsmål om ensidige hashes.
Og jeg var bare undrende hvad det betød.
>> JASON HIRSCHHORN: OK, der quiz?
2011?
>> PUBLIKUM: Ja.
>> PUBLIKUM: Quiz 1?
>> PUBLIKUM: [uhørligt].
Det er ligesom hashing en adgangskode.
Det er ikke at sætte ting -
>> JASON HIRSCHHORN: Hvilken side var det?
>> PUBLIKUM: Jeg tror, ​​det var 9 eller 10, eller begge dele.
>> JASON HIRSCHHORN: Okay, gå videre, Curt.
Du kan besvare, mens vi ser.
>> PUBLIKUM: Jeg tror, ​​det taler om hashing en adgangskode.
Ligesom, når nogen indtaster en adgangskode, du gøre det til en krypteret ting.
Det er kodeordet hash, hvilket er forskellig fra en hash-funktion,
sætter noget ind i en hash tabel.
>> JASON HIRSCHHORN: Lad os se.
Lad mig trække op, hvad de give som svaret.
Og så vil vi gå igennem det.
>> Så Curt gav et godt eksempel af en envejs-hash.
Når vi har set det før, vi tage adgangskoden og drej -
husk, i p sæt 7, nogen måske har en adgangskode, der er bare adgangskode,
men så det bliver krypteret ind nogle virkelig lang ting.
Den envejs-hash betyder, at det er meget let at gå fra én måde til den anden, men
det er meget svært at gå fra den anden vej tilbage.
>> Og så ved du, da du var kontrol folks passwords problem
indstille 7, ville du tage deres -
så for eksempel sige, at de ønskede at ændre deres adgangskode, spørger du dem
for deres gamle adgangskode.
Du tog deres gamle adgangskode.
Du krypteret det.
Og sammenlignede derefter de to krypteringer snarere end unencrypting den oprindelige
et, fordi det er virkelig svært at gå den vej.
Ja.
>> PUBLIKUM: Hvordan i dybden gør vores forståelse af TelNet nødt til at være?
>> JASON HIRSCHHORN: Hvis det blev nævnt kortvarigt i foredrag, bare en kort
forståelse.
Igen tilbage til svaret til Avi spørgsmål -
jo flere ting kommer op, jo mere sandsynligt det er du nødt til at være super
bekendt med dem.
Hvis de kun er kommet op i foredrag, det er bare ét sted.
Men hvis de kommer op i foredrag, sektion, og et problem indstillet, så du
sandsynligvis nødt til at være super bekendt med dem.
>> Så jeg havde et spørgsmål fra tidligere om -
er var efteråret 2010 -
Quiz 1, lad os trække op -
dette spørgsmål på stakke og køer, som vi tilbringe en fair lidt tid
taler om i foredrag, selv selvom vi ikke rigtig
nogensinde har ramt det i afsnit.
Så dette spørgsmål er at give dig en række kommandoer og spørger dig, hvad
bliver trykt i dette tilfælde.
Så dette er en helt rimeligt spørgsmål der kunne blive spurgt af dig
fyre, og så fyre bør være i stand til at besvare det.
>> Så hvorfor ikke du ser på det i 30 sekunder, og derefter, hvis nogen ønsker at
foreslå svarene til mig, og så vil vi gå igennem det.
Okay, der har et svar til spørgsmål 27?
Ja.
>> PUBLIKUM: Er det 1, 2, 3, 3?
>> JASON HIRSCHHORN: Det er rigtigt.
27 er 1, 2, 3, 3.
Så lad os se på, hvordan vi fik det.
>> Først siger vi, hvis s er en kø, hvad der bliver trykt?
Så en q er først ind, først ud.
Vi har set det før.
Vi så billedet af de mennesker venter på Apple
Butik for at købe nogle produkt.
De første mennesker i er de første mennesker ud.
De første ting i en kø er de første ting ud.
>> Så hvis vi skubber noget ind i en kø, du skubbe 1, derefter pop vi 1.
Pop betyder bare tage ud.
I dette tilfælde, bare tage noget ud.
Vi tager ud den første ting, det er en 1.
Så vi vil sætte ting vi udskrive ned herovre.
Dette er ikke længere i vores kø.
>> Så skubber vi på en 2 og en 3, og vi pop off den første ting.
Igen, fordi det er en kø.
Så vi får en 2, så vi sætter på en anden 3 og kalder pop igen.
Vores 3 er først.
>> Og så havde vi en hel masse andre ting, og kald pop.
Men igen, da dette er en kø, først ind, først ud.
Vi tager ud den første ting der nogensinde blev sat i.
Det er vores 3.
Og i dette tilfælde, at vi ikke bekymre dig om alle de andre ting.
Så det er, hvis det er en kø.
Eventuelle spørgsmål om en kø?
>> En stak er anderledes.
Hvad er en forkortelse, vi har for at forstå en stak?
>> PUBLIKUM: Sidste ind, først ud.
>> JASON HIRSCHHORN: LIFO, tror jeg.
Sidste ind, først ud.
Så vi så et eksempel på en stak af bakker i en spisesal.
Uanset bakke er på toppen bliver samlet op.
Og derefter, hvis nye bakker kommer i, bliver de sat på toppen.
Og så uanset er på top bliver samlet op.
Så dem bakker på den nederste magt blive der for en stund.
>> I så fald igen, vi vil trække det ud.
Vi skubbe på en, så man er først i køen.
Og vi pop noget fra.
Og der er kun én ting derinde, så vi flytte 1 hernede.
Så vi sætter på 2 og 3 og vi pop noget fra.
>> Men igen, da dette er en kø -
eller det er en stabel, snarere -
vi tager det, der var i sidste.
Uanset hvad er i sidste kommer ud først.
Og 3 er i sidste.
Så vi satte 3 dernede, så vi sætter på en anden 3 og vi
pop noget igen.
Endelig har vi sat på 4, 5, 6 og 7, og her er vi pop.
Og fordi det er en stak, tager vi hvad blev sat i sidste og skrive
der hernede.
Så vi ender med 1, 3, 3, 7.
Er der nogen, der har spørgsmål om stakke eller køer, eller dette eksempel?
>> OK.
Lad os gå tilbage til listen over emner.
Ikke den vej, denne vej.
Hvilke andre spørgsmål gør folk har?
>> PUBLIKUM: Jeg ved ikke, hvor vigtigt dette er, men jeg var forvirret af
forskel mellem forskellige typer sprog som markup, kompileret
fortolket.
>> JASON HIRSCHHORN: Det er et godt spørgsmål.
Jeg tror, ​​der er noget vigtigt, så lad os gå over det hurtigt.
De store sprog, vi har set hidtil, er C, PHP og JavaScript i form
af programmeringssprog.
HTML, som du nævnte, er ikke et programmeringssprog.
Det er et kodesprog.
Og så har vi CSS, som også ikke et programmeringssprog.
>> Vi har også set SQL, som ikke er et programmeringssprog enten.
Så SQL giver dig mulighed for at skrive forespørgsler til en database.
HTML er et kodesprog.
Den definerer, hvordan tingene er struktureret.
Og CSS giver dig mulighed for at style ting.
Det er sandsynligvis det omfang, for det, du brug for at vide om dem tre.
Men det er mere interessant figur forskellene mellem C, PHP,
og JavaScript.
>> Så en af ​​de største forskelle, som du nævnte, er, hvordan de er
kompileret, eller hvad tilsvarende er.
Så C er kompileret.
Vi vil altid køre en compiler.
Og så hvor er dine fejl når du kører C compiler?
Hvor går det vise dig fejl i din kode?
Hvordan kan du vide at der er en fejl i din kode i C?
>> PUBLIKUM: Det viser dig i terminalen.
>> JASON HIRSCHHORN: Den viser dig i terminal, som du kompilere.
Og hvis der er fejl, er det vil faktisk ikke kompilere det.
Så du ved, at der er fejl rigtige væk, før tid, før du
endda køre din kode.
>> Selvfølgelig kan du køre din kode og få en segmentering skyld, men det var
sandsynligvis fordi du gjorde nogle dumme logik ting.
Men din kode med teknisk alle korrekte og kunne køre.
Så C-kode bliver kompileret i forvejen.
Hvad med PHP-kode?
Hvor var fejl i din PHP-kode?
Hvordan vidste du, at du havde fejl i din PHP kode?
>> PUBLIKUM: Run tid?
>> JASON HIRSCHHORN: Ja, når du ville køre det, ville du køre
PHP-kode i ryggen.
Og så ville du vise et skærmbillede.
Du vil måske se nogle ting på toppen, men så ville du se, ligesom nogle
appelsin, grimme bord.
Og det ville give dig et linjenummer og siger, blah, blah, blah, denne ting
virkede ikke.
>> Så PHP fortolkes linje for linje og eksekveret på serveren.
Og så er resultatet sendt over til dig.
Store.
Udført i serveren linje for linje og derefter sendt over til dig.
Og hvis der er en fejl, vil det sende du fejlen, men du har måske
fået nogle ting i forvejen.
Så noget af det kunne have fungeret, men senere, kan nogle ting ikke har
ikke fungeret.
>> Hvad JavaScript?
Hvor har du set JavaScript-fejl?
I p sæt 8, når du fik en fejl, hvordan vidste du det?
Hvor ville det vise sig?
>> PUBLIKUM: I konsollen, nederst.
>> JASON HIRSCHHORN: I konsol, på bunden.
Det ville også give dig linjenummer, og det ville
dukke op på bunden.
Og JavaScript er ikke udført på serveren.
JavaScript blev sendt til din computer, og derefter når det var tid til at køre
JavaScript, var JavaScript køre linje for linje på
klient, på din side.
Ikke serveren, klientsiden.
>> Og på samme måde, det var køre linje for linje.
Og så når du ville få en fejl, det ville dukke op i bunden.
I lighed med PHP, noget af det måske udføre, og så er du måske få en
fejl senere.
>> Også en lille forskel PHP, hvis du fik en JavaScript-fejl -
sige, at du ikke gjorde det rigtige kode til en alarm boks -
du kunne holde køre dit program.
Boksen alarm ville ikke arbejde, men dit program ville være fint.
Bare måske, at funktionen ville fejle.
>> Så der er nogle af de største forskel med hensyn til, hvordan disse
sprog, eller hvordan programmeringen kode du skriver faktisk evalueres.
Der er også andre forskelle i form af - den største forskel
vi har set i form af variabler på de forskellige sprog.
Så kan nogen give mig en forskel mellem variable
på de tre sprog?
Ja.
>> PUBLIKUM: In C, de er strengt skrevet.
I de to andre, de er løst skrevet.
>> JASON HIRSCHHORN Og hvad betyder det?
>> PUBLIKUM: At i C, er du nødt til at erklære typen af ​​variabel, når
du erklærer variablen, ligesom interbool eller char.
>> JASON HIRSCHHORN: Excellent.
I C, havde vi altid at sætte en type af en variabel.
Og vi kunne ikke rigtig blande typer.
Du kunne ikke gøre et heltal plus en streng.
Men som vi har set i disse andre sprog, du rent faktisk kan blande typer,
og du aldrig virkelig nødt til at give noget en type, nogensinde.
>> Så hvordan kan vi vide ting er variable i PHP og JavaScript?
>> PUBLIKUM: I PHP, begynder de med et dollartegn.
I JavaScript, når du erklærer dem, skal du have en bar.
>> JASON HIRSCHHORN: Right.
Så i PHP, de starter med et dollartegn.
I JavaScript, de skal have bar, selvom nogle gange de faktisk ikke
have bar.
Men det er korrekt.
>> Så det er en stor forskel mellem variabler.
Jeg tror, ​​de er sandsynligvis, off toppen af ​​mit hoved, de to største
forskellene mellem disse tre sprog.
Men, ja.
>> PUBLIKUM: Og omfanget af C-variabler er begrænset til de krøllede parenteser,
hvor de andre, det er ligesom, det dør, hvis det er på kun en funktion,
men ellers, Det er -
>> JASON HIRSCHHORN: Right.
Så omfanget er lidt anderledes i C. Som du huske, krøllede parenteser definere
omfanget af variabler.
Så hvis det er defineret inde i en hvis tilstand, som er inde i en for-løkke,
variablen kun eksisterer der.
>> I JavaScript, er, hvis en variabel er defineret inde i en hvis tilstand -
inde i en for-løkke - det vil findes for denne funktion, men det vil ikke eksistere
uden denne funktion.
Så anvendelsesområde er en lille smule mere fleksibel i JavaScript og PHP.
At besvare spørgsmålet?
OK, alle andre spørgsmål?
Vi kan gøre fire minutter mere af spørgsmål, så
vi vil hoppe ind kodning.
>> PUBLIKUM: Kan vi gå ind i Ajax og snakke om hvad det er?
>> JASON HIRSCHHORN: Tal til Avi efter.
Han anmodede om, at spørgsmålet tidligere.
>> PUBLIKUM: Min dårlige.
>> JASON HIRSCHHORN: Ingen bekymringer.
>> PUBLIKUM: Hvad er JSON?
>> JASON HIRSCHHORN: Hvad er JSON?
Hvad er dit spørgsmål?
>> PUBLIKUM: Bare virkelig hurtigt, forskellen mellem
print og ekko i PHP.
>> JASON HIRSCHHORN: Hvorfor tager du ikke google forskellen mellem print og ekko?
Lille forskel.
Ikke det store af en deal.
Men du bør helt sikkert google det, og det vil give dig et godt svar.
>> JSON, sandsynligvis større i en aftale.
Står for JavaScript Object Notation.
Og når vi har set JSON bliver brugt?
Hvornår har du set -
hvorfor du selv kender ordet JSON?
Hvornår har du set det?
>> PUBLIKUM: Når vi var at få Aktiekurser til finansiering.
>> JASON HIRSCHHORN: Så du så den, når du var at få
Aktiekurser til finansiering.
Og hvorfor gjorde du se det?
>> PUBLIKUM: Når vi hente alle de oplysninger,
kom i dette format.
>> JASON HIRSCHHORN: Så du ville få -
ja.
Værsgo.
>> PUBLIKUM: [uhørligt] information ud af et objekt?
>> JASON HIRSCHHORN: Begge disse tilsammen er svaret
vi leder efter.
Du ønsker oplysninger fra denne anden webside.
Og du vil håbe, at når du er få disse oplysninger, ville det være
præsenteret for dig i nogle type standardiseret format.
>> Alle er formentlig bekendt med kommaseparerede værdier.
Du kan eksportere et Excel-regneark eller enhver form for regneark som en liste over
komma-separerede værdier.
Og kommaer opdele alle de forskellige områder.
JavaScript Object Notation -
JSON -
er en anden type af standardiserede layout af ting.
Og det er ofte, hvor vi opdaterer oplysninger fra vores Ajax forespørgsler.
>> Så i dette tilfælde, vi fik den fra Yahoo site.
De vender tilbage ting os i en JSON objekt.
Og så ved vi, fordi det er en standard, hvad det er
kommer til at se ud.
Så vi kan gentage gennem array der er vendt tilbage til os, den vifte af
objekter, der er vendt tilbage til os.
>> Vi har sandsynligvis nødt til at kende de nøgler, men de generelt give dig
dokumentation på hjemmesiden, når du henter nogle JSON
notation for dem.
Ligeledes kan du JSON indkode et objekt.
Så der er en funktion JSON underscore encode.
Og så du kan tage et objekt, der du har oprettet, JSON kode det, og
give det videre til noget andet, hvis du vil.
Og JSON afkode findes også for et lignende formål eller til
det modsatte formål.
>> PUBLIKUM: Har vi brug for at vide kodning for hash tabeller og forsøger?
Eller skal vi bare nødt til at forstå hvordan de er brugt, begrebsmæssigt?
>> JASON HIRSCHHORN: Så hæve din hånd hvis du gjorde en hash tabel for p sæt 4
med et link liste.
Eller p sæt 5.
Så det var et stort flertal af mennesker.
P sæt 5, 6, hvem ved.
En lang tid siden.
>> Så langt de fleste af du gjorde hash tabeller med link-lister.
Og fordi det er nok den mere fælles tilgang, og fordi vi har brugt
en masse tid at gøre link-lister og hash tabeller, bør du nok være
temmelig fortrolig med, hvordan man kode en hash tabel og et link liste.
>> Og hvis du tænker tilbage på dette problem sæt, var det ikke rigtig
så hårdt, som du forventede.
Og der var en masse mindre kode end du forventede.
Jeg vil sige, du skal vide, hvordan man kode en hash tabel eller en link liste.
Ikke at du ville blive bedt om at nødvendigvis, men du bør
sikkert kender det.
>> Også, hvis du ser gennem tidligere quizzer, har der været en masse
spørgsmål om at skrive funktioner link-lister eller dobbelt-hægtede lister.
Der synes at komme op hvert eneste år.
Right indsætte på et link liste til højre slette fra en link liste til højre indsætte
for en dobbelt-linked liste, et cetera.
Så det, jeg føler mig temmelig komfortabel siger, at du skal vide, at.
>> For prøve, vil jeg sige, du skal sikkert ved, hvordan det fungerer, og måske
give nogle pseudokode for, hvordan at kode det og sætte det op.
Men det ville ikke være det værste i verden, hvis du ikke vidste, hvordan man
kode det i C. Det ville være dejligt, hvis du vidste, hvordan man kode det i C, men jeg tror,
sandsynligvis pseudokode for en prøve ville være den mest du skulle
at vide for en chance.
>> PUBLIKUM: Ekstra kredit?
>> JASON HIRSCHHORN: Og samme med, hvis vi gå ind i binære søgetræer, kan du
brug for - og du har set i fortiden, vi har gjort en masse - du ved, hvordan
binær søgning træ fungerer.
Du bør nok være i stand til sætte en op i pseudo kode.
Men fordi det store flertal af personer ikke gøre det på problemet
sæt, ville jeg sige, det er sandsynligvis mindre vigtigt, at du ved, hvordan man kode
og oprette et træ som dette.
>> Andre spørgsmål?
Desuden kan vi bede dem i hele som vi går igennem nogle problemer.
OK, vi kommer til at flytte på.
Spring at slide for nu.
>> Apropos træer, der er den første spørgsmål, jeg har til jer.
Da dette er et problem.
Jeg vil sige, det er meget sandsynligt, du vil få et problem som dette på din quiz
beder dig om at kode en form for indsats, slette, søgning, for en type
af datastruktur vi har set.
>> Der kommer op hvert år, og vi tilbragte en meget tid i anden halvdel af dette
semester gå over disse datatyper.
Så lige nu har jeg defineret en node i en binær søgning træ.
Og hvad jeg gerne vil have dig til at gøre, er givet en binær søgning træ, der starter
på denne node stjerne rod, udfyld den implementering af funktionen nedenfor,
der sker for at være et fund funktion.
Og gør det med og uden rekursioner.
>> Så jeg vil have dig til at skrive to funktioner.
Én gøre dette med rekursion, en gøre dette uden rekursion.
Og ikke antage, at root vil være ikke-nul.
Så vi leder efter heltal i i træet startende ved roden, og vi har brug for
at skrive dette rekursivt og iterativt.
Ja.
>> PUBLIKUM: Så du vil have os til at returnere sandt hvis vi finder det, og falsk, hvis vi
ikke finde den.
>> JASON HIRSCHHORN: Hvordan vidste du det?
Hvordan vidste du det?
>> PUBLIKUM: Jeg spurgte først, men jeg var under forudsætning af, fordi den siger bool på
starten af ​​funktionen.
>> JASON HIRSCHHORN: Right.
Den siger bool, så jeg behøver ikke engang at fortælle dig, hvad jeg forventer, at du til at vende tilbage
fordi den siger lige der.
Men det er rigtigt.
Retur, sandt eller falsk.
>> Så før du begynder, vil jeg anbefale, hvis du ikke er bekendt med
binære søgetræer hurtigt tegning et billede af det at få din
forståelse, til højre.
Det vil også hjælpe dig, når du skriver din kode og kontrollere den.
Igen, du heller ikke har så meget tid på quiz for at gøre alle de ting
at vi beder dig om at gøre.
Så skriver pseudo kode er meget nyttigt.
>> Og vi giver normalt omkring -
hvis pseudokode er helt korrekt, det er
generelt 50% på et spørgsmål.
Så det er ikke en ufravigelig regel, men hvis du bare skrive pseudokode, og det er
korrekt, er det normalt 50%.
Så jeg vil altid anbefale -
hvis du er presset på for tiden, eller selv om du prøver bare at finde ud af det -
begyndende med pseudokode.
Og endelig, hvis du kunne skrive dette alle i C, ville det være fantastisk.
>> Så lad os tage tre minutter at arbejde på dette program.
Og så skal vi til at skrive pseudokode for det bare én gang, og derefter
vi kommer til at kode det rekursivt og derefter iterativt.
>> Hvis du har spørgsmål, er du velkommen fri hæve din hånd.
Glad for at gå rundt og besvare dem før vi begynder som en gruppe.
>> Lad os fortsætte, og vi vil Pseudokode rekursive version af
dette, og så vil vi kode det.
Så en rekursiv funktion behov i to ting.
Dette kan være et spørgsmål, kan du blive spurgt.
Needs to ting.
Hvem kan hæve deres hånd og fortælle mig hvad de to ting en rekursiv
funktionen har brug for?
Pr. definition har det to ting.
Hvad er de to ting?
Nye hænder.
Ja, Alden.
>> PUBLIKUM: Så jeg er ikke helt sikker på, om dette er den terminologi, men -
>> JASON HIRSCHHORN: Jeg er glad du hæve din hånd.
>> PUBLIKUM: Der er behov for en base case, og det kræver en rekursiv skridt.
>> JASON HIRSCHHORN: Perfect.
Det har brug for en base case og en rekursiv trin.
Så hvad er vores base case her?
>> PUBLIKUM: F rod lig lig nul.
Sorry, bare i pseudokode, hvis det er nul.
Hvis rod er nul.
>> JASON HIRSCHHORN: Hvis rod er nul.
Det er fremragende.
Det er vores base case.
Det er, hvad vi vil at kontrollere hver gang.
Og base case er den første ting du gør.
Hvis du rammer base case, er du færdig.
>> Nu har vi brug for vores rekursivt kald, og jeg vil være villig til at satse, vi har brug for et par
rekursive kald her.
Fordi det er et træ, og vi kunne gå flere måder.
Så hvis rod er null, vi er gode.
>> Hvad vil du foreslå?
Og nu jeg har tænkt mig at begynde at kalde ud på jer, fordi jeg kender jer
alle kender dette.
Men Annie, hvad skal næste linie være?
Hvad hvis vi fandt det?
Hvad gør vi?
>> PUBLIKUM: Hvis vi fandt det?
>> JASON HIRSCHHORN: Eller hvad bør være, at -
give mig pseudokode for linje, hvor vi fandt det.
>> PUBLIKUM: Hvis jeg lig rod jeg?
>> JASON HIRSCHHORN Og så hvad gør vi?
>> PUBLIKUM: Return sandt.
>> JASON HIRSCHHORN: Great.
Så hvis jeg er i -
Åh, de er begge kaldte jeg.
Det bliver forvirrende.
Men hvis jeg er jeg returnere sandt.
Det er nok den næste ting, vi skal gøre.
Giver mening.
>> OK, nu er vi ikke har gjort vores rekursive ringe endnu, men fordi en rekursiv
opkald ville kalde denne funktion igen.
Så hvad skal det næste linje pseudokode være?
Anna.
>> PUBLIKUM: Den venstre side.
>> JASON HIRSCHHORN: Vær specifik, selv om.
Dette er en binær søgning træ, så hvad betyder at kontrollere den venstre side indebærer?
>> PUBLIKUM: Så node -
Undskyld, rod.
Og derefter pil til venstre.
Node, node, undskyld.
Jeg er ikke at læse det ordentligt.
Det hedder node, right?
>> JASON HIRSCHHORN: Det vil blive kaldt rod i denne funktion, men enten måde.
Den venstre side - Ja?
>> PUBLIKUM: Hvis det ikke er lig i, så vi kommer til at kalde
funktionen igen?
>> JASON HIRSCHHORN: Det er rigtigt.
Hvis det ikke lige i, vi vil at kalde funktionen igen.
Men hvad side af træet skal vi at kalde funktionen igen?
>> PUBLIKUM: På venstre side.
>> JASON HIRSCHHORN: Vi er ikke altid vil kalde det venstre, hvis det
ikke er lig det.
>> PUBLIKUM: Åh, undskyld.
Ring til højre.
>> JASON HIRSCHHORN: Vi vil gerne vide specifikt, men - husk, i en
binær søgning træ, alt til venstre side er mindre.
Alt til højre side er større.
Så det er bare ikke - ja, gå videre.
>> PUBLIKUM: Hvis det er mindre end jeg, så -
hvis det er til venstre -
>> JASON HIRSCHHORN: Så hvis ri er mindre end -
så hvis vores tal er mindre end jeg, hvilken side ønsker vi at gå til?
>> PUBLIKUM: Vi ønsker at gå til den højre side.
>> JASON HIRSCHHORN: Vi ønsker at gå -
Lad mig tegne et hurtigt træ.
Hvis det er 5, vil dette være 3.
Så hvis ri er mindre end fem, hvad side ønsker vi at gå til?
>> PUBLIKUM: Undskyld, hvad?
>> JASON HIRSCHHORN: Vores nummer er mindre end det antal vi
ser på lige nu.
>> PUBLIKUM: Åh, så ønsker vi at gå til den venstre side.
Ja.
Undskyld.
>> JASON HIRSCHHORN: Præcis.
Ingen bekymringer.
I binær søgning træ, alt lavere er til venstre,
større er til højre.
Så hvis vores tal er mindre end I Vi tjekker -
fordi du ser i knude, det har en i -
så du ønsker at gå til venstre.
>> Og dette er en nem en.
Hvad er det den anden linje i pseudokode vi nødt til at skrive?
Carlos?
>> PUBLIKUM: Samme ting, du bare skifte det til en større end tegn
og gå til højre.
>> JASON HIRSCHHORN: Kan du sige det en gang mere?
>> PUBLIKUM: Hvis vores tal er større end jeg, gå til højre.
>> JASON HIRSCHHORN: Fremragende job på pseudokode.
Lad os gøre dette i det virkelige kode.
Og igen, dette pseudokode vil sandsynligvis få dig, fordi det er
korrekt, 50% på dette spørgsmål.
Men dette pseudokode også oversætter en til en i det væsentlige, i koden.
>> Så lad os gøre det i C. Hvem kan give mig den første linje kode?
Faktisk først, før jeg gør det, så lad mig trække over -
>> PUBLIKUM: Jeg har et spørgsmål.
Hvorfor har du at indrykke linje, jeg gav dig?
>> JASON HIRSCHHORN: Fordi Jeg kunne ikke skrive.
Det ved jeg ikke.
Du har ret.
Denne linje skal være derovre.
>> Okay, her vores funktion.
Og lad mig trække over, også, vores definition af en node.
Hvad sker der, hvis vi ikke gjorde skrive typedef?
Er der nogen vide?
>> PUBLIKUM: Det ville ikke kompilere.
>> JASON HIRSCHHORN: Det ville kompilere, ja.
>> PUBLIKUM: Ville det bare erklære en eksempel i stedet for at gøre det til en ny
type du kunne erklære flere forekomster af?
>> JASON HIRSCHHORN: Så det ikke ville vide - det ville ikke
bare erklære én type.
Du kan stadig gøre en masse noder.
>> PUBLIKUM: Men ville vi ikke er nødt til at skrive struct node hver gang?
>> JASON HIRSCHHORN: Det er rigtigt.
Du ville have til at skrive struct node hver gang, i stedet for bare node.
Men med typedef, kan du bare skrive node hver eneste gang.
OK, der ikke har givet - yeah, Avica.
>> PUBLIKUM: Hvis rod er lig med ligemænd null, return false.
>> JASON HIRSCHHORN: Great, og det er vores base case.
Næste linje kode.
Nogen der ikke har givet mig en linje kode endnu?
Ja.
>> PUBLIKUM: Root pil i er lig lig med dvs.
Vend derefter tilbage sandt.
>> JASON HIRSCHHORN: Great.
Næste linje?
Ja.
En anden?
Og så kan du gå næste.
>> PUBLIKUM: Else hvis rod pil Jeg er mindre end jeg vender tilbage
funktion kaldet finde rod -
>> JASON HIRSCHHORN: Undskyld.
>> PUBLIKUM: Return find rod peger mod venstre komma i.
>> JASON HIRSCHHORN: Så hvis ri er større end ting i træet, vi ønsker at
gå til venstre?
>> PUBLIKUM: Nej, jeg havde den tændt.
>> JASON HIRSCHHORN: Hvilken en?
>> PUBLIKUM: Nej, ja.
Jeg har en mindre end underskrive der.
>> JASON HIRSCHHORN: Right, hvis ri er mindre end hvad der er i roden -
vores nuværende rod - så vi ønsker at gå til venstre.
Og hvad er den sidste linje, du?
>> PUBLIKUM: Dybest set de samme ting, undtagen skifte større end eller
svarende til mindre end og venstre til højre.
>> JASON HIRSCHHORN: Excellent.
Er der nogen har nogen spørgsmål om dette?
Så nogle andre ting, der ville have været korrekt, er, at
kunne være-ltiff.
Gæt, teknisk, ingen af ​​disse virkelig også nødt til at være-ltiff.
>> Også, er der sandsynligvis kun ét tilfælde hernede.
Så det er nok din sidste sag.
Du behøver ikke engang at-ltiff.
Men sandsynligvis god til at skrive det, for at være klar.
Ja.
>> PUBLIKUM: Så du tror ikke, quiz - hvis vi laver fejl, for eksempel,
i syntaks -
små syntaksfejl -
hvordan der bliver taget i quizzen?
>> JASON HIRSCHHORN: Generelt på quiz, lille syntaksfejl eller lille
stil fejl ikke mister du point.
Så hvis du har glemt et semikolon her, ville det være OK.
Hvis du har glemt at lukke denne parentes, det ville være OK.
>> Kæmpe syntaksfejl, der ændrer funktionelle betydning af din kode
dramatisk, kan du få taget point for.
Eller generelt bare klassificering dig om, hvorvidt din
kode funktioner, selv -
ikke dens design, så meget, og ikke dens stil.
>> Lad os nu kode en iterativ version af fund.
Så det kommer til at være temmelig ens, men Der er helt sikkert kommer til at være
nogle vigtige forskelle.
Men vores pseudokode kan sandsynligvis gå -
vi kan stadig tage en linje af pseudokode og regne ud, hvad
linje er i dette tilfælde.
>> Så i en iterativ udgave, hvad tror du, Julia, bør
være den første linje?
>> PUBLIKUM: Igen i iterative boolean, du nødt til at oprette en for-løkke, right?
>> JASON HIRSCHHORN: OK.
>> PUBLIKUM: Så for ligesom, k, for x er lig med 0, x er mindre end jeg.
Eller nej, x er mindre end den størrelsen af ​​træet.
>> JASON HIRSCHHORN: Træet.
Så vi ikke rigtig kender størrelsen af træ, og vi ved ikke rigtig kender til
hvor mange gange vi kan gå, så hvad er en anden type løkke, der kan være
bedre i dette tilfælde?
>> PUBLIKUM: Hvis der andet?
>> JASON HIRSCHHORN: Hvis der ellers kan ikke være en løkke.
Så hvad er en form for løkke kan vi bare gå, indtil nogle tilfælde er opfyldt?
Hvad er den eneste anden form for løkke i C over en for-løkke?
>> PUBLIKUM: Mens.
>> JASON HIRSCHHORN: Mens nøjagtigt.
I en while-løkke, ikke brug for at vide hvordan -
en while-løkke, og for loop kan gøre det præcis de samme ting, men det gode
omkring en while-løkke er, at vi ikke har brug for at vide, hvor stor vores træ er.
Så vi kommer til at gå, indtil hvad?
>> PUBLIKUM: Indtil det er lig størrelsen af ​​-
>> JASON HIRSCHHORN: Tja, det er meget ligner vores rekursive sag.
Så -
>> PUBLIKUM: Mens rod Jeg er ikke lig jeg.
>> JASON HIRSCHHORN: Det er virkelig tæt.
Mens rod i -
lad os prøve det.
Jeg tror ikke, [uhørligt]
hvor rod jeg ikke lige jeg.
Vi måske nødt til at ændre det i en lille lidt, men det lyder som det er temmelig
godt, for nu.
Så vi vil gøre det.
>> Husk også, kan vi ikke påtage pr spørgsmålet.
Du behøver ikke antage, at den root vil være ikke-nul.
Så hvad tror du det meget første ting, vi bør gøre, er?
>> PUBLIKUM: Bare gør det samme ting som før.
Hvis roden er lig med ligemænd null, return false.
>> JASON HIRSCHHORN: Great.
Så det kunne være null.
Så vi ønsker at slippe af det højre væk.
Og så vil vi kontrollere, om rod jeg ikke lige jeg.
Så siger vi søger i dette træ for 3, rod jeg ikke lige i, nu
vi er i vores while-løkke.
Hvad ønsker vi at gøre?
Og igen, det kommer til at være temmelig ligner vores rekursive version.
Ja.
>> PUBLIKUM: Så du ønsker at gentage, eller holde går ned i træet, så længe
roden er ikke lig med nul.
>> JASON HIRSCHHORN: Så længe rod er ikke lig med null?
>> PUBLIKUM: Roden bindestreg i er ikke lig med nul.
Bare rod, ja.
Som længe roden er ikke lig med null.
>> JASON HIRSCHHORN: Så du vil at ændre dette i roden
ikke er lig nul?
>> PUBLIKUM: Ja.
>> PUBLIKUM: Vi kunne kombinere disse, right?
Vi har ikke brug for, hvis, i første omgang.
>> JASON HIRSCHHORN: OK, så hvis vi lad være -
hvis vi kombinerer dem, så vi kommer til at gøre mens roden ikke er lig nul, og
hvis roden sker for at være nul ved begyndelse, hvad gør vi her?
>> PUBLIKUM: Tilbage falsk.
>> JASON HIRSCHHORN: Great.
Så begge veje sandsynligvis ville have fungeret.
Dette er en anden måde, og det kombinerer det.
Men igen, hvis du gjorde enten måde, vi ikke kommer til at tage off design
peger på quizzen.
Men det ser godt ud.
>> Så mens rod er ikke lig null, hvad der er den første
ting, vi ønsker at kontrollere?
En anden?
Null, hvad er den første ting?
>> PUBLIKUM: Hvis ri er mindre end -
Åh, jeg gætte, hvis vi allerede fandt den i roden.
Så hvis rod pil i er lig med i -
>> JASON HIRSCHHORN: Undskyld?
>> PUBLIKUM: Hvis rod pil Jeg lig lig i -
>> JASON HIRSCHHORN: Hvad gør vi?
>> PUBLIKUM: Return sandt.
>> JASON HIRSCHHORN: Great.
Og hvad er det næste?
Jeff, hvad er det næste linje kode?
>> PUBLIKUM: Hvis jeg er mindre end root pil Jeg derefter rod lig rod pil til venstre.
>> JASON Hirschhorn: root ligemænd rod pil venstre.
Så det er nok den største Forskellen her i denne iterative
versionen i modsætning til de rekursive version.
Den rekursive version vi kalder funktionen igen.
Vi vil opdatere root, når vi kalder den nye funktion.
Her vil vi ikke kalde en ny funktion.
Vi er simpelthen bare opdatere rod i denne funktion.
Det er fremragende.
Og hvad er den sidste linje kode?
Ja, Mario?
>> PUBLIKUM: Else rod ligemænd rod pil til højre.
>> JASON HIRSCHHORN: Undskyld?
>> PUBLIKUM: Root ligemænd rod pil til højre.
>> JASON HIRSCHHORN: Kan du også skrive noget som dette?
>> PUBLIKUM: Jeg har ingen idé.
>> JASON HIRSCHHORN: Du kan ikke.
Du kan ikke gøre plus ligemænd.
OK, så det ser godt ud.
Hvorfor vi ikke bare gøre det at rense det op.
Det ser godt ud, og det ville fungere.
Og vi ville bryde ud.
>> Hvis roden til venstre var nul eller rod højre var nul, ville vi komme herop.
Root ville være lig med nul.
Vi vil bryde ud af vores løkke, og vi ville returnere falsk.
Så når vi bryde ud af den loop, vi vender tilbage falsk.
>> Og igen, en while-løkke var perfekt her, fordi vi ikke ved, hvordan
big vores træ er.
Vi forsøgte at skrive for-løkken, men vi indså du nødt til at regne ud, hvordan
stor den er i forvejen.
Ja.
>> PUBLIKUM: Hvis dette ikke var en binær søg i træet, vil det være reel matematik-y
at skrive det iterativt, right?
Ligesom, hvis det var et træ, men ikke nødvendigvis -
så det var ikke alle mindre til venstre, og alle større til højre.
Det ville være virkelig svært at gentage over det, ikke?
Vi er nødt til at spare, hvad der var tidligere på i træet og gå tilbage,
og den slags.
>> JASON HIRSCHHORN: Hvis det ikke var en binær søg træet, hvis det var bare en
træ og tingene var ikke sorteres på denne måde -
og vi indså tidligere, da Anna hjælper os, at gøre det
sorterede hjælper os en masse -
vi ville få brug for, ja, altid gemme hvor vi var tidligere.
Men der kunne være en masse hvor vi var previouslys.
Der kan være en masse for moder noder.
>> Sandsynligvis den bedste måde at gøre det ville være at holde skubbe tingene på nogle
type skorsten eller kø.
Du ville aldrig nødt til at kode dette fordi det er en hård problem.
Men du skubber nogle ting på en stak eller kø, og derefter pop dem ud, og
derefter evaluere dem.
>> Og så har nogle andre ting, hvor du faktisk sætte noder, og
derefter oprette det, og derefter søge gennem det.
Det kunne være den bedste måde at gøre det.
OK, nogen spørgsmål om dette problem?
>> PUBLIKUM: Dette er på et beslægtet note.
Vil vi nødt til at sammenligne køre tider for hash-tabeller, binær
søgetræer, et cetera?
>> JASON HIRSCHHORN: Sandsynligvis.
Så lad os gøre det rigtig hurtigt.
Kør tid til hash tabel -
hvad er de andre?
Binært træ?
>> PUBLIKUM: Link lister.
>> JASON HIRSCHHORN: OK, lad os gøre indsatsen.
Hvad er den store O i indsatsen på en hash tabel?
Hvad er forudsætningerne du laver?
>> PUBLIKUM: Du indsætter på begyndelsen af ​​linket liste.
>> JASON HIRSCHHORN: Sandsynligvis den første antagelse er der ingen kollisioner.
Hvis der ikke er kollisioner, og derefter indsættelse, er ét.
Hvis der er kollisioner, og du er gør separat kæde og indsættelse
ved begyndelsen af ​​link-listen, derefter indsættelse er også konstant.
>> Hvis du laver en hash tabel, men du har en anden metode til at håndtere
med kollisioner, hvad er en anden metode?
Hvad er der er en anden metode håndtere
kollision i en hash tabel?
>> PUBLIKUM: Lineær programmering.
>> JASON HIRSCHHORN: Lineær programmering.
Så vi kommer til at holde udkig for det næste åbne stedet.
Det er ikke konstant indsættelse tid.
Du kunne have til at gå igennem hele tabellen, således at
kunne være stor O n.
Ja.
>> PUBLIKUM: Ellers bare kæde?
>> JASON HIRSCHHORN: Vi gjorde separat kæde.
Det var den første.
Det er, hvad linket liste.
Det fancy navn er adskilt kæde.
Det kunne være en hvilken som helst type liste struktur vi tilfældigvis gøre i link listen.
>> Så igen indsættelse på et hash tabel kan være konstant tid.
Hvad om indsættelse på en fører kø?
>> PUBLIKUM: Er det ikke konstant?
>> JASON HIRSCHHORN: Det er konstant tid.
Du er bare at skubbe det på.
OK.
Indsættelse, hvad var de andre?
På en chance?
Hvad er big O for indsættelse på en prøve?
>> PUBLIKUM: længde er konstant.
Længde af de længste -
længden af ​​ordet du indsætter.
>> JASON HIRSCHHORN: Undskyld?
Vent, så hvad gjorde jeg hører?
Du sagde - hvad sagde du?
Hvad var dit svar, Marcus?
>> TILHØRERNE: Længden af ​​ordet du indsætter i figurer,
forudsat det er et tegn prøve.
>> JASON HIRSCHHORN: OK, så længden af ​​ordet.
Vi vil gøre en antagelse om, at det er en streng af tegn.
Du sagde noget andet, selv om.
Du sagde længde længste ord.
>> PUBLIKUM: Det er bare konstant, ikke?
>> JASON HIRSCHHORN: Hvorfor skulle det være konstant?
>> PUBLIKUM: Ligesom, hvis du bruger store O notation, så er det ikke varierer
af antallet af ting, er allerede i forsøg.
>> JASON HIRSCHHORN: Så vi ville siger, at det er konstant tid.
Det er konstant insertion og det er fordi denne idé -
sige, at vi har et ord, der er 45, eller et ord, der er 60, der
har et konstant antal.
Og det ville bare blive indsat i konstant tid.
>> I praksis dog ville det ikke være, naturligvis ske i et millisekund,
for eksempel.
Men vi vil sige store O er konstant for en prøve.
Og det er en af ​​dens største fordele.
>> Hvad om indsættelse i en link liste?
Bare en generisk, sorteret link liste?
Ja.
>> PUBLIKUM: Jeg havde et spørgsmål.
På testen, ville de nogensinde spurgt os indsættelse tid, der er fire trin,
eller noget?
Eller er det bare -
når du siger indsættelse tid er én, det betyder bare konstant tid?
>> JASON HIRSCHHORN: Ja, de ville altid spørge, er det store O n?
Big O af log n?
N kvadreret konstant.
Det er faktisk den eneste dem, du behøver at vide.
Hvad om indsættelse på sorteres link liste?
>> PUBLIKUM: Jeg havde et spørgsmål -
et spørgsmål -
>> JASON HIRSCHHORN: Hvad er svaret på dette spørgsmål, selv om?
>> PUBLIKUM: Vent, hvad gjorde du spørge?
>> JASON HIRSCHHORN: Hvad er big O i indsættelse i en ordnet link liste?
>> PUBLIKUM: One?
Nej vent, Nej vent, n.
>> JASON HIRSCHHORN N. Udover link-listen.
Og hvad var dit spørgsmål?
>> PUBLIKUM: Så ville du skriver o af k eller o af 1 for -
>> JASON HIRSCHHORN: Oh.
Jeg ville skrive o 1, sandsynligvis.
Der var en anden datastruktur der ville have været god.
Tree, binær søgning træ.
Hvad er indsættelse på en binær søgning træ?
>> PUBLIKUM: Log ind.
>> JASON HIRSCHHORN: Så, hvad er det værste tilfældet i en binær søgning træ?
Så hvis vi tilfældigvis starter ved 5, og hver tal er større end 5, så
vi har fået 5, 7, 9, 11, et cetera.
I dette tilfælde er det dybest set bare et link liste, og vi er nødt til at indsætte alle
vejen i slutningen.
Så det er stort O n.
>> Det kunne være vores værste fald på en binær søgning træ.
Naturligvis, ville du aldrig konstruere en binær søgning træ med 5 i
midten, vel vidende 5 ville være det laveste antal.
Men det kunne være, hvis du er starter fra bunden.
Eventuelle spørgsmål vedrørende denne, før jeg gå videre til et andet spørgsmål?
Det var et godt spørgsmål.
Jeg ville vide stort O i -
>> PUBLIKUM: Hvad med at søge for de fire?
>> JASON HIRSCHHORN: Definitely vi gjorde søgning og sortering.
Vi gjorde alle de algoritmer, til højre.
Vent, var det for quiz 1?
Var der dækkede -
har du allerede har, at spørgsmål om Quiz 1?
Den store O runtime af binær søgning, indsættelse sortere, boble slags?
>> PUBLIKUM: Ja.
>> JASON HIRSCHHORN: Hvis du havde at spørgsmål om Quiz 0, odds er du vil ikke
få nøjagtig de samme spørgsmål om Quiz 1..
Muligvis stadig godt at vide dem.
Du skal forhåbentlig vide gh allerede.
>> Men andre logaritmiske runtimes er sandsynligvis godt at vide.
Ting, der ikke var dækket på Quiz 0.
Ligesom alle disse operatører på disse abstrakte datatyper.
>> OK, lad os komme videre.
Dette bør man være temmelig hurtig.
Og dette er et nyt sprog, vi ikke har faktisk kodet i før.
Dette er et spørgsmål om, at kode i PHP.
Så overveje PHP array nedenfor.
Skriv PHP og / eller HTML-koder, så det udgange en tabel med to kolonner med TFs
navne og huse.
>> Du har aldrig gjort det før, dette særlige problem.
Men det bør være meget velkendt for hvad du gjorde i problemer indstille 7.
Så jeg ville være villig til at vædde på, du vil være bedt om at kode noget i PHP, der
er meget lig, hvad du gjorde i problem indstille 7.
>> For det første array er ikke så specifik.
Hvilken type af array er dette?
>> PUBLIKUM: Associative.
>> JASON HIRSCHHORN: Det er en associativ array.
Og hvad er forskellen mellem en associative array og et objekt?
>> PUBLIKUM: Et objekt-array har et indeks af hele tal, og en associativt array
er et indeks af en streng, eller noget lignende.
>> JASON HIRSCHHORN: Så en vifte af objekter ville have indekser for
heltal, men et objekt har felter.
Det har disse områder navne som navn, hus, student.
Har du en idé?
>> PUBLIKUM: Jamen, associativ array er i PHP ikke?
Og objekt er i JavaScript?
>> JASON HIRSCHHORN: Helt ærligt, er der ingen reel forskel mellem de to.
Begge har strenge som nøgler, og kan har dybest set noget som værdien.
Forskellige sprog kalde en ting associative array,
én ting et objekt.
Så helt ærligt, er der ingen reel forskel, men der er helt sikkert nogle
syntaktiske forskelle mellem de to.
Ja.
>> PUBLIKUM: Så er objekt også kodet under hætten som en hash tabel, så?
>> JASON HIRSCHHORN: Hvad gør du mener, kodet under kølerhjelmen?
>> PUBLIKUM: Vi fik at vide, at associativ matrix var teknisk set en
hash tabellen.
Så er objekt også teknisk en hash tabel?
>> JASON HIRSCHHORN: Jeg har ikke tænkt at besvare dette spørgsmål.
Jeg vender tilbage til dig på det.
Men jeg vil ikke tænke på hverken af dem som.
Men, på nogen måde, associative array og objekt, generelt bruge mennesker, dem
udtryk i flæng.
I dette tilfælde, den kølige del er kan du bruge tasterne.
Strenge som nøgler, snarere end blot simpel numre.
>> Så jeg har talt om dette for en stund.
Forhåbentlig nogle mennesker har fået gang om dette.
Vi kommer til at skrive nogle PHP og HTML kode, sådan at vi får en to-kolonne
bord med TFS navne og huse.
>> OK, jeg også gerne vil have en header række på denne tabel.
Så jeg har tænkt mig at gå lige i dette.
Vi kommer til at arkivere, nye, og vi vil -
>> OK.
Hvordan starter jeg en tabel?
Hvad er tag, Michael, at starte en tabel?
>> PUBLIKUM: Table.
>> JASON HIRSCHHORN: Table.
Og hvis jeg åbner en tag, hvad ellers har jeg brug for?
>> PUBLIKUM: Et hoved?
Eller, jeg gætte, klasse.
>> JASON HIRSCHHORN: Så, undskyld.
Antag, at vi allerede har skrevet doctab, HTML, alt det der.
Men hvis jeg åbner denne tabel tag, hvad ellers skal jeg skrive?
for validere HTML?
>> PUBLIKUM: Luk den.
>> JASON HIRSCHHORN: Luk tag.
Hvordan skriver jeg et close-tabel-tag?
>> PUBLIKUM: Dot slash tabel.
>> JASON HIRSCHHORN: Slash bord, stor.
Sandsynligvis giver mening at skrive både dem sammen, fordi
du har fået til at gøre det.
OK, hvis jeg vil have en kolonneoverskrift, hvordan gør Jeg skriver en kolonneoverskrift med titler?
>> PUBLIKUM: Er det mindre end 10 t close -
TR, ja.
>> JASON HIRSCHHORN: TR?
>> PUBLIKUM: Så samme ting, skråstreg, ja.
>> JASON HIRSCHHORN: OK, og giv mig to kolonner.
>> PUBLIKUM: T D?
>> JASON HIRSCHHORN: OK.
Jeg vil have to kolonner.
Betyder det give mig to kolonner?
Hvor mange søjler er det?
One.
Så lad os kopiere og indsætte dette.
>> Så faktisk, på den quiz, al denne kode at vi har skrevet hidtil var
faktisk givet til dig.
Men du bør nok stadig vide, hvordan man skriver det.
Ja.
>> PUBLIKUM: Dit hus er mellem de to.
>> JASON HIRSCHHORN: Boom.
Det skal gå lige der, right?
God opkald.
Så igen, alt denne kode er faktisk givet til dig på selve quiz.
Men det er sjovt at skrive det, og du skal vide, hvordan man skriver det.
Så dette er, hvor du har brug for at starte din kode.
Hvad har vi brug for at skrive lige her?
>> Undskyld, jeg har brug for at ændre navnet på denne fil.
Så vi gemte det i en. HTML-fil, ikke i en. PHP-fil.
Disse ting ville betyde noget i en. PHP-fil.
Så vi er i en. HTML-fil.
Hvad er den første ting Jeg har brug for at skrive?
Jeg ønsker at sætte nogle PHP kode i en HTML.
>> PUBLIKUM: PHP, som en anden gulerod og spørgsmålstegn PHP, right?
>> JASON HIRSCHHORN: Great.
Og hvordan kan jeg afslutte det?
>> PUBLIKUM: Med et spørgsmålstegn.
>> JASON HIRSCHHORN: Det er godt.
Det er den første ting, jeg har brug for, hvis jeg vil at sætte nogle PHP-kode i her.
>> PUBLIKUM:. Jeg troede et PHP filen kunne tage HTML.
>> JASON HIRSCHHORN: Ja.
A. PHP-fil kan tage lidt HTML og vises.
Det var min fejl.
Jeg prøvede bare at efterligne hvad det var på quizzen.
>> OK, undskyld at forvirre dig.
Ja, practice.HTML.
Nu vil vi sætte nogle PHP-kode i.
Hvad er den første linje i PHP kode jeg skal skrive?
Jeg har tænkt mig at gå igennem dette array og gøre det til en tabel.
Ja.
>> PUBLIKUM: Du kan enten bruge en for H loop eller en for-løkke.
>> JASON HIRSCHHORN: OK, hvad vil du bruge?
>> PUBLIKUM: Jeg ville bruge en for-løkke.
For, og så gør dollartegn Jeg er lig med 0 semikolon dollar
underskrive jeg mindre end 2.
Og så semikolon i dollar underskrive i plus plus.
>> JASON HIRSCHHORN: Hvordan du ved at bruge en 2?
>> PUBLIKUM: Fordi der var to associative arrays i større
associative array.
>> JASON HIRSCHHORN: Så det store tings ikke en associeret array.
Den store ting er bare en normal array.
Men du har ret, der er to associative arrays
inde i vores større array.
Det er derfor, du bruger to.
Jeg føler sig ubehageligt at antage, at de er 2, så hvad er en måde at skrive
dette uden at antage, at de er 2?
>> PUBLIKUM: [uhørligt]?
>> JASON HIRSCHHORN: OK, hvordan skriver du det?
>> PUBLIKUM: foreach dollartegn TFS eller lignende dollartegn tf.
>> JASON HIRSCHHORN: OK, så for hver TFS som TFS, jeg vil, nu
igen, har mit bord.
Så der kan give mig den næste linje kode?
>> PUBLIKUM: Udskriv, og derefter i citater, beslag tr ende
beslag, ende citat.
End parenteser, semikolon.
>> JASON HIRSCHHORN: OK, og hvad der kommer til at gøre?
>> PUBLIKUM: Det kommer til at sige, ny række.
Det kommer til at sætte tag til en ny række.
>> JASON HIRSCHHORN: Right, dette PHP, ligesom vi talte om tidligere - dette
PHP vil blive evalueret, og derefter det kommer til at udskrive til denne fil en
tabel slæb, og derefter at HTML vil blive evalueret.
Vi er bare kopiere dette HTML vi havde her.
Ja.
>> PUBLIKUM: [uhørligt]?
>> JASON HIRSCHHORN: Undskyld?
Det er lige her.
Efterår 2012.
Må ikke se på svarene, lad os løse det sammen.
Så vi udskriver tabelrække.
Så er du sandsynligvis i swing ting.
Hvad er den næste linje kode, vi er nødt til at skrive?
Assam, giv mig den næste linje kode.
>> PUBLIKUM: Du skal bruge tf navn.
Tf åben parentes anførselstegn nævne lukkede parentes.
>> JASON HIRSCHHORN: Giv mig deres navn.
>> PUBLIKUM: Du skal udskrive det.
>> [indskyde STEMMER]
>> JASON HIRSCHHORN: OK, Hvordan udskriver jeg det?
>> [indskyde STEMMER]
>> JASON HIRSCHHORN: jeg mangler noget nu.
Hvad jeg mangler?
>> PUBLIKUM: Du har brug for et dollartegn.
>> JASON HIRSCHHORN: Hvad ellers er jeg mangler?
Alt vi har udskrevet indtil nu er tr.
>> PUBLIKUM: Luk st efter det.
>> JASON HIRSCHHORN: Så vi har brug at lukke tr efter.
Hvem ser, hvad vi mangler på linie 16?
Ja, Anna.
>> PUBLIKUM: Du skal åbne et TD og krøllede parenteser.
>> JASON HIRSCHHORN: Og hvor vi sætter krøllede parenteser?
>> PUBLIKUM: Omkring tf navn.
>> JASON HIRSCHHORN: Kan du lide dette?
>> PUBLIKUM: Ja.
Og derefter lukke td.
>> JASON HIRSCHHORN: Ligesom det?
>> PUBLIKUM: Har du brug for dobbelt citat mærker ved siden af ​​den krøllede parenteser?
>> JASON HIRSCHHORN: Lige her?
Nej, du gør ikke.
Så det er helt rigtigt.
Ja.
>> PUBLIKUM: Så forskellen mellem denne og encatenating med prikker er, hvis
du bruger prikker, ville du nødt til at have den dobbelte anførselstegn, så en prik,
derefter dot -
>> JASON HIRSCHHORN: Korrekt.
Så du siger at der er en ultimativ måde at skrive dette som.
Hvad sammenkædningsoperatoren i JavaScript?
>> PUBLIKUM: Et plustegn.
Du glemte at sætte klammeparentes tilbage.
>> JASON HIRSCHHORN: Great.
Og der er endnu en linje kode mangler.
Hvem kan give mig den sidste linje kode vi mangler?
>> PUBLIKUM: Lige præcis de samme ting, bare med hus i stedet for navn.
Store
>> JASON HIRSCHHORN: Great.
Og din syntaks er helt rigtige for få tingene i en associeret array.
Så i selve quizzen, er du faktisk givet op indtil her.
Så denne kode blev givet til dig.
Alt hvad du skulle skrive var disse fire linjer og husk at
lukke tabellen tag.
Gutter faktisk gjorde alt dette og meget mere.
Ja.
>> PUBLIKUM: Så det ville være funktionelt det samme, hvis du lige har haft, at alle i
én stor print opkald, right?
Og så bare konkateneres den, et cetera?
>> JASON HIRSCHHORN: Ligesom det?
>> PUBLIKUM: Ja.
Det ville bare ikke se godt ud, hvis du var at kigge på det, når du inspicere
elementet på din hjemmeside, right?
>> JASON HIRSCHHORN: Jeg er enig.
Hvis jeg indlæst denne webside, ville jeg være stand til at se denne PHP-kode, nogensinde?
>> PUBLIKUM: Nej.
>> JASON HIRSCHHORN: Nej.
Og faktisk, ville jeg ikke.
>> PUBLIKUM: Dette er ikke HTML, right?
Så du måske være i stand til -
>> JASON HIRSCHHORN: Så denne PHP ville evalueres server side.
PHP er altid evalueret server side, så du aldrig kunne se PHP kode.
>> PUBLIKUM: Men du ville være i stand til se resultatet af udskrifter.
>> JASON HIRSCHHORN: Right.
Og det ærligt måske ikke sætte det hele på linjen.
Det kan formatere det pænt for dig, eller det kan sætte det på én linje.
Uklar.
Men ja, god pointe.
>> PUBLIKUM: Hvordan kommer der er ingen tekst fremhævning for
nogen af ​​PHP-kommandoer?
Fordi jeg kan huske at se det.
>> JASON HIRSCHHORN: Fordi det er en . HTML fil op her på toppen.
Værsgo.
>> PUBLIKUM: Hvis vi gjorde det indledende metode med efter sløjfer, til højre, hvis vi
ønskede at få adgang til en TFS, ville vi gøre TFS beslag 0 beslag, så
[Uhørligt]?
>> JASON HIRSCHHORN: Du ville -
så du siger til for-løkken, du ville gøre i dollartegn TFS beslag 1
eller jeg, til højre.
Eller dollartegn jeg lukker beslag og derefter firkantet beslag
anførselstegn, ja.
>> OK, fremragende.
Vi har endnu en hurtig en.
Syv minutter, så jeg vil at gå over denne ene.
Dette er et andet eksempel.
Vi er nu en helt andet sprog.
>> Vi har nogle HTML-kode.
Det er lidt lille på skærmen, men Jeg vil have dig til at se igennem det virkelig
hurtigt, og kan nogen fortælle mig, hvis jeg skulle indlæse denne webside,
hvad jeg ville se?
Beskriv alt om denne webside.
Noah?
Hvad ville jeg ser?
>> TILHØRERNE: Kode ved den forreste ende af Google med en fornemmelse for tekst og et
send-knappen.
>> JASON HIRSCHHORN: Og hvad vil knappen sige?
>> PUBLIKUM: Indsend.
Åh, søgning.
Undskyld.
>> JASON HIRSCHHORN: Det ville sige søgning.
Husk, navn.
Hvad bruger vi navn til?
Dette navn attribut, hvad er det bruges til?
>> [indskyde STEMMER]
>> PUBLIKUM: Det er dens navn for når der klikkes på?
>> JASON HIRSCHHORN: Det kunne være.
Men hvad gør vi generelt ser - hvorfor giver vi dette navn kø?
Hvorfor skal vi det?
Ja.
>> PUBLIKUM: Mener ikke at blive indeks af den super global variabel?
>> JASON HIRSCHHORN: Ja, generelt, når denne form vil indsende, og så hvor
ville underkaste sig?
Hvilken side?
Noa, hvilken side vil det underkaste sig?
>> PUBLIKUM: Jeg er ikke sikker.
>> JASON HIRSCHHORN: Hvor kunne vi kan finde det?
Hvor vil du finde, hvad side gjort gældende til?
Hvilken linje kode?
>> PUBLIKUM: Formular handling.
>> JASON HIRSCHHORN: Præcis.
Aktion.
Så det har gjort til søgesiden.
Omvendt skråstreg søgning.
Så det er helt rigtigt.
Hvilken metode?
>> PUBLIKUM: Hent.
>> JASON HIRSCHHORN: Get.
Præcis.
Så vi læser dette.
Dette vil være en form.
Du er helt rigtigt.
To ting på formularen, titel side og toppen ville være Google.
>> Så her er to spørgsmål, du bør kunne besvare om denne side.
Hvis dette HTML bor på denne hjemmeside og indlæser brugeren bug i denne tekst
område lige her, hvad URL vil brugeren finde sig selv på
indsendelse af formularen?
>> Så vi har det lige her.
Jeg har tænkt mig at gå tilbage til denne side, selv om.
Jeg vil skrive op denne første del.
Kan alle se herovre?
OK, Mario, du tror, ​​du kender?
Hvilken side?
>> PUBLIKUM: Backslash søgning.
>> JASON HIRSCHHORN: Jeg har tænkt mig at flytte herned.
OK, backslash search spørgsmål mark q lig bug.
Nogen, der har en anderledes forslag?
Ja.
>> Så hvordan får vi det?
Tja, vi har set det før.
Og du kom op med dette tidligere.
Du havde ret, Noah, at de handling fortæller os, hvad
side vi vil.
>> Vi ved også, hvad metode.
Vi laver get.
Og forskellen mellem GET og POST er at få skærme i URL'en
og post ikke.
Så hvis jeg skrev indlæg lige der i metode, hvad ville være anderledes?
>> PUBLIKUM: Det ville bare være skråstreg søgning.
>> JASON HIRSCHHORN: Det ville bare være skråstreg søgning.
Intet over her ville ske.
Men fordi det er et får, URL vises på følgende måde.
Først ser vi et spørgsmålstegn og vi ser navnet og værdien.
Sige, at der var en anden tekst felt og Jeg gav det et navn på r og jeg indtaste en
værdi, larve.
Hvad ville det nu se ud?
Jeg har endnu et tekstfelt, jeg giver en navn af r og en værdi på larve.
>> PUBLIKUM: Efter bar du ville have -tegnet larve.
>> JASON HIRSCHHORN: Det er ikke-tegn.
>> PUBLIKUM: Eller bare hvad den og symbol.
>> JASON HIRSCHHORN: Ja, nej.
Du havde ret, jeg var forkert.
Det er ligesom et g..
>> PUBLIKUM: Caterpillar.
r lig larve, undskyld.
>> JASON HIRSCHHORN: Er der R derinde?
>> PUBLIKUM: Nej, der er.
>> JASON HIRSCHHORN: Vi taler om, at efter klasse.
Det er helt rigtigt.
Så og er korrekt.
Og så kunne du have mange af disse, og de ville alle sammenkædes
sammen med det, og.
Så det er helt rigtigt.
>> Der er endnu et spørgsmål.
Skitse denne HTML s DOM, startende med dokumentet.
Vi kunne gøre det i to minutter.
Vi vil gøre det herovre.
Jeg vil gå tilbage til denne webside.
OK, vi starter med dokumentet.
>> Hvad er det næste?
Så når du læser igennem -
>> PUBLIKUM: HTML.
>> JASON HIRSCHHORN: HTML er næste.
Vi kommer til at gå tag efter tag.
Hvad er efter HTML?
>> PUBLIKUM: Head.
>> JASON HIRSCHHORN: Head.
Hvad er efter hoved?
>> PUBLIKUM: Titel.
>> JASON HIRSCHHORN: Titel.
Og titel har en værdi af Google, men jeg har ikke tænkt mig at
skriver, at i for nu.
OK, hvor er krop hen?
>> PUBLIKUM: Også kommer ud af HTML.
>> JASON HIRSCHHORN: Præcis.
Krop kommer ud herfra.
Er alle se, hvorfor det er tilfældet?
Du skal sandsynligvis være i stand til at regne dette, også, selvom jeg ikke har
denne nice indrykning.
>> Indrykningen slags giver det væk, men du kan se, at hovedet tag har
blevet lukket, hvilket betyder, at vi sandsynligvis kan ikke gå ned her.
Vi er nødt til at gå tilbage til, hvad var lige før hovedet
tag eller under det.
Vi er selv med hovedet tag.
>> Og under krop går formular.
Ifølge skemaet, der er to indgange.
OK.
Det er alt, jeg har.
Quiz 1 er i morgen.
Jeg er så begejstret for jer.
Det kommer til at være en blast.
>> Hvis du har -
>> PUBLIKUM: [applaus]
>> JASON HIRSCHHORN: Åh stop, stop.
Men nej, jeg laver sjov.
Hvis du har spørgsmål, højre efter afsnit, vil jeg være udenfor.
Hvis du har spørgsmål i aften, velkommen til at ringe, e-Gchat,
brevdue mig.
Held og lykke i morgen.
Har en vidunderlig Thanksgiving break, hvis jeg ikke kan se dig inden da.
Og jeg vil se dig efter Thanksgiving tirsdag for vores endelige
sektion fest nogensinde.
>> PUBLIKUM: [uhørligt].
>> JASON HIRSCHHORN: Great.
OK, jeg vil se jer næste uge eller to uger.
Og held og lykke i morgen.