1 00:00:00,000 --> 00:00:08,090 2 00:00:08,090 --> 00:00:09,810 >> JASON Hirschhorn: Velkommen, alle, til uke 10. 3 00:00:09,810 --> 00:00:15,130 Dette er en spennende uke fordi i morgen er Quiz 1, som vi vil få 4 00:00:15,130 --> 00:00:16,400 til i et sekund. 5 00:00:16,400 --> 00:00:21,770 I dag i avsnitt, skal vi gå enn noen ressurser for quiz, og 6 00:00:21,770 --> 00:00:24,890 Da vil jeg svare på alle spørsmål dere har. 7 00:00:24,890 --> 00:00:27,880 Og vi vil til slutt ende med noen praksis problemer. 8 00:00:27,880 --> 00:00:30,940 >> Vi kan tilbringe hele avsnittet besvare spørsmål. 9 00:00:30,940 --> 00:00:33,240 Vi kan tilbringe hele avsnittet gå over praksis problemer. 10 00:00:33,240 --> 00:00:36,890 Vi vil bare utvide til å fylle plass og tid vi har. 11 00:00:36,890 --> 00:00:40,590 >> Så jeg satte denne listen opp hver uke, men det er spesielt viktig denne uken. 12 00:00:40,590 --> 00:00:44,980 For å studere, hvis du ikke har startet allerede, oh boy. 13 00:00:44,980 --> 00:00:46,400 Men forhåpentligvis du har begynt allerede. 14 00:00:46,400 --> 00:00:50,710 Og du går gjennom materialet og ressurser oppført her. 15 00:00:50,710 --> 00:00:54,300 Jeg vil sterkt anbefale En del av disse. 16 00:00:54,300 --> 00:00:58,780 >> Spesielt forelesningsnotater er utrolig viktig og nyttig. 17 00:00:58,780 --> 00:01:02,880 Den study.cs50.net gir en stor primer på en rekke 18 00:01:02,880 --> 00:01:04,250 emnene vi dekket. 19 00:01:04,250 --> 00:01:07,810 Den har også noen store øve problemer. 20 00:01:07,810 --> 00:01:11,260 Og så, er Google stor, også. 21 00:01:11,260 --> 00:01:12,360 Jeg vet ikke hva du vil bruke det til. 22 00:01:12,360 --> 00:01:14,090 Men bruker Google, så vel. 23 00:01:14,090 --> 00:01:16,680 >> Nå ut til meg hvis du har noen spørsmål, kommentarer eller bekymringer. 24 00:01:16,680 --> 00:01:19,420 Se over gjennomgangen sesjon lysbilder fra i går kveld. 25 00:01:19,420 --> 00:01:21,540 Eller, hvis du har litt tid, se videoen. 26 00:01:21,540 --> 00:01:24,930 De gir mye nyttig materiale og informasjon. 27 00:01:24,930 --> 00:01:29,730 Og forsøke å dekke om ikke alle, er mange av de temaene vi har dekket, og at du 28 00:01:29,730 --> 00:01:32,610 kan se på quiz. 29 00:01:32,610 --> 00:01:35,590 >> Snakker av quiz, som vil være i morgen. 30 00:01:35,590 --> 00:01:37,260 Det er 75 minutter lang. 31 00:01:37,260 --> 00:01:40,740 Mange av dere tar det på en o'clock, og noen av dere er 32 00:01:40,740 --> 00:01:42,740 tar det på 5:30. 33 00:01:42,740 --> 00:01:45,300 For tiden tar du det og plassering du tar den, sørg 34 00:01:45,300 --> 00:01:49,400 du sjekke ut dokumentet på CS50.net hjemmeside. 35 00:01:49,400 --> 00:01:54,340 >> Husk at du kan få en 8 1/2 med 11 ark til å ta med deg. 36 00:01:54,340 --> 00:01:57,310 Ofte folk ikke bruker denne ark i det hele tatt i løpet av quiz. 37 00:01:57,310 --> 00:01:59,740 Men egentlig er det en utrolig nyttig studie verktøy. 38 00:01:59,740 --> 00:02:04,370 Så sette sammen at arket er hva Jeg tilbrakte sannsynligvis tre eller fire timer 39 00:02:04,370 --> 00:02:07,110 gjør når jeg studerte for CS50, og som var lett mest nyttig 40 00:02:07,110 --> 00:02:08,740 måten jeg kunne studere for quiz. 41 00:02:08,740 --> 00:02:10,949 Så selv om du har noen andre menneskers studie guider for å se på og 42 00:02:10,949 --> 00:02:14,740 bruke som referanser, jeg anbefaler å lage din egen studieguide, putting 43 00:02:14,740 --> 00:02:15,490 at ting sammen. 44 00:02:15,490 --> 00:02:17,335 Som virkelig hjelper deg å lære alle av materialet. 45 00:02:17,335 --> 00:02:20,270 46 00:02:20,270 --> 00:02:24,810 >> Sist men ikke minst i denne delen, etter quizen i morgen er det en 47 00:02:24,810 --> 00:02:25,940 mer foredrag - 48 00:02:25,940 --> 00:02:26,960 neste mandag. 49 00:02:26,960 --> 00:02:30,430 Det er enda en del, ikke neste Tirsdag før Thanksgiving, men 50 00:02:30,430 --> 00:02:31,630 Tirsdag etter det. 51 00:02:31,630 --> 00:02:36,600 Vi kommer til å møte sammen for et endelig farvel fest og også gjøre noen kule 52 00:02:36,600 --> 00:02:41,530 ting å få dere begeistret for videre studier i informatikk. 53 00:02:41,530 --> 00:02:45,040 >> Det er enda en prosjekt, ett mer rettferdig, ett mer hackathon. 54 00:02:45,040 --> 00:02:47,900 Vi nærmer oss slutten av CS50, som er spennende - 55 00:02:47,900 --> 00:02:50,950 men også, hvis du er som meg, litt trist. 56 00:02:50,950 --> 00:02:53,950 Før jeg går videre, er det noen som har noen spørsmål om hva 57 00:02:53,950 --> 00:02:55,200 vi har dekket så langt? 58 00:02:55,200 --> 00:03:02,760 59 00:03:02,760 --> 00:03:08,730 >> OK, vel la oss gå over noen spørsmål at du har for quiz og emner 60 00:03:08,730 --> 00:03:09,960 vi kan dekke. 61 00:03:09,960 --> 00:03:11,540 Så dette er en liste som jeg satt sammen. 62 00:03:11,540 --> 00:03:15,500 Det er på ingen måte uttømmende, men forhåpentligvis vil jogge hukommelsen hvis du 63 00:03:15,500 --> 00:03:20,310 har noen spørsmål om noen av disse emner, eller hvis du har spørsmål om 64 00:03:20,310 --> 00:03:23,260 praksis problemer fra spørrekonkurranser i år tidligere. 65 00:03:23,260 --> 00:03:27,470 >> Jeg hadde et par spørsmål som var sendt til meg, men jeg ønsker å holde ut 66 00:03:27,470 --> 00:03:29,490 på de i ett sekund. 67 00:03:29,490 --> 00:03:34,570 Er det noen som har noen spørsmål, problemer de ikke forstår, 68 00:03:34,570 --> 00:03:38,100 Svarene de ikke forstår å få oss i gang? 69 00:03:38,100 --> 00:03:39,520 Avi. 70 00:03:39,520 --> 00:03:41,585 >> PUBLIKUM: Kan du bare gå over DOM og Ajax virkelig rask? 71 00:03:41,585 --> 00:03:46,540 Som, hva vi trenger å vite eller burde forstå om dem? 72 00:03:46,540 --> 00:03:49,750 >> JASON Hirschhorn: Jeg kommer til å svare generelt dette spørsmålet, hva gjør jeg 73 00:03:49,750 --> 00:03:52,100 trenger å vite om gitt tema x? 74 00:03:52,100 --> 00:03:55,280 Fordi jeg har en følelse mange av dere kommer til å spørre meg det, eller er 75 00:03:55,280 --> 00:03:56,570 nysgjerrig på det. 76 00:03:56,570 --> 00:04:02,920 Så i den grad at emnet var dekket i forelesning, eller avsnitt, eller på 77 00:04:02,920 --> 00:04:06,460 study.cs50.net, et problem satt, du bør være kjent med det. 78 00:04:06,460 --> 00:04:10,580 >> Slik at du ikke trenger å vite alle typer av kode som er tilgjengelig i HTML eller 79 00:04:10,580 --> 00:04:15,950 hver type attributt eller eiendom du kan gi noe i CSS. 80 00:04:15,950 --> 00:04:20,204 Men hvis du så den i et foredrag eksempel, hvis du så det i et problem 81 00:04:20,204 --> 00:04:23,290 sett, bør du nok være kjent med det, spesielt ting du så 82 00:04:23,290 --> 00:04:24,260 i forelesning. 83 00:04:24,260 --> 00:04:28,510 Så vi diskuterte dokumentet objektmodell litt i 84 00:04:28,510 --> 00:04:30,530 seksjon, mer så i forelesningen. 85 00:04:30,530 --> 00:04:32,990 Du bør være kjent med at mye av det. 86 00:04:32,990 --> 00:04:34,750 >> Og du bør være kjent med Ajax i samme grad. 87 00:04:34,750 --> 00:04:38,105 Vi har aldri sett utrolig avansert eller kompliserte eksempler på Ajax, så 88 00:04:38,105 --> 00:04:40,920 du kommer ikke til å bli bedt om å gjøre noe utrolig komplisert. 89 00:04:40,920 --> 00:04:45,180 Men du kan bli bedt om, hvordan gjør jeg foreta en Ajax anrop ved hjelp av jQuery? 90 00:04:45,180 --> 00:04:47,350 Som er noe du har sett en rekke ganger før, både i 91 00:04:47,350 --> 00:04:51,370 gjennom økten og i foredrag, og det er bare to-ish linjer med kode. 92 00:04:51,370 --> 00:04:53,190 >> Så det er noe du bør være kjent med. 93 00:04:53,190 --> 00:04:55,550 Men igjen, for alle disse temaene, hvis du har sett det 94 00:04:55,550 --> 00:04:59,220 før, er det fritt vilt. 95 00:04:59,220 --> 00:05:01,540 Og vi kan spørre deg - selvsagt, vi er kommer til å spørre deg ting du 96 00:05:01,540 --> 00:05:02,340 har ikke sett før. 97 00:05:02,340 --> 00:05:04,240 Coding noe du ikke har sett før. 98 00:05:04,240 --> 00:05:06,570 Som ikke er å si at du har ikke sett verktøy for å løse 99 00:05:06,570 --> 00:05:08,120 det problemet før. 100 00:05:08,120 --> 00:05:09,200 Du har sett disse verktøyene. 101 00:05:09,200 --> 00:05:11,160 >> For eksempel, i test 1, hvis du trenger å kode strlen. 102 00:05:11,160 --> 00:05:12,790 Vi har ikke kodet strlen før. 103 00:05:12,790 --> 00:05:14,980 Men du vet hvordan du bruker en for loop, du vet hvordan du skal bruke hvis forholdene. 104 00:05:14,980 --> 00:05:18,570 Du vet hvordan du skal skrive variabler i C. Det kommer til å være det samme her. 105 00:05:18,570 --> 00:05:22,350 Du kommer ikke til å bli bedt om å gjøre noe du ikke har sett før, men 106 00:05:22,350 --> 00:05:25,150 du kan bli bedt om å liksom sette noe sammen på en ny måte, eller 107 00:05:25,150 --> 00:05:27,650 løse en annen type problem. 108 00:05:27,650 --> 00:05:30,830 >> Beklager, det var ikke spesielt for din spørsmål, men jeg kan ikke svare på om 109 00:05:30,830 --> 00:05:34,390 hvert enkelt emne hva du gjør eller ikke trenger å vite. 110 00:05:34,390 --> 00:05:36,830 Men også, sorry, siste på det. 111 00:05:36,830 --> 00:05:42,900 Vi har brukt betydelig mer tid på link lister enn vi har på Ajax. 112 00:05:42,900 --> 00:05:46,160 Du brukte ikke Ajax i et problem sett. 113 00:05:46,160 --> 00:05:48,510 Et av de sentrale trekk at oppgavesettet som var link lister. 114 00:05:48,510 --> 00:05:50,370 Og vi brukte mye tid på forelesning og § bruke det. 115 00:05:50,370 --> 00:05:57,080 >> Så oddsen er koblingen listen vil komme opp mer ofte på quiz enn Ajax vilje. 116 00:05:57,080 --> 00:06:00,390 Eller de spørsmålene som har å gjøre med link Listen vil være verdt flere poeng. 117 00:06:00,390 --> 00:06:03,520 Så du kan sikkert fokusering og smal inn på ting som er mer 118 00:06:03,520 --> 00:06:06,720 sannsynlighet for å komme opp fordi vi har brukte mer tid på dem. 119 00:06:06,720 --> 00:06:08,700 >> OK noen andre spørsmål? 120 00:06:08,700 --> 00:06:09,890 Yeah. 121 00:06:09,890 --> 00:06:13,660 >> PUBLIKUM: Kan vi gå over bruken av anonyme funksjoner i Javascript? 122 00:06:13,660 --> 00:06:17,140 Jeg er en er litt forvirret om det. 123 00:06:17,140 --> 00:06:20,180 >> JASON Hirschhorn: Så i Javascript - 124 00:06:20,180 --> 00:06:24,400 Jeg prøver å tenke hvordan jeg kunne skrive dette på - 125 00:06:24,400 --> 00:06:27,590 så la oss faktisk åpne opp denne koden. 126 00:06:27,590 --> 00:06:31,830 127 00:06:31,830 --> 00:06:36,030 Så dette er kode som vi gjorde i forrige uke. 128 00:06:36,030 --> 00:06:41,400 Og du har sett denne før hvis du var her i seksjon forrige uke. 129 00:06:41,400 --> 00:06:43,180 Eller du har sett noe ligner på dette før. 130 00:06:43,180 --> 00:06:44,800 >> Men du kan se på denne første linjen. 131 00:06:44,800 --> 00:06:46,950 Dette er hvordan du starter - 132 00:06:46,950 --> 00:06:48,010 alle har sett dette før. 133 00:06:48,010 --> 00:06:51,930 Hvis du ønsker å sette noen Javascript-kode, du setter den inne i denne, forutsatt 134 00:06:51,930 --> 00:06:53,520 du bruker jQuery. 135 00:06:53,520 --> 00:06:56,940 Dette sier, ikke gjør noe til dokumentets lastet. 136 00:06:56,940 --> 00:06:59,940 >> Og så, Curt, ser du her vi gjør noe sånt som dette - 137 00:06:59,940 --> 00:07:02,560 funksjons åpne paren, lukket paren. 138 00:07:02,560 --> 00:07:05,250 Så vi er ikke å gi dette fungere et navn. 139 00:07:05,250 --> 00:07:09,160 Vi kommer ikke til å definere denne funksjonen er ment for å kjøre og deretter 140 00:07:09,160 --> 00:07:10,830 kaller det en haug med ganger. 141 00:07:10,830 --> 00:07:15,140 Vi bare sier dette dokumentet allerede foregår en funksjon. 142 00:07:15,140 --> 00:07:16,690 Et par ting å gjøre. 143 00:07:16,690 --> 00:07:20,670 >> Og vi ønsker ikke å bruke tid gi den et navn eller lagre det for 144 00:07:20,670 --> 00:07:21,650 evigvarende. 145 00:07:21,650 --> 00:07:24,150 Vi ønsker bare å kjøre noen ting. 146 00:07:24,150 --> 00:07:27,500 Så en anonym funksjon sorter av tjener dette formålet. 147 00:07:27,500 --> 00:07:30,280 Når du ikke kommer til å bruke noe om og om igjen, slik at du ikke trenger 148 00:07:30,280 --> 00:07:32,420 å gi den et navn - du bare ønsker å bruke det en gang - 149 00:07:32,420 --> 00:07:36,720 du ville bare si funksjon, for eksempel, i dette tilfellet, og du er bare 150 00:07:36,720 --> 00:07:38,280 definere noe som du kan gi et navn. 151 00:07:38,280 --> 00:07:40,920 >> Like, vi kunne trekke denne funksjonen ut og gi den et navn, og deretter kalle det 152 00:07:40,920 --> 00:07:41,760 fungere her. 153 00:07:41,760 --> 00:07:44,270 Men vi trenger ikke å fordi vi ikke ønsker å kaste bort tid på å gi den et navn eller 154 00:07:44,270 --> 00:07:46,240 sløse noe i vår navnerommet. 155 00:07:46,240 --> 00:07:47,530 Og du vil se at mye. 156 00:07:47,530 --> 00:07:52,810 For eksempel ser vi at mye i denne kode, men du har sett denne før da 157 00:07:52,810 --> 00:07:54,010 du klikker noe - 158 00:07:54,010 --> 00:07:55,980 kjøre denne type kode. 159 00:07:55,980 --> 00:07:59,850 >> Vi kunne definere koden som vi ønsker å kjøre når vi klikker, i dette tilfellet, 160 00:07:59,850 --> 00:08:03,450 denne ID, som en egen funksjon og deretter kjøre denne funksjonen. 161 00:08:03,450 --> 00:08:07,940 Men i dette tilfellet, vi bare hoppe det skrittet og flytte det inn her og 162 00:08:07,940 --> 00:08:10,340 bare for å definere alt at vi ønsker skal skje og 163 00:08:10,340 --> 00:08:12,450 ikke gi den et navn. 164 00:08:12,450 --> 00:08:15,550 Som likevel ikke kan ha svarte på spørsmålet ditt. 165 00:08:15,550 --> 00:08:15,960 >> PUBLIKUM: Nei, det gjør det. 166 00:08:15,960 --> 00:08:18,290 Jeg mener, jeg tror jeg bare ikke egentlig komme på hvorfor det ville være en 167 00:08:18,290 --> 00:08:20,800 fungere i det hele tatt, skjønt. 168 00:08:20,800 --> 00:08:21,590 Fordi det er egentlig ikke bli kalt. 169 00:08:21,590 --> 00:08:23,170 Det gjør egentlig ikke har et navn. 170 00:08:23,170 --> 00:08:25,510 >> JASON Hirschhorn: Det er en funksjon i forstand at det er en rekke tiltak, 171 00:08:25,510 --> 00:08:28,460 som du ville sette i en funksjon. 172 00:08:28,460 --> 00:08:29,970 Og så det er derfor vi kaller det anonym funksjon. 173 00:08:29,970 --> 00:08:30,815 Vi kommer ikke til å gi den et navn. 174 00:08:30,815 --> 00:08:33,159 Vi kommer ikke til å kaste bort prøver for å nevne det, men vi kunne. 175 00:08:33,159 --> 00:08:34,890 >> Anonyme funksjoner, du kan alltid gi et navn. 176 00:08:34,890 --> 00:08:37,620 Så for eksempel, denne koden rett her, vi kunne sette inn denne koden inne i en 177 00:08:37,620 --> 00:08:39,929 funksjon og deretter ringe denne funksjonen her. 178 00:08:39,929 --> 00:08:41,600 I stedet sier vi, vi skal ikke å bry seg med det. 179 00:08:41,600 --> 00:08:44,390 Vi kommer bare til å skrive det all right her. 180 00:08:44,390 --> 00:08:49,840 >> Det er som noen ganger når du skriver en fire sløyfe i C - dere 181 00:08:49,840 --> 00:08:51,630 har sett dette før - kanskje du er itera gjennom en forloop 182 00:08:51,630 --> 00:08:53,090 inn i lik 0. 183 00:08:53,090 --> 00:08:54,830 I er mindre enn strlen. 184 00:08:54,830 --> 00:08:59,520 Eller du går gjennom noen array, kan du spare matrise 185 00:08:59,520 --> 00:09:01,580 indeksen i i noen variable. 186 00:09:01,580 --> 00:09:02,830 Og du bruker den variabelen. 187 00:09:02,830 --> 00:09:06,550 Så du trenger ikke å omskrive matrise brakett jeg om og om igjen og om igjen. 188 00:09:06,550 --> 00:09:08,160 >> Og det er liksom som en dummy variabel. 189 00:09:08,160 --> 00:09:10,790 Det er ikke å tjene mye annet formål enn å lage din kode litt renere 190 00:09:10,790 --> 00:09:12,120 og lettere å lese. 191 00:09:12,120 --> 00:09:13,290 Tilsvarende funksjon her. 192 00:09:13,290 --> 00:09:15,665 Bare gjør det litt enklere, men funksjonelt er det ingen forskjell. 193 00:09:15,665 --> 00:09:18,620 194 00:09:18,620 --> 00:09:19,330 Besvarer det spørsmålet ditt? 195 00:09:19,330 --> 00:09:19,970 >> PUBLIKUM: Ja. 196 00:09:19,970 --> 00:09:20,720 >> JASON Hirschhorn: OK .. 197 00:09:20,720 --> 00:09:21,880 Mario? 198 00:09:21,880 --> 00:09:25,380 >> PUBLIKUM: I går de ofte setter funksjon parenteser hendelsen. 199 00:09:25,380 --> 00:09:26,420 Betyr det noe? 200 00:09:26,420 --> 00:09:30,500 Eller er det for ting som at de ville gjøre 201 00:09:30,500 --> 00:09:35,100 document.ready funksjon hendelsen. 202 00:09:35,100 --> 00:09:37,130 >> JASON Hirschhorn: Vi har sett dette, og igjen, disse er mindre ting som 203 00:09:37,130 --> 00:09:39,590 sannsynligvis jeg ikke vil bruke for mye tid på. 204 00:09:39,590 --> 00:09:43,200 Fordi noen ganger jeg ikke vil at folk få hetta ut at de ikke har 205 00:09:43,200 --> 00:09:44,220 hørt om disse tingene så mye. 206 00:09:44,220 --> 00:09:46,200 Men vi snakket litt om hendelsesbehandlinger. 207 00:09:46,200 --> 00:09:50,360 Så noe skjer, og deretter denne funksjonen er utført. 208 00:09:50,360 --> 00:09:53,210 Og så ønsker vi også å vite noen detaljer om hva 209 00:09:53,210 --> 00:09:54,450 skjedde i denne hendelsen. 210 00:09:54,450 --> 00:09:55,730 >> Så tenker tilbake til oppgavesettet fire. 211 00:09:55,730 --> 00:09:58,390 Det er trolig den enkleste måten å forstår at i bryte ut. 212 00:09:58,390 --> 00:09:59,740 Det var noen kode - 213 00:09:59,740 --> 00:10:01,980 som en hendelse som ville skje, men hendelse kan bety mange ting. 214 00:10:01,980 --> 00:10:06,240 Hvis kunne bety musen klikkes, det kan bety at du treffer en piltast, et 215 00:10:06,240 --> 00:10:07,190 cetera, et cetera. 216 00:10:07,190 --> 00:10:09,800 >> Men det er alt lagret i denne generiske tingen kalt hendelser. 217 00:10:09,800 --> 00:10:12,340 Og så kan vi si, er denne hendelsen denne tingen? 218 00:10:12,340 --> 00:10:13,640 Eller er denne begivenheten denne tingen? 219 00:10:13,640 --> 00:10:15,500 Eller, hva slags skjedde med den hendelsen? 220 00:10:15,500 --> 00:10:18,660 Så det er derfor du oppretter den variabelen der for å spare de ekstra informasjon 221 00:10:18,660 --> 00:10:21,420 om hva som egentlig skjedde den du kommer til å ønske å 222 00:10:21,420 --> 00:10:24,840 utnytter i funksjon. 223 00:10:24,840 --> 00:10:28,200 Men igjen, det er nok en av de mindre viktige ting å være super 224 00:10:28,200 --> 00:10:29,450 kjent med. 225 00:10:29,450 --> 00:10:31,470 226 00:10:31,470 --> 00:10:36,110 >> OK, hva andre spørsmål har folk hadde, eller snublesteiner de har 227 00:10:36,110 --> 00:10:37,360 oppstått mens du gjennomgår? 228 00:10:37,360 --> 00:10:41,260 229 00:10:41,260 --> 00:10:42,510 Vi vil tilbake til den listen. 230 00:10:42,510 --> 00:10:52,550 231 00:10:52,550 --> 00:10:56,080 Hva om under praktiske tester, hvis folk har tatt de som allerede er? 232 00:10:56,080 --> 00:10:59,110 Hva var noen problemer som utløst dere opp? 233 00:10:59,110 --> 00:11:08,970 234 00:11:08,970 --> 00:11:12,720 Jeg vet for et faktum at fjorårets quiz var virkelig vanskelig. 235 00:11:12,720 --> 00:11:15,670 >> PUBLIKUM: Kan du forklare hva en SQL-injeksjon angrep er? 236 00:11:15,670 --> 00:11:18,970 >> JASON Hirschhorn: OK, flott. 237 00:11:18,970 --> 00:11:20,440 Så vi snakket om dette litt. 238 00:11:20,440 --> 00:11:22,050 Det er et foredrag om sikkerhet. 239 00:11:22,050 --> 00:11:25,670 Og igjen, som jeg nevnte tidligere, Dette er en side. 240 00:11:25,670 --> 00:11:30,010 Men du vil bli frustrert på quiz når du leser noen små to punkt 241 00:11:30,010 --> 00:11:33,040 spørsmål, og du er som, når gjorde jeg noen gang lære det? 242 00:11:33,040 --> 00:11:35,560 >> Alle disse tingene i disse foredragene som du ikke trodde du trengte å 243 00:11:35,560 --> 00:11:38,290 vet, eller du kan glatte over fordi de ikke har å gjøre med 244 00:11:38,290 --> 00:11:41,860 Problemet sett, de vil sannsynligvis komme opp igjen på quiz. 245 00:11:41,860 --> 00:11:45,030 Så, kule, morsomme ting som du bare trodde David fortalte for deg å 246 00:11:45,030 --> 00:11:49,070 nyte, ble han sier det for deg å nyte og å gjøre deg bare være super 247 00:11:49,070 --> 00:11:50,550 begeistret lære alt Det er å lære 248 00:11:50,550 --> 00:11:51,670 om informatikk. 249 00:11:51,670 --> 00:11:53,680 Disse tingene kommer også opp på spørrekonkurranser. 250 00:11:53,680 --> 00:11:56,440 Så, selv disse små ting som ikke direkte relatert til ditt problem 251 00:11:56,440 --> 00:11:59,630 satt, som dere er kjent med fra Quiz 0, vil trolig komme opp. 252 00:11:59,630 --> 00:12:01,530 Og dette er et godt eksempel av noe. 253 00:12:01,530 --> 00:12:10,140 >> Så en SQL-injeksjon angrep er når du få litt informasjon fra brukeren og 254 00:12:10,140 --> 00:12:15,090 du ønsker å sette det inn i en tabell ved hjelp en SQL insert-setning, men du 255 00:12:15,090 --> 00:12:17,680 ikke rense innspill på forhånd. 256 00:12:17,680 --> 00:12:21,560 Så, åpenbart vi har sett SQL-setninger. 257 00:12:21,560 --> 00:12:22,810 Jeg vil bare åpne opp - 258 00:12:22,810 --> 00:12:25,590 259 00:12:25,590 --> 00:12:26,840 la oss gå - 260 00:12:26,840 --> 00:12:31,290 261 00:12:31,290 --> 00:12:31,960 vi vil gå til gjennomgangen - 262 00:12:31,960 --> 00:12:35,180 Jeg tror, ​​som dekket det? 263 00:12:35,180 --> 00:12:36,350 Jeg tror Samala gjorde. 264 00:12:36,350 --> 00:12:39,292 Så vi kan få - 265 00:12:39,292 --> 00:12:41,270 >> PUBLIKUM: Hvor fant du denne? 266 00:12:41,270 --> 00:12:44,990 >> JASON Hirschhorn: Så hvis du går til CS50.net, spørrekonkurranser, og deretter kan du 267 00:12:44,990 --> 00:12:47,170 bla over og få lysbilder fra gjennomgangen økten. 268 00:12:47,170 --> 00:12:49,860 Men du kan se dette er et godt eksempel av en SQL-injeksjon angrep. 269 00:12:49,860 --> 00:12:53,690 Vi tar litt informasjon fra brukeren og de gir oss en streng, og da vi 270 00:12:53,690 --> 00:12:55,780 vil sette inn strengen inn i en database. 271 00:12:55,780 --> 00:12:59,780 Vanligvis skal vi rense det inngang, noe som betyr at det ikke er noen 272 00:12:59,780 --> 00:13:01,050 tegn som er farlig. 273 00:13:01,050 --> 00:13:04,000 >> For eksempel, i SQL-strenger, disse sitatene - 274 00:13:04,000 --> 00:13:05,000 apostrof eller doble anførselstegn - 275 00:13:05,000 --> 00:13:05,620 bety noe. 276 00:13:05,620 --> 00:13:08,380 De mener avslutte denne strengen her. 277 00:13:08,380 --> 00:13:13,090 Og så hvis brukeren gir deg et enkelt eller et dobbelt anførselstegn, kan de være 278 00:13:13,090 --> 00:13:18,970 prøver å reise opp din SQL-spørring og sette noen dårlige ting i det. 279 00:13:18,970 --> 00:13:23,130 Og hvis de gjør det, kan de få kontroll av databasen, eller gjøre noen 280 00:13:23,130 --> 00:13:24,760 ting som du ikke vil at de skal gjøre. 281 00:13:24,760 --> 00:13:28,300 >> Så det er grunnen til at når vi tar SQL spørringer, desinfisere vi innspill før 282 00:13:28,300 --> 00:13:31,090 å sette den inn i databasen, noe betyr at vi unnslippe disse tegnene. 283 00:13:31,090 --> 00:13:32,590 Vi skal snakke om det i et sekund. 284 00:13:32,590 --> 00:13:35,820 Men lang historie kort, en SQL-injeksjon angrep er hvis du ikke gjør det - 285 00:13:35,820 --> 00:13:39,760 hvis du ikke tar vare på inngangs de ga deg før du setter din 286 00:13:39,760 --> 00:13:46,830 databasen, kan de, som du ser ned her, kjøre en spørring som, faktisk - 287 00:13:46,830 --> 00:13:52,470 de satt i koden sin her nede, og dette velger linje ned her vil velge 288 00:13:52,470 --> 00:13:56,360 alt fra tabellen uavhengig av hva passordet er gitt. 289 00:13:56,360 --> 00:13:58,960 Fordi du har den eller en lik en. 290 00:13:58,960 --> 00:14:02,750 >> Så det er i utgangspunktet, lang historie kort, en måte å ta over databasen. 291 00:14:02,750 --> 00:14:07,570 Spørsmålet er da, for dere, er hvor i p sett 7 gjorde du rense alle 292 00:14:07,570 --> 00:14:10,010 inngangene til SQL-spørringene? 293 00:14:10,010 --> 00:14:11,230 Hvor ble det skrittet skje? 294 00:14:11,230 --> 00:14:14,150 Hvor ser du forhindre SQL-injeksjon angrepene skjer i p satt 7? 295 00:14:14,150 --> 00:14:20,100 296 00:14:20,100 --> 00:14:20,490 Yeah. 297 00:14:20,490 --> 00:14:21,870 >> PUBLIKUM: Crypt? 298 00:14:21,870 --> 00:14:23,120 >> JASON Hirschhorn: Så det ikke var krypten. 299 00:14:23,120 --> 00:14:52,360 300 00:14:52,360 --> 00:14:55,380 Vi gjorde ikke gjøre deg gjøre dette for denne spesielt problem angitt, men det skjer 301 00:14:55,380 --> 00:14:58,190 i spørringsfunksjonen. 302 00:14:58,190 --> 00:15:00,930 Vi har faktisk skrev det for deg, og vi tok vare på 303 00:15:00,930 --> 00:15:03,040 desinfiserende innganger for deg. 304 00:15:03,040 --> 00:15:07,790 Men i år tidligere, har elevene hatt å skrive inngangene på egenhånd. 305 00:15:07,790 --> 00:15:10,020 I p sett 7, mange av dere - 306 00:15:10,020 --> 00:15:11,270 la meg åpne opp en annen fil. 307 00:15:11,270 --> 00:15:18,530 308 00:15:18,530 --> 00:15:22,590 >> Så du vil merke opp her mye av mennesker, i oppgavesettet 7, ikke ringer 309 00:15:22,590 --> 00:15:25,240 denne funksjonen på strenger. 310 00:15:25,240 --> 00:15:27,880 Denne funksjonen, htmlspecialchars, igjen - 311 00:15:27,880 --> 00:15:31,410 denne strengen kan ha noen ting at i HTML bety noe annet. 312 00:15:31,410 --> 00:15:36,160 Som en spenne, en firkant eller en vinkel brakett bety noe i HTML. 313 00:15:36,160 --> 00:15:38,980 >> Og så hvis du skriver det ut til skjermen, eller hvis du bare ta det og 314 00:15:38,980 --> 00:15:42,260 skrive det ut til HTML, at makt gjøre noe du ikke forventer. 315 00:15:42,260 --> 00:15:45,180 Så htmlspecialchars går over alle dem tegn som har spesiell 316 00:15:45,180 --> 00:15:47,030 møte og rømming dem. 317 00:15:47,030 --> 00:15:51,450 Så det blir skrevet ut som tekst du ønsker å se, heller enn 318 00:15:51,450 --> 00:15:53,280 skru opp din HTML. 319 00:15:53,280 --> 00:15:55,040 Vi kalte den funksjonen i overskriften. 320 00:15:55,040 --> 00:15:57,390 Og mange mennesker har glemt å ring som funksjon i 321 00:15:57,390 --> 00:15:58,700 koden du skrev. 322 00:15:58,700 --> 00:16:03,970 >> Så, for eksempel hvis en lagernavn hadde en vinkel braketten i det, og du glemte 323 00:16:03,970 --> 00:16:06,675 å kalle denne funksjonen, den vinkelen brakett kunne ha kastet av hva 324 00:16:06,675 --> 00:16:08,250 HTML så ut. 325 00:16:08,250 --> 00:16:11,810 Men å kalle denne funksjonen vil flykte at slik at det faktisk skrives ut som en 326 00:16:11,810 --> 00:16:15,870 vinkel brakett og kaster ikke av HTML-koden. 327 00:16:15,870 --> 00:16:18,760 >> Den samme grunnen til at vi har sett, noen ganger, flenger før doble anførselstegn i en 328 00:16:18,760 --> 00:16:22,310 printf linje fordi vi ikke vil at anførselstegn nedover strengen. 329 00:16:22,310 --> 00:16:24,050 Vi ønsker å skrive dem ut til skjermen. 330 00:16:24,050 --> 00:16:26,920 Så alt av dette er den samme idé. 331 00:16:26,920 --> 00:16:28,260 Besvarer det spørsmålet ditt? 332 00:16:28,260 --> 00:16:31,529 333 00:16:31,529 --> 00:16:33,870 >> PUBLIKUM: Kind of. 334 00:16:33,870 --> 00:16:35,300 >> JASON Hirschhorn: Har du ha en oppfølging? 335 00:16:35,300 --> 00:16:43,252 >> PUBLIKUM: Jeg antar at SQL-injeksjon angrep har å gjøre med det? 336 00:16:43,252 --> 00:16:45,720 Jeg forstår ikke hvordan de to er beslektet. 337 00:16:45,720 --> 00:16:47,610 Hvorfor ville du gjøre de specialchars? 338 00:16:47,610 --> 00:16:51,200 >> JASON Hirschhorn: OK, så SQL injeksjon angrep er når du injiserer 339 00:16:51,200 --> 00:16:59,180 noen ondsinnede trenger til noens program, og de bare ta det og kjøre 340 00:16:59,180 --> 00:17:01,230 SQL-spørring med en streng du ga dem. 341 00:17:01,230 --> 00:17:04,220 Som du kan se her nede, at kunne være problematisk. 342 00:17:04,220 --> 00:17:07,480 Så på den måten du forebygge mot at er du tar deres streng at de gir 343 00:17:07,480 --> 00:17:09,220 du - så denne strengen akkurat her - 344 00:17:09,220 --> 00:17:11,240 og du rense den. 345 00:17:11,240 --> 00:17:14,305 Du unnslippe alle de tingene som er potensielt problematisk. 346 00:17:14,305 --> 00:17:18,626 Så du trenger ikke tolke dem som noe som betyr noe. 347 00:17:18,626 --> 00:17:23,390 >> Og et eksempel på at med HTML er denne funksjonen. 348 00:17:23,390 --> 00:17:26,060 Så det er den samme ideen her. 349 00:17:26,060 --> 00:17:27,579 Og jeg ble bare viser deg andre eksempler på når du har 350 00:17:27,579 --> 00:17:29,030 sett denne ideen før. 351 00:17:29,030 --> 00:17:33,913 Unnslippe brukerundersøkelser før utskrift den ut til en skjerm eller sette den 352 00:17:33,913 --> 00:17:36,782 inne i en SQL-setning. 353 00:17:36,782 --> 00:17:40,790 >> PUBLIKUM: Så i dette tilfellet brukeren er rote med programmerer. 354 00:17:40,790 --> 00:17:41,240 >> JASON Hirschhorn: Ja. 355 00:17:41,240 --> 00:17:44,800 Med alle disse sikkerhetsangrep, det er alltid generelt brukeren, eller 356 00:17:44,800 --> 00:17:47,470 noen, prøver å rote med deg, programmerer. 357 00:17:47,470 --> 00:17:51,038 Og disse er måter du kan forebygge mot dem. 358 00:17:51,038 --> 00:17:54,280 >> PUBLIKUM: Så jeg har et spørsmål om hash funksjoner. 359 00:17:54,280 --> 00:17:59,340 I Quiz 1 fra 2011, er det to spørsmål om ensidige hashes. 360 00:17:59,340 --> 00:18:02,540 Og jeg bare lurte hva det betydde. 361 00:18:02,540 --> 00:18:03,660 >> JASON Hirschhorn: OK, som quiz? 362 00:18:03,660 --> 00:18:03,770 2011? 363 00:18:03,770 --> 00:18:04,705 >> PUBLIKUM: Yeah. 364 00:18:04,705 --> 00:18:06,720 >> PUBLIKUM: Quiz 1? 365 00:18:06,720 --> 00:18:08,620 >> PUBLIKUM: [uhørbart]. 366 00:18:08,620 --> 00:18:09,940 Det er som hashing et passord. 367 00:18:09,940 --> 00:18:12,220 Det er ikke å sette ting - 368 00:18:12,220 --> 00:18:13,440 >> JASON Hirschhorn: Hva siden ble det? 369 00:18:13,440 --> 00:18:15,720 >> PUBLIKUM: Jeg tror det var 9 eller 10, eller begge deler. 370 00:18:15,720 --> 00:18:16,720 >> JASON Hirschhorn: Greit, gå videre, Curt. 371 00:18:16,720 --> 00:18:17,780 Du kan svare samtidig som vi ser. 372 00:18:17,780 --> 00:18:19,540 >> PUBLIKUM: Jeg tror det er snakk om hashing et passord. 373 00:18:19,540 --> 00:18:24,430 Som, når noen går inn i et passord, du slå den inn i en kryptert ting. 374 00:18:24,430 --> 00:18:27,395 Det er passord hash, som er forskjellig fra en hash-funksjon som 375 00:18:27,395 --> 00:18:30,900 setter noe inn i en hash table. 376 00:18:30,900 --> 00:18:31,610 >> JASON Hirschhorn: La oss se. 377 00:18:31,610 --> 00:18:33,930 La meg trekke opp det de gi så svaret. 378 00:18:33,930 --> 00:18:35,440 Og så skal vi gå gjennom det. 379 00:18:35,440 --> 00:18:42,430 380 00:18:42,430 --> 00:18:45,400 >> Så Curt ga et godt eksempel av en enveis hash. 381 00:18:45,400 --> 00:18:48,800 Når vi har sett dette før, vi ta passord og slå - 382 00:18:48,800 --> 00:18:53,040 huske, i p sett 7, noen kan ha et passord som er bare passord, 383 00:18:53,040 --> 00:18:55,300 men da det blir kryptert inn noen virkelig lange ting. 384 00:18:55,300 --> 00:18:59,830 Den enveis hash betyr at det er veldig enkelt å gå fra den ene vei til den annen, men 385 00:18:59,830 --> 00:19:02,800 det er veldig vanskelig å gå fra den andre vei tilbake. 386 00:19:02,800 --> 00:19:05,230 >> Og så du vet, når du ble sjekket folks passord i problemet 387 00:19:05,230 --> 00:19:08,820 satt 7, vil du ta deres - 388 00:19:08,820 --> 00:19:11,953 så, for eksempel, sier de ønsket å endre passordet sitt, spør du dem 389 00:19:11,953 --> 00:19:13,130 for sitt gamle passord. 390 00:19:13,130 --> 00:19:13,910 Du tok sitt gamle passord. 391 00:19:13,910 --> 00:19:15,150 Du kryptert det. 392 00:19:15,150 --> 00:19:19,240 Og så sammenlignet de to krypte snarere enn unencrypting den opprinnelige 393 00:19:19,240 --> 00:19:20,780 en, fordi det er virkelig vanskelig å gå den veien. 394 00:19:20,780 --> 00:19:27,070 395 00:19:27,070 --> 00:19:28,035 Yeah. 396 00:19:28,035 --> 00:19:31,430 >> PUBLIKUM: Hvordan i dybden gjør vår forståelse av Telnet må være? 397 00:19:31,430 --> 00:19:34,870 398 00:19:34,870 --> 00:19:41,360 >> JASON Hirschhorn: Hvis det ble nevnt kort i foredrag, bare en kort 399 00:19:41,360 --> 00:19:43,260 forståelse. 400 00:19:43,260 --> 00:19:45,585 Igjen tilbake til svaret til Avi er spørsmålet - 401 00:19:45,585 --> 00:19:48,260 402 00:19:48,260 --> 00:19:50,430 jo flere ting kommer opp, jo mer sannsynlig det er du nødt til å være super 403 00:19:50,430 --> 00:19:51,530 kjent med dem. 404 00:19:51,530 --> 00:19:54,730 Hvis de har bare kommet opp i foredrag, det er bare ett sted. 405 00:19:54,730 --> 00:19:57,180 Men hvis de kommer opp i foredrag, seksjon, og en oppgavesettet, så du 406 00:19:57,180 --> 00:19:58,710 sannsynligvis nødt til å være super kjent med dem. 407 00:19:58,710 --> 00:20:01,320 408 00:20:01,320 --> 00:20:03,960 >> Så jeg hadde et spørsmål fra tidligere om - 409 00:20:03,960 --> 00:20:06,950 er var høsten 2010 - 410 00:20:06,950 --> 00:20:08,520 Quiz 1, la oss trekke opp - 411 00:20:08,520 --> 00:20:17,390 412 00:20:17,390 --> 00:20:21,790 dette spørsmålet på stabler og køer, som vi tilbringe en god del tid 413 00:20:21,790 --> 00:20:23,720 snakker om i foredraget, selv men vi gjorde egentlig ikke 414 00:20:23,720 --> 00:20:26,020 noen gang treffer det i avsnittet. 415 00:20:26,020 --> 00:20:33,190 Så dette spørsmålet er å gi deg en serie av kommandoer og spør deg hva 416 00:20:33,190 --> 00:20:35,560 blir trykket i dette tilfellet. 417 00:20:35,560 --> 00:20:40,180 Så dette er en helt rimelig spørsmål som kan bli spurt av deg 418 00:20:40,180 --> 00:20:43,090 gutta, og da dere bør være i stand til å svare på det. 419 00:20:43,090 --> 00:20:50,020 >> Så hvorfor ikke du ser på det for 30 sekunder, og deretter hvis noen ønsker å 420 00:20:50,020 --> 00:20:52,140 foreslå svar på meg, og så får vi gå gjennom det. 421 00:20:52,140 --> 00:21:22,590 422 00:21:22,590 --> 00:21:24,235 Greit, som har et svar til spørsmål 27? 423 00:21:24,235 --> 00:21:31,740 424 00:21:31,740 --> 00:21:33,860 Yeah. 425 00:21:33,860 --> 00:21:40,250 >> Publikum: Er det 1, 2, 3, 3? 426 00:21:40,250 --> 00:21:40,780 >> JASON Hirschhorn: Det er riktig. 427 00:21:40,780 --> 00:21:42,570 27 er 1, 2, 3, 3. 428 00:21:42,570 --> 00:21:44,510 Så la oss se på hvordan vi fikk det. 429 00:21:44,510 --> 00:21:48,930 >> Først er vi sier, hvis s er en kø, hva som blir skrevet ut? 430 00:21:48,930 --> 00:21:53,360 Så en q er først inn, først ut. 431 00:21:53,360 --> 00:21:54,680 Vi har sett det før. 432 00:21:54,680 --> 00:21:56,820 Vi så bildet av folket venter på Apple 433 00:21:56,820 --> 00:21:58,400 Butikk for å kjøpe noen produkter. 434 00:21:58,400 --> 00:22:00,900 De første menneskene i er de første mennesker ut. 435 00:22:00,900 --> 00:22:02,940 De første tingene i en kø er de første tingene ut. 436 00:22:02,940 --> 00:22:08,320 >> Så hvis vi presse noe inn i en kø, du skyver en, så vi pop en. 437 00:22:08,320 --> 00:22:09,630 Pop betyr bare ta ut. 438 00:22:09,630 --> 00:22:11,080 I dette tilfellet, bare ta noe ut. 439 00:22:11,080 --> 00:22:12,910 Vi tar ut det første ting, det er en en. 440 00:22:12,910 --> 00:22:15,200 Så får vi sette ting vi skrive ned over her. 441 00:22:15,200 --> 00:22:18,110 Dette er ikke lenger i vårt køen. 442 00:22:18,110 --> 00:22:23,500 >> Da vi skyve på en to og en tre, og vi pop av det første. 443 00:22:23,500 --> 00:22:25,030 Igjen, fordi det er en kø. 444 00:22:25,030 --> 00:22:33,320 Så får vi en to, så vi satt på en annen 3 og kaller pop igjen. 445 00:22:33,320 --> 00:22:34,980 Våre tre er først. 446 00:22:34,980 --> 00:22:40,940 >> Og da vi hadde en hel haug med andre ting og samtale pop. 447 00:22:40,940 --> 00:22:43,740 Men igjen, siden dette er en kø, først inn, først ut. 448 00:22:43,740 --> 00:22:45,980 Vi tar ut det første som noen gang ble satt i. 449 00:22:45,980 --> 00:22:47,100 Det er vår tre. 450 00:22:47,100 --> 00:22:50,060 Og i dette tilfellet, vi trenger ikke bekymre deg om alle de andre tingene. 451 00:22:50,060 --> 00:22:51,310 Så det er om dette er en kø. 452 00:22:51,310 --> 00:22:58,917 453 00:22:58,917 --> 00:23:00,167 Eventuelle spørsmål om en kø? 454 00:23:00,167 --> 00:23:03,290 455 00:23:03,290 --> 00:23:04,040 >> En stabel er annerledes. 456 00:23:04,040 --> 00:23:07,782 Hva er forkortelsen vi har for å forstå en stack? 457 00:23:07,782 --> 00:23:08,750 >> PUBLIKUM: sist inn, først ut. 458 00:23:08,750 --> 00:23:10,130 >> JASON Hirschhorn: LIFO, tror jeg. 459 00:23:10,130 --> 00:23:11,830 Sist inn, først ut. 460 00:23:11,830 --> 00:23:15,630 Så vi så et eksempel på en stabel av skuffene i en spisesal. 461 00:23:15,630 --> 00:23:17,590 Uansett skuffen er på toppen blir plukket opp. 462 00:23:17,590 --> 00:23:19,550 Og så dersom nye skuffer kommer inn, blir de satt på toppen. 463 00:23:19,550 --> 00:23:21,070 Og så det som er på Toppen blir plukket opp. 464 00:23:21,070 --> 00:23:24,010 Så de skuffer på bunnen makt bli der en stund. 465 00:23:24,010 --> 00:23:28,480 >> I så fall, igjen, vil vi trekke dette ut. 466 00:23:28,480 --> 00:23:31,770 Vi trykker på en, så en er først i køen. 467 00:23:31,770 --> 00:23:32,790 Og vi pop noe av. 468 00:23:32,790 --> 00:23:37,280 Og det er bare én ting i det, så vi flytter en her nede. 469 00:23:37,280 --> 00:23:41,940 Deretter satte vi på to og tre og vi pop noe av. 470 00:23:41,940 --> 00:23:43,650 >> Men igjen, siden dette er en kø - 471 00:23:43,650 --> 00:23:45,010 eller det er en stabel, i stedet for - 472 00:23:45,010 --> 00:23:47,480 vi ta det som var i sist. 473 00:23:47,480 --> 00:23:49,300 Uansett er i siste kommer ut først. 474 00:23:49,300 --> 00:23:50,890 Og 3 er i siste. 475 00:23:50,890 --> 00:23:56,110 Så satte vi tre der nede, da Vi satt på et annet tre, og vi 476 00:23:56,110 --> 00:23:57,360 pop noe nytt. 477 00:23:57,360 --> 00:23:59,990 478 00:23:59,990 --> 00:24:05,710 Til slutt satte vi på 4, 5, 6, og 7, og her vi pop. 479 00:24:05,710 --> 00:24:09,060 Og fordi det er en stabel, tar vi det som ble satt i fjor, og skrive 480 00:24:09,060 --> 00:24:10,240 det ned her. 481 00:24:10,240 --> 00:24:14,256 Så vi ender opp med en, tre, tre, syv. 482 00:24:14,256 --> 00:24:17,380 483 00:24:17,380 --> 00:24:21,380 Er det noen som har spørsmål om stabler eller køer, eller dette eksempelet? 484 00:24:21,380 --> 00:24:27,540 485 00:24:27,540 --> 00:24:29,030 >> OK. 486 00:24:29,030 --> 00:24:30,440 La oss gå tilbake til listen over emner. 487 00:24:30,440 --> 00:24:32,510 Ikke på den måten, på denne måten. 488 00:24:32,510 --> 00:24:34,280 Hvilke andre spørsmål folk har? 489 00:24:34,280 --> 00:24:37,550 490 00:24:37,550 --> 00:24:39,480 >> PUBLIKUM: Jeg vet ikke hvor viktig dette er, men jeg ble forvirret av 491 00:24:39,480 --> 00:24:43,550 Forskjellen mellom forskjellige typer språk som markup, utarbeidet, 492 00:24:43,550 --> 00:24:45,980 tolkes. 493 00:24:45,980 --> 00:24:46,750 >> JASON Hirschhorn: Det er et godt spørsmål. 494 00:24:46,750 --> 00:24:50,500 Jeg tror det er noe viktig, så la oss gå over det raskt. 495 00:24:50,500 --> 00:24:56,850 De store språkene vi har sett så langt er C, PHP og Javascript, i form 496 00:24:56,850 --> 00:24:58,330 av programmeringsspråk. 497 00:24:58,330 --> 00:25:01,060 HTML, som du nevnte, er ikke et programmeringsspråk. 498 00:25:01,060 --> 00:25:02,260 Det er et kodespråk. 499 00:25:02,260 --> 00:25:05,700 Og så har vi CSS, som også er ikke et programmeringsspråk. 500 00:25:05,700 --> 00:25:10,330 >> Vi har også sett SQL, som ikke er et programmeringsspråk heller. 501 00:25:10,330 --> 00:25:15,695 Så SQL kan du skrive spørringer for en database. 502 00:25:15,695 --> 00:25:18,370 503 00:25:18,370 --> 00:25:20,140 HTML er et kodespråk. 504 00:25:20,140 --> 00:25:22,570 Den definerer hvordan ting er strukturert. 505 00:25:22,570 --> 00:25:26,250 Og CSS kan du style ting. 506 00:25:26,250 --> 00:25:28,520 Det er trolig den grad for hva du trenger å vite om de tre. 507 00:25:28,520 --> 00:25:32,920 Men det er mer interessant å figur ut forskjellene mellom C, PHP, 508 00:25:32,920 --> 00:25:34,320 og Javascript. 509 00:25:34,320 --> 00:25:37,900 >> Så en av de største forskjeller som du nevnte, er hvordan de er 510 00:25:37,900 --> 00:25:40,550 kompilert, eller hva tilsvarende er. 511 00:25:40,550 --> 00:25:42,580 Så C er kompilert. 512 00:25:42,580 --> 00:25:43,950 Vi ville alltid kjøre en kompilator. 513 00:25:43,950 --> 00:25:51,100 Og så hvor er feil når du kjører C-kompilator? 514 00:25:51,100 --> 00:25:55,740 Hvor kommer den vise deg den feil i koden din? 515 00:25:55,740 --> 00:25:57,860 Hvordan vet du at det er en feil i koden i C? 516 00:25:57,860 --> 00:25:58,770 >> PUBLIKUM: Den viser deg i terminalen. 517 00:25:58,770 --> 00:26:00,410 >> JASON Hirschhorn: Den viser deg i terminal som du kompilering. 518 00:26:00,410 --> 00:26:02,620 Og hvis det er feil, det vil faktisk ikke kompilere den. 519 00:26:02,620 --> 00:26:04,830 Så du vet at det er feil riktige bort, på forhånd, før du 520 00:26:04,830 --> 00:26:06,050 selv kjøre koden din. 521 00:26:06,050 --> 00:26:10,010 >> Selvfølgelig kan du kjøre koden din og får en segmenteringsfeil, men som var 522 00:26:10,010 --> 00:26:12,350 sannsynligvis fordi du gjorde noen dum logikk ting. 523 00:26:12,350 --> 00:26:15,770 Men koden med teknisk alt riktig og kunne kjøre. 524 00:26:15,770 --> 00:26:18,210 Så C-kode blir kompilert på forhånd. 525 00:26:18,210 --> 00:26:19,760 Hva med PHP-kode? 526 00:26:19,760 --> 00:26:21,430 Hvor var feil i din PHP-kode? 527 00:26:21,430 --> 00:26:23,170 Hvordan visste du at du hadde feil i din PHP-kode? 528 00:26:23,170 --> 00:26:26,038 529 00:26:26,038 --> 00:26:28,430 >> PUBLIKUM: Kjør tid? 530 00:26:28,430 --> 00:26:31,230 >> JASON Hirschhorn: Ja, når du ville kjøre den, ville du kjøre 531 00:26:31,230 --> 00:26:32,180 PHP-kode i ryggen. 532 00:26:32,180 --> 00:26:33,300 Og så ville du vise et skjermbilde. 533 00:26:33,300 --> 00:26:35,260 Du kan se noen ting på toppen, men så ville du se, som noen 534 00:26:35,260 --> 00:26:36,710 orange, stygge bordet. 535 00:26:36,710 --> 00:26:41,420 Og det vil gi deg et linjenummer og si, blah, blah, blah, slike ting 536 00:26:41,420 --> 00:26:42,400 fungerte ikke. 537 00:26:42,400 --> 00:26:48,730 >> Så PHP tolkes linje for linje og utføres på serveren. 538 00:26:48,730 --> 00:26:52,380 Og så resultatet er sendes over til deg. 539 00:26:52,380 --> 00:26:53,340 Flott. 540 00:26:53,340 --> 00:26:56,410 Utført i serveren linje for linje og deretter sendt over til deg. 541 00:26:56,410 --> 00:26:59,010 Og hvis det er en feil, vil det sende du feilen, men du kan ha 542 00:26:59,010 --> 00:27:00,400 fått noen ting på forhånd. 543 00:27:00,400 --> 00:27:02,730 Så noe av det kunne ha fungert, men senere, kanskje noen ting ikke har 544 00:27:02,730 --> 00:27:03,890 ikke fungerte. 545 00:27:03,890 --> 00:27:04,600 >> Hva med Javascript? 546 00:27:04,600 --> 00:27:06,065 Hvor fikk du se Javascript-feil? 547 00:27:06,065 --> 00:27:10,860 548 00:27:10,860 --> 00:27:12,870 I p satt åtte, når du fikk en feil, hvordan visste du det? 549 00:27:12,870 --> 00:27:13,710 Hvor vil det vise seg? 550 00:27:13,710 --> 00:27:15,900 >> PUBLIKUM: I konsollen, på bunnen. 551 00:27:15,900 --> 00:27:17,650 >> JASON Hirschhorn: I konsollen, på bunnen. 552 00:27:17,650 --> 00:27:20,160 Det vil også gi deg linjenummer, og det ville 553 00:27:20,160 --> 00:27:21,330 vise seg på bunnen. 554 00:27:21,330 --> 00:27:24,320 Og Java ble ikke henrettet på serveren. 555 00:27:24,320 --> 00:27:27,800 Java ble sendt til datamaskinen din, og deretter når det var tid til å kjøre 556 00:27:27,800 --> 00:27:31,670 Java, var Java drives linje for linje på 557 00:27:31,670 --> 00:27:33,410 klienten, på din side. 558 00:27:33,410 --> 00:27:35,570 Ikke serveren, klientsiden. 559 00:27:35,570 --> 00:27:37,690 >> Og på samme måte, var det kjøre linje for linje. 560 00:27:37,690 --> 00:27:40,630 Og så når du ville få en feilmelding, det ville dukke opp nederst. 561 00:27:40,630 --> 00:27:44,580 I likhet med PHP, noe av det kan utføre, og deretter kan du få en 562 00:27:44,580 --> 00:27:46,310 feil senere. 563 00:27:46,310 --> 00:27:49,910 >> Dessuten er en liten motsetning PHP, hvis du fikk en Javascript-feil - 564 00:27:49,910 --> 00:27:52,780 si at du ikke gjør det riktig kode for en varselboks - 565 00:27:52,780 --> 00:27:55,800 du kan fortsette å kjøre programmet. 566 00:27:55,800 --> 00:27:58,180 Varslingsboksen ikke ville fungere, men programmet ville være fint. 567 00:27:58,180 --> 00:28:00,490 Bare kanskje at funksjonen ville mislykkes. 568 00:28:00,490 --> 00:28:02,610 >> Så det er noen av de største forskjell i forhold til hvordan disse 569 00:28:02,610 --> 00:28:09,230 språk, eller hvordan programkoden du skriver er faktisk evaluert. 570 00:28:09,230 --> 00:28:11,970 Det er også andre forskjeller gjelder - den største forskjellen 571 00:28:11,970 --> 00:28:15,590 vi har sett i form av variabler på de forskjellige språkene. 572 00:28:15,590 --> 00:28:19,660 Så kan noen gi meg en forskjell mellom variabler 573 00:28:19,660 --> 00:28:20,910 i de tre språkene? 574 00:28:20,910 --> 00:28:24,802 575 00:28:24,802 --> 00:28:25,770 Ja. 576 00:28:25,770 --> 00:28:27,130 >> PUBLIKUM: I C, er de strengt skrevet. 577 00:28:27,130 --> 00:28:28,550 I de to andre, de er løst skrevet. 578 00:28:28,550 --> 00:28:30,040 >> JASON Hirschhorn: Og hva betyr det? 579 00:28:30,040 --> 00:28:31,775 >> PUBLIKUM: Det i C, må du deklarere typen av den variable når 580 00:28:31,775 --> 00:28:36,140 du deklarerer variabelen, som interbool eller røye. 581 00:28:36,140 --> 00:28:36,990 >> JASON Hirschhorn: Excellent. 582 00:28:36,990 --> 00:28:39,780 I C, vi hadde alltid å sette en form for en variabel. 583 00:28:39,780 --> 00:28:41,360 Og vi kunne ikke egentlig blande typer. 584 00:28:41,360 --> 00:28:45,750 Du kan ikke gjøre et heltall pluss en streng. 585 00:28:45,750 --> 00:28:48,760 Men som vi har sett i disse andre språk, du faktisk kan blande typer, 586 00:28:48,760 --> 00:28:51,230 og du aldri egentlig har å gi noe en type, noensinne. 587 00:28:51,230 --> 00:28:53,905 >> Så hvordan vet vi ting er variabler i PHP og Javascript? 588 00:28:53,905 --> 00:28:57,120 589 00:28:57,120 --> 00:28:58,685 >> PUBLIKUM: I PHP, begynner de med et dollartegn. 590 00:28:58,685 --> 00:29:00,810 I Javascript, når du deklarerer dem, må du ha en bar. 591 00:29:00,810 --> 00:29:01,760 >> JASON Hirschhorn: Høyre. 592 00:29:01,760 --> 00:29:03,535 Så i PHP, begynner de med et dollartegn. 593 00:29:03,535 --> 00:29:06,300 I Javascript, må de ha bar, men noen ganger gjør de faktisk ikke 594 00:29:06,300 --> 00:29:07,520 må ha bar. 595 00:29:07,520 --> 00:29:09,240 Men det er riktig. 596 00:29:09,240 --> 00:29:13,300 >> Så det er en stor forskjell mellom variabler. 597 00:29:13,300 --> 00:29:16,140 Jeg tror de er trolig, utenfor toppen av hodet mitt, de to største 598 00:29:16,140 --> 00:29:19,250 forskjeller mellom disse tre språk. 599 00:29:19,250 --> 00:29:20,594 Men, ja. 600 00:29:20,594 --> 00:29:24,720 >> PUBLIKUM: Og omfanget av C variabler er begrenset til de klammeparentes, 601 00:29:24,720 --> 00:29:27,760 hvor de andre, det er bare liker, det dør hvis det er i en funksjon bare, 602 00:29:27,760 --> 00:29:29,650 men ellers, it '- 603 00:29:29,650 --> 00:29:30,240 >> JASON Hirschhorn: Høyre. 604 00:29:30,240 --> 00:29:36,780 Så omfanget er litt annerledes i C. Som du husker, klammeparentes definere 605 00:29:36,780 --> 00:29:37,710 omfanget av variabler. 606 00:29:37,710 --> 00:29:41,680 Så hvis det ble definert inn i et if tilstand, som er inne i en for løkke, 607 00:29:41,680 --> 00:29:44,290 variabelen bare finnes der. 608 00:29:44,290 --> 00:29:47,760 >> I Javascript, er hvis en variabel definert inne i en hvis tilstand - 609 00:29:47,760 --> 00:29:50,750 inne i en for loop - det vil eksistere for at funksjon, men det vil ikke eksistere 610 00:29:50,750 --> 00:29:52,330 utenfor denne funksjonen. 611 00:29:52,330 --> 00:29:59,250 Så omfanget er litt mer fleksibel i Javascript og PHP. 612 00:29:59,250 --> 00:30:00,500 Det svare på spørsmålet? 613 00:30:00,500 --> 00:30:03,110 614 00:30:03,110 --> 00:30:04,635 OK, noen andre spørsmål? 615 00:30:04,635 --> 00:30:07,260 616 00:30:07,260 --> 00:30:08,865 Vi kan gjøre fire flere minutter av spørsmålene, så 617 00:30:08,865 --> 00:30:10,740 vi vil hoppe i koding. 618 00:30:10,740 --> 00:30:12,645 >> PUBLIKUM: Kan vi gå inn i Ajax og snakke om hva det er? 619 00:30:12,645 --> 00:30:15,670 620 00:30:15,670 --> 00:30:17,800 >> JASON Hirschhorn: Snakk med Avi etter. 621 00:30:17,800 --> 00:30:19,170 Han ba om at spørsmålet tidligere. 622 00:30:19,170 --> 00:30:19,630 >> PUBLIKUM: My bad. 623 00:30:19,630 --> 00:30:20,880 >> JASON Hirschhorn: Ingen grunn til bekymring. 624 00:30:20,880 --> 00:30:22,740 625 00:30:22,740 --> 00:30:24,290 >> PUBLIKUM: Hva er egentlig JSON? 626 00:30:24,290 --> 00:30:28,360 627 00:30:28,360 --> 00:30:28,900 >> JASON Hirschhorn: Hva er JSON? 628 00:30:28,900 --> 00:30:29,930 Hva er ditt spørsmål? 629 00:30:29,930 --> 00:30:31,350 >> PUBLIKUM: Bare veldig raskt, forskjellen 630 00:30:31,350 --> 00:30:32,870 print og ekko i PHP. 631 00:30:32,870 --> 00:30:36,200 632 00:30:36,200 --> 00:30:38,490 >> JASON Hirschhorn: Hvorfor ikke google forskjellen mellom print og ekko? 633 00:30:38,490 --> 00:30:40,670 Liten forskjell. 634 00:30:40,670 --> 00:30:42,020 Ikke så stor av en avtale. 635 00:30:42,020 --> 00:30:44,960 Men du bør definitivt google det, og som vil gi deg et godt svar. 636 00:30:44,960 --> 00:30:46,910 >> JSON, trolig større av en avtale. 637 00:30:46,910 --> 00:30:49,300 Står for Javascript Object Notation. 638 00:30:49,300 --> 00:30:51,865 Og da har vi sett JSON blir brukt? 639 00:30:51,865 --> 00:30:55,110 640 00:30:55,110 --> 00:30:55,900 Når har du sett - 641 00:30:55,900 --> 00:30:57,400 hvorfor du selv vet ordet JSON? 642 00:30:57,400 --> 00:30:59,140 Når har du sett det? 643 00:30:59,140 --> 00:31:02,200 >> PUBLIKUM: Når vi får aksjekurser for finans. 644 00:31:02,200 --> 00:31:02,690 >> JASON Hirschhorn: Så du så det når du var å få 645 00:31:02,690 --> 00:31:04,830 aksjekurser for finans. 646 00:31:04,830 --> 00:31:07,340 Og hvorfor gjorde du det? 647 00:31:07,340 --> 00:31:09,000 >> PUBLIKUM: Da vi var å hente all informasjonen 648 00:31:09,000 --> 00:31:10,400 kom i dette formatet. 649 00:31:10,400 --> 00:31:11,700 >> JASON Hirschhorn: Så du ville få - 650 00:31:11,700 --> 00:31:12,540 ja. 651 00:31:12,540 --> 00:31:13,020 Gå fremover. 652 00:31:13,020 --> 00:31:15,210 >> PUBLIKUM: [uhørbart] informasjon ut av et objekt? 653 00:31:15,210 --> 00:31:17,170 >> JASON Hirschhorn: Begge de satt sammen er svaret 654 00:31:17,170 --> 00:31:18,100 vi leter etter. 655 00:31:18,100 --> 00:31:21,240 Du ønsker informasjon fra denne annen webside. 656 00:31:21,240 --> 00:31:23,790 Og du håper at når du er få denne informasjonen, ville det være 657 00:31:23,790 --> 00:31:26,720 presentert for deg i noen form av standardisert format. 658 00:31:26,720 --> 00:31:29,530 >> Alle er sikkert kjent med kommaseparerte verdier. 659 00:31:29,530 --> 00:31:32,970 Du kan eksportere et Excel-regneark eller noen form for regneark som en liste over 660 00:31:32,970 --> 00:31:34,540 kommadelte verdier. 661 00:31:34,540 --> 00:31:37,370 Og komma dele alt de ulike feltene. 662 00:31:37,370 --> 00:31:38,780 Javascript Object Notation - 663 00:31:38,780 --> 00:31:39,440 JSON - 664 00:31:39,440 --> 00:31:43,540 er en annen type av standardiserte layout av ting. 665 00:31:43,540 --> 00:31:49,010 Og det er ofte hvordan vi tar frem informasjon fra våre Ajax spørringer. 666 00:31:49,010 --> 00:31:51,770 >> Så i dette tilfellet, vi fikk det fra Yahoo nettstedet. 667 00:31:51,770 --> 00:31:53,600 De returnere ting til oss i en JSON objekt. 668 00:31:53,600 --> 00:31:56,790 Og da vet vi, fordi det er en standard, hvordan det er 669 00:31:56,790 --> 00:31:57,250 kommer til å se ut. 670 00:31:57,250 --> 00:32:00,760 Så vi kan reagere gjennom matrisen som er returnert til oss, rekken av 671 00:32:00,760 --> 00:32:03,180 objektene som blir returnert til oss. 672 00:32:03,180 --> 00:32:07,770 >> Vi trenger sannsynligvis trenger å vite nøklene, men de som regel gi deg 673 00:32:07,770 --> 00:32:11,370 dokumentasjon på nettsiden når du henter noen JSON 674 00:32:11,370 --> 00:32:12,170 notasjon for dem. 675 00:32:12,170 --> 00:32:16,940 På samme måte kan du JSON kode et objekt. 676 00:32:16,940 --> 00:32:19,900 Så det er en funksjon JSON underst kode. 677 00:32:19,900 --> 00:32:22,970 Og slik at du kan ta et objekt som du har opprettet, JSON kode den, og 678 00:32:22,970 --> 00:32:26,390 gi det videre til noe annet, hvis du vil. 679 00:32:26,390 --> 00:32:30,770 Og JSON dekode finnes også for et lignende formål, eller for 680 00:32:30,770 --> 00:32:31,780 den motsatte hensikt. 681 00:32:31,780 --> 00:32:36,570 >> PUBLIKUM: Trenger vi å vite koding for hash tabeller og prøver? 682 00:32:36,570 --> 00:32:40,300 Eller trenger vi bare å forstå hvordan de brukes, konseptuelt? 683 00:32:40,300 --> 00:32:44,570 >> JASON Hirschhorn: Så, rekk opp hånden hvis du gjorde en hash tabell for p satt fire 684 00:32:44,570 --> 00:32:46,920 med en link liste. 685 00:32:46,920 --> 00:32:47,960 Eller p satt fem. 686 00:32:47,960 --> 00:32:49,060 Så det var et stort flertall av folket. 687 00:32:49,060 --> 00:32:50,390 P satt fem, seks, hvem vet. 688 00:32:50,390 --> 00:32:51,240 For lenge siden. 689 00:32:51,240 --> 00:32:54,140 >> Så de aller fleste av dere gjorde hash tabeller med link lister. 690 00:32:54,140 --> 00:32:56,525 Og fordi det er sannsynligvis mer felles tilnærming, og fordi vi har brukt 691 00:32:56,525 --> 00:32:59,460 mye tid på å gjøre link lister og hasj tabeller, bør du sannsynligvis være 692 00:32:59,460 --> 00:33:02,600 ganske kjent med hvordan å kode en hash tabell og en link liste. 693 00:33:02,600 --> 00:33:05,060 >> Og hvis du tenker tilbake på det problemet satt, det var ikke egentlig 694 00:33:05,060 --> 00:33:06,410 så hardt som du forventet. 695 00:33:06,410 --> 00:33:08,120 Og det var mye mindre kode enn du forventet. 696 00:33:08,120 --> 00:33:11,150 697 00:33:11,150 --> 00:33:14,650 Jeg vil si at du bør vite hvordan du skal kode en hash tabell eller en link liste. 698 00:33:14,650 --> 00:33:17,010 Ikke at du vil bli bedt om det, nødvendigvis, men du bør 699 00:33:17,010 --> 00:33:19,730 sikkert vet det. 700 00:33:19,730 --> 00:33:21,860 >> Også, hvis du ser gjennom tidligere tester, Det har vært mye 701 00:33:21,860 --> 00:33:26,450 spørsmål om å skrive funksjoner på link lister eller dobbelt-lenkede lister. 702 00:33:26,450 --> 00:33:28,370 Det ser ut til å komme opp hvert eneste år. 703 00:33:28,370 --> 00:33:31,940 Høyre setter inn på en link liste, ikke sant slette fra en link liste, akkurat sett 704 00:33:31,940 --> 00:33:33,610 for en dobbelt-lenket liste, et cetera. 705 00:33:33,610 --> 00:33:36,170 Så det, føler jeg ganske komfortabel sier du burde vite det. 706 00:33:36,170 --> 00:33:40,600 >> For prøve, ville jeg si at du bør sikkert vet hvordan det fungerer, og kanskje 707 00:33:40,600 --> 00:33:43,570 gi noen pseudo for hvordan å kode det og sette det opp. 708 00:33:43,570 --> 00:33:45,600 Men det ville ikke være den verste i verden hvis du ikke vet hvordan du skal 709 00:33:45,600 --> 00:33:48,870 kode det i C. Det ville være flott hvis du visste hvordan å kode det i C, men jeg tror 710 00:33:48,870 --> 00:33:52,516 sannsynligvis pseudo for en prøve ville være det meste du trenger 711 00:33:52,516 --> 00:33:53,270 å vite for en prøve. 712 00:33:53,270 --> 00:33:53,930 >> PUBLIKUM: Ekstra kreditt? 713 00:33:53,930 --> 00:33:58,290 >> JASON Hirschhorn: Og samme med, hvis vi gå inn i binære søketrær, kanskje du 714 00:33:58,290 --> 00:34:02,320 trenger - og du har sett i det siste, Vi har gjort mye av - du vet hvordan 715 00:34:02,320 --> 00:34:03,380 binært søketre fungerer. 716 00:34:03,380 --> 00:34:07,150 Du bør trolig være i stand til å sette en opp i pseudo-kode. 717 00:34:07,150 --> 00:34:10,510 Men fordi det store flertallet av mennesker gjorde ikke det på problemet 718 00:34:10,510 --> 00:34:13,880 sett, vil jeg si det er trolig mindre viktig at du vet hvordan å kode 719 00:34:13,880 --> 00:34:17,380 og sette opp et tre sånn. 720 00:34:17,380 --> 00:34:19,679 >> Eventuelle andre spørsmål? 721 00:34:19,679 --> 00:34:23,234 Dessuten kan vi spørre dem gjennom som vi går gjennom noen problemer. 722 00:34:23,234 --> 00:34:27,170 OK, vi kommer til å gå videre. 723 00:34:27,170 --> 00:34:28,230 Hopp dette lysbildet for nå. 724 00:34:28,230 --> 00:34:32,449 >> Snakker av trær, er at den første spørsmålet jeg har til dere. 725 00:34:32,449 --> 00:34:34,270 Fordi dette er et problem. 726 00:34:34,270 --> 00:34:37,380 Jeg vil si det er svært sannsynlig at du vil få et problem som dette på din quiz 727 00:34:37,380 --> 00:34:43,659 spør deg å kode noen form for innsatsen, slette, søke, for en type 728 00:34:43,659 --> 00:34:45,270 av datastruktur vi har sett. 729 00:34:45,270 --> 00:34:47,719 >> Som kommer opp hvert år, og vi har brukt en mye tid i andre halvdel av dette 730 00:34:47,719 --> 00:34:50,270 semester går over disse datatypene. 731 00:34:50,270 --> 00:34:54,170 Så akkurat nå, jeg har definert en node i et binært søk treet. 732 00:34:54,170 --> 00:34:58,490 Og hva jeg vil at du skal gjøre er gitt et binært søketre som starter 733 00:34:58,490 --> 00:35:05,450 på denne noden stjerners rot, fullføre gjennomføring av funksjonen nedenfor, 734 00:35:05,450 --> 00:35:07,430 som skjer for å være et funn funksjon. 735 00:35:07,430 --> 00:35:09,260 Og gjøre det med og uten rekursjoner. 736 00:35:09,260 --> 00:35:10,860 >> Så jeg vil at du skal skrive to funksjoner. 737 00:35:10,860 --> 00:35:14,310 En gjør dette med rekursjon, en gjøre dette uten rekursjon. 738 00:35:14,310 --> 00:35:18,050 Og ikke anta at root vil være ikke-null. 739 00:35:18,050 --> 00:35:21,790 Så vi leter etter heltallet jeg i treet som starter på rot, og vi trenger 740 00:35:21,790 --> 00:35:25,280 å skrive dette rekursivt og iterativt. 741 00:35:25,280 --> 00:35:26,300 Yeah. 742 00:35:26,300 --> 00:35:29,730 >> PUBLIKUM: Så du vil at vi skal returnere true hvis vi finner det, og usann hvis vi 743 00:35:29,730 --> 00:35:30,480 ikke synes det. 744 00:35:30,480 --> 00:35:32,160 >> JASON Hirschhorn: Hvordan visste du det? 745 00:35:32,160 --> 00:35:33,100 Hvordan visste du det? 746 00:35:33,100 --> 00:35:36,500 >> PUBLIKUM: Jeg spurte først, men jeg var forutsatt, fordi det står bool på 747 00:35:36,500 --> 00:35:37,490 begynnelsen av funksjon. 748 00:35:37,490 --> 00:35:37,880 >> JASON Hirschhorn: Høyre. 749 00:35:37,880 --> 00:35:41,020 Det sier bool, så jeg trenger ikke engang å fortelle deg hva jeg forventer du å gå tilbake 750 00:35:41,020 --> 00:35:41,350 fordi det står rett der. 751 00:35:41,350 --> 00:35:42,280 Men det er riktig. 752 00:35:42,280 --> 00:35:43,510 Tilbake, sant eller usant. 753 00:35:43,510 --> 00:35:47,630 >> Så før du begynner, vil jeg anbefale, hvis du er ukjent med 754 00:35:47,630 --> 00:35:51,300 binære søketrær, raskt tegning et bilde av det å få 755 00:35:51,300 --> 00:35:51,750 forståelse, ikke sant. 756 00:35:51,750 --> 00:35:54,720 Det vil også hjelpe deg når du skriver koden din og sjekke det. 757 00:35:54,720 --> 00:35:57,830 Igjen, du har heller ikke så mye tid på quizen for å gjøre alle de tingene 758 00:35:57,830 --> 00:35:59,030 at vi ber deg om å gjøre. 759 00:35:59,030 --> 00:36:02,350 Så skrive pseudo-kode er svært nyttig. 760 00:36:02,350 --> 00:36:05,310 >> Og vi vanligvis gi om - 761 00:36:05,310 --> 00:36:06,820 hvis pseudo er perfekt riktig, er at 762 00:36:06,820 --> 00:36:08,910 vanligvis 50% på et spørsmål. 763 00:36:08,910 --> 00:36:11,410 Så det er ikke en fast regel, men hvis du bare skrive pseudo og det er 764 00:36:11,410 --> 00:36:13,460 riktig, er det vanligvis 50%. 765 00:36:13,460 --> 00:36:14,970 Så jeg vil alltid anbefale - 766 00:36:14,970 --> 00:36:16,870 hvis du er presset for tid, eller selv om du bare prøver å finne ut av det - 767 00:36:16,870 --> 00:36:18,290 starter med pseudo. 768 00:36:18,290 --> 00:36:24,840 Og til slutt, hvis du kunne skrive dette alt i C, vil det være fantastisk. 769 00:36:24,840 --> 00:36:29,010 >> Så la oss ta tre minutter å jobbe med dette programmet. 770 00:36:29,010 --> 00:36:33,120 Og så skal vi skrive pseudo for det bare én gang, og deretter 771 00:36:33,120 --> 00:36:35,455 vi kommer til å kode det rekursivt og deretter gjentatte ganger. 772 00:36:35,455 --> 00:37:28,720 773 00:37:28,720 --> 00:37:30,760 >> Hvis du har spørsmål, føler gratis heve hånden. 774 00:37:30,760 --> 00:37:34,270 Glad for å gå rundt og svare på dem før vi starter som en gruppe. 775 00:37:34,270 --> 00:39:22,600 776 00:39:22,600 --> 00:39:27,200 >> La oss fortsette, og vi kommer til å Pseudo den rekursive versjonen av 777 00:39:27,200 --> 00:39:29,830 dette, og da vil vi kode det. 778 00:39:29,830 --> 00:39:33,380 Så en rekursiv funksjon trenger to ting. 779 00:39:33,380 --> 00:39:35,960 Dette kan være et spørsmål som du kan bli bedt om. 780 00:39:35,960 --> 00:39:37,950 Trenger to ting. 781 00:39:37,950 --> 00:39:40,610 Hvem kan heve sin hånd og fortell meg hva de to tingene en rekursiv 782 00:39:40,610 --> 00:39:43,680 Funksjonen trenger? 783 00:39:43,680 --> 00:39:45,030 Per definisjon har to ting. 784 00:39:45,030 --> 00:39:46,280 Hva er de to tingene? 785 00:39:46,280 --> 00:39:48,580 786 00:39:48,580 --> 00:39:49,830 Nye hender. 787 00:39:49,830 --> 00:39:55,050 788 00:39:55,050 --> 00:39:56,390 Ja, Alden. 789 00:39:56,390 --> 00:39:57,980 >> PUBLIKUM: Så jeg er ikke helt sikker på om dette er terminologien, men - 790 00:39:57,980 --> 00:39:59,715 >> JASON Hirschhorn: Jeg er glad du heve hånden din. 791 00:39:59,715 --> 00:40:03,380 >> PUBLIKUM: Det er behov for en base case, og det er behov for en rekursiv trinn. 792 00:40:03,380 --> 00:40:03,960 >> JASON Hirschhorn: Perfect. 793 00:40:03,960 --> 00:40:06,340 Den trenger en base case og en rekursiv trinn. 794 00:40:06,340 --> 00:40:10,430 Så hva er vår base case her? 795 00:40:10,430 --> 00:40:12,950 >> PUBLIKUM: F rot lik lik null. 796 00:40:12,950 --> 00:40:15,110 Beklager, bare i pseudokode, hvis det er null. 797 00:40:15,110 --> 00:40:16,360 Hvis roten er null. 798 00:40:16,360 --> 00:40:21,900 799 00:40:21,900 --> 00:40:23,540 >> JASON Hirschhorn: Hvis roten er null. 800 00:40:23,540 --> 00:40:23,850 Det er utmerket. 801 00:40:23,850 --> 00:40:24,610 Det er vår base case. 802 00:40:24,610 --> 00:40:25,910 Det er det vi skal å sjekke hver gang. 803 00:40:25,910 --> 00:40:28,000 Og base case er første du gjør. 804 00:40:28,000 --> 00:40:29,720 Hvis du treffer base case, er du ferdig. 805 00:40:29,720 --> 00:40:34,140 >> Nå trenger vi vår rekursive kall, og jeg vil være villig til å satse vi trenger et par 806 00:40:34,140 --> 00:40:35,440 rekursiv kaller her. 807 00:40:35,440 --> 00:40:39,630 Fordi det er et tre, og vi kunne gå flere måter. 808 00:40:39,630 --> 00:40:43,190 Så hvis rot er null, er vi godt. 809 00:40:43,190 --> 00:40:44,970 >> Hva foreslår du? 810 00:40:44,970 --> 00:40:49,640 Og nå skal jeg begynne å ringe ut på dere, fordi jeg vet dere 811 00:40:49,640 --> 00:40:50,540 alle vet dette. 812 00:40:50,540 --> 00:40:52,610 Men Annie, hva skal neste linje være? 813 00:40:52,610 --> 00:40:53,570 Hva om vi fant det? 814 00:40:53,570 --> 00:40:55,526 Hva gjør vi? 815 00:40:55,526 --> 00:40:57,300 >> PUBLIKUM: Hvis vi fant det? 816 00:40:57,300 --> 00:40:59,160 >> JASON Hirschhorn: Eller hva bør være det - 817 00:40:59,160 --> 00:41:02,124 gi meg den pseudo for linje der vi fant det. 818 00:41:02,124 --> 00:41:04,700 >> PUBLIKUM: Hvis jeg er lik roten jeg? 819 00:41:04,700 --> 00:41:06,650 >> JASON Hirschhorn: Og så hva skal vi gjøre? 820 00:41:06,650 --> 00:41:07,590 >> PUBLIKUM: Return sant. 821 00:41:07,590 --> 00:41:08,530 >> JASON Hirschhorn: Great. 822 00:41:08,530 --> 00:41:16,890 Så hvis jeg er i - 823 00:41:16,890 --> 00:41:17,400 Åh, de er begge kalt jeg. 824 00:41:17,400 --> 00:41:18,470 Det blir forvirrende. 825 00:41:18,470 --> 00:41:23,830 Men hvis jeg er jeg returnere true. 826 00:41:23,830 --> 00:41:25,620 Det er trolig den neste ting vi bør gjøre. 827 00:41:25,620 --> 00:41:27,300 Er fornuftig. 828 00:41:27,300 --> 00:41:30,610 >> OK, nå har vi ikke gjort vår rekursive ringe ennå, skjønt, fordi en rekursiv 829 00:41:30,610 --> 00:41:32,300 samtale vil kalle denne funksjonen igjen. 830 00:41:32,300 --> 00:41:41,460 Så hva bør neste linje av pseudo være? 831 00:41:41,460 --> 00:41:42,730 Anna. 832 00:41:42,730 --> 00:41:43,980 >> PUBLIKUM: Venstresiden. 833 00:41:43,980 --> 00:41:47,040 834 00:41:47,040 --> 00:41:47,590 >> JASON Hirschhorn: Vær konkret, though. 835 00:41:47,590 --> 00:41:50,600 Dette er et binært søketre, så hva ikke sjekker venstre side innebære? 836 00:41:50,600 --> 00:41:51,890 >> PUBLIKUM: Så node - 837 00:41:51,890 --> 00:41:53,342 Jeg beklager, rot. 838 00:41:53,342 --> 00:41:55,306 Og så arrow venstre. 839 00:41:55,306 --> 00:41:59,234 840 00:41:59,234 --> 00:42:00,720 Node, node, beklager. 841 00:42:00,720 --> 00:42:01,978 Jeg leser ikke det riktig. 842 00:42:01,978 --> 00:42:05,700 Det kalles node, ikke sant? 843 00:42:05,700 --> 00:42:09,270 >> JASON Hirschhorn: Det vil bli kalt root i den funksjonen, men uansett. 844 00:42:09,270 --> 00:42:10,925 Den venstre siden - ja? 845 00:42:10,925 --> 00:42:13,780 >> PUBLIKUM: Hvis det ikke er lik jeg, så vi kommer til å ringe 846 00:42:13,780 --> 00:42:15,130 funksjonen igjen? 847 00:42:15,130 --> 00:42:15,490 >> JASON Hirschhorn: Det er riktig. 848 00:42:15,490 --> 00:42:17,870 Hvis det ikke er lik i, vi skal å kalle funksjonen igjen. 849 00:42:17,870 --> 00:42:21,435 Men hvilken side av treet skal vi å kalle funksjonen igjen? 850 00:42:21,435 --> 00:42:22,685 >> PUBLIKUM: På venstre side. 851 00:42:22,685 --> 00:42:25,932 852 00:42:25,932 --> 00:42:27,670 >> JASON Hirschhorn: Vi er ikke alltid kommer til å kalle det venstre, hvis det 853 00:42:27,670 --> 00:42:29,190 ikke lik det. 854 00:42:29,190 --> 00:42:29,610 >> PUBLIKUM: Oh, sorry. 855 00:42:29,610 --> 00:42:31,200 Ring til høyre. 856 00:42:31,200 --> 00:42:33,680 >> JASON Hirschhorn: Vi vil vite spesielt, men - husk, i en 857 00:42:33,680 --> 00:42:37,700 binært søketre, alt til venstre side er mindre. 858 00:42:37,700 --> 00:42:40,460 Alt til høyre side er større. 859 00:42:40,460 --> 00:42:43,990 Så det er bare ikke - ja, gå videre. 860 00:42:43,990 --> 00:42:46,805 >> PUBLIKUM: Hvis det er mindre enn jeg, da - 861 00:42:46,805 --> 00:42:52,130 862 00:42:52,130 --> 00:42:53,380 hvis det er til venstre - 863 00:42:53,380 --> 00:42:56,160 864 00:42:56,160 --> 00:42:58,606 >> JASON Hirschhorn: Så hvis ri er mindre enn - 865 00:42:58,606 --> 00:43:01,854 866 00:43:01,854 --> 00:43:09,110 så hvis våre tall er mindre enn jeg, hvilken side ønsker vi å gå til? 867 00:43:09,110 --> 00:43:15,120 >> PUBLIKUM: Vi ønsker å gå på den høyre siden. 868 00:43:15,120 --> 00:43:16,250 >> JASON Hirschhorn: Vi ønsker å gå - 869 00:43:16,250 --> 00:43:19,210 la meg trekke en rask tre. 870 00:43:19,210 --> 00:43:23,850 Hvis dette er 5, vil dette være tre. 871 00:43:23,850 --> 00:43:29,410 Så hvis ri er mindre enn fem, hva side ønsker vi å gå til? 872 00:43:29,410 --> 00:43:30,390 >> PUBLIKUM: Sorry, hva? 873 00:43:30,390 --> 00:43:33,190 >> JASON Hirschhorn: Nummeret vårt er mindre enn antallet vi er 874 00:43:33,190 --> 00:43:34,710 ser på akkurat nå. 875 00:43:34,710 --> 00:43:35,890 >> PUBLIKUM: Oh, så vi ønsker å gå til venstre side. 876 00:43:35,890 --> 00:43:36,240 Yeah. 877 00:43:36,240 --> 00:43:36,920 Unnskyld. 878 00:43:36,920 --> 00:43:37,230 >> JASON Hirschhorn: Nettopp. 879 00:43:37,230 --> 00:43:38,480 Ingen grunn til bekymring. 880 00:43:38,480 --> 00:43:41,020 I det binære søketreet, alt lavere er til venstre, 881 00:43:41,020 --> 00:43:42,110 større er til høyre. 882 00:43:42,110 --> 00:43:46,700 Så hvis våre tall er mindre enn det jeg vi sjekke - 883 00:43:46,700 --> 00:43:48,790 fordi du ser på node, har det en i - 884 00:43:48,790 --> 00:43:50,040 da ønsker du å gå til venstre. 885 00:43:50,040 --> 00:43:55,480 886 00:43:55,480 --> 00:43:56,720 >> Og dette er en enkel en. 887 00:43:56,720 --> 00:44:01,700 Hva er det den andre linjen av pseudo vi trenger å skrive? 888 00:44:01,700 --> 00:44:02,910 Carlos? 889 00:44:02,910 --> 00:44:05,970 >> PUBLIKUM: Samme greia, du bare slå den til en større enn skilt 890 00:44:05,970 --> 00:44:07,420 og gå til høyre. 891 00:44:07,420 --> 00:44:08,350 >> JASON Hirschhorn: Kan du si det en gang til? 892 00:44:08,350 --> 00:44:11,640 >> PUBLIKUM: Hvis våre tall er større enn jeg, gå til høyre. 893 00:44:11,640 --> 00:44:24,900 894 00:44:24,900 --> 00:44:26,690 >> JASON Hirschhorn: Excellent jobb på pseudo. 895 00:44:26,690 --> 00:44:28,700 La oss gjøre dette i det virkelige kode. 896 00:44:28,700 --> 00:44:33,280 Og igjen, vil dette pseudo sannsynligvis få deg, fordi det er 897 00:44:33,280 --> 00:44:35,480 riktig, 50% på dette spørsmålet. 898 00:44:35,480 --> 00:44:39,720 Men dette pseudooversetter også en til en, i det vesentlige, i koden. 899 00:44:39,720 --> 00:44:44,380 >> Så la oss gjøre dette i C. Hvem kan gi meg den første linjen med kode? 900 00:44:44,380 --> 00:44:48,390 Egentlig først, før jeg gjør det, la meg trekke over - 901 00:44:48,390 --> 00:44:49,260 >> PUBLIKUM: Jeg har et spørsmål. 902 00:44:49,260 --> 00:44:52,430 Hvorfor gjorde du rykke inn linje jeg ga deg? 903 00:44:52,430 --> 00:44:54,160 >> JASON Hirschhorn: Fordi Jeg kunne ikke skrive. 904 00:44:54,160 --> 00:44:55,240 Jeg vet ikke. 905 00:44:55,240 --> 00:44:55,650 Du har rett. 906 00:44:55,650 --> 00:44:57,780 At linjen skal være der borte. 907 00:44:57,780 --> 00:45:11,600 908 00:45:11,600 --> 00:45:14,480 >> OK, her er vår funksjon. 909 00:45:14,480 --> 00:45:18,090 Og la meg trekke over, også, vår definisjon av en node. 910 00:45:18,090 --> 00:45:23,320 911 00:45:23,320 --> 00:45:27,180 Hva skjer hvis vi ikke skrive typedef? 912 00:45:27,180 --> 00:45:30,240 Er det noen som vet? 913 00:45:30,240 --> 00:45:32,570 >> PUBLIKUM: Det ville ikke kompilere. 914 00:45:32,570 --> 00:45:33,860 >> JASON Hirschhorn: Det ville kompilere, ja. 915 00:45:33,860 --> 00:45:37,120 >> PUBLIKUM: Ville det bare erklære en eksempel i stedet for å gjøre det til en ny 916 00:45:37,120 --> 00:45:39,840 type du kunne erklære flere forekomster av? 917 00:45:39,840 --> 00:45:41,700 >> JASON Hirschhorn: Så det ville ikke vet - det ville ikke 918 00:45:41,700 --> 00:45:43,120 bare erklære én type. 919 00:45:43,120 --> 00:45:46,150 Du kan fortsatt gjøre mye av noder. 920 00:45:46,150 --> 00:45:48,070 >> PUBLIKUM: Men ville ikke vi må skrive struct node hver gang? 921 00:45:48,070 --> 00:45:48,640 >> JASON Hirschhorn: Det er riktig. 922 00:45:48,640 --> 00:45:50,960 Du må skrive struct node hver gang, i stedet for bare node. 923 00:45:50,960 --> 00:45:55,270 Men med typedef, kan du bare skrive node hver eneste gang. 924 00:45:55,270 --> 00:45:58,240 OK, hvem har ikke gitt - ja, Avica. 925 00:45:58,240 --> 00:46:01,520 >> PUBLIKUM: Hvis root tilsvarer likemenn null, returnerer false. 926 00:46:01,520 --> 00:46:07,130 927 00:46:07,130 --> 00:46:09,490 >> JASON Hirschhorn: Great, og det er vår base case. 928 00:46:09,490 --> 00:46:11,200 Neste linje med kode. 929 00:46:11,200 --> 00:46:13,999 Noen som ikke har gitt meg en linje med kode ennå? 930 00:46:13,999 --> 00:46:14,945 Yeah. 931 00:46:14,945 --> 00:46:23,360 >> PUBLIKUM: Root pilen i er lik lik i. 932 00:46:23,360 --> 00:46:27,260 Deretter returnere true. 933 00:46:27,260 --> 00:46:29,162 >> JASON Hirschhorn: Great. 934 00:46:29,162 --> 00:46:32,048 Neste linje? 935 00:46:32,048 --> 00:46:32,790 Yeah. 936 00:46:32,790 --> 00:46:34,010 Noen andre? 937 00:46:34,010 --> 00:46:36,774 Og så kan du gå videre. 938 00:46:36,774 --> 00:46:44,820 >> PUBLIKUM: Else hvis root pilen jeg er mindre enn jeg tilbake 939 00:46:44,820 --> 00:46:47,737 funksjon som heter find root - 940 00:46:47,737 --> 00:46:50,611 >> JASON Hirschhorn: Beklager. 941 00:46:50,611 --> 00:46:56,272 >> PUBLIKUM: Return find root peker til venstre komma jeg. 942 00:46:56,272 --> 00:47:01,760 943 00:47:01,760 --> 00:47:08,440 >> JASON Hirschhorn: Så hvis ri er større enn ting i treet, vi ønsker å 944 00:47:08,440 --> 00:47:09,573 gå til venstre? 945 00:47:09,573 --> 00:47:11,790 >> PUBLIKUM: Nei, jeg hadde det byttet. 946 00:47:11,790 --> 00:47:13,040 >> JASON Hirschhorn: Hvem av dem? 947 00:47:13,040 --> 00:47:16,310 948 00:47:16,310 --> 00:47:16,950 >> PUBLIKUM: Nei, ja. 949 00:47:16,950 --> 00:47:19,050 Jeg har en mindre enn signere der. 950 00:47:19,050 --> 00:47:22,890 >> JASON Hirschhorn: Høyre, hvis ri er mindre enn hva som er i roten - 951 00:47:22,890 --> 00:47:25,660 vår nåværende rot - så vi ønsker å gå til venstre. 952 00:47:25,660 --> 00:47:26,960 Og hva er den siste linjen, du? 953 00:47:26,960 --> 00:47:30,930 >> PUBLIKUM: I utgangspunktet det samme, bortsett slå større enn eller 954 00:47:30,930 --> 00:47:34,690 lik mindre enn, og fra venstre mot høyre. 955 00:47:34,690 --> 00:47:43,590 956 00:47:43,590 --> 00:47:43,680 >> JASON Hirschhorn: Excellent. 957 00:47:43,680 --> 00:47:48,430 Er det noen som har noen spørsmål om dette? 958 00:47:48,430 --> 00:47:52,560 Så noen andre ting som ville har vært riktig, er at 959 00:47:52,560 --> 00:47:53,810 kunne være-ltiff. 960 00:47:53,810 --> 00:47:56,520 961 00:47:56,520 --> 00:47:59,520 Gjett, teknisk sett, ingen av disse virkelig trenger også å være-ltiff. 962 00:47:59,520 --> 00:48:00,950 >> Også, er det sannsynligvis bare ett tilfelle her nede. 963 00:48:00,950 --> 00:48:02,380 Så det er trolig det siste tilfellet. 964 00:48:02,380 --> 00:48:04,000 Du trenger ikke engang at-ltiff. 965 00:48:04,000 --> 00:48:06,160 Men sannsynligvis godt å skrive det, for å være klar. 966 00:48:06,160 --> 00:48:06,660 Yeah. 967 00:48:06,660 --> 00:48:09,200 >> PUBLIKUM: Så du tror ikke det quiz - Hvis vi gjøre feil, for eksempel, 968 00:48:09,200 --> 00:48:11,725 i syntaks - 969 00:48:11,725 --> 00:48:13,990 lite syntaksfeil - 970 00:48:13,990 --> 00:48:17,810 hvordan det blir tatt i quiz? 971 00:48:17,810 --> 00:48:21,300 >> JASON Hirschhorn: Vanligvis på quiz, liten syntaksfeil eller liten 972 00:48:21,300 --> 00:48:24,010 stil feil ikke mister du poeng. 973 00:48:24,010 --> 00:48:26,610 Så hvis du har glemt et semikolon her, ville det være OK. 974 00:48:26,610 --> 00:48:30,290 Hvis du glemte å lukke dette parentes, det ville være OK. 975 00:48:30,290 --> 00:48:34,880 >> Enorme syntaksfeil som endrer funksjonelle betydningen av koden din 976 00:48:34,880 --> 00:48:37,600 dramatisk, kan du få tatt av poeng for. 977 00:48:37,600 --> 00:48:40,330 Eller generelt, bare gradering deg på hvorvidt din 978 00:48:40,330 --> 00:48:42,150 kode funksjoner, selv - 979 00:48:42,150 --> 00:48:44,830 ikke sitt design så mye, og ikke sin stil. 980 00:48:44,830 --> 00:48:50,780 981 00:48:50,780 --> 00:48:55,480 >> La oss nå kode en iterativ versjon av funn. 982 00:48:55,480 --> 00:49:00,400 983 00:49:00,400 --> 00:49:03,450 Så det kommer til å være ganske lik, men det er sikkert kommer til å være 984 00:49:03,450 --> 00:49:06,250 noen viktige forskjeller. 985 00:49:06,250 --> 00:49:09,160 Men vår pseudo kan trolig gå - 986 00:49:09,160 --> 00:49:11,610 Vi kan fortsatt ta en linje i pseudo og finne ut hva 987 00:49:11,610 --> 00:49:14,160 linjen er i dette tilfellet. 988 00:49:14,160 --> 00:49:18,010 >> Så i en iterativ versjon, hva tror du, Julia, bør 989 00:49:18,010 --> 00:49:19,260 være den første linjen? 990 00:49:19,260 --> 00:49:23,100 991 00:49:23,100 --> 00:49:26,920 >> PUBLIKUM: Igjen, i iterativ boolean, du trenger for å sette opp en for loop, ikke sant? 992 00:49:26,920 --> 00:49:27,660 >> JASON Hirschhorn: OK. 993 00:49:27,660 --> 00:49:38,480 >> PUBLIKUM: Så for like, k, for x er lik 0, x er mindre enn i. 994 00:49:38,480 --> 00:49:42,260 Eller nei, er x mindre enn størrelsen av treet. 995 00:49:42,260 --> 00:49:42,760 >> JASON Hirschhorn: Treet. 996 00:49:42,760 --> 00:49:46,660 Så vi ikke helt vet størrelsen på treet, og vi vet egentlig ikke for 997 00:49:46,660 --> 00:49:48,900 hvor mange ganger vi kan gå, så hva er en annen type løkke som kan være 998 00:49:48,900 --> 00:49:50,150 bedre i dette tilfellet? 999 00:49:50,150 --> 00:49:53,250 1000 00:49:53,250 --> 00:49:55,244 >> PUBLIKUM: Dersom annet? 1001 00:49:55,244 --> 00:49:57,070 >> JASON Hirschhorn: Dersom annet kan ikke være en løkke. 1002 00:49:57,070 --> 00:49:58,935 Så hva er en type løkke vi kan bare gå før noen tilfelle er oppfylt? 1003 00:49:58,935 --> 00:50:07,250 1004 00:50:07,250 --> 00:50:11,560 Hva er den eneste andre type løkke i C foruten en for loop? 1005 00:50:11,560 --> 00:50:11,930 >> PUBLIKUM: Selv. 1006 00:50:11,930 --> 00:50:13,380 >> JASON Hirschhorn: Mens, akkurat. 1007 00:50:13,380 --> 00:50:16,430 I en stund loop, gjør ikke trenger å vite hvordan - 1008 00:50:16,430 --> 00:50:18,450 en stund loop og for loop kan gjøre akkurat det samme, men det fine 1009 00:50:18,450 --> 00:50:21,500 om en while-loop er at vi ikke trenger å vite hvor stor vår treet er. 1010 00:50:21,500 --> 00:50:23,060 Så vi kommer til å gå helt til hva? 1011 00:50:23,060 --> 00:50:25,880 1012 00:50:25,880 --> 00:50:28,032 >> PUBLIKUM: Inntil det tilsvarer størrelsen - 1013 00:50:28,032 --> 00:50:32,320 >> JASON Hirschhorn: Vel, det er veldig lik vår rekursive tilfelle. 1014 00:50:32,320 --> 00:50:33,360 Så - 1015 00:50:33,360 --> 00:50:36,470 >> PUBLIKUM: Mens root Jeg er ikke lik jeg. 1016 00:50:36,470 --> 00:50:37,620 >> JASON Hirschhorn: Det er veldig nær. 1017 00:50:37,620 --> 00:50:39,430 Mens rot i - 1018 00:50:39,430 --> 00:50:40,610 la oss prøve det. 1019 00:50:40,610 --> 00:50:41,180 Jeg tror ikke [uhørbart] 1020 00:50:41,180 --> 00:50:43,026 hvor root jeg ikke lik jeg. 1021 00:50:43,026 --> 00:50:47,380 1022 00:50:47,380 --> 00:50:49,460 Vi må kanskje endre den i en litt litt, men det høres ut som det er ganske 1023 00:50:49,460 --> 00:50:50,160 bra, for nå. 1024 00:50:50,160 --> 00:50:51,710 Så vi vil gjøre det. 1025 00:50:51,710 --> 00:50:55,660 >> Husk også, vi kan ikke anta per spørsmålet. 1026 00:50:55,660 --> 00:50:57,880 Du trenger ikke anta at root vil være ikke-null. 1027 00:50:57,880 --> 00:51:01,914 Så hva tror du det aller første vi bør gjøre er? 1028 00:51:01,914 --> 00:51:02,770 >> PUBLIKUM: Bare gjør det samme ting som før. 1029 00:51:02,770 --> 00:51:05,260 Hvis roten tilsvarer likemenn null, returnerer false. 1030 00:51:05,260 --> 00:51:11,030 1031 00:51:11,030 --> 00:51:12,130 >> JASON Hirschhorn: Great. 1032 00:51:12,130 --> 00:51:13,820 Så det kan være null. 1033 00:51:13,820 --> 00:51:15,810 Så vi ønsker å bli kvitt av det med en gang. 1034 00:51:15,810 --> 00:51:19,560 Og så skal vi sjekke om root jeg ikke lik jeg. 1035 00:51:19,560 --> 00:51:24,480 Så sier vi søker i dette treet for 3, rot i ikke lik i, nå 1036 00:51:24,480 --> 00:51:25,950 vi er i vår mens loop. 1037 00:51:25,950 --> 00:51:27,500 Hva ønsker vi å gjøre? 1038 00:51:27,500 --> 00:51:32,320 1039 00:51:32,320 --> 00:51:35,430 Og igjen, det kommer til å være ganske lik vår rekursive versjonen. 1040 00:51:35,430 --> 00:51:36,230 Yeah. 1041 00:51:36,230 --> 00:51:40,470 >> PUBLIKUM: Så du ønsker å veksle, eller holde det gående ned treet så lenge 1042 00:51:40,470 --> 00:51:42,400 roten er ikke lik null. 1043 00:51:42,400 --> 00:51:45,120 1044 00:51:45,120 --> 00:51:46,640 >> JASON Hirschhorn: Så lenge root er ikke lik null? 1045 00:51:46,640 --> 00:51:50,200 >> PUBLIKUM: Roten dash jeg er ikke lik null. 1046 00:51:50,200 --> 00:51:51,220 Bare rot, ja. 1047 00:51:51,220 --> 00:51:52,920 Som en lenge roten er ikke lik null. 1048 00:51:52,920 --> 00:51:54,240 >> JASON Hirschhorn: Så du vil å endre dette til roten 1049 00:51:54,240 --> 00:51:56,590 ikke lik null? 1050 00:51:56,590 --> 00:51:59,020 >> PUBLIKUM: Yeah. 1051 00:51:59,020 --> 00:52:00,800 >> PUBLIKUM: Vi kunne kombinere disse, ikke sant? 1052 00:52:00,800 --> 00:52:02,990 Vi trenger ikke hvis, i første omgang. 1053 00:52:02,990 --> 00:52:05,180 >> JASON Hirschhorn: OK, så hvis vi gjør ikke - 1054 00:52:05,180 --> 00:52:08,140 hvis vi kombinerer dem, så vi kommer til å gjøre mens roten er ikke lik null, og 1055 00:52:08,140 --> 00:52:10,800 hvis roten skjer for å være null ved begynner, hva gjør vi her nede? 1056 00:52:10,800 --> 00:52:11,450 >> PUBLIKUM: return false. 1057 00:52:11,450 --> 00:52:12,730 >> JASON Hirschhorn: Great. 1058 00:52:12,730 --> 00:52:14,110 Så begge veier trolig ville ha fungert. 1059 00:52:14,110 --> 00:52:15,645 Dette er en annen måte, og dette kombinerer det. 1060 00:52:15,645 --> 00:52:18,950 Men igjen, hvis du gjorde uansett, er vi ikke kommer til å ta av utforming 1061 00:52:18,950 --> 00:52:19,800 peker på quiz. 1062 00:52:19,800 --> 00:52:21,020 Men dette ser bra ut. 1063 00:52:21,020 --> 00:52:23,940 >> Så mens roten er ikke lik null, hva som er den første 1064 00:52:23,940 --> 00:52:25,400 ting vi ønsker å sjekke? 1065 00:52:25,400 --> 00:52:26,330 Noen andre? 1066 00:52:26,330 --> 00:52:29,720 Null, hva er det første? 1067 00:52:29,720 --> 00:52:32,850 >> PUBLIKUM: Hvis ri er mindre enn - 1068 00:52:32,850 --> 00:52:36,140 oh, tror jeg, hvis vi allerede fant det i roten. 1069 00:52:36,140 --> 00:52:40,830 Så hvis rot pilen i er lik i - 1070 00:52:40,830 --> 00:52:40,990 >> JASON Hirschhorn: Sorry? 1071 00:52:40,990 --> 00:52:45,840 >> PUBLIKUM: Hvis root pilen jeg er lik lik i - 1072 00:52:45,840 --> 00:52:47,090 >> JASON Hirschhorn: Hva gjør vi? 1073 00:52:47,090 --> 00:52:50,300 1074 00:52:50,300 --> 00:52:51,550 >> PUBLIKUM: Return sant. 1075 00:52:51,550 --> 00:52:58,850 1076 00:52:58,850 --> 00:52:59,280 >> JASON Hirschhorn: Great. 1077 00:52:59,280 --> 00:53:00,530 Og hva blir det neste? 1078 00:53:00,530 --> 00:53:04,510 1079 00:53:04,510 --> 00:53:06,843 Jeff, hva er neste linje med kode? 1080 00:53:06,843 --> 00:53:16,190 >> PUBLIKUM: Hvis jeg er mindre enn roten pilen jeg, så rot tilsvarer root pil venstre. 1081 00:53:16,190 --> 00:53:21,550 >> JASON Hirschhorn: Root likemenn root pil venstre. 1082 00:53:21,550 --> 00:53:24,530 Så det er trolig den største Forskjellen her i denne iterativ 1083 00:53:24,530 --> 00:53:26,600 versjon i motsetning til den rekursiv versjon. 1084 00:53:26,600 --> 00:53:28,970 Den rekursive versjonen, vi kaller funksjonen igjen. 1085 00:53:28,970 --> 00:53:32,640 Vi kommer til å oppdatere root når vi kaller den nye funksjonen. 1086 00:53:32,640 --> 00:53:34,170 Her har vi ikke kaller en ny funksjon. 1087 00:53:34,170 --> 00:53:37,610 Vi er rett og slett bare å oppdatere rot i denne funksjonen. 1088 00:53:37,610 --> 00:53:38,880 Det er utmerket. 1089 00:53:38,880 --> 00:53:40,730 Og hva er den siste linje av koden? 1090 00:53:40,730 --> 00:53:43,950 1091 00:53:43,950 --> 00:53:44,880 Ja, Mario? 1092 00:53:44,880 --> 00:53:48,290 >> PUBLIKUM: Else rot likemenn root pil høyre. 1093 00:53:48,290 --> 00:53:49,492 >> JASON Hirschhorn: Sorry? 1094 00:53:49,492 --> 00:53:52,340 >> PUBLIKUM: Root likemenn root pil høyre. 1095 00:53:52,340 --> 00:53:55,590 1096 00:53:55,590 --> 00:53:57,140 >> JASON Hirschhorn: Kan du også skrive noe sånt som dette? 1097 00:53:57,140 --> 00:54:02,786 1098 00:54:02,786 --> 00:54:03,890 >> PUBLIKUM: Jeg har ingen anelse. 1099 00:54:03,890 --> 00:54:05,140 >> JASON Hirschhorn: Du kan ikke. 1100 00:54:05,140 --> 00:54:07,302 1101 00:54:07,302 --> 00:54:08,270 Du kan ikke gjøre pluss likemenn. 1102 00:54:08,270 --> 00:54:10,780 OK, så dette ser bra ut. 1103 00:54:10,780 --> 00:54:13,620 Hvorfor kan ikke vi bare gjøre det å rydde opp. 1104 00:54:13,620 --> 00:54:15,220 Dette ser bra ut, og dette ville fungere. 1105 00:54:15,220 --> 00:54:16,920 Og vi ville bryte ut. 1106 00:54:16,920 --> 00:54:21,460 >> Hvis root venstre var null eller rot høyre var null, ville vi komme opp her. 1107 00:54:21,460 --> 00:54:22,470 Root ville være lik null. 1108 00:54:22,470 --> 00:54:24,270 Vi ville bryte ut av vår sløyfe, og vi vil returnere false. 1109 00:54:24,270 --> 00:54:26,280 Så når vi bryter ut av loop, returnerer vi false. 1110 00:54:26,280 --> 00:54:29,520 1111 00:54:29,520 --> 00:54:32,793 >> Og igjen, en stund løkke var perfekt her fordi vi ikke vet hvordan 1112 00:54:32,793 --> 00:54:33,850 big vår treet er. 1113 00:54:33,850 --> 00:54:36,460 Vi prøvde å skrive for loop, men vi skjønte du er nødt til å finne ut hvordan 1114 00:54:36,460 --> 00:54:37,410 stort det er forut for sin tid. 1115 00:54:37,410 --> 00:54:38,720 Yeah. 1116 00:54:38,720 --> 00:54:41,790 >> PUBLIKUM: Hvis dette ikke var en binær søketre, ville det være ekte matematikk-y 1117 00:54:41,790 --> 00:54:44,220 å skrive det iterativt, ikke sant? 1118 00:54:44,220 --> 00:54:47,170 Som, hvis det var et tre, men ikke nødvendigvis - 1119 00:54:47,170 --> 00:54:49,730 så det var ikke alle mindre på venstre, og alle større på høyre side. 1120 00:54:49,730 --> 00:54:52,540 Det ville være veldig vanskelig å iterere over det, ikke sant? 1121 00:54:52,540 --> 00:54:55,720 Vi måtte redde det som var tidligere on i treet, og gå tilbake, 1122 00:54:55,720 --> 00:54:56,970 og sånt. 1123 00:54:56,970 --> 00:54:59,690 1124 00:54:59,690 --> 00:55:02,010 >> JASON Hirschhorn: Hvis det var ikke en binær søketre, hvis det var bare en 1125 00:55:02,010 --> 00:55:04,740 treet og ting var ikke sortert som dette - 1126 00:55:04,740 --> 00:55:07,440 og vi innså tidligere når Anna hjalp oss at det å gjøre det 1127 00:55:07,440 --> 00:55:08,800 sorterte hjelper oss mye - 1128 00:55:08,800 --> 00:55:12,610 vi trenger å, ja, alltid spare der vi var tidligere. 1129 00:55:12,610 --> 00:55:14,430 Men det kan være mye av hvor vi var previouslys. 1130 00:55:14,430 --> 00:55:17,730 Det kan være mye av overordnede noder. 1131 00:55:17,730 --> 00:55:22,530 >> Sannsynligvis den beste måten å gjøre det ville være å holde skyve ting inn på noen 1132 00:55:22,530 --> 00:55:24,170 type stack eller kø. 1133 00:55:24,170 --> 00:55:26,030 Du vil aldri trenge å kode dette fordi det er et vanskelig problem. 1134 00:55:26,030 --> 00:55:30,820 Men du presse noen ting på en stabel eller kø og deretter pop dem av, og 1135 00:55:30,820 --> 00:55:31,890 deretter vurdere dem. 1136 00:55:31,890 --> 00:55:34,200 >> Og så har noen andre ting der du er faktisk å sette nodene, og 1137 00:55:34,200 --> 00:55:36,090 deretter lage det, og deretter søke gjennom det. 1138 00:55:36,090 --> 00:55:38,700 Det kan være den beste måten å gjøre det. 1139 00:55:38,700 --> 00:55:42,410 OK, noen spørsmål om dette problemet? 1140 00:55:42,410 --> 00:55:44,670 >> Målgruppe: Dette er på et beslektet notat. 1141 00:55:44,670 --> 00:55:50,460 Vil vi må sammenligne kjøretider for hash tabeller, binær 1142 00:55:50,460 --> 00:55:52,160 søketrær, et cetera? 1143 00:55:52,160 --> 00:55:54,310 >> JASON Hirschhorn: Sannsynligvis. 1144 00:55:54,310 --> 00:55:56,150 Så la oss gjøre det veldig raskt. 1145 00:55:56,150 --> 00:55:58,490 Kjør tid for hash table - 1146 00:55:58,490 --> 00:55:59,090 hva er de andre? 1147 00:55:59,090 --> 00:56:00,050 Binære treet? 1148 00:56:00,050 --> 00:56:02,920 >> PUBLIKUM: Link lister. 1149 00:56:02,920 --> 00:56:04,780 >> JASON Hirschhorn: OK, la oss gjøre innsatsen. 1150 00:56:04,780 --> 00:56:09,980 Hva er den store O av innsatsen på en hash table? 1151 00:56:09,980 --> 00:56:13,080 1152 00:56:13,080 --> 00:56:15,285 Hva er forutsetningene du gjør? 1153 00:56:15,285 --> 00:56:17,760 >> PUBLIKUM: Du setter på begynnelsen av linklisten. 1154 00:56:17,760 --> 00:56:19,860 >> JASON Hirschhorn: Sannsynligvis den første forutsetningen er at det er ingen kollisjoner. 1155 00:56:19,860 --> 00:56:22,340 Hvis det ikke er noen kollisjoner, deretter innsetting tid er ett. 1156 00:56:22,340 --> 00:56:26,560 Hvis det er kollisjoner, og du er gjør separat kjeding og innsetting 1157 00:56:26,560 --> 00:56:31,880 ved begynnelsen av koblingen listen deretter innsetting er også konstant. 1158 00:56:31,880 --> 00:56:34,700 >> Hvis du gjør en hash-tabell, men du har en annen metode for å håndtere 1159 00:56:34,700 --> 00:56:36,040 med kollisjoner, hva er en annen metode? 1160 00:56:36,040 --> 00:56:41,580 1161 00:56:41,580 --> 00:56:42,960 Hva er er en annen metode for å håndtere 1162 00:56:42,960 --> 00:56:44,205 kollisjon i en hash table? 1163 00:56:44,205 --> 00:56:44,915 >> PUBLIKUM: Lineær programmering. 1164 00:56:44,915 --> 00:56:45,540 >> JASON Hirschhorn: Lineær programmering. 1165 00:56:45,540 --> 00:56:47,770 Så vi kommer til å holde utkikk for den neste åpne sted. 1166 00:56:47,770 --> 00:56:50,390 Det er ikke konstant innsetting tid. 1167 00:56:50,390 --> 00:56:52,266 Du kan ha til å gå gjennom hele bordet, slik at 1168 00:56:52,266 --> 00:56:53,936 kunne være stor O n. 1169 00:56:53,936 --> 00:56:54,740 Yeah. 1170 00:56:54,740 --> 00:56:57,690 >> PUBLIKUM: Ellers bare kjeding? 1171 00:56:57,690 --> 00:57:00,160 >> JASON Hirschhorn: Vi gjorde separat kjeding. 1172 00:57:00,160 --> 00:57:00,720 Det var den første. 1173 00:57:00,720 --> 00:57:01,560 Det er det linklisten. 1174 00:57:01,560 --> 00:57:03,720 Den fancy navn er separat kjeding. 1175 00:57:03,720 --> 00:57:06,880 Det kan være hvilken som helst type liste struktur vi tilfeldigvis gjøre i linklisten. 1176 00:57:06,880 --> 00:57:10,490 >> Så igjen, innsetting på en hash table kan være konstant tid. 1177 00:57:10,490 --> 00:57:13,160 Hva om innsetting på en stable kø? 1178 00:57:13,160 --> 00:57:19,260 1179 00:57:19,260 --> 00:57:20,640 >> PUBLIKUM: Er ikke det konstant? 1180 00:57:20,640 --> 00:57:21,530 >> JASON Hirschhorn: Det er konstant tid. 1181 00:57:21,530 --> 00:57:23,420 Du bare presser den på. 1182 00:57:23,420 --> 00:57:24,120 OK. 1183 00:57:24,120 --> 00:57:25,380 Innsetting, hva var de andre? 1184 00:57:25,380 --> 00:57:27,100 På en prøve? 1185 00:57:27,100 --> 00:57:30,252 Hva er big O for innsetting på en prøve? 1186 00:57:30,252 --> 00:57:32,808 >> PUBLIKUM: Lengde er konstant. 1187 00:57:32,808 --> 00:57:34,560 Lengde på den lengste - 1188 00:57:34,560 --> 00:57:36,998 lengden av ordet du setter inn. 1189 00:57:36,998 --> 00:57:38,210 >> JASON Hirschhorn: Sorry? 1190 00:57:38,210 --> 00:57:39,120 Vent, så hva gjorde jeg hører? 1191 00:57:39,120 --> 00:57:40,260 Du sa - hva sa du? 1192 00:57:40,260 --> 00:57:41,650 Hva var svaret, Marcus? 1193 00:57:41,650 --> 00:57:43,640 >> Publikum: Lengden av ordet du setter inn i tegn, 1194 00:57:43,640 --> 00:57:45,480 forutsatt at det er et tegn prøve. 1195 00:57:45,480 --> 00:57:46,840 >> JASON Hirschhorn: OK, så lengden av ordet. 1196 00:57:46,840 --> 00:57:49,500 Vi vil gjøre en antagelse om at det er en rekke tegn. 1197 00:57:49,500 --> 00:57:51,930 Du sa noe annet, skjønt. 1198 00:57:51,930 --> 00:57:55,490 Du sa lengden på lengste ord. 1199 00:57:55,490 --> 00:57:57,600 >> PUBLIKUM: Det er bare konstant, ikke sant? 1200 00:57:57,600 --> 00:57:58,440 >> JASON Hirschhorn: Hvorfor skulle det være konstant? 1201 00:57:58,440 --> 00:58:00,970 >> PUBLIKUM: Som, hvis du bruker store O notasjon, så er det ikke varierer baserte 1202 00:58:00,970 --> 00:58:04,680 på rekke ting som er allerede i prøve. 1203 00:58:04,680 --> 00:58:07,344 >> JASON Hirschhorn: Så vi ville si det er konstant tid. 1204 00:58:07,344 --> 00:58:11,840 Den er konstant innsetting, og det er fordi denne ideen - 1205 00:58:11,840 --> 00:58:14,820 si at vi har et ord som er 45, eller et ord som er 60, at 1206 00:58:14,820 --> 00:58:16,800 har et konstant tall. 1207 00:58:16,800 --> 00:58:21,050 Og det ville bare bli satt inn i konstant tid. 1208 00:58:21,050 --> 00:58:26,060 >> I praksis skjønt, ville det ikke være, åpenbart, skje i ett millisekund, 1209 00:58:26,060 --> 00:58:26,590 for eksempel. 1210 00:58:26,590 --> 00:58:28,880 Men vi vil si stor O er konstant for en prøve. 1211 00:58:28,880 --> 00:58:31,330 Og det er en av dens største fordelene. 1212 00:58:31,330 --> 00:58:33,330 >> Hva om innsetting i en kobling liste? 1213 00:58:33,330 --> 00:58:37,220 Bare en generisk, sortert kobling listen? 1214 00:58:37,220 --> 00:58:37,700 Yeah. 1215 00:58:37,700 --> 00:58:38,530 >> PUBLIKUM: Jeg hadde et spørsmål. 1216 00:58:38,530 --> 00:58:42,670 På testen, ville de noen gang spørre oss innsetting tid som er fire trinn, 1217 00:58:42,670 --> 00:58:43,270 eller noe? 1218 00:58:43,270 --> 00:58:44,300 Eller er det bare - 1219 00:58:44,300 --> 00:58:47,670 når du sier innsetting tid er ett, det betyr bare konstant tid? 1220 00:58:47,670 --> 00:58:49,770 >> JASON Hirschhorn: Ja, ville de alltid spørre, er det stor O for n? 1221 00:58:49,770 --> 00:58:51,440 Big O av log n? 1222 00:58:51,440 --> 00:58:53,960 N squared konstant. 1223 00:58:53,960 --> 00:58:56,520 De er egentlig den eneste de du trenger å vite. 1224 00:58:56,520 --> 00:58:58,420 Hva om innsetting på sortert kobling listen? 1225 00:58:58,420 --> 00:58:59,440 >> PUBLIKUM: Jeg hadde et spørsmål - 1226 00:58:59,440 --> 00:58:59,980 et spørsmål - 1227 00:58:59,980 --> 00:59:01,060 >> JASON Hirschhorn: Hva er svaret på det spørsmålet, skjønt? 1228 00:59:01,060 --> 00:59:02,120 >> PUBLIKUM: Vent, hva gjorde du spør? 1229 00:59:02,120 --> 00:59:06,750 >> JASON Hirschhorn: Hva er big O av innsetting i en sortert kobling liste? 1230 00:59:06,750 --> 00:59:07,070 >> PUBLIKUM: One? 1231 00:59:07,070 --> 00:59:09,400 Nei vent, Nei vent, n. 1232 00:59:09,400 --> 00:59:11,420 >> JASON Hirschhorn: N. Dess linklisten. 1233 00:59:11,420 --> 00:59:12,706 Og hva var spørsmålet ditt? 1234 00:59:12,706 --> 00:59:16,440 >> PUBLIKUM: Så ville du skrive o av k eller o av en for - 1235 00:59:16,440 --> 00:59:18,150 >> JASON Hirschhorn: Oh. 1236 00:59:18,150 --> 00:59:21,830 Jeg ville skrive o av en, sannsynligvis. 1237 00:59:21,830 --> 00:59:24,160 Det var en annen datastruktur som ville ha vært bra. 1238 00:59:24,160 --> 00:59:25,730 Treet, binært søketre. 1239 00:59:25,730 --> 00:59:27,510 Hva er innsetting på en binært søketre? 1240 00:59:27,510 --> 00:59:31,190 1241 00:59:31,190 --> 00:59:33,900 >> PUBLIKUM: Logg inn. 1242 00:59:33,900 --> 00:59:39,260 >> JASON Hirschhorn: Så, hva er det verste tilfelle i et binært søketre? 1243 00:59:39,260 --> 00:59:45,350 Så hvis vi tilfeldigvis å starte på 5, og hver tallet er større enn 5, og deretter 1244 00:59:45,350 --> 00:59:48,760 vi har fått 5, 7, 9, 11, et cetera. 1245 00:59:48,760 --> 00:59:52,255 I dette tilfellet, er det i utgangspunktet bare en link liste, og vi må sette inn alle 1246 00:59:52,255 --> 00:59:52,680 helt til slutt. 1247 00:59:52,680 --> 00:59:54,350 Så det er stor O n. 1248 00:59:54,350 --> 00:59:57,720 >> Det kan bli vår verste fall på et binært søketre. 1249 00:59:57,720 --> 01:00:00,890 Selvfølgelig ville du aldri konstruere et binært søketre med fem i 1250 01:00:00,890 --> 01:00:04,270 midten, vel vitende om fem ville være det laveste tallet. 1251 01:00:04,270 --> 01:00:08,030 Men det kunne være, hvis du er starter fra scratch. 1252 01:00:08,030 --> 01:00:10,980 Eventuelle spørsmål om dette før jeg gå videre til et annet spørsmål? 1253 01:00:10,980 --> 01:00:11,560 Det var et godt spørsmål. 1254 01:00:11,560 --> 01:00:15,100 Jeg ville vite big O av - 1255 01:00:15,100 --> 01:00:18,620 >> PUBLIKUM: Hva om søking for de fire? 1256 01:00:18,620 --> 01:00:20,400 >> JASON Hirschhorn: Definitivt vi gjorde søking og sortering. 1257 01:00:20,400 --> 01:00:22,160 Vi gjorde alle disse algoritmene, ikke sant. 1258 01:00:22,160 --> 01:00:23,390 Vent, var at for Quiz 1? 1259 01:00:23,390 --> 01:00:23,980 Ble som dekket - 1260 01:00:23,980 --> 01:00:25,860 visste du allerede har denne Spørsmålet på Quiz en? 1261 01:00:25,860 --> 01:00:29,650 Den store O runtime av binære søk, innsetting sortere, boble slag? 1262 01:00:29,650 --> 01:00:30,160 >> PUBLIKUM: Yeah. 1263 01:00:30,160 --> 01:00:32,790 >> JASON Hirschhorn: Hvis du hadde som Spørsmålet om Quiz 0, oddsen er du ikke vil 1264 01:00:32,790 --> 01:00:35,180 få de samme spørsmålet på Quiz en. 1265 01:00:35,180 --> 01:00:36,300 Fortsatt kunne være godt å vite disse. 1266 01:00:36,300 --> 01:00:38,520 Du bør forhåpentligvis vite gh allerede. 1267 01:00:38,520 --> 01:00:40,740 >> Men andre logaritmiske kjøretids er trolig godt å vite. 1268 01:00:40,740 --> 01:00:42,890 Ting som ikke var dekket på Quiz 0. 1269 01:00:42,890 --> 01:00:47,300 Som alle disse aktørene på disse abstrakte datatyper. 1270 01:00:47,300 --> 01:00:50,760 >> OK, la oss gå videre. 1271 01:00:50,760 --> 01:00:52,190 Dette bør man være ganske rask. 1272 01:00:52,190 --> 01:00:56,170 Og dette er et nytt språk vi ikke har faktisk kodet i før. 1273 01:00:56,170 --> 01:00:59,300 Dette er et spørsmål som spør å kode i PHP. 1274 01:00:59,300 --> 01:01:01,950 Så vurdere PHP array nedenfor. 1275 01:01:01,950 --> 01:01:06,150 Skriv PHP og / eller HTML-koder slik at det en tabell med to kolonner med TFs utganger 1276 01:01:06,150 --> 01:01:08,810 navn og hus. 1277 01:01:08,810 --> 01:01:11,600 >> Du har aldri gjort dette før, dette spesifikke problemet. 1278 01:01:11,600 --> 01:01:16,270 Men dette bør være veldig kjent for hva du gjorde i oppgavesettet 7. 1279 01:01:16,270 --> 01:01:21,250 Så jeg ville være villig til å vedde på at du vil være bedt om å kode noe i PHP som 1280 01:01:21,250 --> 01:01:23,880 er svært likt det du gjorde i oppgavesettet 7. 1281 01:01:23,880 --> 01:01:26,300 >> For det første, er array ikke så spesifikke. 1282 01:01:26,300 --> 01:01:28,140 Hva slags matrise er dette? 1283 01:01:28,140 --> 01:01:29,080 >> PUBLIKUM: Assosiativ. 1284 01:01:29,080 --> 01:01:31,250 >> JASON Hirschhorn: Det er en assosiativ array. 1285 01:01:31,250 --> 01:01:33,750 Og hva er forskjellen mellom en assosiativ array og et objekt? 1286 01:01:33,750 --> 01:01:41,780 1287 01:01:41,780 --> 01:01:44,857 >> PUBLIKUM: Et objekt matrise har en indeks av heltall, og en assosiativ array 1288 01:01:44,857 --> 01:01:47,814 er en indeks av en streng, eller noe sånt. 1289 01:01:47,814 --> 01:01:50,570 1290 01:01:50,570 --> 01:01:54,880 >> JASON Hirschhorn: Så en rekke objektene ville ha indekser av 1291 01:01:54,880 --> 01:01:57,090 heltall, men et objekt har felt. 1292 01:01:57,090 --> 01:02:01,590 Det har disse feltnavn som navn, house, student. 1293 01:02:01,590 --> 01:02:03,720 Har du en idé? 1294 01:02:03,720 --> 01:02:06,630 >> PUBLIKUM: Vel, assosiativ matrise er i PHP, ikke sant? 1295 01:02:06,630 --> 01:02:07,880 Og objektet er i Javascript? 1296 01:02:07,880 --> 01:02:12,330 1297 01:02:12,330 --> 01:02:14,820 >> JASON Hirschhorn: Ærlig talt, det er ingen reell forskjell mellom de to. 1298 01:02:14,820 --> 01:02:19,540 Begge har strenger som nøklene, og kan har i utgangspunktet noe som verdien. 1299 01:02:19,540 --> 01:02:21,250 Ulike språk kaller en ting assosiativ array, 1300 01:02:21,250 --> 01:02:22,750 en ting til et objekt. 1301 01:02:22,750 --> 01:02:25,960 Så ærlig, er det ingen reell forskjell, men det er sikkert noen 1302 01:02:25,960 --> 01:02:27,730 syntaktiske forskjeller mellom de to. 1303 01:02:27,730 --> 01:02:28,200 Yeah. 1304 01:02:28,200 --> 01:02:33,580 >> PUBLIKUM: Så er objektet også kodes i henhold til hetten som en hash table, da? 1305 01:02:33,580 --> 01:02:35,796 >> JASON Hirschhorn: Hva gjør du mener, kodet under panseret? 1306 01:02:35,796 --> 01:02:38,017 >> PUBLIKUM: Vi ble fortalt at assosiativ matrise var teknisk sett en 1307 01:02:38,017 --> 01:02:39,960 hash table. 1308 01:02:39,960 --> 01:02:44,510 Så er objektet også teknisk en hash table? 1309 01:02:44,510 --> 01:02:45,350 >> JASON Hirschhorn: Jeg kommer ikke til å svare på det spørsmålet. 1310 01:02:45,350 --> 01:02:46,600 Jeg vil komme tilbake til deg på det. 1311 01:02:46,600 --> 01:02:48,980 Men jeg ville ikke tenke på enten av dem sånn. 1312 01:02:48,980 --> 01:02:53,790 Men, på noen måte, assosiativ array og objekt, generelt, folk bruker de 1313 01:02:53,790 --> 01:02:54,910 begrepene om hverandre. 1314 01:02:54,910 --> 01:02:57,630 I dette tilfellet er den kjølige del er at du kan bruke tastene. 1315 01:02:57,630 --> 01:03:00,580 Strenger som nøkler, snarere enn bare enkle tall. 1316 01:03:00,580 --> 01:03:02,070 >> Så jeg har snakket om dette for en stund. 1317 01:03:02,070 --> 01:03:04,090 Forhåpentligvis, noen mennesker har fått startet på dette. 1318 01:03:04,090 --> 01:03:08,050 Vi kommer til å skrive litt PHP og HTML kode, slik at vi får en to-kolonne 1319 01:03:08,050 --> 01:03:11,830 tabell med TFS navn og hus. 1320 01:03:11,830 --> 01:03:15,380 >> OK, jeg også ønsker en header rad på denne tabellen. 1321 01:03:15,380 --> 01:03:18,410 Så jeg kommer til å få rett inn i dette. 1322 01:03:18,410 --> 01:03:20,770 Vi kommer til å sende inn, nye, og vi kommer til å - 1323 01:03:20,770 --> 01:03:27,780 1324 01:03:27,780 --> 01:03:28,320 >> OK. 1325 01:03:28,320 --> 01:03:29,970 Hvordan starter jeg et bord? 1326 01:03:29,970 --> 01:03:32,090 Hva er koden, Michael, å starte et bord? 1327 01:03:32,090 --> 01:03:32,890 >> PUBLIKUM: Table. 1328 01:03:32,890 --> 01:03:34,020 >> JASON Hirschhorn: Table. 1329 01:03:34,020 --> 01:03:37,870 Og hvis jeg åpner en tag, hva mer trenger jeg? 1330 01:03:37,870 --> 01:03:39,810 >> PUBLIKUM: Et hode? 1331 01:03:39,810 --> 01:03:41,040 Eller, jeg gjette, klasse. 1332 01:03:41,040 --> 01:03:41,730 >> JASON Hirschhorn: Så, beklager. 1333 01:03:41,730 --> 01:03:45,430 Anta at vi allerede har skrevet doctab, HTML, alt det der. 1334 01:03:45,430 --> 01:03:50,230 Men hvis jeg åpner denne tabellen tag, hva ellers må jeg skrive? 1335 01:03:50,230 --> 01:03:53,450 for validere HTML? 1336 01:03:53,450 --> 01:03:55,000 >> PUBLIKUM: Lukk det. 1337 01:03:55,000 --> 01:03:56,050 >> JASON Hirschhorn: Lukk tag. 1338 01:03:56,050 --> 01:03:57,575 Hvordan skriver jeg en nær-table tag? 1339 01:03:57,575 --> 01:03:59,580 >> PUBLIKUM: Dot slash tabellen. 1340 01:03:59,580 --> 01:04:00,960 >> JASON Hirschhorn: Slash bord, stor. 1341 01:04:00,960 --> 01:04:02,730 Sannsynligvis er fornuftig å skrive både av dem sammen fordi 1342 01:04:02,730 --> 01:04:03,870 du er nødt til å gjøre det. 1343 01:04:03,870 --> 01:04:08,575 OK, hvis jeg vil ha en header rad, hvordan Jeg skriver en header rad med titler? 1344 01:04:08,575 --> 01:04:11,650 1345 01:04:11,650 --> 01:04:19,290 >> PUBLIKUM: Er det mindre enn 10 hr nær - 1346 01:04:19,290 --> 01:04:21,550 TR, ja. 1347 01:04:21,550 --> 01:04:22,100 >> JASON Hirschhorn: TR? 1348 01:04:22,100 --> 01:04:25,080 >> PUBLIKUM: Da samme, skråstreken, ja. 1349 01:04:25,080 --> 01:04:26,610 >> JASON Hirschhorn: OK, og gi meg to kolonner. 1350 01:04:26,610 --> 01:04:30,100 1351 01:04:30,100 --> 01:04:33,210 >> PUBLIKUM: T D? 1352 01:04:33,210 --> 01:04:34,460 >> JASON Hirschhorn: OK. 1353 01:04:34,460 --> 01:04:37,730 1354 01:04:37,730 --> 01:04:39,520 Jeg vil ha to kolonner. 1355 01:04:39,520 --> 01:04:40,960 Betyr dette gi meg to kolonner? 1356 01:04:40,960 --> 01:04:43,880 Hvor mange kolonner er dette? 1357 01:04:43,880 --> 01:04:45,920 One. 1358 01:04:45,920 --> 01:04:47,170 Så la oss kopiere og lime inn denne. 1359 01:04:47,170 --> 01:04:59,750 1360 01:04:59,750 --> 01:05:03,390 >> Så egentlig, på quiz, all denne koden at vi har skrevet så langt var 1361 01:05:03,390 --> 01:05:04,710 faktisk gitt til deg. 1362 01:05:04,710 --> 01:05:06,200 Men du bør nok fortsatt vet hvordan du skal skrive det. 1363 01:05:06,200 --> 01:05:06,470 Yeah. 1364 01:05:06,470 --> 01:05:10,636 >> PUBLIKUM: Huset ditt er mellom de to. 1365 01:05:10,636 --> 01:05:11,130 >> JASON Hirschhorn: Boom. 1366 01:05:11,130 --> 01:05:12,720 Det bør gå rett der, ikke sant? 1367 01:05:12,720 --> 01:05:14,600 God samtale. 1368 01:05:14,600 --> 01:05:17,760 Så igjen, er alt denne koden faktisk gitt til deg på selve quiz. 1369 01:05:17,760 --> 01:05:19,570 Men det er gøy å skrive det, og du bør vite hvordan du skal skrive det. 1370 01:05:19,570 --> 01:05:23,640 Så det er her du trenger å starte din kode. 1371 01:05:23,640 --> 01:05:25,150 Hva trenger vi å skrive akkurat her? 1372 01:05:25,150 --> 01:05:28,640 1373 01:05:28,640 --> 01:05:30,565 >> Sorry, jeg trenger å endre navnet på denne filen. 1374 01:05:30,565 --> 01:05:41,180 1375 01:05:41,180 --> 01:05:44,270 Så vi lagret det i en. HTML-fil, ikke i en. PHP-fil. 1376 01:05:44,270 --> 01:05:47,030 Disse tingene ville bety noe i en. PHP-fil. 1377 01:05:47,030 --> 01:05:48,500 Så vi er i en. HTML-fil. 1378 01:05:48,500 --> 01:05:50,090 Hva er det første Jeg trenger å skrive? 1379 01:05:50,090 --> 01:05:52,990 Jeg ønsker å sette noen PHP kode i en HTML. 1380 01:05:52,990 --> 01:05:57,300 >> PUBLIKUM: PHP, som en annen gulrot og spørsmålstegn PHP, ikke sant? 1381 01:05:57,300 --> 01:05:58,310 >> JASON Hirschhorn: Great. 1382 01:05:58,310 --> 01:05:59,360 Og hvordan kan jeg få slutt på denne? 1383 01:05:59,360 --> 01:06:02,510 >> PUBLIKUM: Med et spørsmålstegn. 1384 01:06:02,510 --> 01:06:03,120 >> JASON Hirschhorn: Det er flott. 1385 01:06:03,120 --> 01:06:07,090 Det er det første jeg må hvis jeg vil å sette noen PHP-kode i her. 1386 01:06:07,090 --> 01:06:11,210 >> PUBLIKUM:. Jeg trodde en PHP filen, kan gjøre HTML. 1387 01:06:11,210 --> 01:06:12,290 >> JASON Hirschhorn: Yeah. 1388 01:06:12,290 --> 01:06:15,330 A. PHP-filen kan ta litt HTML og vises. 1389 01:06:15,330 --> 01:06:16,450 Det var min feil. 1390 01:06:16,450 --> 01:06:18,300 Jeg prøvde bare å etterligne hva det var på quiz. 1391 01:06:18,300 --> 01:06:21,910 1392 01:06:21,910 --> 01:06:24,720 >> OK, beklager å forvirre deg. 1393 01:06:24,720 --> 01:06:25,550 Ja, practice.HTML. 1394 01:06:25,550 --> 01:06:27,340 Nå skal vi sette noen PHP-kode i. 1395 01:06:27,340 --> 01:06:30,530 Hva er den første linjen i PHP-kode jeg skal skrive? 1396 01:06:30,530 --> 01:06:33,360 Jeg kommer til å gå gjennom denne matrisen og gjøre den om til et bord. 1397 01:06:33,360 --> 01:06:34,600 Yeah. 1398 01:06:34,600 --> 01:06:37,160 >> PUBLIKUM: Du kan enten bruke en for H løkke eller en for-løkke. 1399 01:06:37,160 --> 01:06:38,415 >> JASON Hirschhorn: OK, hva ønsker du å bruke? 1400 01:06:38,415 --> 01:06:40,720 >> PUBLIKUM: Jeg ville bruke en for-løkke. 1401 01:06:40,720 --> 01:06:48,700 For, og så gjør du dollartegn jeg er lik 0 semikolon dollar 1402 01:06:48,700 --> 01:06:51,580 signere jeg mindre enn to. 1403 01:06:51,580 --> 01:06:55,455 Og så semikolon i dollar signere i pluss pluss. 1404 01:06:55,455 --> 01:07:01,890 1405 01:07:01,890 --> 01:07:03,880 >> JASON Hirschhorn: Hvordan du vet å bruke en 2? 1406 01:07:03,880 --> 01:07:10,444 >> PUBLIKUM: Fordi det var to assosiative arrays innenfor større 1407 01:07:10,444 --> 01:07:11,960 assosiativ array. 1408 01:07:11,960 --> 01:07:13,610 >> JASON Hirschhorn: Så det store ting er ikke advokatfullmektig array. 1409 01:07:13,610 --> 01:07:15,500 Den store tingen er bare en vanlig array. 1410 01:07:15,500 --> 01:07:17,380 Men du har rett, det er to assosiative arrays 1411 01:07:17,380 --> 01:07:18,910 inne våre større utvalg. 1412 01:07:18,910 --> 01:07:20,310 Det er derfor du bruker to. 1413 01:07:20,310 --> 01:07:24,270 Jeg føler meg ukomfortabel forutsatt at de er to, så hva er en måte å skrive 1414 01:07:24,270 --> 01:07:26,810 dette uten forutsatt at de er to? 1415 01:07:26,810 --> 01:07:27,507 >> PUBLIKUM: [uhørbart]? 1416 01:07:27,507 --> 01:07:29,165 >> JASON Hirschhorn: OK, hvordan skriver du det? 1417 01:07:29,165 --> 01:07:35,262 >> PUBLIKUM: foreach dollartegn TFS eller lignende dollartegn tf. 1418 01:07:35,262 --> 01:07:38,360 1419 01:07:38,360 --> 01:07:41,960 >> JASON Hirschhorn: OK, så for hver tfs som tfs, jeg vil, nå 1420 01:07:41,960 --> 01:07:43,650 igjen, har mitt bord. 1421 01:07:43,650 --> 01:07:45,250 Så hvem kan gi meg neste linje med kode? 1422 01:07:45,250 --> 01:07:52,870 1423 01:07:52,870 --> 01:07:59,810 >> PUBLIKUM: Skriv ut, og deretter i sitater, brakett tr slutten 1424 01:07:59,810 --> 01:08:02,670 brakett, sitat slutt. 1425 01:08:02,670 --> 01:08:05,300 End parentes, semikolon. 1426 01:08:05,300 --> 01:08:07,135 >> JASON Hirschhorn: OK, og hva som kommer til å gjøre? 1427 01:08:07,135 --> 01:08:08,610 >> PUBLIKUM: Det kommer til å si, ny rad. 1428 01:08:08,610 --> 01:08:11,070 Det kommer til å sette tagge for en ny rad. 1429 01:08:11,070 --> 01:08:13,000 >> JASON Hirschhorn: Høyre, dette PHP, som vi snakket om tidligere - dette 1430 01:08:13,000 --> 01:08:22,160 PHP kommer til å bli evaluert, og deretter det kommer til å skrive ut til denne filen en 1431 01:08:22,160 --> 01:08:26,350 Tabellen slep, og deretter at HTML vil bli evaluert. 1432 01:08:26,350 --> 01:08:27,810 Vi er bare å kopiere dette HTML vi hadde her oppe. 1433 01:08:27,810 --> 01:08:28,120 Yeah. 1434 01:08:28,120 --> 01:08:29,470 >> PUBLIKUM: [uhørbart]? 1435 01:08:29,470 --> 01:08:30,290 >> JASON Hirschhorn: Sorry? 1436 01:08:30,290 --> 01:08:31,240 Det er rett her. 1437 01:08:31,240 --> 01:08:33,590 Fall 2012. 1438 01:08:33,590 --> 01:08:35,970 Ikke se på svarene, la oss løse det sammen. 1439 01:08:35,970 --> 01:08:37,330 Så vi skriver ut tabell rad. 1440 01:08:37,330 --> 01:08:38,550 Så du er sannsynligvis i swing ting. 1441 01:08:38,550 --> 01:08:41,060 Hva er neste linje kode må vi skrive? 1442 01:08:41,060 --> 01:08:42,926 Assam, gi meg neste linje med kode. 1443 01:08:42,926 --> 01:08:46,290 >> PUBLIKUM: Du trenger tf navn. 1444 01:08:46,290 --> 01:08:54,319 Tf åpen parentes anførselstegn nevne lukkede parentes. 1445 01:08:54,319 --> 01:08:57,310 >> JASON Hirschhorn: Gi meg deres navn. 1446 01:08:57,310 --> 01:08:58,540 >> PUBLIKUM: Du må skrive ut som. 1447 01:08:58,540 --> 01:08:59,790 >> [interposing VOICES] 1448 01:08:59,790 --> 01:09:01,963 1449 01:09:01,963 --> 01:09:03,430 >> JASON Hirschhorn: OK, hvordan kan jeg skrive det? 1450 01:09:03,430 --> 01:09:04,680 >> [interposing VOICES] 1451 01:09:04,680 --> 01:09:08,609 1452 01:09:08,609 --> 01:09:10,350 >> JASON Hirschhorn: jeg mangler noe nå. 1453 01:09:10,350 --> 01:09:12,470 Hva er det jeg mangler? 1454 01:09:12,470 --> 01:09:13,720 >> PUBLIKUM: Du trenger et dollartegn. 1455 01:09:13,720 --> 01:09:15,960 1456 01:09:15,960 --> 01:09:17,210 >> JASON Hirschhorn: Hva ellers er det jeg mangler? 1457 01:09:17,210 --> 01:09:20,100 1458 01:09:20,100 --> 01:09:21,650 Alt vi har skrevet så langt er den st. 1459 01:09:21,650 --> 01:09:25,589 1460 01:09:25,589 --> 01:09:27,470 >> PUBLIKUM: Lukk st etter det. 1461 01:09:27,470 --> 01:09:28,720 >> JASON Hirschhorn: Så vi trenger å lukke tr etter. 1462 01:09:28,720 --> 01:09:34,390 1463 01:09:34,390 --> 01:09:37,906 Hvem ser hva vi mangler på linje 16? 1464 01:09:37,906 --> 01:09:39,340 Ja, Anna. 1465 01:09:39,340 --> 01:09:47,050 >> PUBLIKUM: Du må åpne en td og klammeparentes. 1466 01:09:47,050 --> 01:09:49,380 >> JASON Hirschhorn: Og der skal vi sette klammeparentes? 1467 01:09:49,380 --> 01:09:51,790 >> PUBLIKUM: Rundt tf navn. 1468 01:09:51,790 --> 01:09:53,080 >> JASON Hirschhorn: Liker du dette? 1469 01:09:53,080 --> 01:09:55,420 >> PUBLIKUM: Yeah. 1470 01:09:55,420 --> 01:09:59,000 Og så lukker du td. 1471 01:09:59,000 --> 01:10:00,250 >> JASON Hirschhorn: Sånn? 1472 01:10:00,250 --> 01:10:03,370 1473 01:10:03,370 --> 01:10:06,950 >> PUBLIKUM: Har du behov for dobbeltanførsels tegn ved siden av klammeparenteser? 1474 01:10:06,950 --> 01:10:07,460 >> JASON Hirschhorn: Akkurat her? 1475 01:10:07,460 --> 01:10:08,710 Nei, det gjør du ikke. 1476 01:10:08,710 --> 01:10:10,820 1477 01:10:10,820 --> 01:10:12,550 Så det er helt riktig. 1478 01:10:12,550 --> 01:10:12,940 Yeah. 1479 01:10:12,940 --> 01:10:15,290 >> PUBLIKUM: Så forskjellen mellom det og encatenating med prikker er, hvis 1480 01:10:15,290 --> 01:10:18,420 du bruker prikker, vil du være nødt til å ha den doble anførselstegn, deretter en prikk, 1481 01:10:18,420 --> 01:10:20,370 da dot - 1482 01:10:20,370 --> 01:10:20,520 >> JASON Hirschhorn: Riktig. 1483 01:10:20,520 --> 01:10:23,800 Så du sier det er en endelig måte å skrive dette sånn. 1484 01:10:23,800 --> 01:10:26,760 1485 01:10:26,760 --> 01:10:28,966 Hva sammensetning operatør i Javascript? 1486 01:10:28,966 --> 01:10:31,200 >> PUBLIKUM: Et plusstegn. 1487 01:10:31,200 --> 01:10:34,710 Du glemte å sette krøllete spenne tilbake. 1488 01:10:34,710 --> 01:10:35,760 >> JASON Hirschhorn: Great. 1489 01:10:35,760 --> 01:10:38,850 Og det er enda en tråd kode mangler. 1490 01:10:38,850 --> 01:10:40,130 Hvem kan gi meg den siste linjen med kode vi mangler? 1491 01:10:40,130 --> 01:10:43,940 1492 01:10:43,940 --> 01:10:47,602 >> PUBLIKUM: Bare akkurat det samme, bare med huset i stedet for navnet. 1493 01:10:47,602 --> 01:10:52,960 1494 01:10:52,960 --> 01:10:53,450 Flott 1495 01:10:53,450 --> 01:10:54,390 >> JASON Hirschhorn: Great. 1496 01:10:54,390 --> 01:10:59,320 Og syntaksen er helt riktig for å få ting i et tilknyttet array. 1497 01:10:59,320 --> 01:11:04,450 Så i selve quizen, er du faktisk gitt opp til her. 1498 01:11:04,450 --> 01:11:05,710 Så denne koden ble gitt til deg. 1499 01:11:05,710 --> 01:11:07,750 Alt du måtte skrive var disse fire linjer og husk å 1500 01:11:07,750 --> 01:11:09,190 lukk tabellen taggen. 1501 01:11:09,190 --> 01:11:11,370 Dere faktisk gjorde alt dette og mer. 1502 01:11:11,370 --> 01:11:11,810 Yeah. 1503 01:11:11,810 --> 01:11:14,850 >> PUBLIKUM: Så det ville være funksjonelt det samme hvis du bare hadde som alle i 1504 01:11:14,850 --> 01:11:17,250 ett stort trykk samtale, ikke sant? 1505 01:11:17,250 --> 01:11:19,630 Og så bare sammenkjedet det på, et cetera? 1506 01:11:19,630 --> 01:11:20,730 >> JASON Hirschhorn: Sånn? 1507 01:11:20,730 --> 01:11:21,980 >> PUBLIKUM: Yeah. 1508 01:11:21,980 --> 01:11:23,810 1509 01:11:23,810 --> 01:11:26,940 Det ville ikke bare se bra ut hvis du var se på det når du inspiserer 1510 01:11:26,940 --> 01:11:28,550 elementet på nettstedet ditt, ikke sant? 1511 01:11:28,550 --> 01:11:29,800 >> JASON Hirschhorn: Jeg er enig. 1512 01:11:29,800 --> 01:11:35,410 1513 01:11:35,410 --> 01:11:38,710 Hvis jeg lastet denne websiden, ville jeg være stand til å se denne PHP-koden, noensinne? 1514 01:11:38,710 --> 01:11:39,240 >> PUBLIKUM: Nei. 1515 01:11:39,240 --> 01:11:40,080 >> JASON Hirschhorn: Nei. 1516 01:11:40,080 --> 01:11:42,240 Og faktisk, det ville jeg ikke. 1517 01:11:42,240 --> 01:11:43,920 >> Målgruppe: Dette er ikke HTML, ikke sant? 1518 01:11:43,920 --> 01:11:45,000 Så du kan være i stand til - 1519 01:11:45,000 --> 01:11:46,780 >> JASON Hirschhorn: Så dette PHP ville evalueres server side. 1520 01:11:46,780 --> 01:11:51,020 PHP er alltid evaluert serversiden, så du er aldri i stand til å se PHP-kode. 1521 01:11:51,020 --> 01:11:52,980 >> PUBLIKUM: Men du ville være i stand til se resultatet av utskrifter. 1522 01:11:52,980 --> 01:11:53,480 >> JASON Hirschhorn: Høyre. 1523 01:11:53,480 --> 01:11:55,510 Og det ærlig kanskje ikke sette det hele på linjen. 1524 01:11:55,510 --> 01:11:59,740 Det kan formatere det fint for deg, eller det kan sette den på en linje. 1525 01:11:59,740 --> 01:12:01,521 Uklart. 1526 01:12:01,521 --> 01:12:03,596 Men ja, godt poeng. 1527 01:12:03,596 --> 01:12:06,470 >> PUBLIKUM: Hvordan kommer det er ingen tekstutheving for 1528 01:12:06,470 --> 01:12:07,550 noen av PHP kommandoer? 1529 01:12:07,550 --> 01:12:09,370 Fordi jeg husker det. 1530 01:12:09,370 --> 01:12:11,620 >> JASON Hirschhorn: Fordi det er en . Html-fil her oppe på toppen. 1531 01:12:11,620 --> 01:12:20,390 1532 01:12:20,390 --> 01:12:21,650 Der du går. 1533 01:12:21,650 --> 01:12:25,752 1534 01:12:25,752 --> 01:12:28,800 >> PUBLIKUM: Hvis vi gjorde den første metoden med for looper, ikke sant, hvis vi 1535 01:12:28,800 --> 01:12:33,500 ønsket å få tilgang til en TFS, ville vi gjøre TFS brakett 0 brakett, deretter 1536 01:12:33,500 --> 01:12:35,180 [Uhørbart]? 1537 01:12:35,180 --> 01:12:35,970 >> JASON Hirschhorn: Du ville - 1538 01:12:35,970 --> 01:12:40,560 så du sier for for loop, du ville gjøre i dollartegn TFS brakett 1 1539 01:12:40,560 --> 01:12:41,850 eller jeg, ikke sant. 1540 01:12:41,850 --> 01:12:46,780 Eller dollartegn jeg lukker brakett og deretter hakeparentes 1541 01:12:46,780 --> 01:12:49,600 doble anførselstegn, ja. 1542 01:12:49,600 --> 01:12:50,640 >> OK, utmerket. 1543 01:12:50,640 --> 01:12:53,020 Vi har enda en rask en. 1544 01:12:53,020 --> 01:12:55,090 Syv minutter, så jeg vil å gå over dette. 1545 01:12:55,090 --> 01:12:56,160 Dette er et annet eksempel. 1546 01:12:56,160 --> 01:12:58,740 Vi er nå et helt annet språk. 1547 01:12:58,740 --> 01:12:59,990 >> Vi har noen HTML-kode. 1548 01:12:59,990 --> 01:13:02,480 1549 01:13:02,480 --> 01:13:07,460 Det er litt små på skjermen, men Jeg vil du skal se gjennom det virkelig 1550 01:13:07,460 --> 01:13:11,140 raskt, og kan noen fortelle meg, hvis jeg skulle laste denne web-siden, 1551 01:13:11,140 --> 01:13:12,390 hva jeg ville se? 1552 01:13:12,390 --> 01:13:22,710 1553 01:13:22,710 --> 01:13:26,450 Beskriv alt om TRYKK HER. 1554 01:13:26,450 --> 01:13:28,630 Noah? 1555 01:13:28,630 --> 01:13:30,450 Hva ville jeg se? 1556 01:13:30,450 --> 01:13:38,140 >> PUBLIKUM: Kode på den fremre enden av Google med en følelse for tekst og en 1557 01:13:38,140 --> 01:13:39,190 send-knappen. 1558 01:13:39,190 --> 01:13:41,180 >> JASON Hirschhorn: Og hva ville knappen si? 1559 01:13:41,180 --> 01:13:42,430 >> PUBLIKUM: Send. 1560 01:13:42,430 --> 01:13:44,620 1561 01:13:44,620 --> 01:13:45,160 Oh, søk. 1562 01:13:45,160 --> 01:13:45,840 Jeg beklager. 1563 01:13:45,840 --> 01:13:46,830 >> JASON Hirschhorn: Det vil si søk. 1564 01:13:46,830 --> 01:13:47,520 Husk navn. 1565 01:13:47,520 --> 01:13:50,550 Hva bruker vi navn for? 1566 01:13:50,550 --> 01:13:53,774 Dette navnet attributt, hva er som brukes til? 1567 01:13:53,774 --> 01:13:55,470 >> [interposing VOICES] 1568 01:13:55,470 --> 01:13:59,300 >> PUBLIKUM: Det er navnet sitt for når den er klikket? 1569 01:13:59,300 --> 01:14:00,160 >> JASON Hirschhorn: Det kunne være. 1570 01:14:00,160 --> 01:14:02,690 Men hva gjør vi vanligvis ser - hvorfor gir vi dette navnet køen? 1571 01:14:02,690 --> 01:14:03,830 Hvorfor ser vi det? 1572 01:14:03,830 --> 01:14:05,220 Yeah. 1573 01:14:05,220 --> 01:14:08,600 >> PUBLIKUM: Betyr ikke det blir indeksen av super global variabel? 1574 01:14:08,600 --> 01:14:12,740 >> JASON Hirschhorn: Ja, som regel når denne formen ville sende, og deretter hvor 1575 01:14:12,740 --> 01:14:13,500 ville dette sender til? 1576 01:14:13,500 --> 01:14:14,750 Hvilken side? 1577 01:14:14,750 --> 01:14:16,820 1578 01:14:16,820 --> 01:14:18,460 Noah, hvilken side ville dette sender til? 1579 01:14:18,460 --> 01:14:25,710 1580 01:14:25,710 --> 01:14:27,700 >> PUBLIKUM: Jeg er ikke sikker. 1581 01:14:27,700 --> 01:14:28,920 >> JASON Hirschhorn: Hvor kunne vi kan finne det? 1582 01:14:28,920 --> 01:14:31,025 Hvor finner du hva siden det sender til? 1583 01:14:31,025 --> 01:14:32,850 Hva linje med kode? 1584 01:14:32,850 --> 01:14:34,040 >> PUBLIKUM: Form handling. 1585 01:14:34,040 --> 01:14:34,650 >> JASON Hirschhorn: Nettopp. 1586 01:14:34,650 --> 01:14:35,130 Handling. 1587 01:14:35,130 --> 01:14:37,100 Så det sender til søkesiden. 1588 01:14:37,100 --> 01:14:38,630 Backslash søk. 1589 01:14:38,630 --> 01:14:40,140 Så det er helt riktig. 1590 01:14:40,140 --> 01:14:40,680 Hvilken metode? 1591 01:14:40,680 --> 01:14:42,090 >> PUBLIKUM: Get. 1592 01:14:42,090 --> 01:14:42,490 >> JASON Hirschhorn: Get. 1593 01:14:42,490 --> 01:14:43,420 Nettopp. 1594 01:14:43,420 --> 01:14:44,490 Så vi leser dette. 1595 01:14:44,490 --> 01:14:45,180 Dette kommer til å være en form. 1596 01:14:45,180 --> 01:14:45,910 Du er helt riktig. 1597 01:14:45,910 --> 01:14:50,340 To ting på skjemaet, tittelen på siden og toppen ville være Google. 1598 01:14:50,340 --> 01:14:54,270 >> Så her er to spørsmål du bør være i stand til å svare på om denne siden. 1599 01:14:54,270 --> 01:15:01,760 Hvis denne HTML bor på dette nettstedet og brukeren innganger bug i denne teksten 1600 01:15:01,760 --> 01:15:06,900 feltet til høyre her, hva vil URL brukeren finner seg selv på 1601 01:15:06,900 --> 01:15:08,150 sender inn skjemaet? 1602 01:15:08,150 --> 01:15:10,980 1603 01:15:10,980 --> 01:15:12,510 >> Så vi har denne retten her. 1604 01:15:12,510 --> 01:15:13,720 Jeg kommer til å gå tilbake til denne siden, skjønt. 1605 01:15:13,720 --> 01:15:16,980 Jeg skal skrive opp denne første delen. 1606 01:15:16,980 --> 01:15:18,230 Alle kan se over her? 1607 01:15:18,230 --> 01:15:30,620 1608 01:15:30,620 --> 01:15:32,906 OK, Mario, du tror du vet? 1609 01:15:32,906 --> 01:15:34,700 Hvilken side? 1610 01:15:34,700 --> 01:15:37,630 >> PUBLIKUM: Omvendt skråstrek søk. 1611 01:15:37,630 --> 01:15:38,880 >> JASON Hirschhorn: Jeg kommer å flytte ned hit. 1612 01:15:38,880 --> 01:15:44,800 1613 01:15:44,800 --> 01:15:49,155 OK, backslash søk spørsmål mark q lik bug. 1614 01:15:49,155 --> 01:15:53,560 1615 01:15:53,560 --> 01:15:55,165 Noen som har et annet forslag? 1616 01:15:55,165 --> 01:15:57,910 1617 01:15:57,910 --> 01:15:59,160 Yeah. 1618 01:15:59,160 --> 01:16:01,700 1619 01:16:01,700 --> 01:16:03,740 >> Så hvordan får vi dette? 1620 01:16:03,740 --> 01:16:05,520 Vel, vi har sett dette før. 1621 01:16:05,520 --> 01:16:07,170 Og du kom opp med dette tidligere. 1622 01:16:07,170 --> 01:16:08,870 Du hadde rett, Noah, at handlingen er å fortelle oss hva 1623 01:16:08,870 --> 01:16:11,700 siden vi skal. 1624 01:16:11,700 --> 01:16:12,820 >> Vi vet også hvilken metode. 1625 01:16:12,820 --> 01:16:13,420 Vi gjør get. 1626 01:16:13,420 --> 01:16:17,040 Og forskjellen mellom GET og POST er det få skjermer i URL 1627 01:16:17,040 --> 01:16:18,490 og innlegget ikke. 1628 01:16:18,490 --> 01:16:22,760 Så hvis jeg skrev innlegget der i metode, hva som ville være annerledes? 1629 01:16:22,760 --> 01:16:24,250 >> PUBLIKUM: Det ville bare være slash søk. 1630 01:16:24,250 --> 01:16:25,400 >> JASON Hirschhorn: Det ville bare bli slash søk. 1631 01:16:25,400 --> 01:16:27,400 Ingenting over her ville skje. 1632 01:16:27,400 --> 01:16:30,030 Men fordi det er en får, URL blir vist som følger. 1633 01:16:30,030 --> 01:16:35,140 Først ser vi et spørsmålstegn og vi se navnet og verdien. 1634 01:16:35,140 --> 01:16:42,730 Si det var en annen tekstfelt og Jeg ga det et navn på r og jeg skriver inn en 1635 01:16:42,730 --> 01:16:45,220 verdi, caterpillar. 1636 01:16:45,220 --> 01:16:48,560 Hva ville dette nå ser ut? 1637 01:16:48,560 --> 01:16:52,040 Jeg har en mer tekstfeltet, gir jeg en navn på r og en verdi på caterpillar. 1638 01:16:52,040 --> 01:16:56,990 >> PUBLIKUM: Etter bar du ville ha tegnet caterpillar. 1639 01:16:56,990 --> 01:16:58,380 >> JASON Hirschhorn: Det er ikke-tegn. 1640 01:16:58,380 --> 01:17:00,500 >> PUBLIKUM: Eller bare hva den og symbol. 1641 01:17:00,500 --> 01:17:01,330 >> JASON Hirschhorn: Ja, nei. 1642 01:17:01,330 --> 01:17:03,700 Du hadde rett, jeg tok feil. 1643 01:17:03,700 --> 01:17:05,660 Det er som en g. 1644 01:17:05,660 --> 01:17:06,910 >> PUBLIKUM: Caterpillar. 1645 01:17:06,910 --> 01:17:08,840 1646 01:17:08,840 --> 01:17:11,090 r lik caterpillar, beklager. 1647 01:17:11,090 --> 01:17:13,970 1648 01:17:13,970 --> 01:17:14,700 >> JASON Hirschhorn: Er det ingen r der inne? 1649 01:17:14,700 --> 01:17:16,680 >> PUBLIKUM: Nei, det er det. 1650 01:17:16,680 --> 01:17:18,030 >> JASON Hirschhorn: Vi skal snakke om at etter klassen. 1651 01:17:18,030 --> 01:17:18,930 Det er helt riktig. 1652 01:17:18,930 --> 01:17:20,530 Så og er korrekt. 1653 01:17:20,530 --> 01:17:23,430 Og så kan du ha mange av disse, og de ville alle slås sammen 1654 01:17:23,430 --> 01:17:24,950 sammen med det og. 1655 01:17:24,950 --> 01:17:25,900 Så det er helt riktig. 1656 01:17:25,900 --> 01:17:27,700 >> Det er et spørsmål til. 1657 01:17:27,700 --> 01:17:30,676 Skisser denne HTML DOM, starter med dokumentet. 1658 01:17:30,676 --> 01:17:33,330 1659 01:17:33,330 --> 01:17:34,570 Vi kunne gjøre det i to minutter. 1660 01:17:34,570 --> 01:17:36,790 Vi vil gjøre det over her. 1661 01:17:36,790 --> 01:17:38,040 Jeg skal gå tilbake til denne websiden. 1662 01:17:38,040 --> 01:17:40,630 1663 01:17:40,630 --> 01:17:42,160 OK, starter vi med dokumentet. 1664 01:17:42,160 --> 01:17:49,698 1665 01:17:49,698 --> 01:17:52,090 >> Hva blir det neste? 1666 01:17:52,090 --> 01:17:53,910 Så når du leser gjennom - 1667 01:17:53,910 --> 01:17:54,540 >> PUBLIKUM: HTML. 1668 01:17:54,540 --> 01:17:55,790 >> JASON Hirschhorn: HTML er neste. 1669 01:17:55,790 --> 01:17:57,850 Vi kommer til å gå tag av tag. 1670 01:17:57,850 --> 01:18:00,890 Hva er etter HTML? 1671 01:18:00,890 --> 01:18:01,550 >> PUBLIKUM: Head. 1672 01:18:01,550 --> 01:18:02,800 >> JASON Hirschhorn: Head. 1673 01:18:02,800 --> 01:18:05,090 1674 01:18:05,090 --> 01:18:08,520 Hva er etter hodet? 1675 01:18:08,520 --> 01:18:09,770 >> PUBLIKUM: Tittel. 1676 01:18:09,770 --> 01:18:11,880 1677 01:18:11,880 --> 01:18:12,560 >> JASON Hirschhorn: Tittel. 1678 01:18:12,560 --> 01:18:14,740 Og tittelen har en verdi på Google, men jeg har ikke tenkt å 1679 01:18:14,740 --> 01:18:16,240 skriver at i for nå. 1680 01:18:16,240 --> 01:18:18,750 OK, hvor kommer kroppen gå? 1681 01:18:18,750 --> 01:18:20,890 >> PUBLIKUM: Også kommer ut av HTML. 1682 01:18:20,890 --> 01:18:21,490 >> JASON Hirschhorn: Nettopp. 1683 01:18:21,490 --> 01:18:22,820 Kroppen kommer ut av her. 1684 01:18:22,820 --> 01:18:25,970 1685 01:18:25,970 --> 01:18:30,330 Betyr se alle hvorfor det er tilfelle? 1686 01:18:30,330 --> 01:18:32,970 Du bør trolig være i stand til å finne dette ut, også, selv om jeg ikke har 1687 01:18:32,970 --> 01:18:33,665 denne fine innrykk. 1688 01:18:33,665 --> 01:18:37,680 >> Innrykket slags gir det bort, men du kan se at hodet tag har 1689 01:18:37,680 --> 01:18:41,240 vært stengt, noe som betyr at vi trolig kan ikke gå ned her. 1690 01:18:41,240 --> 01:18:43,460 Vi trenger å gå tilbake til hva var rett før hodet 1691 01:18:43,460 --> 01:18:44,730 tag, eller under det. 1692 01:18:44,730 --> 01:18:46,720 Vi er selv med hodet tag. 1693 01:18:46,720 --> 01:18:48,560 >> Og under kroppen går skjema. 1694 01:18:48,560 --> 01:18:50,300 Under formen er det to innganger. 1695 01:18:50,300 --> 01:18:53,330 1696 01:18:53,330 --> 01:18:54,420 OK. 1697 01:18:54,420 --> 01:18:55,490 Det er alt jeg fikk. 1698 01:18:55,490 --> 01:18:56,980 Quiz 1 er i morgen. 1699 01:18:56,980 --> 01:18:58,350 Jeg er så begeistret for dere. 1700 01:18:58,350 --> 01:18:59,690 Det kommer til å være en eksplosjon. 1701 01:18:59,690 --> 01:19:00,250 >> Hvis du har - 1702 01:19:00,250 --> 01:19:00,600 >> PUBLIKUM: [APPLAUSE] 1703 01:19:00,600 --> 01:19:02,460 >> JASON Hirschhorn: Oh stopp, stopp. 1704 01:19:02,460 --> 01:19:04,520 Men nei, jeg tuller. 1705 01:19:04,520 --> 01:19:07,220 Hvis du har noen spørsmål, ikke sant etter avsnitt, vil jeg være ute. 1706 01:19:07,220 --> 01:19:11,700 Hvis du har spørsmål i kveld, gjerne ringe, e-post, Gchat, 1707 01:19:11,700 --> 01:19:12,740 brevdue meg. 1708 01:19:12,740 --> 01:19:13,950 Lykke til i morgen. 1709 01:19:13,950 --> 01:19:16,220 Ha en fantastisk Thanksgiving break, hvis jeg ikke ser deg før da. 1710 01:19:16,220 --> 01:19:19,320 Og jeg vil se deg etter Thanksgiving på tirsdag for vår endelige 1711 01:19:19,320 --> 01:19:20,295 § partiet noensinne. 1712 01:19:20,295 --> 01:19:21,545 >> PUBLIKUM: [uhørbart]. 1713 01:19:21,545 --> 01:19:25,270 1714 01:19:25,270 --> 01:19:25,790 >> JASON Hirschhorn: Great. 1715 01:19:25,790 --> 01:19:28,900 OK, jeg får se dere neste uke, eller i to uker. 1716 01:19:28,900 --> 01:19:30,150 Og lykke til i morgen. 1717 01:19:30,150 --> 01:19:32,203