1 00:00:00,000 --> 00:00:08,090 2 00:00:08,090 --> 00:00:09,810 >> JASON HIRSCHHORN: Velkommen, alle til uge 10. 3 00:00:09,810 --> 00:00:15,130 Det er en spændende uge, fordi i morgen er Quiz 1, som vi vil få 4 00:00:15,130 --> 00:00:16,400 til i en anden. 5 00:00:16,400 --> 00:00:21,770 I dag i afsnittet, vi kommer til at gå over nogle ressourcer til quizzen, og 6 00:00:21,770 --> 00:00:24,890 så vil jeg besvare enhver og alle spørgsmål, du fyre har. 7 00:00:24,890 --> 00:00:27,880 Og vi vil til sidst ende med nogle praksis problemer. 8 00:00:27,880 --> 00:00:30,940 >> Vi kan tilbringe hele afsnittet besvare spørgsmål. 9 00:00:30,940 --> 00:00:33,240 Vi kan tilbringe hele afsnittet går over praksis problemer. 10 00:00:33,240 --> 00:00:36,890 Vi vil bare ekspandere til at fylde rum og tid, vi har. 11 00:00:36,890 --> 00:00:40,590 >> Så jeg sætte denne liste op hver uge, men det er særligt vigtigt i denne uge. 12 00:00:40,590 --> 00:00:44,980 For at studere, hvis du ikke har startede allerede, oh boy. 13 00:00:44,980 --> 00:00:46,400 Men forhåbentlig har du allerede begyndt. 14 00:00:46,400 --> 00:00:50,710 Og du går igennem de materialer, og ressourcer, der er anført her. 15 00:00:50,710 --> 00:00:54,300 Jeg vil varmt anbefale en række af disse. 16 00:00:54,300 --> 00:00:58,780 >> Især noter er utroligt vigtigt og hjælpsomme. 17 00:00:58,780 --> 00:01:02,880 Den study.cs50.net giver en stor primer på en masse 18 00:01:02,880 --> 00:01:04,250 de emner, vi dækket. 19 00:01:04,250 --> 00:01:07,810 Det har også nogle store øve problemer. 20 00:01:07,810 --> 00:01:11,260 Og så, Google er stor, også. 21 00:01:11,260 --> 00:01:12,360 Jeg ved ikke, hvad du ville bruge det til. 22 00:01:12,360 --> 00:01:14,090 Men bruge Google, så godt. 23 00:01:14,090 --> 00:01:16,680 >> Nå ud til mig, hvis du har nogen spørgsmål, kommentarer eller bekymringer. 24 00:01:16,680 --> 00:01:19,420 Kig over revisionen sessionen lysbilleder fra i aftes. 25 00:01:19,420 --> 00:01:21,540 Eller, hvis du har lidt tid, se videoen. 26 00:01:21,540 --> 00:01:24,930 De giver en masse nyttige materiale og information. 27 00:01:24,930 --> 00:01:29,730 Og prøv og dække hvis ikke alle, mange af de emner, vi har dækket, og at du 28 00:01:29,730 --> 00:01:32,610 måske se på quizzen. 29 00:01:32,610 --> 00:01:35,590 >> Tale af quizzen, at 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 af jer tager det ved 1 Klokken, og nogle af jer er 32 00:01:40,740 --> 00:01:42,740 tager det på 5:30. 33 00:01:42,740 --> 00:01:45,300 For den tid, du tager det, og placering du tager det, så sørg 34 00:01:45,300 --> 00:01:49,400 du tjekke 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 at tage med dig. 36 00:01:54,340 --> 00:01:57,310 Ofte folk ikke bruge denne ark på alle under quizzen. 37 00:01:57,310 --> 00:01:59,740 Men virkelig, det er en utrolig nyttige undersøgelse værktøj. 38 00:01:59,740 --> 00:02:04,370 Så at sammensætte dette blad er hvad Jeg tilbragte sandsynligvis tre eller fire timer 39 00:02:04,370 --> 00:02:07,110 gør, når jeg studerede for CS50, og der var let den mest hjælpsomme 40 00:02:07,110 --> 00:02:08,740 måde jeg kunne studere til quizzen. 41 00:02:08,740 --> 00:02:10,949 Så selv hvis du har nogle andre menneskers studievejledninger at se på og 42 00:02:10,949 --> 00:02:14,740 bruge som referencer, jeg varmt anbefale gøre din egen undersøgelse guide, sætte 43 00:02:14,740 --> 00:02:15,490 at ting sammen. 44 00:02:15,490 --> 00:02:17,335 Det er virkelig hjælper dig med at lære alt materialet. 45 00:02:17,335 --> 00:02:20,270 46 00:02:20,270 --> 00:02:24,810 >> Sidst men ikke mindst i dette afsnit, efter quizzen i morgen der er en 47 00:02:24,810 --> 00:02:25,940 mere foredrag - 48 00:02:25,940 --> 00:02:26,960 næste mandag. 49 00:02:26,960 --> 00:02:30,430 Der er endnu en del, ikke næste Tirsdag før Thanksgiving, men den 50 00:02:30,430 --> 00:02:31,630 Tirsdag efter det. 51 00:02:31,630 --> 00:02:36,600 Vi vil mødes sammen til en endelig afskedsfest og også gør nogle cool 52 00:02:36,600 --> 00:02:41,530 ting at få jer begejstrede yderligere undersøgelser i datalogi. 53 00:02:41,530 --> 00:02:45,040 >> Der er en mere projektorienteret, en mere retfærdig, en mere hackathon. 54 00:02:45,040 --> 00:02:47,900 Vi nærmer sig slutningen af ​​CS50, der er spændende - 55 00:02:47,900 --> 00:02:50,950 men også, hvis du ligesom mig lidt trist. 56 00:02:50,950 --> 00:02:53,950 Før jeg går videre, er der nogen der har eventuelle spørgsmål om, hvad 57 00:02:53,950 --> 00:02:55,200 vi har dækket indtil nu? 58 00:02:55,200 --> 00:03:02,760 59 00:03:02,760 --> 00:03:08,730 >> OK, godt lad os gå over nogle spørgsmål at du har for quizzen og emner 60 00:03:08,730 --> 00:03:09,960 vi kan dække. 61 00:03:09,960 --> 00:03:11,540 Så dette er en liste, som jeg sat sammen. 62 00:03:11,540 --> 00:03:15,500 Det er på ingen måde udtømmende, men forhåbentlig vil jogge din hukommelse, hvis du 63 00:03:15,500 --> 00:03:20,310 har nogle spørgsmål om nogen af ​​disse emner, eller hvis du har spørgsmål om 64 00:03:20,310 --> 00:03:23,260 problemer praksis fra quizzer i de forløbne år. 65 00:03:23,260 --> 00:03:27,470 >> Jeg havde et par spørgsmål, der var mailet til mig, men jeg ønsker at holde ud 66 00:03:27,470 --> 00:03:29,490 på dem, for et sekund. 67 00:03:29,490 --> 00:03:34,570 Er der nogen har nogen spørgsmål, problemer, de ikke forstår, 68 00:03:34,570 --> 00:03:38,100 svar, de ikke forstod at få os 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 hurtig? 71 00:03:41,585 --> 00:03:46,540 Ligesom, hvad vi har brug for at vide eller burde forstå dem? 72 00:03:46,540 --> 00:03:49,750 >> JASON HIRSCHHORN: Jeg har tænkt mig at besvare generelt dette spørgsmål om, hvad gør jeg 73 00:03:49,750 --> 00:03:52,100 behøver at vide om givent emne x? 74 00:03:52,100 --> 00:03:55,280 Fordi jeg har en følelse mange af jer kommer til at spørge mig, eller er 75 00:03:55,280 --> 00:03:56,570 nysgerrig om det. 76 00:03:56,570 --> 00:04:02,920 Så i det omfang, at emnet var dækket i foredrag, eller § eller på 77 00:04:02,920 --> 00:04:06,460 study.cs50.net, et problem indstillet, bør være bekendt med det. 78 00:04:06,460 --> 00:04:10,580 >> Så du behøver ikke at kende alle typer af tag, der er tilgængelige i HTML eller 79 00:04:10,580 --> 00:04:15,950 enhver form for attribut eller egenskab du kan give noget i CSS. 80 00:04:15,950 --> 00:04:20,204 Men hvis du så det i et foredrag eksempel hvis du så det på et problem 81 00:04:20,204 --> 00:04:23,290 sæt, bør du nok være bekendt med det, især ting du så 82 00:04:23,290 --> 00:04:24,260 i foredraget. 83 00:04:24,260 --> 00:04:28,510 Så vi drøftede dokument objekt model en smule i 84 00:04:28,510 --> 00:04:30,530 sektion, så meget mere i foredraget. 85 00:04:30,530 --> 00:04:32,990 Du skal være fortrolig med, at meget af det. 86 00:04:32,990 --> 00:04:34,750 >> Og du skal være fortrolig med Ajax i samme omfang. 87 00:04:34,750 --> 00:04:38,105 Vi har aldrig set utroligt avanceret eller komplicerede eksempler på Ajax, så 88 00:04:38,105 --> 00:04:40,920 du kommer ikke til at blive bedt om at gøre noget utroligt kompliceret. 89 00:04:40,920 --> 00:04:45,180 Men du kan blive spurgt, hvordan gør jeg foretage et opkald ved hjælp af Ajax jQuery? 90 00:04:45,180 --> 00:04:47,350 Hvilket er noget, du har set en række gange før, både i 91 00:04:47,350 --> 00:04:51,370 gennemgå session og i foredrag, og Det er kun to-ish linjer kode. 92 00:04:51,370 --> 00:04:53,190 >> Så det er noget du bør være bekendt med. 93 00:04:53,190 --> 00:04:55,550 Men igen, for alle disse emner, hvis du har set det 94 00:04:55,550 --> 00:04:59,220 før, det er fair spil. 95 00:04:59,220 --> 00:05:01,540 Og vi kan spørge dig - naturligvis, vi er vil bede dig ting, du 96 00:05:01,540 --> 00:05:02,340 ikke har set før. 97 00:05:02,340 --> 00:05:04,240 Coding noget, du ikke har set før. 98 00:05:04,240 --> 00:05:06,570 Hvilket ikke at sige, at du ikke har set de værktøjer til at løse 99 00:05:06,570 --> 00:05:08,120 dette problem før. 100 00:05:08,120 --> 00:05:09,200 Du har set disse værktøjer. 101 00:05:09,200 --> 00:05:11,160 >> For eksempel, på quiz 1 hvis du nødt til at 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 ved hvordan man bruger en for-løkke, du ved, hvordan at bruge, hvis forhold. 104 00:05:14,980 --> 00:05:18,570 Du ved, hvordan man skriver variabler i C. Det kommer til at være det samme her. 105 00:05:18,570 --> 00:05:22,350 Du kommer ikke til at blive bedt om at gøre noget, du ikke har set før, men 106 00:05:22,350 --> 00:05:25,150 kan du blive bedt om at, ligesom, sætte noget sammen på en ny måde, eller 107 00:05:25,150 --> 00:05:27,650 løse en anden type problem. 108 00:05:27,650 --> 00:05:30,830 >> Undskyld, det var ikke specifikke for din spørgsmål, men jeg kan ikke svare på om 109 00:05:30,830 --> 00:05:34,390 hver enkelt emne, hvad du gør eller ikke brug for at vide. 110 00:05:34,390 --> 00:05:36,830 Men også, undskyld, sidste ting på det. 111 00:05:36,830 --> 00:05:42,900 Vi har brugt betydeligt mere tid på på link-lister, end vi har på Ajax. 112 00:05:42,900 --> 00:05:46,160 Du ikke bruge Ajax i et problem sæt. 113 00:05:46,160 --> 00:05:48,510 En af de centrale elementer i at Problemet sæt, var link lister. 114 00:05:48,510 --> 00:05:50,370 Og vi har brugt en masse tid i foredrag og sektion bruge det. 115 00:05:50,370 --> 00:05:57,080 >> Så odds er link liste vil komme op mere ofte på quizzen end Ajax vilje. 116 00:05:57,080 --> 00:06:00,390 Eller de spørgsmål, der har at gøre med link Listen vil være værd flere point. 117 00:06:00,390 --> 00:06:03,520 Så du kan helt sikkert fokusere og smal ind på ting, der er mere 118 00:06:03,520 --> 00:06:06,720 tilbøjelige til at komme op, fordi vi har brugt mere tid på dem. 119 00:06:06,720 --> 00:06:08,700 >> OK andre spørgsmål? 120 00:06:08,700 --> 00:06:09,890 Ja. 121 00:06:09,890 --> 00:06:13,660 >> PUBLIKUM: Kan vi gå over brugen af anonyme funktioner i JavaScript? 122 00:06:13,660 --> 00:06:17,140 Jeg er er lidt forvirret over 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 forsøger at tænke, hvordan jeg kunne skrive dette på - 125 00:06:24,400 --> 00:06:27,590 så lad os faktisk åbne denne kode. 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 sidste uge. 128 00:06:36,030 --> 00:06:41,400 Og du har set det før, hvis du var her i afsnittet i sidste uge. 129 00:06:41,400 --> 00:06:43,180 Eller du har set noget ligner dette før. 130 00:06:43,180 --> 00:06:44,800 >> Men du kan se på denne første linje. 131 00:06:44,800 --> 00:06:46,950 Dette er, hvordan du starter - 132 00:06:46,950 --> 00:06:48,010 alles set det før. 133 00:06:48,010 --> 00:06:51,930 Hvis du ønsker at sætte nogle JavaScript-kode, du sætter det inde i denne, under forudsætning af 134 00:06:51,930 --> 00:06:53,520 du bruger JQuery. 135 00:06:53,520 --> 00:06:56,940 Det siger, ikke gør noget indtil dokumentets ladt. 136 00:06:56,940 --> 00:06:59,940 >> Og så, Curt, du se lige her vi gør noget som dette - 137 00:06:59,940 --> 00:07:02,560 funktion åben paren, lukket paren. 138 00:07:02,560 --> 00:07:05,250 Så vi ikke giver denne fungere et navn. 139 00:07:05,250 --> 00:07:09,160 Vi kommer ikke til at definere denne funktion er meningen at køre og derefter 140 00:07:09,160 --> 00:07:10,830 kalde det en masse gange. 141 00:07:10,830 --> 00:07:15,140 Vi siger bare dette dokument allerede tager en funktion. 142 00:07:15,140 --> 00:07:16,690 Et par ting at gøre. 143 00:07:16,690 --> 00:07:20,670 >> Og vi ønsker ikke at bruge tid på give den et navn eller gemme den til 144 00:07:20,670 --> 00:07:21,650 evighed. 145 00:07:21,650 --> 00:07:24,150 Vi ønsker blot at køre nogle ting. 146 00:07:24,150 --> 00:07:27,500 Så en anonym funktion slags af tjener dette formål. 147 00:07:27,500 --> 00:07:30,280 Når du ikke kommer til at bruge noget igen og igen, så du ikke behøver 148 00:07:30,280 --> 00:07:32,420 at give den et navn - du bare ønsker at bruge det én gang - 149 00:07:32,420 --> 00:07:36,720 ville du bare sige funktion, eksempel, i dette tilfælde, og du er bare 150 00:07:36,720 --> 00:07:38,280 definition noget, du kunne give et navn. 151 00:07:38,280 --> 00:07:40,920 >> Ligesom, vi kunne trække denne funktion ud og give den et navn og derefter kalde det 152 00:07:40,920 --> 00:07:41,760 fungere her. 153 00:07:41,760 --> 00:07:44,270 Men vi behøver ikke at fordi vi ikke ønsker at spilde tid på at give det et navn eller 154 00:07:44,270 --> 00:07:46,240 spilder noget i vores navn rummet. 155 00:07:46,240 --> 00:07:47,530 Og du vil se, at en masse. 156 00:07:47,530 --> 00:07:52,810 For eksempel ser vi, at en masse i denne kode, men du har set dette før, når 157 00:07:52,810 --> 00:07:54,010 du klikker på noget - 158 00:07:54,010 --> 00:07:55,980 køre denne type kode. 159 00:07:55,980 --> 00:07:59,850 >> Vi kunne definere den kode, vi ønsker at køre, når vi klikker, i dette tilfælde, 160 00:07:59,850 --> 00:08:03,450 dette id, som en særskilt funktion og derefter køre denne funktion. 161 00:08:03,450 --> 00:08:07,940 Men i dette tilfælde, er vi bare springe dette skridt og flytte den ind i her og 162 00:08:07,940 --> 00:08:10,340 bare for at definere alt at vi ønsker at ske, og 163 00:08:10,340 --> 00:08:12,450 ikke at give den et navn. 164 00:08:12,450 --> 00:08:15,550 Det måske stadig ikke har besvaret dit spørgsmål. 165 00:08:15,550 --> 00:08:15,960 >> PUBLIKUM: Nej, det gør. 166 00:08:15,960 --> 00:08:18,290 Jeg mener, jeg tror jeg bare ikke rigtig få, hvorfor det ville være en 167 00:08:18,290 --> 00:08:20,800 fungere på alle, selv om. 168 00:08:20,800 --> 00:08:21,590 Fordi det ikke er virkelig at blive kaldt. 169 00:08:21,590 --> 00:08:23,170 Det betyder egentlig ikke noget navn. 170 00:08:23,170 --> 00:08:25,510 >> JASON HIRSCHHORN: Det er en funktion i forstand, at det er en række trin, 171 00:08:25,510 --> 00:08:28,460 ligesom du ville sætte i en funktion. 172 00:08:28,460 --> 00:08:29,970 Og så det er derfor, vi kalder den anonyme funktion. 173 00:08:29,970 --> 00:08:30,815 Vi kommer ikke til at give det et navn. 174 00:08:30,815 --> 00:08:33,159 Vi kommer ikke til at spilde prøve at nævne det, men vi kunne. 175 00:08:33,159 --> 00:08:34,890 >> Anonyme funktioner du kan altid give et navn. 176 00:08:34,890 --> 00:08:37,620 Så for eksempel denne kode lige her, vi kunne sætte denne kode inde i en 177 00:08:37,620 --> 00:08:39,929 funktion og derefter kalde denne funktion her. 178 00:08:39,929 --> 00:08:41,600 I stedet siger vi, vi ikke kommer at genere med. 179 00:08:41,600 --> 00:08:44,390 Vi vil bare skrive det hele lige her. 180 00:08:44,390 --> 00:08:49,840 >> Det er ligesom nogle gange, når du skriver en fire loop i C - jer 181 00:08:49,840 --> 00:08:51,630 har set det før - måske er du iteration gennem en forloop 182 00:08:51,630 --> 00:08:53,090 ind i lig 0. 183 00:08:53,090 --> 00:08:54,830 I er mindre end strlen. 184 00:08:54,830 --> 00:08:59,520 Eller du går gennem nogle array, kan du spare matrix 185 00:08:59,520 --> 00:09:01,580 indeks i i nogle variabel. 186 00:09:01,580 --> 00:09:02,830 Og du bruge denne variabel. 187 00:09:02,830 --> 00:09:06,550 Så du behøver ikke at omskrive matrix beslag jeg igen og igen og igen. 188 00:09:06,550 --> 00:09:08,160 >> Og det er lidt ligesom en dummy-variabel. 189 00:09:08,160 --> 00:09:10,790 Det er ikke tjener meget andet formål end gøre din kode en smule renere 190 00:09:10,790 --> 00:09:12,120 og lettere at læse. 191 00:09:12,120 --> 00:09:13,290 Lignende funktion her. 192 00:09:13,290 --> 00:09:15,665 Bare gør det lidt lettere, men funktionelt er der ingen forskel. 193 00:09:15,665 --> 00:09:18,620 194 00:09:18,620 --> 00:09:19,330 Besvarer det dit spørgsmål? 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 sætte funktion parenteser begivenhed. 199 00:09:25,380 --> 00:09:26,420 Betyder det noget? 200 00:09:26,420 --> 00:09:30,500 Eller er det for ting som at de ville gøre 201 00:09:30,500 --> 00:09:35,100 document.ready funktion begivenhed. 202 00:09:35,100 --> 00:09:37,130 >> JASON HIRSCHHORN: Vi har set dette, og igen, disse er mindre ting, der 203 00:09:37,130 --> 00:09:39,590 sandsynligvis Jeg ønsker ikke at bruge for meget tid på. 204 00:09:39,590 --> 00:09:43,200 Fordi nogle gange ønsker jeg ikke folk bliver ellevild, at de ikke har 205 00:09:43,200 --> 00:09:44,220 hørt om disse ting så meget. 206 00:09:44,220 --> 00:09:46,200 Men vi snakkede lidt om hændelseshandlere. 207 00:09:46,200 --> 00:09:50,360 Så sker der noget, og så denne funktion udføres. 208 00:09:50,360 --> 00:09:53,210 Og så ønsker vi også at vide nogle detaljer om hvad 209 00:09:53,210 --> 00:09:54,450 skete i denne begivenhed. 210 00:09:54,450 --> 00:09:55,730 >> Så tænk tilbage til problemet set 4. 211 00:09:55,730 --> 00:09:58,390 Det er formentlig den nemmeste måde at forstå, at bryde ud. 212 00:09:58,390 --> 00:09:59,740 Der var nogle kode - 213 00:09:59,740 --> 00:10:01,980 som en hændelse ville ske, men begivenhed kan betyde mange ting. 214 00:10:01,980 --> 00:10:06,240 Hvis kunne betyde musen er klikket, er det kan betyde, at du ramte en piletast, 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 alle gemt i denne generiske ting kaldet begivenheder. 217 00:10:09,800 --> 00:10:12,340 Og så kan vi sige, er denne begivenhed denne ting? 218 00:10:12,340 --> 00:10:13,640 Eller er denne begivenhed denne ting? 219 00:10:13,640 --> 00:10:15,500 Eller hvad slags skete med denne begivenhed? 220 00:10:15,500 --> 00:10:18,660 Så det er derfor du opretter denne variabel der for at redde denne ekstra information 221 00:10:18,660 --> 00:10:21,420 om, hvad der præcist skete, at du vil ønsker at 222 00:10:21,420 --> 00:10:24,840 udnytte i funktionen. 223 00:10:24,840 --> 00:10:28,200 Men igen, det er nok en af ​​de mindre vigtige ting at være super 224 00:10:28,200 --> 00:10:29,450 bekendt med. 225 00:10:29,450 --> 00:10:31,470 226 00:10:31,470 --> 00:10:36,110 >> OK, hvad andre spørgsmål har folk havde, eller anstødssten, de har 227 00:10:36,110 --> 00:10:37,360 stødt mens du gennemgår? 228 00:10:37,360 --> 00:10:41,260 229 00:10:41,260 --> 00:10:42,510 Vi vil tilbage til denne liste. 230 00:10:42,510 --> 00:10:52,550 231 00:10:52,550 --> 00:10:56,080 Hvad under træningen quizzer, hvis mennesker har taget dem, der allerede? 232 00:10:56,080 --> 00:10:59,110 Hvad var nogle problemer, som udløst jer op? 233 00:10:59,110 --> 00:11:08,970 234 00:11:08,970 --> 00:11:12,720 Jeg kender til en kendsgerning, at sidste års quiz var virkelig hårdt. 235 00:11:12,720 --> 00:11:15,670 >> PUBLIKUM: Kan du forklare, hvad en SQL-injektion angreb er? 236 00:11:15,670 --> 00:11:18,970 >> JASON HIRSCHHORN: OK, godt. 237 00:11:18,970 --> 00:11:20,440 Så vi talte om det en smule. 238 00:11:20,440 --> 00:11:22,050 Der er et foredrag om sikkerhed. 239 00:11:22,050 --> 00:11:25,670 Og igen, som jeg nævnte tidligere, dette er en side. 240 00:11:25,670 --> 00:11:30,010 Men du vil blive frustreret på quizzen når du læser nogle små to point 241 00:11:30,010 --> 00:11:33,040 spørgsmål, og du er ligesom, når gjorde jeg nogensinde lærer det? 242 00:11:33,040 --> 00:11:35,560 >> Alle disse ting i disse foredrag at du ikke tror, ​​du havde brug for at 243 00:11:35,560 --> 00:11:38,290 kender, eller du kan dække over, fordi de ikke har at gøre med den 244 00:11:38,290 --> 00:11:41,860 problem sæt, der vil sandsynligvis komme op igen på quizzen. 245 00:11:41,860 --> 00:11:45,030 Så, seje, sjove ting, som du bare troede David fortalte for dig at 246 00:11:45,030 --> 00:11:49,070 nyde, han fortæller dig at du nyde og gøre dig bare være super 247 00:11:49,070 --> 00:11:50,550 begejstrede lære alt der er at lære 248 00:11:50,550 --> 00:11:51,670 om datalogi. 249 00:11:51,670 --> 00:11:53,680 Disse ting også komme op på quizzer. 250 00:11:53,680 --> 00:11:56,440 Så selv disse små ting, som ikke direkte forholde sig til dit problem 251 00:11:56,440 --> 00:11:59,630 indstillet, da du fyre kender fra Quiz 0, sandsynligvis vil komme op. 252 00:11:59,630 --> 00:12:01,530 Og det er et godt eksempel af noget. 253 00:12:01,530 --> 00:12:10,140 >> Så en SQL-injektion angreb er, når du få nogle oplysninger fra brugeren og 254 00:12:10,140 --> 00:12:15,090 du ønsker at indsætte det i en tabel ved hjælp en SQL indsætte erklæring, men du 255 00:12:15,090 --> 00:12:17,680 ikke rense input før tid. 256 00:12:17,680 --> 00:12:21,560 Så selvfølgelig har vi set SQL-sætninger. 257 00:12:21,560 --> 00:12:22,810 Jeg vil bare åbne op - 258 00:12:22,810 --> 00:12:25,590 259 00:12:25,590 --> 00:12:26,840 lad os gå - 260 00:12:26,840 --> 00:12:31,290 261 00:12:31,290 --> 00:12:31,960 vi vil gå til revisionen - 262 00:12:31,960 --> 00:12:35,180 Jeg tror, ​​der dækkede 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 fandt du den? 266 00:12:41,270 --> 00:12:44,990 >> JASON HIRSCHHORN: Så hvis du går til CS50.net, quizzer, og så kan du 267 00:12:44,990 --> 00:12:47,170 rulle over og få dias fra gennemgangen session. 268 00:12:47,170 --> 00:12:49,860 Men du kan se det er et godt eksempel af en SQL-injektion angreb. 269 00:12:49,860 --> 00:12:53,690 Vi tager nogle oplysninger fra brugeren og de giver os en snor, og så vi 270 00:12:53,690 --> 00:12:55,780 ønsker at indsætte denne streng i en database. 271 00:12:55,780 --> 00:12:59,780 Generelt vil vi sanitize at input, som betyder, at der er nogle 272 00:12:59,780 --> 00:13:01,050 tegn, der er farlige. 273 00:13:01,050 --> 00:13:04,000 >> For eksempel i SQL strenge, disse citater - 274 00:13:04,000 --> 00:13:05,000 enkelte citationstegn eller anførselstegn - 275 00:13:05,000 --> 00:13:05,620 betyde noget. 276 00:13:05,620 --> 00:13:08,380 De betyder afslutte denne streng her. 277 00:13:08,380 --> 00:13:13,090 Og så hvis brugeren giver dig et enkelt eller en dobbelt citat, kunne de være 278 00:13:13,090 --> 00:13:18,970 forsøger at spænde ben for din SQL-forespørgsel og indsætte nogle dårlige ting i det. 279 00:13:18,970 --> 00:13:23,130 Og hvis de gør det, de kunne vinde kontrol af databasen eller gøre nogle 280 00:13:23,130 --> 00:13:24,760 ting, som du ikke ønsker dem til at gøre. 281 00:13:24,760 --> 00:13:28,300 >> Så det er derfor, hver gang vi tager SQL forespørgsler, vi rense input før 282 00:13:28,300 --> 00:13:31,090 sætte det ind i databasen, som betyder, at vi undslippe disse tegn. 283 00:13:31,090 --> 00:13:32,590 Vi taler om, at der i et sekund. 284 00:13:32,590 --> 00:13:35,820 Men lang historie kort, en SQL-injektion angreb er, hvis du ikke gør det - 285 00:13:35,820 --> 00:13:39,760 hvis du ikke tage sig af input de gav dig før du sætter dit 286 00:13:39,760 --> 00:13:46,830 database, kan de, som du kan se ned her, køre en forespørgsel, at i virkeligheden - 287 00:13:46,830 --> 00:13:52,470 de lægger i deres kode hernede og denne vælge linje hernede vælger 288 00:13:52,470 --> 00:13:56,360 alt fra tabellen uanset af, hvad adgangskoden er givet. 289 00:13:56,360 --> 00:13:58,960 Fordi du har den eller 1 er lig med 1. 290 00:13:58,960 --> 00:14:02,750 >> Så det er dybest set, lang historie kort, en måde at overtage databasen. 291 00:14:02,750 --> 00:14:07,570 Spørgsmålet er så, til jer, er hvor i p sæt 7 har du rense alle 292 00:14:07,570 --> 00:14:10,010 input til din SQL-forespørgsler? 293 00:14:10,010 --> 00:14:11,230 Hvor kom det skridt ske? 294 00:14:11,230 --> 00:14:14,150 Hvor vil du forhindre SQL-injektion angreb fra sker i p indstille 7? 295 00:14:14,150 --> 00:14:20,100 296 00:14:20,100 --> 00:14:20,490 Ja. 297 00:14:20,490 --> 00:14:21,870 >> PUBLIKUM: Crypt? 298 00:14:21,870 --> 00:14:23,120 >> JASON HIRSCHHORN: Så det var ikke krypt. 299 00:14:23,120 --> 00:14:52,360 300 00:14:52,360 --> 00:14:55,380 Vi gjorde ikke, at du gør dette for dette særligt problem indstillet, men det sker 301 00:14:55,380 --> 00:14:58,190 i forespørgslen funktionen. 302 00:14:58,190 --> 00:15:00,930 Vi har faktisk skrev det for dig, og vi tog sig af 303 00:15:00,930 --> 00:15:03,040 desinfektion indgange for dig. 304 00:15:03,040 --> 00:15:07,790 Men i de forløbne år har de studerende haft at skrive indgangene på egen hånd. 305 00:15:07,790 --> 00:15:10,020 I p sæt 7, en masse af jer - 306 00:15:10,020 --> 00:15:11,270 lad mig åbne en anden fil. 307 00:15:11,270 --> 00:15:18,530 308 00:15:18,530 --> 00:15:22,590 >> Så du vil bemærke her en masse mennesker, i problem indstille 7, kaldte ikke 309 00:15:22,590 --> 00:15:25,240 denne funktion på strenge. 310 00:15:25,240 --> 00:15:27,880 Denne funktion, htmlspecialchars, igen - 311 00:15:27,880 --> 00:15:31,410 denne streng kan have nogle ting der i HTML betyde noget andet. 312 00:15:31,410 --> 00:15:36,160 Ligesom en bandage, en firkant eller en vinkel beslag betyde noget i HTML. 313 00:15:36,160 --> 00:15:38,980 >> Og så hvis du udskriver det ud til den skærmen, eller hvis du bare tage det og 314 00:15:38,980 --> 00:15:42,260 printe det ud til din HTML, som måske gøre noget, du ikke forventer. 315 00:15:42,260 --> 00:15:45,180 Så htmlspecialchars går over alle dem, tegn, der har særlige 316 00:15:45,180 --> 00:15:47,030 møde og undslipper dem. 317 00:15:47,030 --> 00:15:51,450 Så det bliver printet ud som teksten du ønsker at se, i stedet for 318 00:15:51,450 --> 00:15:53,280 skrue op din HTML. 319 00:15:53,280 --> 00:15:55,040 Vi kaldte denne funktion i overskriften. 320 00:15:55,040 --> 00:15:57,390 Og en masse mennesker har glemt at kalder denne funktion i 321 00:15:57,390 --> 00:15:58,700 kode, du skrev. 322 00:15:58,700 --> 00:16:03,970 >> Så, for eksempel, havde hvis en bestand navn en vinkelbeslag i det, og du har glemt 323 00:16:03,970 --> 00:16:06,675 at kalde denne funktion, at vinklen beslag kunne have smidt hvad 324 00:16:06,675 --> 00:16:08,250 din HTML lignede. 325 00:16:08,250 --> 00:16:11,810 Men at kalde denne funktion vil slippe at så det faktisk udskrives som en 326 00:16:11,810 --> 00:16:15,870 vinkelbeslag og ikke smide fra din HTML-kode. 327 00:16:15,870 --> 00:16:18,760 >> Den samme grund, vi har set, til tider, skråstreger før anførselstegn i en 328 00:16:18,760 --> 00:16:22,310 printf linje, fordi vi ikke ønsker, at anførselstegn ned strengen. 329 00:16:22,310 --> 00:16:24,050 Vi ønsker at udskrive dem ud til skærmen. 330 00:16:24,050 --> 00:16:26,920 Så alt dette er den samme idé. 331 00:16:26,920 --> 00:16:28,260 Besvarer det dit spørgsmål? 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: Kan du have en opfølgning? 335 00:16:35,300 --> 00:16:43,252 >> PUBLIKUM: Jeg gætter SQL-injektion angreb har at gøre med det? 336 00:16:43,252 --> 00:16:45,720 Jeg forstår ikke, hvordan de to er beslægtede. 337 00:16:45,720 --> 00:16:47,610 Hvorfor ville du gøre specialchars? 338 00:16:47,610 --> 00:16:51,200 >> JASON HIRSCHHORN: OK, så SQL injektion angreb er, når du injicerer 339 00:16:51,200 --> 00:16:59,180 nogle ondsindede strenge i nogens program, og de bare tage den og køre 340 00:16:59,180 --> 00:17:01,230 SQL-forespørgslen med en snor du gav dem. 341 00:17:01,230 --> 00:17:04,220 Som du kan se ned her, at kunne være problematisk. 342 00:17:04,220 --> 00:17:07,480 Så den måde du forebygge mod det er du tager deres streng, som de giver 343 00:17:07,480 --> 00:17:09,220 dig - så denne streng lige her - 344 00:17:09,220 --> 00:17:11,240 og du rense det. 345 00:17:11,240 --> 00:17:14,305 Du slippe alle de ting, er potentielt problematisk. 346 00:17:14,305 --> 00:17:18,626 Så du behøver ikke fortolke dem som noget der betyder noget. 347 00:17:18,626 --> 00:17:23,390 >> Og et eksempel på, at med HTML er denne funktion. 348 00:17:23,390 --> 00:17:26,060 Så det er den samme idé her. 349 00:17:26,060 --> 00:17:27,579 Og jeg var bare at vise dig andre eksempler på, når du har 350 00:17:27,579 --> 00:17:29,030 set denne idé før. 351 00:17:29,030 --> 00:17:33,913 Undslippe brugerinput før udskrivning det ud til en skærm eller sætte det 352 00:17:33,913 --> 00:17:36,782 inde i en SQL-sætning. 353 00:17:36,782 --> 00:17:40,790 >> PUBLIKUM: Så i dette tilfælde, at brugeren er rode med programmøren. 354 00:17:40,790 --> 00:17:41,240 >> JASON HIRSCHHORN: Ja. 355 00:17:41,240 --> 00:17:44,800 Med alle disse angreb på sikkerheden, det er altid generelt brugeren, eller 356 00:17:44,800 --> 00:17:47,470 nogen, der forsøger at rod med dig, programmør. 357 00:17:47,470 --> 00:17:51,038 Og disse er måder, du kan forebygge mod dem. 358 00:17:51,038 --> 00:17:54,280 >> PUBLIKUM: Så jeg har et spørgsmål om hashfunktioner. 359 00:17:54,280 --> 00:17:59,340 I Quiz 1 fra 2011, er der to spørgsmål om ensidige hashes. 360 00:17:59,340 --> 00:18:02,540 Og jeg var bare undrende hvad det betød. 361 00:18:02,540 --> 00:18:03,660 >> JASON HIRSCHHORN: OK, der quiz? 362 00:18:03,660 --> 00:18:03,770 2011? 363 00:18:03,770 --> 00:18:04,705 >> PUBLIKUM: Ja. 364 00:18:04,705 --> 00:18:06,720 >> PUBLIKUM: Quiz 1? 365 00:18:06,720 --> 00:18:08,620 >> PUBLIKUM: [uhørligt]. 366 00:18:08,620 --> 00:18:09,940 Det er ligesom hashing en adgangskode. 367 00:18:09,940 --> 00:18:12,220 Det er ikke at sætte ting - 368 00:18:12,220 --> 00:18:13,440 >> JASON HIRSCHHORN: Hvilken side var det? 369 00:18:13,440 --> 00:18:15,720 >> PUBLIKUM: Jeg tror, ​​det var 9 eller 10, eller begge dele. 370 00:18:15,720 --> 00:18:16,720 >> JASON HIRSCHHORN: Okay, gå videre, Curt. 371 00:18:16,720 --> 00:18:17,780 Du kan besvare, mens vi ser. 372 00:18:17,780 --> 00:18:19,540 >> PUBLIKUM: Jeg tror, ​​det taler om hashing en adgangskode. 373 00:18:19,540 --> 00:18:24,430 Ligesom, når nogen indtaster en adgangskode, du gøre det til en krypteret ting. 374 00:18:24,430 --> 00:18:27,395 Det er kodeordet hash, hvilket er forskellig fra en hash-funktion, 375 00:18:27,395 --> 00:18:30,900 sætter noget ind i en hash tabel. 376 00:18:30,900 --> 00:18:31,610 >> JASON HIRSCHHORN: Lad os se. 377 00:18:31,610 --> 00:18:33,930 Lad mig trække op, hvad de give som svaret. 378 00:18:33,930 --> 00:18:35,440 Og så vil vi gå igennem det. 379 00:18:35,440 --> 00:18:42,430 380 00:18:42,430 --> 00:18:45,400 >> Så Curt gav et godt eksempel af en envejs-hash. 381 00:18:45,400 --> 00:18:48,800 Når vi har set det før, vi tage adgangskoden og drej - 382 00:18:48,800 --> 00:18:53,040 husk, i p sæt 7, nogen måske har en adgangskode, der er bare adgangskode, 383 00:18:53,040 --> 00:18:55,300 men så det bliver krypteret ind nogle virkelig lang ting. 384 00:18:55,300 --> 00:18:59,830 Den envejs-hash betyder, at det er meget let at gå fra én måde til den anden, men 385 00:18:59,830 --> 00:19:02,800 det er meget svært at gå fra den anden vej tilbage. 386 00:19:02,800 --> 00:19:05,230 >> Og så ved du, da du var kontrol folks passwords problem 387 00:19:05,230 --> 00:19:08,820 indstille 7, ville du tage deres - 388 00:19:08,820 --> 00:19:11,953 så for eksempel sige, at de ønskede at ændre deres adgangskode, spørger du dem 389 00:19:11,953 --> 00:19:13,130 for deres gamle adgangskode. 390 00:19:13,130 --> 00:19:13,910 Du tog deres gamle adgangskode. 391 00:19:13,910 --> 00:19:15,150 Du krypteret det. 392 00:19:15,150 --> 00:19:19,240 Og sammenlignede derefter de to krypteringer snarere end unencrypting den oprindelige 393 00:19:19,240 --> 00:19:20,780 et, fordi det er virkelig svært at gå den vej. 394 00:19:20,780 --> 00:19:27,070 395 00:19:27,070 --> 00:19:28,035 Ja. 396 00:19:28,035 --> 00:19:31,430 >> PUBLIKUM: Hvordan i dybden gør vores forståelse af TelNet nødt til at være? 397 00:19:31,430 --> 00:19:34,870 398 00:19:34,870 --> 00:19:41,360 >> JASON HIRSCHHORN: Hvis det blev nævnt kortvarigt 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 Igen tilbage til svaret til Avi spørgsmål - 401 00:19:45,585 --> 00:19:48,260 402 00:19:48,260 --> 00:19:50,430 jo flere ting kommer op, jo mere sandsynligt det er du nødt til at være super 403 00:19:50,430 --> 00:19:51,530 bekendt med dem. 404 00:19:51,530 --> 00:19:54,730 Hvis de kun er kommet op i foredrag, det er bare ét sted. 405 00:19:54,730 --> 00:19:57,180 Men hvis de kommer op i foredrag, sektion, og et problem indstillet, så du 406 00:19:57,180 --> 00:19:58,710 sandsynligvis nødt til at være super bekendt med dem. 407 00:19:58,710 --> 00:20:01,320 408 00:20:01,320 --> 00:20:03,960 >> Så jeg havde et spørgsmål fra tidligere om - 409 00:20:03,960 --> 00:20:06,950 er var efteråret 2010 - 410 00:20:06,950 --> 00:20:08,520 Quiz 1, lad os trække op - 411 00:20:08,520 --> 00:20:17,390 412 00:20:17,390 --> 00:20:21,790 dette spørgsmål på stakke og køer, som vi tilbringe en fair lidt tid 413 00:20:21,790 --> 00:20:23,720 taler om i foredrag, selv selvom vi ikke rigtig 414 00:20:23,720 --> 00:20:26,020 nogensinde har ramt det i afsnit. 415 00:20:26,020 --> 00:20:33,190 Så dette spørgsmål er at give dig en række kommandoer og spørger dig, hvad 416 00:20:33,190 --> 00:20:35,560 bliver trykt i dette tilfælde. 417 00:20:35,560 --> 00:20:40,180 Så dette er en helt rimeligt spørgsmål der kunne blive spurgt af dig 418 00:20:40,180 --> 00:20:43,090 fyre, og så fyre bør være i stand til at besvare det. 419 00:20:43,090 --> 00:20:50,020 >> Så hvorfor ikke du ser på det i 30 sekunder, og derefter, hvis nogen ønsker at 420 00:20:50,020 --> 00:20:52,140 foreslå svarene til mig, og så vil vi gå igennem det. 421 00:20:52,140 --> 00:21:22,590 422 00:21:22,590 --> 00:21:24,235 Okay, der har et svar til spørgsmål 27? 423 00:21:24,235 --> 00:21:31,740 424 00:21:31,740 --> 00:21:33,860 Ja. 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 rigtigt. 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å lad os se på, hvordan vi fik det. 429 00:21:44,510 --> 00:21:48,930 >> Først siger vi, hvis s er en kø, hvad der bliver trykt? 430 00:21:48,930 --> 00:21:53,360 Så en q er først ind, først ud. 431 00:21:53,360 --> 00:21:54,680 Vi har set det før. 432 00:21:54,680 --> 00:21:56,820 Vi så billedet af de mennesker venter på Apple 433 00:21:56,820 --> 00:21:58,400 Butik for at købe nogle produkt. 434 00:21:58,400 --> 00:22:00,900 De første mennesker i er de første mennesker ud. 435 00:22:00,900 --> 00:22:02,940 De første ting i en kø er de første ting ud. 436 00:22:02,940 --> 00:22:08,320 >> Så hvis vi skubber noget ind i en kø, du skubbe 1, derefter pop vi 1. 437 00:22:08,320 --> 00:22:09,630 Pop betyder bare tage ud. 438 00:22:09,630 --> 00:22:11,080 I dette tilfælde, bare tage noget ud. 439 00:22:11,080 --> 00:22:12,910 Vi tager ud den første ting, det er en 1. 440 00:22:12,910 --> 00:22:15,200 Så vi vil sætte ting vi udskrive ned herovre. 441 00:22:15,200 --> 00:22:18,110 Dette er ikke længere i vores kø. 442 00:22:18,110 --> 00:22:23,500 >> Så skubber vi på en 2 og en 3, og vi pop off den første ting. 443 00:22:23,500 --> 00:22:25,030 Igen, fordi det er en kø. 444 00:22:25,030 --> 00:22:33,320 Så vi får en 2, så vi sætter på en anden 3 og kalder pop igen. 445 00:22:33,320 --> 00:22:34,980 Vores 3 er først. 446 00:22:34,980 --> 00:22:40,940 >> Og så havde vi en hel masse andre ting, og kald pop. 447 00:22:40,940 --> 00:22:43,740 Men igen, da dette er en kø, først ind, først ud. 448 00:22:43,740 --> 00:22:45,980 Vi tager ud den første ting der nogensinde blev sat i. 449 00:22:45,980 --> 00:22:47,100 Det er vores 3. 450 00:22:47,100 --> 00:22:50,060 Og i dette tilfælde, at vi ikke bekymre dig om alle de andre ting. 451 00:22:50,060 --> 00:22:51,310 Så det er, hvis det er en kø. 452 00:22:51,310 --> 00:22:58,917 453 00:22:58,917 --> 00:23:00,167 Eventuelle spørgsmål om en kø? 454 00:23:00,167 --> 00:23:03,290 455 00:23:03,290 --> 00:23:04,040 >> En stak er anderledes. 456 00:23:04,040 --> 00:23:07,782 Hvad er en forkortelse, vi har for at forstå en stak? 457 00:23:07,782 --> 00:23:08,750 >> PUBLIKUM: Sidste ind, først ud. 458 00:23:08,750 --> 00:23:10,130 >> JASON HIRSCHHORN: LIFO, tror jeg. 459 00:23:10,130 --> 00:23:11,830 Sidste ind, først ud. 460 00:23:11,830 --> 00:23:15,630 Så vi så et eksempel på en stak af bakker i en spisesal. 461 00:23:15,630 --> 00:23:17,590 Uanset bakke er på toppen bliver samlet op. 462 00:23:17,590 --> 00:23:19,550 Og derefter, hvis nye bakker kommer i, bliver de sat på toppen. 463 00:23:19,550 --> 00:23:21,070 Og så uanset er på top bliver samlet op. 464 00:23:21,070 --> 00:23:24,010 Så dem bakker på den nederste magt blive der for en stund. 465 00:23:24,010 --> 00:23:28,480 >> I så fald igen, vi vil trække det ud. 466 00:23:28,480 --> 00:23:31,770 Vi skubbe på en, så man er først i køen. 467 00:23:31,770 --> 00:23:32,790 Og vi pop noget fra. 468 00:23:32,790 --> 00:23:37,280 Og der er kun én ting derinde, så vi flytte 1 hernede. 469 00:23:37,280 --> 00:23:41,940 Så vi sætter på 2 og 3 og vi pop noget fra. 470 00:23:41,940 --> 00:23:43,650 >> Men igen, da dette er en kø - 471 00:23:43,650 --> 00:23:45,010 eller det er en stabel, snarere - 472 00:23:45,010 --> 00:23:47,480 vi tager det, der var i sidste. 473 00:23:47,480 --> 00:23:49,300 Uanset hvad er i sidste kommer ud først. 474 00:23:49,300 --> 00:23:50,890 Og 3 er i sidste. 475 00:23:50,890 --> 00:23:56,110 Så vi satte 3 dernede, så vi sætter på en anden 3 og vi 476 00:23:56,110 --> 00:23:57,360 pop noget igen. 477 00:23:57,360 --> 00:23:59,990 478 00:23:59,990 --> 00:24:05,710 Endelig har vi sat på 4, 5, 6 og 7, og her er vi pop. 479 00:24:05,710 --> 00:24:09,060 Og fordi det er en stak, tager vi hvad blev sat i sidste og skrive 480 00:24:09,060 --> 00:24:10,240 der hernede. 481 00:24:10,240 --> 00:24:14,256 Så vi ender med 1, 3, 3, 7. 482 00:24:14,256 --> 00:24:17,380 483 00:24:17,380 --> 00:24:21,380 Er der nogen, der har spørgsmål om stakke eller køer, eller dette eksempel? 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 Lad os gå tilbage til listen over emner. 487 00:24:30,440 --> 00:24:32,510 Ikke den vej, denne vej. 488 00:24:32,510 --> 00:24:34,280 Hvilke andre spørgsmål gør folk har? 489 00:24:34,280 --> 00:24:37,550 490 00:24:37,550 --> 00:24:39,480 >> PUBLIKUM: Jeg ved ikke, hvor vigtigt dette er, men jeg var forvirret af 491 00:24:39,480 --> 00:24:43,550 forskel mellem forskellige typer sprog som markup, kompileret 492 00:24:43,550 --> 00:24:45,980 fortolket. 493 00:24:45,980 --> 00:24:46,750 >> JASON HIRSCHHORN: Det er et godt spørgsmål. 494 00:24:46,750 --> 00:24:50,500 Jeg tror, ​​der er noget vigtigt, så lad os gå over det hurtigt. 495 00:24:50,500 --> 00:24:56,850 De store sprog, vi har set hidtil, er C, PHP og JavaScript i form 496 00:24:56,850 --> 00:24:58,330 af programmeringssprog. 497 00:24:58,330 --> 00:25:01,060 HTML, som du nævnte, er ikke et programmeringssprog. 498 00:25:01,060 --> 00:25:02,260 Det er et kodesprog. 499 00:25:02,260 --> 00:25:05,700 Og så har vi CSS, som også ikke et programmeringssprog. 500 00:25:05,700 --> 00:25:10,330 >> Vi har også set SQL, som ikke er et programmeringssprog enten. 501 00:25:10,330 --> 00:25:15,695 Så SQL giver dig mulighed for at skrive forespørgsler til en database. 502 00:25:15,695 --> 00:25:18,370 503 00:25:18,370 --> 00:25:20,140 HTML er et kodesprog. 504 00:25:20,140 --> 00:25:22,570 Den definerer, hvordan tingene er struktureret. 505 00:25:22,570 --> 00:25:26,250 Og CSS giver dig mulighed for at style ting. 506 00:25:26,250 --> 00:25:28,520 Det er sandsynligvis det omfang, for det, du brug for at vide om dem tre. 507 00:25:28,520 --> 00:25:32,920 Men det er mere interessant figur forskellene mellem C, PHP, 508 00:25:32,920 --> 00:25:34,320 og JavaScript. 509 00:25:34,320 --> 00:25:37,900 >> Så en af ​​de største forskelle, som du nævnte, er, hvordan de er 510 00:25:37,900 --> 00:25:40,550 kompileret, eller hvad tilsvarende er. 511 00:25:40,550 --> 00:25:42,580 Så C er kompileret. 512 00:25:42,580 --> 00:25:43,950 Vi vil altid køre en compiler. 513 00:25:43,950 --> 00:25:51,100 Og så hvor er dine fejl når du kører C compiler? 514 00:25:51,100 --> 00:25:55,740 Hvor går det vise dig fejl i din kode? 515 00:25:55,740 --> 00:25:57,860 Hvordan kan du vide at der er en fejl i din kode i C? 516 00:25:57,860 --> 00:25:58,770 >> PUBLIKUM: Det viser dig i terminalen. 517 00:25:58,770 --> 00:26:00,410 >> JASON HIRSCHHORN: Den viser dig i terminal, som du kompilere. 518 00:26:00,410 --> 00:26:02,620 Og hvis der er fejl, er det vil faktisk ikke kompilere det. 519 00:26:02,620 --> 00:26:04,830 Så du ved, at der er fejl rigtige væk, før tid, før du 520 00:26:04,830 --> 00:26:06,050 endda køre din kode. 521 00:26:06,050 --> 00:26:10,010 >> Selvfølgelig kan du køre din kode og få en segmentering skyld, men det var 522 00:26:10,010 --> 00:26:12,350 sandsynligvis fordi du gjorde nogle dumme logik ting. 523 00:26:12,350 --> 00:26:15,770 Men din kode med teknisk alle korrekte og kunne køre. 524 00:26:15,770 --> 00:26:18,210 Så C-kode bliver kompileret i forvejen. 525 00:26:18,210 --> 00:26:19,760 Hvad med PHP-kode? 526 00:26:19,760 --> 00:26:21,430 Hvor var fejl i din PHP-kode? 527 00:26:21,430 --> 00:26:23,170 Hvordan vidste du, at du havde fejl i din PHP kode? 528 00:26:23,170 --> 00:26:26,038 529 00:26:26,038 --> 00:26:28,430 >> PUBLIKUM: Run tid? 530 00:26:28,430 --> 00:26:31,230 >> JASON HIRSCHHORN: Ja, når du ville køre det, ville du kø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 skærmbillede. 533 00:26:33,300 --> 00:26:35,260 Du vil måske se nogle ting på toppen, men så ville du se, ligesom nogle 534 00:26:35,260 --> 00:26:36,710 appelsin, grimme bord. 535 00:26:36,710 --> 00:26:41,420 Og det ville give dig et linjenummer og siger, blah, blah, blah, denne ting 536 00:26:41,420 --> 00:26:42,400 virkede ikke. 537 00:26:42,400 --> 00:26:48,730 >> Så PHP fortolkes linje for linje og eksekveret på serveren. 538 00:26:48,730 --> 00:26:52,380 Og så er resultatet sendt over til dig. 539 00:26:52,380 --> 00:26:53,340 Store. 540 00:26:53,340 --> 00:26:56,410 Udført i serveren linje for linje og derefter sendt over til dig. 541 00:26:56,410 --> 00:26:59,010 Og hvis der er en fejl, vil det sende du fejlen, men du har måske 542 00:26:59,010 --> 00:27:00,400 fået nogle ting i forvejen. 543 00:27:00,400 --> 00:27:02,730 Så noget af det kunne have fungeret, men senere, kan nogle ting ikke har 544 00:27:02,730 --> 00:27:03,890 ikke fungeret. 545 00:27:03,890 --> 00:27:04,600 >> Hvad JavaScript? 546 00:27:04,600 --> 00:27:06,065 Hvor har du set JavaScript-fejl? 547 00:27:06,065 --> 00:27:10,860 548 00:27:10,860 --> 00:27:12,870 I p sæt 8, når du fik en fejl, hvordan vidste du det? 549 00:27:12,870 --> 00:27:13,710 Hvor ville det vise sig? 550 00:27:13,710 --> 00:27:15,900 >> PUBLIKUM: I konsollen, nederst. 551 00:27:15,900 --> 00:27:17,650 >> JASON HIRSCHHORN: I konsol, på bunden. 552 00:27:17,650 --> 00:27:20,160 Det ville også give dig linjenummer, og det ville 553 00:27:20,160 --> 00:27:21,330 dukke op på bunden. 554 00:27:21,330 --> 00:27:24,320 Og JavaScript er ikke udført på serveren. 555 00:27:24,320 --> 00:27:27,800 JavaScript blev sendt til din computer, og derefter når det var tid til at køre 556 00:27:27,800 --> 00:27:31,670 JavaScript, var JavaScript køre linje for linje på 557 00:27:31,670 --> 00:27:33,410 klient, 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åde, det var køre linje for linje. 560 00:27:37,690 --> 00:27:40,630 Og så når du ville få en fejl, det ville dukke op i bunden. 561 00:27:40,630 --> 00:27:44,580 I lighed med PHP, noget af det måske udføre, og så er du måske få en 562 00:27:44,580 --> 00:27:46,310 fejl senere. 563 00:27:46,310 --> 00:27:49,910 >> Også en lille forskel PHP, hvis du fik en JavaScript-fejl - 564 00:27:49,910 --> 00:27:52,780 sige, at du ikke gjorde det rigtige kode til en alarm boks - 565 00:27:52,780 --> 00:27:55,800 du kunne holde køre dit program. 566 00:27:55,800 --> 00:27:58,180 Boksen alarm ville ikke arbejde, men dit program ville være fint. 567 00:27:58,180 --> 00:28:00,490 Bare måske, at funktionen ville fejle. 568 00:28:00,490 --> 00:28:02,610 >> Så der er nogle af de største forskel med hensyn til, hvordan disse 569 00:28:02,610 --> 00:28:09,230 sprog, eller hvordan programmeringen kode du skriver faktisk evalueres. 570 00:28:09,230 --> 00:28:11,970 Der er også andre forskelle i form af - den største forskel 571 00:28:11,970 --> 00:28:15,590 vi har set i form af variabler på de forskellige sprog. 572 00:28:15,590 --> 00:28:19,660 Så kan nogen give mig en forskel mellem variable 573 00:28:19,660 --> 00:28:20,910 på de tre sprog? 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: In C, de er 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 hvad betyder det? 579 00:28:30,040 --> 00:28:31,775 >> PUBLIKUM: At i C, er du nødt til at erklære typen af ​​variabel, når 580 00:28:31,775 --> 00:28:36,140 du erklærer variablen, ligesom interbool eller char. 581 00:28:36,140 --> 00:28:36,990 >> JASON HIRSCHHORN: Excellent. 582 00:28:36,990 --> 00:28:39,780 I C, havde vi altid at sætte en type af en variabel. 583 00:28:39,780 --> 00:28:41,360 Og vi kunne ikke rigtig blande typer. 584 00:28:41,360 --> 00:28:45,750 Du kunne ikke gøre et heltal plus en streng. 585 00:28:45,750 --> 00:28:48,760 Men som vi har set i disse andre sprog, du rent faktisk kan blande typer, 586 00:28:48,760 --> 00:28:51,230 og du aldrig virkelig nødt til at give noget en type, nogensinde. 587 00:28:51,230 --> 00:28:53,905 >> Så hvordan kan vi vide ting er variable 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, begynder de med et dollartegn. 590 00:28:58,685 --> 00:29:00,810 I JavaScript, når du erklærer dem, skal du have en bar. 591 00:29:00,810 --> 00:29:01,760 >> JASON HIRSCHHORN: Right. 592 00:29:01,760 --> 00:29:03,535 Så i PHP, de starter med et dollartegn. 593 00:29:03,535 --> 00:29:06,300 I JavaScript, de skal have bar, selvom nogle gange de faktisk ikke 594 00:29:06,300 --> 00:29:07,520 have bar. 595 00:29:07,520 --> 00:29:09,240 Men det er korrekt. 596 00:29:09,240 --> 00:29:13,300 >> Så det er en stor forskel mellem variabler. 597 00:29:13,300 --> 00:29:16,140 Jeg tror, ​​de er sandsynligvis, off toppen af ​​mit hoved, de to største 598 00:29:16,140 --> 00:29:19,250 forskellene mellem disse tre sprog. 599 00:29:19,250 --> 00:29:20,594 Men, ja. 600 00:29:20,594 --> 00:29:24,720 >> PUBLIKUM: Og omfanget af C-variabler er begrænset til de krøllede parenteser, 601 00:29:24,720 --> 00:29:27,760 hvor de andre, det er ligesom, det dør, hvis det er på kun en funktion, 602 00:29:27,760 --> 00:29:29,650 men ellers, Det er - 603 00:29:29,650 --> 00:29:30,240 >> JASON HIRSCHHORN: Right. 604 00:29:30,240 --> 00:29:36,780 Så omfanget er lidt anderledes i C. Som du huske, krøllede parenteser definere 605 00:29:36,780 --> 00:29:37,710 omfanget af variabler. 606 00:29:37,710 --> 00:29:41,680 Så hvis det er defineret inde i en hvis tilstand, som er inde i en for-løkke, 607 00:29:41,680 --> 00:29:44,290 variablen kun eksisterer der. 608 00:29:44,290 --> 00:29:47,760 >> I JavaScript, er, hvis en variabel er defineret inde i en hvis tilstand - 609 00:29:47,760 --> 00:29:50,750 inde i en for-løkke - det vil findes for denne funktion, men det vil ikke eksistere 610 00:29:50,750 --> 00:29:52,330 uden denne funktion. 611 00:29:52,330 --> 00:29:59,250 Så anvendelsesområde er en lille smule mere fleksibel i JavaScript og PHP. 612 00:29:59,250 --> 00:30:00,500 At besvare spørgsmålet? 613 00:30:00,500 --> 00:30:03,110 614 00:30:03,110 --> 00:30:04,635 OK, alle andre spørgsmål? 615 00:30:04,635 --> 00:30:07,260 616 00:30:07,260 --> 00:30:08,865 Vi kan gøre fire minutter mere af spørgsmål, så 617 00:30:08,865 --> 00:30:10,740 vi vil hoppe ind kodning. 618 00:30:10,740 --> 00:30:12,645 >> PUBLIKUM: Kan vi gå ind i Ajax og snakke om hvad det er? 619 00:30:12,645 --> 00:30:15,670 620 00:30:15,670 --> 00:30:17,800 >> JASON HIRSCHHORN: Tal til Avi efter. 621 00:30:17,800 --> 00:30:19,170 Han anmodede om, at spørgsmålet tidligere. 622 00:30:19,170 --> 00:30:19,630 >> PUBLIKUM: Min dårlige. 623 00:30:19,630 --> 00:30:20,880 >> JASON HIRSCHHORN: Ingen bekymringer. 624 00:30:20,880 --> 00:30:22,740 625 00:30:22,740 --> 00:30:24,290 >> PUBLIKUM: Hvad er JSON? 626 00:30:24,290 --> 00:30:28,360 627 00:30:28,360 --> 00:30:28,900 >> JASON HIRSCHHORN: Hvad er JSON? 628 00:30:28,900 --> 00:30:29,930 Hvad er dit spørgsmål? 629 00:30:29,930 --> 00:30:31,350 >> PUBLIKUM: Bare virkelig hurtigt, forskellen mellem 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 tager du ikke google forskellen mellem print og ekko? 633 00:30:38,490 --> 00:30:40,670 Lille forskel. 634 00:30:40,670 --> 00:30:42,020 Ikke det store af en deal. 635 00:30:42,020 --> 00:30:44,960 Men du bør helt sikkert google det, og det vil give dig et godt svar. 636 00:30:44,960 --> 00:30:46,910 >> JSON, sandsynligvis større i en aftale. 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 når vi har set JSON bliver brugt? 639 00:30:51,865 --> 00:30:55,110 640 00:30:55,110 --> 00:30:55,900 Hvornår har du set - 641 00:30:55,900 --> 00:30:57,400 hvorfor du selv kender ordet JSON? 642 00:30:57,400 --> 00:30:59,140 Hvornår har du set det? 643 00:30:59,140 --> 00:31:02,200 >> PUBLIKUM: Når vi var at få Aktiekurser til finansiering. 644 00:31:02,200 --> 00:31:02,690 >> JASON HIRSCHHORN: Så du så den, når du var at få 645 00:31:02,690 --> 00:31:04,830 Aktiekurser til finansiering. 646 00:31:04,830 --> 00:31:07,340 Og hvorfor gjorde du se det? 647 00:31:07,340 --> 00:31:09,000 >> PUBLIKUM: Når vi hente alle de oplysninger, 648 00:31:09,000 --> 00:31:10,400 kom i dette format. 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 Værsgo. 652 00:31:13,020 --> 00:31:15,210 >> PUBLIKUM: [uhørligt] information ud af et objekt? 653 00:31:15,210 --> 00:31:17,170 >> JASON HIRSCHHORN: Begge disse tilsammen er svaret 654 00:31:17,170 --> 00:31:18,100 vi leder efter. 655 00:31:18,100 --> 00:31:21,240 Du ønsker oplysninger fra denne anden webside. 656 00:31:21,240 --> 00:31:23,790 Og du vil håbe, at når du er få disse oplysninger, ville det være 657 00:31:23,790 --> 00:31:26,720 præsenteret for dig i nogle type standardiseret format. 658 00:31:26,720 --> 00:31:29,530 >> Alle er formentlig bekendt med kommaseparerede værdier. 659 00:31:29,530 --> 00:31:32,970 Du kan eksportere et Excel-regneark eller enhver form for regneark som en liste over 660 00:31:32,970 --> 00:31:34,540 komma-separerede værdier. 661 00:31:34,540 --> 00:31:37,370 Og kommaer opdele alle de forskellige områder. 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 anden type af standardiserede layout af ting. 665 00:31:43,540 --> 00:31:49,010 Og det er ofte, hvor vi opdaterer oplysninger fra vores Ajax forespørgsler. 666 00:31:49,010 --> 00:31:51,770 >> Så i dette tilfælde, vi fik den fra Yahoo site. 667 00:31:51,770 --> 00:31:53,600 De vender tilbage ting os i en JSON objekt. 668 00:31:53,600 --> 00:31:56,790 Og så ved vi, fordi det er en standard, hvad det er 669 00:31:56,790 --> 00:31:57,250 kommer til at se ud. 670 00:31:57,250 --> 00:32:00,760 Så vi kan gentage gennem array der er vendt tilbage til os, den vifte af 671 00:32:00,760 --> 00:32:03,180 objekter, der er vendt tilbage til os. 672 00:32:03,180 --> 00:32:07,770 >> Vi har sandsynligvis nødt til at kende de nøgler, men de generelt give dig 673 00:32:07,770 --> 00:32:11,370 dokumentation på hjemmesiden, når du henter nogle JSON 674 00:32:11,370 --> 00:32:12,170 notation for dem. 675 00:32:12,170 --> 00:32:16,940 Ligeledes kan du JSON indkode et objekt. 676 00:32:16,940 --> 00:32:19,900 Så der er en funktion JSON underscore encode. 677 00:32:19,900 --> 00:32:22,970 Og så du kan tage et objekt, der du har oprettet, JSON kode det, og 678 00:32:22,970 --> 00:32:26,390 give det videre til noget andet, hvis du vil. 679 00:32:26,390 --> 00:32:30,770 Og JSON afkode findes også for et lignende formål eller til 680 00:32:30,770 --> 00:32:31,780 det modsatte formål. 681 00:32:31,780 --> 00:32:36,570 >> PUBLIKUM: Har vi brug for at vide kodning for hash tabeller og forsøger? 682 00:32:36,570 --> 00:32:40,300 Eller skal vi bare nødt til at forstå hvordan de er brugt, begrebsmæssigt? 683 00:32:40,300 --> 00:32:44,570 >> JASON HIRSCHHORN: Så hæve din hånd hvis du gjorde en hash tabel for p sæt 4 684 00:32:44,570 --> 00:32:46,920 med et link liste. 685 00:32:46,920 --> 00:32:47,960 Eller p sæt 5. 686 00:32:47,960 --> 00:32:49,060 Så det var et stort flertal af mennesker. 687 00:32:49,060 --> 00:32:50,390 P sæt 5, 6, hvem ved. 688 00:32:50,390 --> 00:32:51,240 En lang tid siden. 689 00:32:51,240 --> 00:32:54,140 >> Så langt de fleste af du gjorde hash tabeller med link-lister. 690 00:32:54,140 --> 00:32:56,525 Og fordi det er nok den mere fælles tilgang, og fordi vi har brugt 691 00:32:56,525 --> 00:32:59,460 en masse tid at gøre link-lister og hash tabeller, bør du nok være 692 00:32:59,460 --> 00:33:02,600 temmelig fortrolig med, hvordan man kode en hash tabel og et link liste. 693 00:33:02,600 --> 00:33:05,060 >> Og hvis du tænker tilbage på dette problem sæt, var det ikke rigtig 694 00:33:05,060 --> 00:33:06,410 så hårdt, som du forventede. 695 00:33:06,410 --> 00:33:08,120 Og der var en masse mindre kode end du forventede. 696 00:33:08,120 --> 00:33:11,150 697 00:33:11,150 --> 00:33:14,650 Jeg vil sige, du skal vide, hvordan man kode en hash tabel eller en link liste. 698 00:33:14,650 --> 00:33:17,010 Ikke at du ville blive bedt om at nødvendigvis, men du bør 699 00:33:17,010 --> 00:33:19,730 sikkert kender det. 700 00:33:19,730 --> 00:33:21,860 >> Også, hvis du ser gennem tidligere quizzer, har der været en masse 701 00:33:21,860 --> 00:33:26,450 spørgsmål om at skrive funktioner link-lister eller dobbelt-hægtede lister. 702 00:33:26,450 --> 00:33:28,370 Der synes at komme op hvert eneste år. 703 00:33:28,370 --> 00:33:31,940 Right indsætte på et link liste til højre slette fra en link liste til højre indsætte 704 00:33:31,940 --> 00:33:33,610 for en dobbelt-linked liste, et cetera. 705 00:33:33,610 --> 00:33:36,170 Så det, jeg føler mig temmelig komfortabel siger, at du skal vide, at. 706 00:33:36,170 --> 00:33:40,600 >> For prøve, vil jeg sige, du skal sikkert ved, hvordan det fungerer, og måske 707 00:33:40,600 --> 00:33:43,570 give nogle pseudokode for, hvordan at kode det og sætte det op. 708 00:33:43,570 --> 00:33:45,600 Men det ville ikke være det værste i verden, hvis du ikke vidste, hvordan man 709 00:33:45,600 --> 00:33:48,870 kode det i C. Det ville være dejligt, hvis du vidste, hvordan man kode det i C, men jeg tror, 710 00:33:48,870 --> 00:33:52,516 sandsynligvis pseudokode for en prøve ville være den mest du skulle 711 00:33:52,516 --> 00:33:53,270 at vide for en chance. 712 00:33:53,270 --> 00:33:53,930 >> PUBLIKUM: Ekstra kredit? 713 00:33:53,930 --> 00:33:58,290 >> JASON HIRSCHHORN: Og samme med, hvis vi gå ind i binære søgetræer, kan du 714 00:33:58,290 --> 00:34:02,320 brug for - og du har set i fortiden, vi har gjort en masse - du ved, hvordan 715 00:34:02,320 --> 00:34:03,380 binær søgning træ fungerer. 716 00:34:03,380 --> 00:34:07,150 Du bør nok være i stand til sætte en op i pseudo kode. 717 00:34:07,150 --> 00:34:10,510 Men fordi det store flertal af personer ikke gøre det på problemet 718 00:34:10,510 --> 00:34:13,880 sæt, ville jeg sige, det er sandsynligvis mindre vigtigt, at du ved, hvordan man kode 719 00:34:13,880 --> 00:34:17,380 og oprette et træ som dette. 720 00:34:17,380 --> 00:34:19,679 >> Andre spørgsmål? 721 00:34:19,679 --> 00:34:23,234 Desuden kan vi bede dem i hele som vi går igennem nogle problemer. 722 00:34:23,234 --> 00:34:27,170 OK, vi kommer til at flytte på. 723 00:34:27,170 --> 00:34:28,230 Spring at slide for nu. 724 00:34:28,230 --> 00:34:32,449 >> Apropos træer, der er den første spørgsmål, jeg har til jer. 725 00:34:32,449 --> 00:34:34,270 Da dette er et problem. 726 00:34:34,270 --> 00:34:37,380 Jeg vil sige, det er meget sandsynligt, du vil få et problem som dette på din quiz 727 00:34:37,380 --> 00:34:43,659 beder dig om at kode en form for indsats, slette, søgning, for en type 728 00:34:43,659 --> 00:34:45,270 af datastruktur vi har set. 729 00:34:45,270 --> 00:34:47,719 >> Der kommer op hvert år, og vi tilbragte en meget tid i anden halvdel af dette 730 00:34:47,719 --> 00:34:50,270 semester gå over disse datatyper. 731 00:34:50,270 --> 00:34:54,170 Så lige nu har jeg defineret en node i en binær søgning træ. 732 00:34:54,170 --> 00:34:58,490 Og hvad jeg gerne vil have dig til at gøre, er givet en binær søgning træ, der starter 733 00:34:58,490 --> 00:35:05,450 på denne node stjerne rod, udfyld den implementering af funktionen nedenfor, 734 00:35:05,450 --> 00:35:07,430 der sker for at være et fund funktion. 735 00:35:07,430 --> 00:35:09,260 Og gør det med og uden rekursioner. 736 00:35:09,260 --> 00:35:10,860 >> Så jeg vil have dig til at skrive to funktioner. 737 00:35:10,860 --> 00:35:14,310 Én gøre dette med rekursion, en gøre dette uden rekursion. 738 00:35:14,310 --> 00:35:18,050 Og ikke antage, at root vil være ikke-nul. 739 00:35:18,050 --> 00:35:21,790 Så vi leder efter heltal i i træet startende ved roden, og vi har brug for 740 00:35:21,790 --> 00:35:25,280 at skrive dette rekursivt og iterativt. 741 00:35:25,280 --> 00:35:26,300 Ja. 742 00:35:26,300 --> 00:35:29,730 >> PUBLIKUM: Så du vil have os til at returnere sandt hvis vi finder det, og falsk, hvis vi 743 00:35:29,730 --> 00:35:30,480 ikke finde den. 744 00:35:30,480 --> 00:35:32,160 >> JASON HIRSCHHORN: Hvordan vidste du det? 745 00:35:32,160 --> 00:35:33,100 Hvordan vidste du det? 746 00:35:33,100 --> 00:35:36,500 >> PUBLIKUM: Jeg spurgte først, men jeg var under forudsætning af, fordi den siger bool på 747 00:35:36,500 --> 00:35:37,490 starten af ​​funktionen. 748 00:35:37,490 --> 00:35:37,880 >> JASON HIRSCHHORN: Right. 749 00:35:37,880 --> 00:35:41,020 Den siger bool, så jeg behøver ikke engang at fortælle dig, hvad jeg forventer, at du til at vende tilbage 750 00:35:41,020 --> 00:35:41,350 fordi den siger lige der. 751 00:35:41,350 --> 00:35:42,280 Men det er rigtigt. 752 00:35:42,280 --> 00:35:43,510 Retur, sandt eller falsk. 753 00:35:43,510 --> 00:35:47,630 >> Så før du begynder, vil jeg anbefale, hvis du ikke er bekendt med 754 00:35:47,630 --> 00:35:51,300 binære søgetræer hurtigt tegning et billede af det at få din 755 00:35:51,300 --> 00:35:51,750 forståelse, til højre. 756 00:35:51,750 --> 00:35:54,720 Det vil også hjælpe dig, når du skriver din kode og kontrollere den. 757 00:35:54,720 --> 00:35:57,830 Igen, du heller ikke har så meget tid på quiz for at gøre alle de ting 758 00:35:57,830 --> 00:35:59,030 at vi beder dig om at gøre. 759 00:35:59,030 --> 00:36:02,350 Så skriver pseudo kode er meget nyttigt. 760 00:36:02,350 --> 00:36:05,310 >> Og vi giver normalt omkring - 761 00:36:05,310 --> 00:36:06,820 hvis pseudokode er helt korrekt, det er 762 00:36:06,820 --> 00:36:08,910 generelt 50% på et spørgsmål. 763 00:36:08,910 --> 00:36:11,410 Så det er ikke en ufravigelig regel, men hvis du bare skrive pseudokode, og det er 764 00:36:11,410 --> 00:36:13,460 korrekt, er det normalt 50%. 765 00:36:13,460 --> 00:36:14,970 Så jeg vil altid anbefale - 766 00:36:14,970 --> 00:36:16,870 hvis du er presset på for tiden, eller selv om du prøver bare at finde ud af det - 767 00:36:16,870 --> 00:36:18,290 begyndende med pseudokode. 768 00:36:18,290 --> 00:36:24,840 Og endelig, hvis du kunne skrive dette alle i C, ville det være fantastisk. 769 00:36:24,840 --> 00:36:29,010 >> Så lad os tage tre minutter at arbejde på dette program. 770 00:36:29,010 --> 00:36:33,120 Og så skal vi til at skrive pseudokode for det bare én gang, og derefter 771 00:36:33,120 --> 00:36:35,455 vi kommer til at kode det rekursivt og derefter iterativt. 772 00:36:35,455 --> 00:37:28,720 773 00:37:28,720 --> 00:37:30,760 >> Hvis du har spørgsmål, er du velkommen fri hæve din hånd. 774 00:37:30,760 --> 00:37:34,270 Glad for at gå rundt og besvare dem før vi begynder som en gruppe. 775 00:37:34,270 --> 00:39:22,600 776 00:39:22,600 --> 00:39:27,200 >> Lad os fortsætte, og vi vil Pseudokode rekursive version af 777 00:39:27,200 --> 00:39:29,830 dette, og så vil vi kode det. 778 00:39:29,830 --> 00:39:33,380 Så en rekursiv funktion behov i to ting. 779 00:39:33,380 --> 00:39:35,960 Dette kan være et spørgsmål, kan du blive spurgt. 780 00:39:35,960 --> 00:39:37,950 Needs to ting. 781 00:39:37,950 --> 00:39:40,610 Hvem kan hæve deres hånd og fortælle mig hvad de to ting en rekursiv 782 00:39:40,610 --> 00:39:43,680 funktionen har brug for? 783 00:39:43,680 --> 00:39:45,030 Pr. definition har det to ting. 784 00:39:45,030 --> 00:39:46,280 Hvad er de to ting? 785 00:39:46,280 --> 00:39:48,580 786 00:39:48,580 --> 00:39:49,830 Nye hænder. 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 den terminologi, men - 790 00:39:57,980 --> 00:39:59,715 >> JASON HIRSCHHORN: Jeg er glad du hæve din hånd. 791 00:39:59,715 --> 00:40:03,380 >> PUBLIKUM: Der er behov for en base case, og det kræver en rekursiv skridt. 792 00:40:03,380 --> 00:40:03,960 >> JASON HIRSCHHORN: Perfect. 793 00:40:03,960 --> 00:40:06,340 Det har brug for en base case og en rekursiv trin. 794 00:40:06,340 --> 00:40:10,430 Så hvad er vores base case her? 795 00:40:10,430 --> 00:40:12,950 >> PUBLIKUM: F rod lig lig nul. 796 00:40:12,950 --> 00:40:15,110 Sorry, bare i pseudokode, hvis det er nul. 797 00:40:15,110 --> 00:40:16,360 Hvis rod er nul. 798 00:40:16,360 --> 00:40:21,900 799 00:40:21,900 --> 00:40:23,540 >> JASON HIRSCHHORN: Hvis rod er nul. 800 00:40:23,540 --> 00:40:23,850 Det er fremragende. 801 00:40:23,850 --> 00:40:24,610 Det er vores base case. 802 00:40:24,610 --> 00:40:25,910 Det er, hvad vi vil at kontrollere hver gang. 803 00:40:25,910 --> 00:40:28,000 Og base case er den første ting du gør. 804 00:40:28,000 --> 00:40:29,720 Hvis du rammer base case, er du færdig. 805 00:40:29,720 --> 00:40:34,140 >> Nu har vi brug for vores rekursivt kald, og jeg vil være villig til at satse, vi har brug for et par 806 00:40:34,140 --> 00:40:35,440 rekursive kald her. 807 00:40:35,440 --> 00:40:39,630 Fordi det er et træ, og vi kunne gå flere måder. 808 00:40:39,630 --> 00:40:43,190 Så hvis rod er null, vi er gode. 809 00:40:43,190 --> 00:40:44,970 >> Hvad vil du foreslå? 810 00:40:44,970 --> 00:40:49,640 Og nu jeg har tænkt mig at begynde at kalde ud på jer, fordi jeg kender jer 811 00:40:49,640 --> 00:40:50,540 alle kender dette. 812 00:40:50,540 --> 00:40:52,610 Men Annie, hvad skal næste linie være? 813 00:40:52,610 --> 00:40:53,570 Hvad hvis vi fandt det? 814 00:40:53,570 --> 00:40:55,526 Hvad gør vi? 815 00:40:55,526 --> 00:40:57,300 >> PUBLIKUM: Hvis vi fandt det? 816 00:40:57,300 --> 00:40:59,160 >> JASON HIRSCHHORN: Eller hvad bør være, at - 817 00:40:59,160 --> 00:41:02,124 give mig pseudokode for linje, hvor vi fandt det. 818 00:41:02,124 --> 00:41:04,700 >> PUBLIKUM: Hvis jeg lig rod jeg? 819 00:41:04,700 --> 00:41:06,650 >> JASON HIRSCHHORN Og så hvad gør vi? 820 00:41:06,650 --> 00:41:07,590 >> PUBLIKUM: Return sandt. 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 kaldte jeg. 824 00:41:17,400 --> 00:41:18,470 Det bliver forvirrende. 825 00:41:18,470 --> 00:41:23,830 Men hvis jeg er jeg returnere sandt. 826 00:41:23,830 --> 00:41:25,620 Det er nok den næste ting, vi skal gøre. 827 00:41:25,620 --> 00:41:27,300 Giver mening. 828 00:41:27,300 --> 00:41:30,610 >> OK, nu er vi ikke har gjort vores rekursive ringe endnu, men fordi en rekursiv 829 00:41:30,610 --> 00:41:32,300 opkald ville kalde denne funktion igen. 830 00:41:32,300 --> 00:41:41,460 Så hvad skal det næste linje pseudokode være? 831 00:41:41,460 --> 00:41:42,730 Anna. 832 00:41:42,730 --> 00:41:43,980 >> PUBLIKUM: Den venstre side. 833 00:41:43,980 --> 00:41:47,040 834 00:41:47,040 --> 00:41:47,590 >> JASON HIRSCHHORN: Vær specifik, selv om. 835 00:41:47,590 --> 00:41:50,600 Dette er en binær søgning træ, så hvad betyder at kontrollere den venstre side indebærer? 836 00:41:50,600 --> 00:41:51,890 >> PUBLIKUM: Så node - 837 00:41:51,890 --> 00:41:53,342 Undskyld, rod. 838 00:41:53,342 --> 00:41:55,306 Og derefter pil til venstre. 839 00:41:55,306 --> 00:41:59,234 840 00:41:59,234 --> 00:42:00,720 Node, node, undskyld. 841 00:42:00,720 --> 00:42:01,978 Jeg er ikke at læse det ordentligt. 842 00:42:01,978 --> 00:42:05,700 Det hedder node, right? 843 00:42:05,700 --> 00:42:09,270 >> JASON HIRSCHHORN: Det vil blive kaldt rod i denne funktion, men enten måde. 844 00:42:09,270 --> 00:42:10,925 Den venstre side - Ja? 845 00:42:10,925 --> 00:42:13,780 >> PUBLIKUM: Hvis det ikke er lig i, så vi kommer til at kalde 846 00:42:13,780 --> 00:42:15,130 funktionen igen? 847 00:42:15,130 --> 00:42:15,490 >> JASON HIRSCHHORN: Det er rigtigt. 848 00:42:15,490 --> 00:42:17,870 Hvis det ikke lige i, vi vil at kalde funktionen igen. 849 00:42:17,870 --> 00:42:21,435 Men hvad side af træet skal vi at kalde funktionen igen? 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 altid vil kalde det venstre, hvis det 853 00:42:27,670 --> 00:42:29,190 ikke er lig det. 854 00:42:29,190 --> 00:42:29,610 >> PUBLIKUM: Åh, undskyld. 855 00:42:29,610 --> 00:42:31,200 Ring til højre. 856 00:42:31,200 --> 00:42:33,680 >> JASON HIRSCHHORN: Vi vil gerne vide specifikt, men - husk, i en 857 00:42:33,680 --> 00:42:37,700 binær søgning træ, alt til venstre side er mindre. 858 00:42:37,700 --> 00:42:40,460 Alt til højre 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 end jeg, så - 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 end - 865 00:42:58,606 --> 00:43:01,854 866 00:43:01,854 --> 00:43:09,110 så hvis vores tal er mindre end jeg, hvilken side ønsker vi at gå til? 867 00:43:09,110 --> 00:43:15,120 >> PUBLIKUM: Vi ønsker at gå til den højre side. 868 00:43:15,120 --> 00:43:16,250 >> JASON HIRSCHHORN: Vi ønsker at gå - 869 00:43:16,250 --> 00:43:19,210 Lad mig tegne et hurtigt træ. 870 00:43:19,210 --> 00:43:23,850 Hvis det er 5, vil dette være 3. 871 00:43:23,850 --> 00:43:29,410 Så hvis ri er mindre end fem, hvad side ønsker vi at gå til? 872 00:43:29,410 --> 00:43:30,390 >> PUBLIKUM: Undskyld, hvad? 873 00:43:30,390 --> 00:43:33,190 >> JASON HIRSCHHORN: Vores nummer er mindre end det antal vi 874 00:43:33,190 --> 00:43:34,710 ser på lige nu. 875 00:43:34,710 --> 00:43:35,890 >> PUBLIKUM: Åh, så ønsker vi at gå til den venstre side. 876 00:43:35,890 --> 00:43:36,240 Ja. 877 00:43:36,240 --> 00:43:36,920 Undskyld. 878 00:43:36,920 --> 00:43:37,230 >> JASON HIRSCHHORN: Præcis. 879 00:43:37,230 --> 00:43:38,480 Ingen bekymringer. 880 00:43:38,480 --> 00:43:41,020 I binær søgning træ, alt lavere er til venstre, 881 00:43:41,020 --> 00:43:42,110 større er til højre. 882 00:43:42,110 --> 00:43:46,700 Så hvis vores tal er mindre end I Vi tjekker - 883 00:43:46,700 --> 00:43:48,790 fordi du ser i knude, det har en i - 884 00:43:48,790 --> 00:43:50,040 så du ønsker at 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 nem en. 887 00:43:56,720 --> 00:44:01,700 Hvad er det den anden linje i pseudokode vi nødt til at skrive? 888 00:44:01,700 --> 00:44:02,910 Carlos? 889 00:44:02,910 --> 00:44:05,970 >> PUBLIKUM: Samme ting, du bare skifte det til en større end tegn 890 00:44:05,970 --> 00:44:07,420 og gå til højre. 891 00:44:07,420 --> 00:44:08,350 >> JASON HIRSCHHORN: Kan du sige det en gang mere? 892 00:44:08,350 --> 00:44:11,640 >> PUBLIKUM: Hvis vores tal er større end jeg, gå til højre. 893 00:44:11,640 --> 00:44:24,900 894 00:44:24,900 --> 00:44:26,690 >> JASON HIRSCHHORN: Fremragende job på pseudokode. 895 00:44:26,690 --> 00:44:28,700 Lad os gøre dette i det virkelige kode. 896 00:44:28,700 --> 00:44:33,280 Og igen, dette pseudokode vil sandsynligvis få dig, fordi det er 897 00:44:33,280 --> 00:44:35,480 korrekt, 50% på dette spørgsmål. 898 00:44:35,480 --> 00:44:39,720 Men dette pseudokode også oversætter en til en i det væsentlige, i koden. 899 00:44:39,720 --> 00:44:44,380 >> Så lad os gøre det i C. Hvem kan give mig den første linje kode? 900 00:44:44,380 --> 00:44:48,390 Faktisk først, før jeg gør det, så lad mig trække over - 901 00:44:48,390 --> 00:44:49,260 >> PUBLIKUM: Jeg har et spørgsmål. 902 00:44:49,260 --> 00:44:52,430 Hvorfor har du at indrykke linje, jeg gav dig? 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 Det ved jeg ikke. 905 00:44:55,240 --> 00:44:55,650 Du har ret. 906 00:44:55,650 --> 00:44:57,780 Denne linje skal være derovre. 907 00:44:57,780 --> 00:45:11,600 908 00:45:11,600 --> 00:45:14,480 >> Okay, her vores funktion. 909 00:45:14,480 --> 00:45:18,090 Og lad mig trække over, også, vores definition af en node. 910 00:45:18,090 --> 00:45:23,320 911 00:45:23,320 --> 00:45:27,180 Hvad sker der, hvis vi ikke gjorde skrive typedef? 912 00:45:27,180 --> 00:45:30,240 Er der nogen vide? 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 at gøre det til en ny 916 00:45:37,120 --> 00:45:39,840 type du kunne erklære flere forekomster af? 917 00:45:39,840 --> 00:45:41,700 >> JASON HIRSCHHORN: Så det ikke ville vide - 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 stadig gøre en masse noder. 920 00:45:46,150 --> 00:45:48,070 >> PUBLIKUM: Men ville vi ikke er nødt til at skrive struct node hver gang? 921 00:45:48,070 --> 00:45:48,640 >> JASON HIRSCHHORN: Det er rigtigt. 922 00:45:48,640 --> 00:45:50,960 Du ville have til at 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, der ikke har givet - yeah, Avica. 925 00:45:58,240 --> 00:46:01,520 >> PUBLIKUM: Hvis rod er lig med ligemænd null, return 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 vores base case. 928 00:46:09,490 --> 00:46:11,200 Næste linje kode. 929 00:46:11,200 --> 00:46:13,999 Nogen der ikke har givet mig en linje kode endnu? 930 00:46:13,999 --> 00:46:14,945 Ja. 931 00:46:14,945 --> 00:46:23,360 >> PUBLIKUM: Root pil i er lig lig med dvs. 932 00:46:23,360 --> 00:46:27,260 Vend derefter tilbage sandt. 933 00:46:27,260 --> 00:46:29,162 >> JASON HIRSCHHORN: Great. 934 00:46:29,162 --> 00:46:32,048 Næste linje? 935 00:46:32,048 --> 00:46:32,790 Ja. 936 00:46:32,790 --> 00:46:34,010 En anden? 937 00:46:34,010 --> 00:46:36,774 Og så kan du gå næste. 938 00:46:36,774 --> 00:46:44,820 >> PUBLIKUM: Else hvis rod pil Jeg er mindre end jeg vender tilbage 939 00:46:44,820 --> 00:46:47,737 funktion kaldet finde rod - 940 00:46:47,737 --> 00:46:50,611 >> JASON HIRSCHHORN: Undskyld. 941 00:46:50,611 --> 00:46:56,272 >> PUBLIKUM: Return find rod peger mod venstre komma i. 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 end ting i træet, vi ønsker at 944 00:47:08,440 --> 00:47:09,573 gå til venstre? 945 00:47:09,573 --> 00:47:11,790 >> PUBLIKUM: Nej, jeg havde den tændt. 946 00:47:11,790 --> 00:47:13,040 >> JASON HIRSCHHORN: Hvilken en? 947 00:47:13,040 --> 00:47:16,310 948 00:47:16,310 --> 00:47:16,950 >> PUBLIKUM: Nej, ja. 949 00:47:16,950 --> 00:47:19,050 Jeg har en mindre end underskrive der. 950 00:47:19,050 --> 00:47:22,890 >> JASON HIRSCHHORN: Right, hvis ri er mindre end hvad der er i roden - 951 00:47:22,890 --> 00:47:25,660 vores nuværende rod - så vi ønsker at gå til venstre. 952 00:47:25,660 --> 00:47:26,960 Og hvad er den sidste linje, du? 953 00:47:26,960 --> 00:47:30,930 >> PUBLIKUM: Dybest set de samme ting, undtagen skifte større end eller 954 00:47:30,930 --> 00:47:34,690 svarende til mindre end og venstre til højre. 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 der nogen har nogen spørgsmål om dette? 958 00:47:48,430 --> 00:47:52,560 Så nogle andre ting, der ville have været korrekt, 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 Gæt, teknisk, ingen af ​​disse virkelig også nødt til at være-ltiff. 962 00:47:59,520 --> 00:48:00,950 >> Også, er der sandsynligvis kun ét tilfælde hernede. 963 00:48:00,950 --> 00:48:02,380 Så det er nok din sidste sag. 964 00:48:02,380 --> 00:48:04,000 Du behøver ikke engang at-ltiff. 965 00:48:04,000 --> 00:48:06,160 Men sandsynligvis god til at skrive det, for at være klar. 966 00:48:06,160 --> 00:48:06,660 Ja. 967 00:48:06,660 --> 00:48:09,200 >> PUBLIKUM: Så du tror ikke, quiz - hvis vi laver fejl, for eksempel, 968 00:48:09,200 --> 00:48:11,725 i syntaks - 969 00:48:11,725 --> 00:48:13,990 små syntaksfejl - 970 00:48:13,990 --> 00:48:17,810 hvordan der bliver taget i quizzen? 971 00:48:17,810 --> 00:48:21,300 >> JASON HIRSCHHORN: Generelt på quiz, lille syntaksfejl eller lille 972 00:48:21,300 --> 00:48:24,010 stil fejl ikke mister du point. 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 har glemt at lukke denne parentes, det ville være OK. 975 00:48:30,290 --> 00:48:34,880 >> Kæmpe syntaksfejl, der ændrer funktionelle betydning af din kode 976 00:48:34,880 --> 00:48:37,600 dramatisk, kan du få taget point for. 977 00:48:37,600 --> 00:48:40,330 Eller generelt bare klassificering dig om, hvorvidt din 978 00:48:40,330 --> 00:48:42,150 kode funktioner, selv - 979 00:48:42,150 --> 00:48:44,830 ikke dens design, så meget, og ikke dens stil. 980 00:48:44,830 --> 00:48:50,780 981 00:48:50,780 --> 00:48:55,480 >> Lad os nu kode en iterativ version af fund. 982 00:48:55,480 --> 00:49:00,400 983 00:49:00,400 --> 00:49:03,450 Så det kommer til at være temmelig ens, men Der er helt sikkert kommer til at være 984 00:49:03,450 --> 00:49:06,250 nogle vigtige forskelle. 985 00:49:06,250 --> 00:49:09,160 Men vores pseudokode kan sandsynligvis gå - 986 00:49:09,160 --> 00:49:11,610 vi kan stadig tage en linje af pseudokode og regne ud, hvad 987 00:49:11,610 --> 00:49:14,160 linje er i dette tilfælde. 988 00:49:14,160 --> 00:49:18,010 >> Så i en iterativ udgave, hvad tror du, Julia, bør 989 00:49:18,010 --> 00:49:19,260 være den første linje? 990 00:49:19,260 --> 00:49:23,100 991 00:49:23,100 --> 00:49:26,920 >> PUBLIKUM: Igen i iterative boolean, du nødt til at oprette en for-løkke, right? 992 00:49:26,920 --> 00:49:27,660 >> JASON HIRSCHHORN: OK. 993 00:49:27,660 --> 00:49:38,480 >> PUBLIKUM: Så for ligesom, k, for x er lig med 0, x er mindre end jeg. 994 00:49:38,480 --> 00:49:42,260 Eller nej, x er mindre end den størrelsen af ​​træet. 995 00:49:42,260 --> 00:49:42,760 >> JASON HIRSCHHORN: Træet. 996 00:49:42,760 --> 00:49:46,660 Så vi ikke rigtig kender størrelsen af træ, og vi ved ikke rigtig kender til 997 00:49:46,660 --> 00:49:48,900 hvor mange gange vi kan gå, så hvad er en anden type løkke, der kan være 998 00:49:48,900 --> 00:49:50,150 bedre i dette tilfælde? 999 00:49:50,150 --> 00:49:53,250 1000 00:49:53,250 --> 00:49:55,244 >> PUBLIKUM: Hvis der andet? 1001 00:49:55,244 --> 00:49:57,070 >> JASON HIRSCHHORN: Hvis der ellers kan ikke være en løkke. 1002 00:49:57,070 --> 00:49:58,935 Så hvad er en form for løkke kan vi bare gå, indtil nogle tilfælde er opfyldt? 1003 00:49:58,935 --> 00:50:07,250 1004 00:50:07,250 --> 00:50:11,560 Hvad er den eneste anden form for løkke i C over en for-løkke? 1005 00:50:11,560 --> 00:50:11,930 >> PUBLIKUM: Mens. 1006 00:50:11,930 --> 00:50:13,380 >> JASON HIRSCHHORN: Mens nøjagtigt. 1007 00:50:13,380 --> 00:50:16,430 I en while-løkke, ikke brug for at vide hvordan - 1008 00:50:16,430 --> 00:50:18,450 en while-løkke, og for loop kan gøre det præcis de samme ting, men det gode 1009 00:50:18,450 --> 00:50:21,500 omkring en while-løkke er, at vi ikke har brug for at vide, hvor stor vores træ er. 1010 00:50:21,500 --> 00:50:23,060 Så vi kommer til at gå, indtil hvad? 1011 00:50:23,060 --> 00:50:25,880 1012 00:50:25,880 --> 00:50:28,032 >> PUBLIKUM: Indtil det er lig størrelsen af ​​- 1013 00:50:28,032 --> 00:50:32,320 >> JASON HIRSCHHORN: Tja, det er meget ligner vores rekursive sag. 1014 00:50:32,320 --> 00:50:33,360 Så - 1015 00:50:33,360 --> 00:50:36,470 >> PUBLIKUM: Mens rod Jeg er ikke lig jeg. 1016 00:50:36,470 --> 00:50:37,620 >> JASON HIRSCHHORN: Det er virkelig tæt. 1017 00:50:37,620 --> 00:50:39,430 Mens rod i - 1018 00:50:39,430 --> 00:50:40,610 lad os prøve det. 1019 00:50:40,610 --> 00:50:41,180 Jeg tror ikke, [uhørligt] 1020 00:50:41,180 --> 00:50:43,026 hvor rod jeg ikke lige jeg. 1021 00:50:43,026 --> 00:50:47,380 1022 00:50:47,380 --> 00:50:49,460 Vi måske nødt til at ændre det i en lille lidt, men det lyder som det er temmelig 1023 00:50:49,460 --> 00:50:50,160 godt, for nu. 1024 00:50:50,160 --> 00:50:51,710 Så vi vil gøre det. 1025 00:50:51,710 --> 00:50:55,660 >> Husk også, kan vi ikke påtage pr spørgsmålet. 1026 00:50:55,660 --> 00:50:57,880 Du behøver ikke antage, at den root vil være ikke-nul. 1027 00:50:57,880 --> 00:51:01,914 Så hvad tror du det meget første ting, vi bør gøre, er? 1028 00:51:01,914 --> 00:51:02,770 >> PUBLIKUM: Bare gør det samme ting som før. 1029 00:51:02,770 --> 00:51:05,260 Hvis roden er lig med ligemænd null, return 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 kunne være null. 1033 00:51:13,820 --> 00:51:15,810 Så vi ønsker at slippe af det højre væk. 1034 00:51:15,810 --> 00:51:19,560 Og så vil vi kontrollere, om rod jeg ikke lige jeg. 1035 00:51:19,560 --> 00:51:24,480 Så siger vi søger i dette træ for 3, rod jeg ikke lige i, nu 1036 00:51:24,480 --> 00:51:25,950 vi er i vores while-løkke. 1037 00:51:25,950 --> 00:51:27,500 Hvad ønsker vi at gøre? 1038 00:51:27,500 --> 00:51:32,320 1039 00:51:32,320 --> 00:51:35,430 Og igen, det kommer til at være temmelig ligner vores rekursive version. 1040 00:51:35,430 --> 00:51:36,230 Ja. 1041 00:51:36,230 --> 00:51:40,470 >> PUBLIKUM: Så du ønsker at gentage, eller holde går ned i træet, så længe 1042 00:51:40,470 --> 00:51:42,400 roden er ikke lig med nul. 1043 00:51:42,400 --> 00:51:45,120 1044 00:51:45,120 --> 00:51:46,640 >> JASON HIRSCHHORN: Så længe rod er ikke lig med null? 1045 00:51:46,640 --> 00:51:50,200 >> PUBLIKUM: Roden bindestreg i er ikke lig med nul. 1046 00:51:50,200 --> 00:51:51,220 Bare rod, ja. 1047 00:51:51,220 --> 00:51:52,920 Som længe roden er ikke lig med null. 1048 00:51:52,920 --> 00:51:54,240 >> JASON HIRSCHHORN: Så du vil at ændre dette i roden 1049 00:51:54,240 --> 00:51:56,590 ikke er lig nul? 1050 00:51:56,590 --> 00:51:59,020 >> PUBLIKUM: Ja. 1051 00:51:59,020 --> 00:52:00,800 >> PUBLIKUM: Vi kunne kombinere disse, right? 1052 00:52:00,800 --> 00:52:02,990 Vi har ikke brug for, hvis, i første omgang. 1053 00:52:02,990 --> 00:52:05,180 >> JASON HIRSCHHORN: OK, så hvis vi lad være - 1054 00:52:05,180 --> 00:52:08,140 hvis vi kombinerer dem, så vi kommer til at gøre mens roden ikke er lig nul, og 1055 00:52:08,140 --> 00:52:10,800 hvis roden sker for at være nul ved begyndelse, hvad gør vi her? 1056 00:52:10,800 --> 00:52:11,450 >> PUBLIKUM: Tilbage falsk. 1057 00:52:11,450 --> 00:52:12,730 >> JASON HIRSCHHORN: Great. 1058 00:52:12,730 --> 00:52:14,110 Så begge veje sandsynligvis ville have fungeret. 1059 00:52:14,110 --> 00:52:15,645 Dette er en anden måde, og det kombinerer det. 1060 00:52:15,645 --> 00:52:18,950 Men igen, hvis du gjorde enten måde, vi ikke kommer til at tage off design 1061 00:52:18,950 --> 00:52:19,800 peger på quizzen. 1062 00:52:19,800 --> 00:52:21,020 Men det ser godt ud. 1063 00:52:21,020 --> 00:52:23,940 >> Så mens rod er ikke lig null, hvad der er den første 1064 00:52:23,940 --> 00:52:25,400 ting, vi ønsker at kontrollere? 1065 00:52:25,400 --> 00:52:26,330 En anden? 1066 00:52:26,330 --> 00:52:29,720 Null, hvad er den første ting? 1067 00:52:29,720 --> 00:52:32,850 >> PUBLIKUM: Hvis ri er mindre end - 1068 00:52:32,850 --> 00:52:36,140 Åh, jeg gætte, hvis vi allerede fandt den i roden. 1069 00:52:36,140 --> 00:52:40,830 Så hvis rod pil i er lig med i - 1070 00:52:40,830 --> 00:52:40,990 >> JASON HIRSCHHORN: Undskyld? 1071 00:52:40,990 --> 00:52:45,840 >> PUBLIKUM: Hvis rod pil Jeg lig lig i - 1072 00:52:45,840 --> 00:52:47,090 >> JASON HIRSCHHORN: Hvad gør vi? 1073 00:52:47,090 --> 00:52:50,300 1074 00:52:50,300 --> 00:52:51,550 >> PUBLIKUM: Return sandt. 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 hvad er det næste? 1078 00:53:00,530 --> 00:53:04,510 1079 00:53:04,510 --> 00:53:06,843 Jeff, hvad er det næste linje kode? 1080 00:53:06,843 --> 00:53:16,190 >> PUBLIKUM: Hvis jeg er mindre end root pil Jeg derefter rod lig rod pil til venstre. 1081 00:53:16,190 --> 00:53:21,550 >> JASON Hirschhorn: root ligemænd rod pil venstre. 1082 00:53:21,550 --> 00:53:24,530 Så det er nok den største Forskellen her i denne iterative 1083 00:53:24,530 --> 00:53:26,600 versionen i modsætning til de rekursive version. 1084 00:53:26,600 --> 00:53:28,970 Den rekursive version vi kalder funktionen igen. 1085 00:53:28,970 --> 00:53:32,640 Vi vil opdatere root, når vi kalder den nye funktion. 1086 00:53:32,640 --> 00:53:34,170 Her vil vi ikke kalde en ny funktion. 1087 00:53:34,170 --> 00:53:37,610 Vi er simpelthen bare opdatere rod i denne funktion. 1088 00:53:37,610 --> 00:53:38,880 Det er fremragende. 1089 00:53:38,880 --> 00:53:40,730 Og hvad er den sidste linje kode? 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 rod ligemænd rod pil til højre. 1093 00:53:48,290 --> 00:53:49,492 >> JASON HIRSCHHORN: Undskyld? 1094 00:53:49,492 --> 00:53:52,340 >> PUBLIKUM: Root ligemænd rod pil til højre. 1095 00:53:52,340 --> 00:53:55,590 1096 00:53:55,590 --> 00:53:57,140 >> JASON HIRSCHHORN: Kan du også skrive noget som dette? 1097 00:53:57,140 --> 00:54:02,786 1098 00:54:02,786 --> 00:54:03,890 >> PUBLIKUM: Jeg har ingen idé. 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 gøre plus ligemænd. 1102 00:54:08,270 --> 00:54:10,780 OK, så det ser godt ud. 1103 00:54:10,780 --> 00:54:13,620 Hvorfor vi ikke bare gøre det at rense det op. 1104 00:54:13,620 --> 00:54:15,220 Det ser godt ud, og det ville fungere. 1105 00:54:15,220 --> 00:54:16,920 Og vi ville bryde ud. 1106 00:54:16,920 --> 00:54:21,460 >> Hvis roden til venstre var nul eller rod højre var nul, ville vi komme herop. 1107 00:54:21,460 --> 00:54:22,470 Root ville være lig med nul. 1108 00:54:22,470 --> 00:54:24,270 Vi vil bryde ud af vores løkke, og vi ville returnere falsk. 1109 00:54:24,270 --> 00:54:26,280 Så når vi bryde ud af den loop, vi vender tilbage falsk. 1110 00:54:26,280 --> 00:54:29,520 1111 00:54:29,520 --> 00:54:32,793 >> Og igen, en while-løkke var perfekt her, fordi vi ikke ved, hvordan 1112 00:54:32,793 --> 00:54:33,850 big vores træ er. 1113 00:54:33,850 --> 00:54:36,460 Vi forsøgte at skrive for-løkken, men vi indså du nødt til at regne ud, hvordan 1114 00:54:36,460 --> 00:54:37,410 stor den er i forvejen. 1115 00:54:37,410 --> 00:54:38,720 Ja. 1116 00:54:38,720 --> 00:54:41,790 >> PUBLIKUM: Hvis dette ikke var en binær søg i træet, vil det være reel matematik-y 1117 00:54:41,790 --> 00:54:44,220 at skrive det iterativt, right? 1118 00:54:44,220 --> 00:54:47,170 Ligesom, hvis det var et træ, men ikke nødvendigvis - 1119 00:54:47,170 --> 00:54:49,730 så det var ikke alle mindre til venstre, og alle større til højre. 1120 00:54:49,730 --> 00:54:52,540 Det ville være virkelig svært at gentage over det, ikke? 1121 00:54:52,540 --> 00:54:55,720 Vi er nødt til at spare, hvad der var tidligere på i træet og gå tilbage, 1122 00:54:55,720 --> 00:54:56,970 og den slags. 1123 00:54:56,970 --> 00:54:59,690 1124 00:54:59,690 --> 00:55:02,010 >> JASON HIRSCHHORN: Hvis det ikke var en binær søg træet, hvis det var bare en 1125 00:55:02,010 --> 00:55:04,740 træ og tingene var ikke sorteres på denne måde - 1126 00:55:04,740 --> 00:55:07,440 og vi indså tidligere, da Anna hjælper os, at gøre det 1127 00:55:07,440 --> 00:55:08,800 sorterede hjælper os en masse - 1128 00:55:08,800 --> 00:55:12,610 vi ville få brug for, ja, altid gemme hvor vi var tidligere. 1129 00:55:12,610 --> 00:55:14,430 Men der kunne være en masse hvor vi var previouslys. 1130 00:55:14,430 --> 00:55:17,730 Der kan være en masse for moder noder. 1131 00:55:17,730 --> 00:55:22,530 >> Sandsynligvis den bedste måde at gøre det ville være at holde skubbe tingene på nogle 1132 00:55:22,530 --> 00:55:24,170 type skorsten eller kø. 1133 00:55:24,170 --> 00:55:26,030 Du ville aldrig nødt til at kode dette fordi det er en hård problem. 1134 00:55:26,030 --> 00:55:30,820 Men du skubber nogle ting på en stak eller kø, og derefter pop dem ud, og 1135 00:55:30,820 --> 00:55:31,890 derefter evaluere dem. 1136 00:55:31,890 --> 00:55:34,200 >> Og så har nogle andre ting, hvor du faktisk sætte noder, og 1137 00:55:34,200 --> 00:55:36,090 derefter oprette det, og derefter søge gennem det. 1138 00:55:36,090 --> 00:55:38,700 Det kunne være den bedste måde at gøre det. 1139 00:55:38,700 --> 00:55:42,410 OK, nogen spørgsmål om dette problem? 1140 00:55:42,410 --> 00:55:44,670 >> PUBLIKUM: Dette er på et beslægtet note. 1141 00:55:44,670 --> 00:55:50,460 Vil vi nødt til at sammenligne køre tider for hash-tabeller, binær 1142 00:55:50,460 --> 00:55:52,160 søgetræer, et cetera? 1143 00:55:52,160 --> 00:55:54,310 >> JASON HIRSCHHORN: Sandsynligvis. 1144 00:55:54,310 --> 00:55:56,150 Så lad os gøre det rigtig hurtigt. 1145 00:55:56,150 --> 00:55:58,490 Kør tid til hash tabel - 1146 00:55:58,490 --> 00:55:59,090 hvad er de andre? 1147 00:55:59,090 --> 00:56:00,050 Binært træ? 1148 00:56:00,050 --> 00:56:02,920 >> PUBLIKUM: Link lister. 1149 00:56:02,920 --> 00:56:04,780 >> JASON HIRSCHHORN: OK, lad os gøre indsatsen. 1150 00:56:04,780 --> 00:56:09,980 Hvad er den store O i indsatsen på en hash tabel? 1151 00:56:09,980 --> 00:56:13,080 1152 00:56:13,080 --> 00:56:15,285 Hvad er forudsætningerne du laver? 1153 00:56:15,285 --> 00:56:17,760 >> PUBLIKUM: Du indsætter på begyndelsen af ​​linket liste. 1154 00:56:17,760 --> 00:56:19,860 >> JASON HIRSCHHORN: Sandsynligvis den første antagelse er der ingen kollisioner. 1155 00:56:19,860 --> 00:56:22,340 Hvis der ikke er kollisioner, og derefter indsættelse, er ét. 1156 00:56:22,340 --> 00:56:26,560 Hvis der er kollisioner, og du er gør separat kæde og indsættelse 1157 00:56:26,560 --> 00:56:31,880 ved begyndelsen af ​​link-listen, derefter indsættelse er også konstant. 1158 00:56:31,880 --> 00:56:34,700 >> Hvis du laver en hash tabel, men du har en anden metode til at håndtere 1159 00:56:34,700 --> 00:56:36,040 med kollisioner, hvad er en anden metode? 1160 00:56:36,040 --> 00:56:41,580 1161 00:56:41,580 --> 00:56:42,960 Hvad er der er en anden metode håndtere 1162 00:56:42,960 --> 00:56:44,205 kollision i en hash tabel? 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 at holde udkig for det næste åbne stedet. 1166 00:56:47,770 --> 00:56:50,390 Det er ikke konstant indsættelse tid. 1167 00:56:50,390 --> 00:56:52,266 Du kunne have til at gå igennem hele tabellen, således 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 Ja. 1170 00:56:54,740 --> 00:56:57,690 >> PUBLIKUM: Ellers bare kæde? 1171 00:56:57,690 --> 00:57:00,160 >> JASON HIRSCHHORN: Vi gjorde separat kæde. 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, hvad linket liste. 1174 00:57:01,560 --> 00:57:03,720 Det fancy navn er adskilt kæde. 1175 00:57:03,720 --> 00:57:06,880 Det kunne være en hvilken som helst type liste struktur vi tilfældigvis gøre i link listen. 1176 00:57:06,880 --> 00:57:10,490 >> Så igen indsættelse på et hash tabel kan være konstant tid. 1177 00:57:10,490 --> 00:57:13,160 Hvad om indsættelse på en fører kø? 1178 00:57:13,160 --> 00:57:19,260 1179 00:57:19,260 --> 00:57:20,640 >> PUBLIKUM: Er det ikke 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 er bare at skubbe det på. 1182 00:57:23,420 --> 00:57:24,120 OK. 1183 00:57:24,120 --> 00:57:25,380 Indsættelse, hvad var de andre? 1184 00:57:25,380 --> 00:57:27,100 På en chance? 1185 00:57:27,100 --> 00:57:30,252 Hvad er big O for indsættelse på en prøve? 1186 00:57:30,252 --> 00:57:32,808 >> PUBLIKUM: længde er konstant. 1187 00:57:32,808 --> 00:57:34,560 Længde af de længste - 1188 00:57:34,560 --> 00:57:36,998 længden af ​​ordet du indsætter. 1189 00:57:36,998 --> 00:57:38,210 >> JASON HIRSCHHORN: Undskyld? 1190 00:57:38,210 --> 00:57:39,120 Vent, så hvad gjorde jeg hører? 1191 00:57:39,120 --> 00:57:40,260 Du sagde - hvad sagde du? 1192 00:57:40,260 --> 00:57:41,650 Hvad var dit svar, Marcus? 1193 00:57:41,650 --> 00:57:43,640 >> TILHØRERNE: Længden af ​​ordet du indsætter i figurer, 1194 00:57:43,640 --> 00:57:45,480 forudsat det er et tegn prøve. 1195 00:57:45,480 --> 00:57:46,840 >> JASON HIRSCHHORN: OK, så længden af ​​ordet. 1196 00:57:46,840 --> 00:57:49,500 Vi vil gøre en antagelse om, at det er en streng af tegn. 1197 00:57:49,500 --> 00:57:51,930 Du sagde noget andet, selv om. 1198 00:57:51,930 --> 00:57:55,490 Du sagde længde længste ord. 1199 00:57:55,490 --> 00:57:57,600 >> PUBLIKUM: Det er bare konstant, ikke? 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: Ligesom, hvis du bruger store O notation, så er det ikke varierer 1202 00:58:00,970 --> 00:58:04,680 af antallet af ting, er allerede i forsøg. 1203 00:58:04,680 --> 00:58:07,344 >> JASON HIRSCHHORN: Så vi ville siger, at det er konstant tid. 1204 00:58:07,344 --> 00:58:11,840 Det er konstant insertion og det er fordi denne idé - 1205 00:58:11,840 --> 00:58:14,820 sige, at vi har et ord, der er 45, eller et ord, der er 60, der 1206 00:58:14,820 --> 00:58:16,800 har et konstant antal. 1207 00:58:16,800 --> 00:58:21,050 Og det ville bare blive indsat i konstant tid. 1208 00:58:21,050 --> 00:58:26,060 >> I praksis dog ville det ikke være, naturligvis ske i et millisekund, 1209 00:58:26,060 --> 00:58:26,590 for eksempel. 1210 00:58:26,590 --> 00:58:28,880 Men vi vil sige store O er konstant for en prøve. 1211 00:58:28,880 --> 00:58:31,330 Og det er en af ​​dens største fordele. 1212 00:58:31,330 --> 00:58:33,330 >> Hvad om indsættelse i en link liste? 1213 00:58:33,330 --> 00:58:37,220 Bare en generisk, sorteret link liste? 1214 00:58:37,220 --> 00:58:37,700 Ja. 1215 00:58:37,700 --> 00:58:38,530 >> PUBLIKUM: Jeg havde et spørgsmål. 1216 00:58:38,530 --> 00:58:42,670 På testen, ville de nogensinde spurgt os indsættelse tid, der er fire trin, 1217 00:58:42,670 --> 00:58:43,270 eller noget? 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 siger indsættelse tid er én, det betyder bare konstant tid? 1220 00:58:47,670 --> 00:58:49,770 >> JASON HIRSCHHORN: Ja, de ville altid spørge, er det store O n? 1221 00:58:49,770 --> 00:58:51,440 Big O af log n? 1222 00:58:51,440 --> 00:58:53,960 N kvadreret konstant. 1223 00:58:53,960 --> 00:58:56,520 Det er faktisk den eneste dem, du behøver at vide. 1224 00:58:56,520 --> 00:58:58,420 Hvad om indsættelse på sorteres link liste? 1225 00:58:58,420 --> 00:58:59,440 >> PUBLIKUM: Jeg havde et spørgsmål - 1226 00:58:59,440 --> 00:58:59,980 et spørgsmål - 1227 00:58:59,980 --> 00:59:01,060 >> JASON HIRSCHHORN: Hvad er svaret på dette spørgsmål, selv om? 1228 00:59:01,060 --> 00:59:02,120 >> PUBLIKUM: Vent, hvad gjorde du spørge? 1229 00:59:02,120 --> 00:59:06,750 >> JASON HIRSCHHORN: Hvad er big O i indsættelse i en ordnet link liste? 1230 00:59:06,750 --> 00:59:07,070 >> PUBLIKUM: One? 1231 00:59:07,070 --> 00:59:09,400 Nej vent, Nej vent, n. 1232 00:59:09,400 --> 00:59:11,420 >> JASON HIRSCHHORN N. Udover link-listen. 1233 00:59:11,420 --> 00:59:12,706 Og hvad var dit spørgsmål? 1234 00:59:12,706 --> 00:59:16,440 >> PUBLIKUM: Så ville du skriver o af k eller o af 1 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 1, sandsynligvis. 1237 00:59:21,830 --> 00:59:24,160 Der var en anden datastruktur der ville have været god. 1238 00:59:24,160 --> 00:59:25,730 Tree, binær søgning træ. 1239 00:59:25,730 --> 00:59:27,510 Hvad er indsættelse på en binær søgning træ? 1240 00:59:27,510 --> 00:59:31,190 1241 00:59:31,190 --> 00:59:33,900 >> PUBLIKUM: Log ind. 1242 00:59:33,900 --> 00:59:39,260 >> JASON HIRSCHHORN: Så, hvad er det værste tilfældet i en binær søgning træ? 1243 00:59:39,260 --> 00:59:45,350 Så hvis vi tilfældigvis starter ved 5, og hver tal er større end 5, så 1244 00:59:45,350 --> 00:59:48,760 vi har fået 5, 7, 9, 11, et cetera. 1245 00:59:48,760 --> 00:59:52,255 I dette tilfælde er det dybest set bare et link liste, og vi er nødt til at indsætte alle 1246 00:59:52,255 --> 00:59:52,680 vejen i slutningen. 1247 00:59:52,680 --> 00:59:54,350 Så det er stort O n. 1248 00:59:54,350 --> 00:59:57,720 >> Det kunne være vores værste fald på en binær søgning træ. 1249 00:59:57,720 --> 01:00:00,890 Naturligvis, ville du aldrig konstruere en binær søgning træ med 5 i 1250 01:00:00,890 --> 01:00:04,270 midten, vel vidende 5 ville være det laveste antal. 1251 01:00:04,270 --> 01:00:08,030 Men det kunne være, hvis du er starter fra bunden. 1252 01:00:08,030 --> 01:00:10,980 Eventuelle spørgsmål vedrørende denne, før jeg gå videre til et andet spørgsmål? 1253 01:00:10,980 --> 01:00:11,560 Det var et godt spørgsmål. 1254 01:00:11,560 --> 01:00:15,100 Jeg ville vide stort O i - 1255 01:00:15,100 --> 01:00:18,620 >> PUBLIKUM: Hvad med at søge for de fire? 1256 01:00:18,620 --> 01:00:20,400 >> JASON HIRSCHHORN: Definitely vi gjorde søgning og sortering. 1257 01:00:20,400 --> 01:00:22,160 Vi gjorde alle de algoritmer, til højre. 1258 01:00:22,160 --> 01:00:23,390 Vent, var det for quiz 1? 1259 01:00:23,390 --> 01:00:23,980 Var der dækkede - 1260 01:00:23,980 --> 01:00:25,860 har du allerede har, at spørgsmål om Quiz 1? 1261 01:00:25,860 --> 01:00:29,650 Den store O runtime af binær søgning, indsættelse sortere, boble slags? 1262 01:00:29,650 --> 01:00:30,160 >> PUBLIKUM: Ja. 1263 01:00:30,160 --> 01:00:32,790 >> JASON HIRSCHHORN: Hvis du havde at spørgsmål om Quiz 0, odds er du vil ikke 1264 01:00:32,790 --> 01:00:35,180 få nøjagtig de samme spørgsmål om Quiz 1.. 1265 01:00:35,180 --> 01:00:36,300 Muligvis stadig godt at vide dem. 1266 01:00:36,300 --> 01:00:38,520 Du skal forhåbentlig vide gh allerede. 1267 01:00:38,520 --> 01:00:40,740 >> Men andre logaritmiske runtimes er sandsynligvis godt at vide. 1268 01:00:40,740 --> 01:00:42,890 Ting, der ikke var dækket på Quiz 0. 1269 01:00:42,890 --> 01:00:47,300 Ligesom alle disse operatører på disse abstrakte datatyper. 1270 01:00:47,300 --> 01:00:50,760 >> OK, lad os komme videre. 1271 01:00:50,760 --> 01:00:52,190 Dette bør man være temmelig hurtig. 1272 01:00:52,190 --> 01:00:56,170 Og dette er et nyt sprog, vi ikke har faktisk kodet i før. 1273 01:00:56,170 --> 01:00:59,300 Dette er et spørgsmål om, at kode i PHP. 1274 01:00:59,300 --> 01:01:01,950 Så overveje PHP array nedenfor. 1275 01:01:01,950 --> 01:01:06,150 Skriv PHP og / eller HTML-koder, så det udgange en tabel med to kolonner med TFs 1276 01:01:06,150 --> 01:01:08,810 navne og huse. 1277 01:01:08,810 --> 01:01:11,600 >> Du har aldrig gjort det før, dette særlige problem. 1278 01:01:11,600 --> 01:01:16,270 Men det bør være meget velkendt for hvad du gjorde i problemer indstille 7. 1279 01:01:16,270 --> 01:01:21,250 Så jeg ville være villig til at vædde på, du vil være bedt om at kode noget i PHP, der 1280 01:01:21,250 --> 01:01:23,880 er meget lig, hvad du gjorde i problem indstille 7. 1281 01:01:23,880 --> 01:01:26,300 >> For det første array er ikke så specifik. 1282 01:01:26,300 --> 01:01:28,140 Hvilken type af array er dette? 1283 01:01:28,140 --> 01:01:29,080 >> PUBLIKUM: Associative. 1284 01:01:29,080 --> 01:01:31,250 >> JASON HIRSCHHORN: Det er en associativ array. 1285 01:01:31,250 --> 01:01:33,750 Og hvad er forskellen mellem en associative 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-array har et indeks af hele tal, og en associativt array 1288 01:01:44,857 --> 01:01:47,814 er et indeks af en streng, eller noget lignende. 1289 01:01:47,814 --> 01:01:50,570 1290 01:01:50,570 --> 01:01:54,880 >> JASON HIRSCHHORN: Så en vifte af objekter ville have indekser for 1291 01:01:54,880 --> 01:01:57,090 heltal, men et objekt har felter. 1292 01:01:57,090 --> 01:02:01,590 Det har disse områder navne som navn, hus, student. 1293 01:02:01,590 --> 01:02:03,720 Har du en idé? 1294 01:02:03,720 --> 01:02:06,630 >> PUBLIKUM: Jamen, associativ array er i PHP ikke? 1295 01:02:06,630 --> 01:02:07,880 Og objekt er i JavaScript? 1296 01:02:07,880 --> 01:02:12,330 1297 01:02:12,330 --> 01:02:14,820 >> JASON HIRSCHHORN: Helt ærligt, er der ingen reel forskel mellem de to. 1298 01:02:14,820 --> 01:02:19,540 Begge har strenge som nøgler, og kan har dybest set noget som værdien. 1299 01:02:19,540 --> 01:02:21,250 Forskellige sprog kalde en ting associative array, 1300 01:02:21,250 --> 01:02:22,750 én ting et objekt. 1301 01:02:22,750 --> 01:02:25,960 Så helt ærligt, er der ingen reel forskel, men der er helt sikkert nogle 1302 01:02:25,960 --> 01:02:27,730 syntaktiske forskelle mellem de to. 1303 01:02:27,730 --> 01:02:28,200 Ja. 1304 01:02:28,200 --> 01:02:33,580 >> PUBLIKUM: Så er objekt også kodet under hætten som en hash tabel, så? 1305 01:02:33,580 --> 01:02:35,796 >> JASON HIRSCHHORN: Hvad gør du mener, kodet under kølerhjelmen? 1306 01:02:35,796 --> 01:02:38,017 >> PUBLIKUM: Vi fik at vide, at associativ matrix var teknisk set en 1307 01:02:38,017 --> 01:02:39,960 hash tabellen. 1308 01:02:39,960 --> 01:02:44,510 Så er objekt også teknisk en hash tabel? 1309 01:02:44,510 --> 01:02:45,350 >> JASON HIRSCHHORN: Jeg har ikke tænkt at besvare dette spørgsmål. 1310 01:02:45,350 --> 01:02:46,600 Jeg vender tilbage til dig på det. 1311 01:02:46,600 --> 01:02:48,980 Men jeg vil ikke tænke på hverken af dem som. 1312 01:02:48,980 --> 01:02:53,790 Men, på nogen måde, associative array og objekt, generelt bruge mennesker, dem 1313 01:02:53,790 --> 01:02:54,910 udtryk i flæng. 1314 01:02:54,910 --> 01:02:57,630 I dette tilfælde, den kølige del er kan du bruge tasterne. 1315 01:02:57,630 --> 01:03:00,580 Strenge som nøgler, snarere end blot simpel numre. 1316 01:03:00,580 --> 01:03:02,070 >> Så jeg har talt om dette for en stund. 1317 01:03:02,070 --> 01:03:04,090 Forhåbentlig nogle mennesker har fået gang om dette. 1318 01:03:04,090 --> 01:03:08,050 Vi kommer til at skrive nogle PHP og HTML kode, sådan at vi får en to-kolonne 1319 01:03:08,050 --> 01:03:11,830 bord med TFS navne og huse. 1320 01:03:11,830 --> 01:03:15,380 >> OK, jeg også gerne vil have en header række på denne tabel. 1321 01:03:15,380 --> 01:03:18,410 Så jeg har tænkt mig at gå lige i dette. 1322 01:03:18,410 --> 01:03:20,770 Vi kommer til at arkivere, nye, og vi vil - 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 en tabel? 1326 01:03:29,970 --> 01:03:32,090 Hvad er tag, Michael, at starte en tabel? 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 åbner en tag, hvad ellers har jeg brug for? 1330 01:03:37,870 --> 01:03:39,810 >> PUBLIKUM: Et hoved? 1331 01:03:39,810 --> 01:03:41,040 Eller, jeg gætte, klasse. 1332 01:03:41,040 --> 01:03:41,730 >> JASON HIRSCHHORN: Så, undskyld. 1333 01:03:41,730 --> 01:03:45,430 Antag, at vi allerede har skrevet doctab, HTML, alt det der. 1334 01:03:45,430 --> 01:03:50,230 Men hvis jeg åbner denne tabel tag, hvad ellers skal jeg skrive? 1335 01:03:50,230 --> 01:03:53,450 for validere HTML? 1336 01:03:53,450 --> 01:03:55,000 >> PUBLIKUM: Luk den. 1337 01:03:55,000 --> 01:03:56,050 >> JASON HIRSCHHORN: Luk tag. 1338 01:03:56,050 --> 01:03:57,575 Hvordan skriver jeg et close-tabel-tag? 1339 01:03:57,575 --> 01:03:59,580 >> PUBLIKUM: Dot slash tabel. 1340 01:03:59,580 --> 01:04:00,960 >> JASON HIRSCHHORN: Slash bord, stor. 1341 01:04:00,960 --> 01:04:02,730 Sandsynligvis giver mening at skrive både dem sammen, fordi 1342 01:04:02,730 --> 01:04:03,870 du har fået til at gøre det. 1343 01:04:03,870 --> 01:04:08,575 OK, hvis jeg vil have en kolonneoverskrift, hvordan gør Jeg skriver en kolonneoverskrift med titler? 1344 01:04:08,575 --> 01:04:11,650 1345 01:04:11,650 --> 01:04:19,290 >> PUBLIKUM: Er det mindre end 10 t close - 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: Så samme ting, skråstreg, ja. 1349 01:04:25,080 --> 01:04:26,610 >> JASON HIRSCHHORN: OK, og giv mig 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 have to kolonner. 1355 01:04:39,520 --> 01:04:40,960 Betyder det give mig to kolonner? 1356 01:04:40,960 --> 01:04:43,880 Hvor mange søjler er det? 1357 01:04:43,880 --> 01:04:45,920 One. 1358 01:04:45,920 --> 01:04:47,170 Så lad os kopiere og indsætte dette. 1359 01:04:47,170 --> 01:04:59,750 1360 01:04:59,750 --> 01:05:03,390 >> Så faktisk, på den quiz, al denne kode at vi har skrevet hidtil var 1361 01:05:03,390 --> 01:05:04,710 faktisk givet til dig. 1362 01:05:04,710 --> 01:05:06,200 Men du bør nok stadig vide, hvordan man skriver det. 1363 01:05:06,200 --> 01:05:06,470 Ja. 1364 01:05:06,470 --> 01:05:10,636 >> PUBLIKUM: Dit hus er mellem de to. 1365 01:05:10,636 --> 01:05:11,130 >> JASON HIRSCHHORN: Boom. 1366 01:05:11,130 --> 01:05:12,720 Det skal gå lige der, right? 1367 01:05:12,720 --> 01:05:14,600 God opkald. 1368 01:05:14,600 --> 01:05:17,760 Så igen, alt denne kode er faktisk givet til dig på selve quiz. 1369 01:05:17,760 --> 01:05:19,570 Men det er sjovt at skrive det, og du skal vide, hvordan man skriver det. 1370 01:05:19,570 --> 01:05:23,640 Så dette er, hvor du har brug for at starte din kode. 1371 01:05:23,640 --> 01:05:25,150 Hvad har vi brug for at skrive lige her? 1372 01:05:25,150 --> 01:05:28,640 1373 01:05:28,640 --> 01:05:30,565 >> Undskyld, jeg har brug for at ændre navnet på denne fil. 1374 01:05:30,565 --> 01:05:41,180 1375 01:05:41,180 --> 01:05:44,270 Så vi gemte det i en. HTML-fil, ikke i en. PHP-fil. 1376 01:05:44,270 --> 01:05:47,030 Disse ting ville betyde noget 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 Hvad er den første ting Jeg har brug for at skrive? 1379 01:05:50,090 --> 01:05:52,990 Jeg ønsker at sætte nogle PHP kode i en HTML. 1380 01:05:52,990 --> 01:05:57,300 >> PUBLIKUM: PHP, som en anden gulerod og spørgsmålstegn PHP, right? 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 afslutte det? 1383 01:05:59,360 --> 01:06:02,510 >> PUBLIKUM: Med et spørgsmålstegn. 1384 01:06:02,510 --> 01:06:03,120 >> JASON HIRSCHHORN: Det er godt. 1385 01:06:03,120 --> 01:06:07,090 Det er den første ting, jeg har brug for, hvis jeg vil at sætte nogle PHP-kode i her. 1386 01:06:07,090 --> 01:06:11,210 >> PUBLIKUM:. Jeg troede et PHP filen kunne tage HTML. 1387 01:06:11,210 --> 01:06:12,290 >> JASON HIRSCHHORN: Ja. 1388 01:06:12,290 --> 01:06:15,330 A. PHP-fil kan tage lidt HTML og vises. 1389 01:06:15,330 --> 01:06:16,450 Det var min fejl. 1390 01:06:16,450 --> 01:06:18,300 Jeg prøvede bare at efterligne hvad det var på quizzen. 1391 01:06:18,300 --> 01:06:21,910 1392 01:06:21,910 --> 01:06:24,720 >> OK, undskyld at forvirre dig. 1393 01:06:24,720 --> 01:06:25,550 Ja, practice.HTML. 1394 01:06:25,550 --> 01:06:27,340 Nu vil vi sætte nogle PHP-kode i. 1395 01:06:27,340 --> 01:06:30,530 Hvad er den første linje i PHP kode jeg skal skrive? 1396 01:06:30,530 --> 01:06:33,360 Jeg har tænkt mig at gå igennem dette array og gøre det til en tabel. 1397 01:06:33,360 --> 01:06:34,600 Ja. 1398 01:06:34,600 --> 01:06:37,160 >> PUBLIKUM: Du kan enten bruge en for H loop eller en for-løkke. 1399 01:06:37,160 --> 01:06:38,415 >> JASON HIRSCHHORN: OK, hvad vil du bruge? 1400 01:06:38,415 --> 01:06:40,720 >> PUBLIKUM: Jeg ville bruge en for-løkke. 1401 01:06:40,720 --> 01:06:48,700 For, og så gør dollartegn Jeg er lig med 0 semikolon dollar 1402 01:06:48,700 --> 01:06:51,580 underskrive jeg mindre end 2. 1403 01:06:51,580 --> 01:06:55,455 Og så semikolon i dollar underskrive i plus plus. 1404 01:06:55,455 --> 01:07:01,890 1405 01:07:01,890 --> 01:07:03,880 >> JASON HIRSCHHORN: Hvordan du ved at bruge en 2? 1406 01:07:03,880 --> 01:07:10,444 >> PUBLIKUM: Fordi der var to associative arrays i større 1407 01:07:10,444 --> 01:07:11,960 associative array. 1408 01:07:11,960 --> 01:07:13,610 >> JASON HIRSCHHORN: Så det store tings ikke en associeret array. 1409 01:07:13,610 --> 01:07:15,500 Den store ting er bare en normal array. 1410 01:07:15,500 --> 01:07:17,380 Men du har ret, der er to associative arrays 1411 01:07:17,380 --> 01:07:18,910 inde i vores større array. 1412 01:07:18,910 --> 01:07:20,310 Det er derfor, du bruger to. 1413 01:07:20,310 --> 01:07:24,270 Jeg føler sig ubehageligt at antage, at de er 2, så hvad er en måde at skrive 1414 01:07:24,270 --> 01:07:26,810 dette uden at antage, at de er 2? 1415 01:07:26,810 --> 01:07:27,507 >> PUBLIKUM: [uhørligt]? 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, nu 1420 01:07:41,960 --> 01:07:43,650 igen, har mit bord. 1421 01:07:43,650 --> 01:07:45,250 Så der kan give mig den næste linje kode? 1422 01:07:45,250 --> 01:07:52,870 1423 01:07:52,870 --> 01:07:59,810 >> PUBLIKUM: Udskriv, og derefter i citater, beslag tr ende 1424 01:07:59,810 --> 01:08:02,670 beslag, ende citat. 1425 01:08:02,670 --> 01:08:05,300 End parenteser, semikolon. 1426 01:08:05,300 --> 01:08:07,135 >> JASON HIRSCHHORN: OK, og hvad der kommer til at gøre? 1427 01:08:07,135 --> 01:08:08,610 >> PUBLIKUM: Det kommer til at sige, ny række. 1428 01:08:08,610 --> 01:08:11,070 Det kommer til at sætte tag til en ny række. 1429 01:08:11,070 --> 01:08:13,000 >> JASON HIRSCHHORN: Right, dette PHP, ligesom vi talte om tidligere - dette 1430 01:08:13,000 --> 01:08:22,160 PHP vil blive evalueret, og derefter det kommer til at udskrive til denne fil en 1431 01:08:22,160 --> 01:08:26,350 tabel slæb, og derefter at HTML vil blive evalueret. 1432 01:08:26,350 --> 01:08:27,810 Vi er bare kopiere dette HTML vi havde her. 1433 01:08:27,810 --> 01:08:28,120 Ja. 1434 01:08:28,120 --> 01:08:29,470 >> PUBLIKUM: [uhørligt]? 1435 01:08:29,470 --> 01:08:30,290 >> JASON HIRSCHHORN: Undskyld? 1436 01:08:30,290 --> 01:08:31,240 Det er lige her. 1437 01:08:31,240 --> 01:08:33,590 Efterår 2012. 1438 01:08:33,590 --> 01:08:35,970 Må ikke se på svarene, lad os løse det sammen. 1439 01:08:35,970 --> 01:08:37,330 Så vi udskriver tabelrække. 1440 01:08:37,330 --> 01:08:38,550 Så er du sandsynligvis i swing ting. 1441 01:08:38,550 --> 01:08:41,060 Hvad er den næste linje kode, vi er nødt til at skrive? 1442 01:08:41,060 --> 01:08:42,926 Assam, giv mig den næste linje kode. 1443 01:08:42,926 --> 01:08:46,290 >> PUBLIKUM: Du skal bruge tf navn. 1444 01:08:46,290 --> 01:08:54,319 Tf åben parentes anførselstegn nævne lukkede parentes. 1445 01:08:54,319 --> 01:08:57,310 >> JASON HIRSCHHORN: Giv mig deres navn. 1446 01:08:57,310 --> 01:08:58,540 >> PUBLIKUM: Du skal udskrive det. 1447 01:08:58,540 --> 01:08:59,790 >> [indskyde STEMMER] 1448 01:08:59,790 --> 01:09:01,963 1449 01:09:01,963 --> 01:09:03,430 >> JASON HIRSCHHORN: OK, Hvordan udskriver jeg det? 1450 01:09:03,430 --> 01:09:04,680 >> [indskyde STEMMER] 1451 01:09:04,680 --> 01:09:08,609 1452 01:09:08,609 --> 01:09:10,350 >> JASON HIRSCHHORN: jeg mangler noget nu. 1453 01:09:10,350 --> 01:09:12,470 Hvad jeg mangler? 1454 01:09:12,470 --> 01:09:13,720 >> PUBLIKUM: Du har brug for et dollartegn. 1455 01:09:13,720 --> 01:09:15,960 1456 01:09:15,960 --> 01:09:17,210 >> JASON HIRSCHHORN: Hvad ellers er jeg mangler? 1457 01:09:17,210 --> 01:09:20,100 1458 01:09:20,100 --> 01:09:21,650 Alt vi har udskrevet indtil nu er tr. 1459 01:09:21,650 --> 01:09:25,589 1460 01:09:25,589 --> 01:09:27,470 >> PUBLIKUM: Luk st efter det. 1461 01:09:27,470 --> 01:09:28,720 >> JASON HIRSCHHORN: Så vi har brug at lukke tr efter. 1462 01:09:28,720 --> 01:09:34,390 1463 01:09:34,390 --> 01:09:37,906 Hvem ser, hvad vi mangler på linie 16? 1464 01:09:37,906 --> 01:09:39,340 Ja, Anna. 1465 01:09:39,340 --> 01:09:47,050 >> PUBLIKUM: Du skal åbne et TD og krøllede parenteser. 1466 01:09:47,050 --> 01:09:49,380 >> JASON HIRSCHHORN: Og hvor vi sætter krøllede parenteser? 1467 01:09:49,380 --> 01:09:51,790 >> PUBLIKUM: Omkring tf navn. 1468 01:09:51,790 --> 01:09:53,080 >> JASON HIRSCHHORN: Kan du lide dette? 1469 01:09:53,080 --> 01:09:55,420 >> PUBLIKUM: Ja. 1470 01:09:55,420 --> 01:09:59,000 Og derefter lukke td. 1471 01:09:59,000 --> 01:10:00,250 >> JASON HIRSCHHORN: Ligesom det? 1472 01:10:00,250 --> 01:10:03,370 1473 01:10:03,370 --> 01:10:06,950 >> PUBLIKUM: Har du brug for dobbelt citat mærker ved siden af ​​den krøllede parenteser? 1474 01:10:06,950 --> 01:10:07,460 >> JASON HIRSCHHORN: Lige her? 1475 01:10:07,460 --> 01:10:08,710 Nej, du gør ikke. 1476 01:10:08,710 --> 01:10:10,820 1477 01:10:10,820 --> 01:10:12,550 Så det er helt rigtigt. 1478 01:10:12,550 --> 01:10:12,940 Ja. 1479 01:10:12,940 --> 01:10:15,290 >> PUBLIKUM: Så forskellen mellem denne og encatenating med prikker er, hvis 1480 01:10:15,290 --> 01:10:18,420 du bruger prikker, ville du nødt til at have den dobbelte anførselstegn, så en prik, 1481 01:10:18,420 --> 01:10:20,370 derefter dot - 1482 01:10:20,370 --> 01:10:20,520 >> JASON HIRSCHHORN: Korrekt. 1483 01:10:20,520 --> 01:10:23,800 Så du siger at der er en ultimativ måde at skrive dette som. 1484 01:10:23,800 --> 01:10:26,760 1485 01:10:26,760 --> 01:10:28,966 Hvad sammenkædningsoperatoren i JavaScript? 1486 01:10:28,966 --> 01:10:31,200 >> PUBLIKUM: Et plustegn. 1487 01:10:31,200 --> 01:10:34,710 Du glemte at sætte klammeparentes tilbage. 1488 01:10:34,710 --> 01:10:35,760 >> JASON HIRSCHHORN: Great. 1489 01:10:35,760 --> 01:10:38,850 Og der er endnu en linje kode mangler. 1490 01:10:38,850 --> 01:10:40,130 Hvem kan give mig den sidste linje kode vi mangler? 1491 01:10:40,130 --> 01:10:43,940 1492 01:10:43,940 --> 01:10:47,602 >> PUBLIKUM: Lige præcis de samme ting, bare med hus i stedet for navn. 1493 01:10:47,602 --> 01:10:52,960 1494 01:10:52,960 --> 01:10:53,450 Store 1495 01:10:53,450 --> 01:10:54,390 >> JASON HIRSCHHORN: Great. 1496 01:10:54,390 --> 01:10:59,320 Og din syntaks er helt rigtige for få tingene i en associeret array. 1497 01:10:59,320 --> 01:11:04,450 Så i selve quizzen, er du faktisk givet op indtil her. 1498 01:11:04,450 --> 01:11:05,710 Så denne kode blev givet til dig. 1499 01:11:05,710 --> 01:11:07,750 Alt hvad du skulle skrive var disse fire linjer og husk at 1500 01:11:07,750 --> 01:11:09,190 lukke tabellen tag. 1501 01:11:09,190 --> 01:11:11,370 Gutter faktisk gjorde alt dette og meget mere. 1502 01:11:11,370 --> 01:11:11,810 Ja. 1503 01:11:11,810 --> 01:11:14,850 >> PUBLIKUM: Så det ville være funktionelt det samme, hvis du lige har haft, at alle i 1504 01:11:14,850 --> 01:11:17,250 én stor print opkald, right? 1505 01:11:17,250 --> 01:11:19,630 Og så bare konkateneres den, et cetera? 1506 01:11:19,630 --> 01:11:20,730 >> JASON HIRSCHHORN: Ligesom det? 1507 01:11:20,730 --> 01:11:21,980 >> PUBLIKUM: Ja. 1508 01:11:21,980 --> 01:11:23,810 1509 01:11:23,810 --> 01:11:26,940 Det ville bare ikke se godt ud, hvis du var at kigge på det, når du inspicere 1510 01:11:26,940 --> 01:11:28,550 elementet på din hjemmeside, right? 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 indlæst denne webside, ville jeg være stand til at se denne PHP-kode, nogensinde? 1514 01:11:38,710 --> 01:11:39,240 >> PUBLIKUM: Nej. 1515 01:11:39,240 --> 01:11:40,080 >> JASON HIRSCHHORN: Nej. 1516 01:11:40,080 --> 01:11:42,240 Og faktisk, ville jeg ikke. 1517 01:11:42,240 --> 01:11:43,920 >> PUBLIKUM: Dette er ikke HTML, right? 1518 01:11:43,920 --> 01:11:45,000 Så du måske være i stand til - 1519 01:11:45,000 --> 01:11:46,780 >> JASON HIRSCHHORN: Så denne PHP ville evalueres server side. 1520 01:11:46,780 --> 01:11:51,020 PHP er altid evalueret server side, så du aldrig kunne se PHP kode. 1521 01:11:51,020 --> 01:11:52,980 >> PUBLIKUM: Men du ville være i stand til se resultatet af udskrifter. 1522 01:11:52,980 --> 01:11:53,480 >> JASON HIRSCHHORN: Right. 1523 01:11:53,480 --> 01:11:55,510 Og det ærligt måske ikke sætte det hele på linjen. 1524 01:11:55,510 --> 01:11:59,740 Det kan formatere det pænt for dig, eller det kan sætte det på én linje. 1525 01:11:59,740 --> 01:12:01,521 Uklar. 1526 01:12:01,521 --> 01:12:03,596 Men ja, god pointe. 1527 01:12:03,596 --> 01:12:06,470 >> PUBLIKUM: Hvordan kommer der er ingen tekst fremhævning for 1528 01:12:06,470 --> 01:12:07,550 nogen af ​​PHP-kommandoer? 1529 01:12:07,550 --> 01:12:09,370 Fordi jeg kan huske at se det. 1530 01:12:09,370 --> 01:12:11,620 >> JASON HIRSCHHORN: Fordi det er en . HTML fil op her på toppen. 1531 01:12:11,620 --> 01:12:20,390 1532 01:12:20,390 --> 01:12:21,650 Værsgo. 1533 01:12:21,650 --> 01:12:25,752 1534 01:12:25,752 --> 01:12:28,800 >> PUBLIKUM: Hvis vi gjorde det indledende metode med efter sløjfer, til højre, hvis vi 1535 01:12:28,800 --> 01:12:33,500 ønskede at få adgang til en TFS, ville vi gøre TFS beslag 0 beslag, så 1536 01:12:33,500 --> 01:12:35,180 [Uhørligt]? 1537 01:12:35,180 --> 01:12:35,970 >> JASON HIRSCHHORN: Du ville - 1538 01:12:35,970 --> 01:12:40,560 så du siger til for-løkken, du ville gøre i dollartegn TFS beslag 1 1539 01:12:40,560 --> 01:12:41,850 eller jeg, til højre. 1540 01:12:41,850 --> 01:12:46,780 Eller dollartegn jeg lukker beslag og derefter firkantet beslag 1541 01:12:46,780 --> 01:12:49,600 anførselstegn, ja. 1542 01:12:49,600 --> 01:12:50,640 >> OK, fremragende. 1543 01:12:50,640 --> 01:12:53,020 Vi har endnu en hurtig en. 1544 01:12:53,020 --> 01:12:55,090 Syv minutter, så jeg vil at gå over denne ene. 1545 01:12:55,090 --> 01:12:56,160 Dette er et andet eksempel. 1546 01:12:56,160 --> 01:12:58,740 Vi er nu en helt andet sprog. 1547 01:12:58,740 --> 01:12:59,990 >> Vi har nogle HTML-kode. 1548 01:12:59,990 --> 01:13:02,480 1549 01:13:02,480 --> 01:13:07,460 Det er lidt lille på skærmen, men Jeg vil have dig til at se igennem det virkelig 1550 01:13:07,460 --> 01:13:11,140 hurtigt, og kan nogen fortælle mig, hvis jeg skulle indlæse denne webside, 1551 01:13:11,140 --> 01:13:12,390 hvad jeg ville se? 1552 01:13:12,390 --> 01:13:22,710 1553 01:13:22,710 --> 01:13:26,450 Beskriv alt om denne webside. 1554 01:13:26,450 --> 01:13:28,630 Noah? 1555 01:13:28,630 --> 01:13:30,450 Hvad ville jeg ser? 1556 01:13:30,450 --> 01:13:38,140 >> TILHØRERNE: Kode ved den forreste ende af Google med en fornemmelse for tekst og et 1557 01:13:38,140 --> 01:13:39,190 send-knappen. 1558 01:13:39,190 --> 01:13:41,180 >> JASON HIRSCHHORN: Og hvad vil knappen sige? 1559 01:13:41,180 --> 01:13:42,430 >> PUBLIKUM: Indsend. 1560 01:13:42,430 --> 01:13:44,620 1561 01:13:44,620 --> 01:13:45,160 Åh, søgning. 1562 01:13:45,160 --> 01:13:45,840 Undskyld. 1563 01:13:45,840 --> 01:13:46,830 >> JASON HIRSCHHORN: Det ville sige søgning. 1564 01:13:46,830 --> 01:13:47,520 Husk, navn. 1565 01:13:47,520 --> 01:13:50,550 Hvad bruger vi navn til? 1566 01:13:50,550 --> 01:13:53,774 Dette navn attribut, hvad er det bruges til? 1567 01:13:53,774 --> 01:13:55,470 >> [indskyde STEMMER] 1568 01:13:55,470 --> 01:13:59,300 >> PUBLIKUM: Det er dens navn for når der klikkes på? 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 hvad gør vi generelt ser - hvorfor giver vi dette navn kø? 1571 01:14:02,690 --> 01:14:03,830 Hvorfor skal vi det? 1572 01:14:03,830 --> 01:14:05,220 Ja. 1573 01:14:05,220 --> 01:14:08,600 >> PUBLIKUM: Mener ikke at blive indeks af den super global variabel? 1574 01:14:08,600 --> 01:14:12,740 >> JASON HIRSCHHORN: Ja, generelt, når denne form vil indsende, og så hvor 1575 01:14:12,740 --> 01:14:13,500 ville underkaste sig? 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 Noa, hvilken side vil det underkaste sig? 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 finde det? 1582 01:14:28,920 --> 01:14:31,025 Hvor vil du finde, hvad side gjort gældende til? 1583 01:14:31,025 --> 01:14:32,850 Hvilken linje kode? 1584 01:14:32,850 --> 01:14:34,040 >> PUBLIKUM: Formular handling. 1585 01:14:34,040 --> 01:14:34,650 >> JASON HIRSCHHORN: Præcis. 1586 01:14:34,650 --> 01:14:35,130 Aktion. 1587 01:14:35,130 --> 01:14:37,100 Så det har gjort til søgesiden. 1588 01:14:37,100 --> 01:14:38,630 Omvendt skråstreg søgning. 1589 01:14:38,630 --> 01:14:40,140 Så det er helt rigtigt. 1590 01:14:40,140 --> 01:14:40,680 Hvilken metode? 1591 01:14:40,680 --> 01:14:42,090 >> PUBLIKUM: Hent. 1592 01:14:42,090 --> 01:14:42,490 >> JASON HIRSCHHORN: Get. 1593 01:14:42,490 --> 01:14:43,420 Præcis. 1594 01:14:43,420 --> 01:14:44,490 Så vi læser dette. 1595 01:14:44,490 --> 01:14:45,180 Dette vil være en form. 1596 01:14:45,180 --> 01:14:45,910 Du er helt rigtigt. 1597 01:14:45,910 --> 01:14:50,340 To ting på formularen, titel side og toppen ville være Google. 1598 01:14:50,340 --> 01:14:54,270 >> Så her er to spørgsmål, du bør kunne besvare om denne side. 1599 01:14:54,270 --> 01:15:01,760 Hvis dette HTML bor på denne hjemmeside og indlæser brugeren bug i denne tekst 1600 01:15:01,760 --> 01:15:06,900 område lige her, hvad URL vil brugeren finde sig selv på 1601 01:15:06,900 --> 01:15:08,150 indsendelse af formularen? 1602 01:15:08,150 --> 01:15:10,980 1603 01:15:10,980 --> 01:15:12,510 >> Så vi har det lige her. 1604 01:15:12,510 --> 01:15:13,720 Jeg har tænkt mig at gå tilbage til denne side, selv om. 1605 01:15:13,720 --> 01:15:16,980 Jeg vil skrive op denne første del. 1606 01:15:16,980 --> 01:15:18,230 Kan alle se herovre? 1607 01:15:18,230 --> 01:15:30,620 1608 01:15:30,620 --> 01:15:32,906 OK, Mario, du tror, ​​du kender? 1609 01:15:32,906 --> 01:15:34,700 Hvilken side? 1610 01:15:34,700 --> 01:15:37,630 >> PUBLIKUM: Backslash søgning. 1611 01:15:37,630 --> 01:15:38,880 >> JASON HIRSCHHORN: Jeg har tænkt mig at flytte herned. 1612 01:15:38,880 --> 01:15:44,800 1613 01:15:44,800 --> 01:15:49,155 OK, backslash search spørgsmål mark q lig bug. 1614 01:15:49,155 --> 01:15:53,560 1615 01:15:53,560 --> 01:15:55,165 Nogen, der har en anderledes forslag? 1616 01:15:55,165 --> 01:15:57,910 1617 01:15:57,910 --> 01:15:59,160 Ja. 1618 01:15:59,160 --> 01:16:01,700 1619 01:16:01,700 --> 01:16:03,740 >> Så hvordan får vi det? 1620 01:16:03,740 --> 01:16:05,520 Tja, vi har set det før. 1621 01:16:05,520 --> 01:16:07,170 Og du kom op med dette tidligere. 1622 01:16:07,170 --> 01:16:08,870 Du havde ret, Noah, at de handling fortæller os, hvad 1623 01:16:08,870 --> 01:16:11,700 side vi vil. 1624 01:16:11,700 --> 01:16:12,820 >> Vi ved også, hvad metode. 1625 01:16:12,820 --> 01:16:13,420 Vi laver get. 1626 01:16:13,420 --> 01:16:17,040 Og forskellen mellem GET og POST er at få skærme i URL'en 1627 01:16:17,040 --> 01:16:18,490 og post ikke. 1628 01:16:18,490 --> 01:16:22,760 Så hvis jeg skrev indlæg lige der i metode, hvad ville være anderledes? 1629 01:16:22,760 --> 01:16:24,250 >> PUBLIKUM: Det ville bare være skråstreg søgning. 1630 01:16:24,250 --> 01:16:25,400 >> JASON HIRSCHHORN: Det ville bare være skråstreg søgning. 1631 01:16:25,400 --> 01:16:27,400 Intet over her ville ske. 1632 01:16:27,400 --> 01:16:30,030 Men fordi det er et får, URL vises på følgende måde. 1633 01:16:30,030 --> 01:16:35,140 Først ser vi et spørgsmålstegn og vi ser navnet og værdien. 1634 01:16:35,140 --> 01:16:42,730 Sige, at der var en anden tekst felt og Jeg gav det et navn på r og jeg indtaste en 1635 01:16:42,730 --> 01:16:45,220 værdi, larve. 1636 01:16:45,220 --> 01:16:48,560 Hvad ville det nu se ud? 1637 01:16:48,560 --> 01:16:52,040 Jeg har endnu et tekstfelt, jeg giver en navn af r og en værdi på larve. 1638 01:16:52,040 --> 01:16:56,990 >> PUBLIKUM: Efter bar du ville have -tegnet larve. 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 hvad den og symbol. 1641 01:17:00,500 --> 01:17:01,330 >> JASON HIRSCHHORN: Ja, nej. 1642 01:17:01,330 --> 01:17:03,700 Du havde ret, jeg var forkert. 1643 01:17:03,700 --> 01:17:05,660 Det er ligesom et 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 lig larve, undskyld. 1647 01:17:11,090 --> 01:17:13,970 1648 01:17:13,970 --> 01:17:14,700 >> JASON HIRSCHHORN: Er der R derinde? 1649 01:17:14,700 --> 01:17:16,680 >> PUBLIKUM: Nej, der er. 1650 01:17:16,680 --> 01:17:18,030 >> JASON HIRSCHHORN: Vi taler om, at efter klasse. 1651 01:17:18,030 --> 01:17:18,930 Det er helt rigtigt. 1652 01:17:18,930 --> 01:17:20,530 Så og er korrekt. 1653 01:17:20,530 --> 01:17:23,430 Og så kunne du have mange af disse, og de ville alle sammenkædes 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 rigtigt. 1656 01:17:25,900 --> 01:17:27,700 >> Der er endnu et spørgsmål. 1657 01:17:27,700 --> 01:17:30,676 Skitse denne HTML s DOM, startende med dokumentet. 1658 01:17:30,676 --> 01:17:33,330 1659 01:17:33,330 --> 01:17:34,570 Vi kunne gøre det i to minutter. 1660 01:17:34,570 --> 01:17:36,790 Vi vil gøre det herovre. 1661 01:17:36,790 --> 01:17:38,040 Jeg vil gå tilbage til denne webside. 1662 01:17:38,040 --> 01:17:40,630 1663 01:17:40,630 --> 01:17:42,160 OK, vi starter med dokumentet. 1664 01:17:42,160 --> 01:17:49,698 1665 01:17:49,698 --> 01:17:52,090 >> Hvad er det næste? 1666 01:17:52,090 --> 01:17:53,910 Så når du læser igennem - 1667 01:17:53,910 --> 01:17:54,540 >> PUBLIKUM: HTML. 1668 01:17:54,540 --> 01:17:55,790 >> JASON HIRSCHHORN: HTML er næste. 1669 01:17:55,790 --> 01:17:57,850 Vi kommer til at gå tag efter tag. 1670 01:17:57,850 --> 01:18:00,890 Hvad er efter 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 Hvad er efter hoved? 1675 01:18:08,520 --> 01:18:09,770 >> PUBLIKUM: Titel. 1676 01:18:09,770 --> 01:18:11,880 1677 01:18:11,880 --> 01:18:12,560 >> JASON HIRSCHHORN: Titel. 1678 01:18:12,560 --> 01:18:14,740 Og titel har en værdi af Google, men jeg har ikke tænkt mig at 1679 01:18:14,740 --> 01:18:16,240 skriver, at i for nu. 1680 01:18:16,240 --> 01:18:18,750 OK, hvor er krop hen? 1681 01:18:18,750 --> 01:18:20,890 >> PUBLIKUM: Også kommer ud af HTML. 1682 01:18:20,890 --> 01:18:21,490 >> JASON HIRSCHHORN: Præcis. 1683 01:18:21,490 --> 01:18:22,820 Krop kommer ud herfra. 1684 01:18:22,820 --> 01:18:25,970 1685 01:18:25,970 --> 01:18:30,330 Er alle se, hvorfor det er tilfældet? 1686 01:18:30,330 --> 01:18:32,970 Du skal sandsynligvis være i stand til at regne dette, også, selvom jeg ikke har 1687 01:18:32,970 --> 01:18:33,665 denne nice indrykning. 1688 01:18:33,665 --> 01:18:37,680 >> Indrykningen slags giver det væk, men du kan se, at hovedet tag har 1689 01:18:37,680 --> 01:18:41,240 blevet lukket, hvilket betyder, at vi sandsynligvis kan ikke gå ned her. 1690 01:18:41,240 --> 01:18:43,460 Vi er nødt til at gå tilbage til, hvad var lige før hovedet 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 hovedet tag. 1693 01:18:46,720 --> 01:18:48,560 >> Og under krop går formular. 1694 01:18:48,560 --> 01:18:50,300 Ifølge skemaet, der er to indgange. 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 har. 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å begejstret for jer. 1700 01:18:58,350 --> 01:18:59,690 Det kommer til at være en blast. 1701 01:18:59,690 --> 01:19:00,250 >> Hvis du har - 1702 01:19:00,250 --> 01:19:00,600 >> PUBLIKUM: [applaus] 1703 01:19:00,600 --> 01:19:02,460 >> JASON HIRSCHHORN: Åh stop, stop. 1704 01:19:02,460 --> 01:19:04,520 Men nej, jeg laver sjov. 1705 01:19:04,520 --> 01:19:07,220 Hvis du har spørgsmål, højre efter afsnit, vil jeg være udenfor. 1706 01:19:07,220 --> 01:19:11,700 Hvis du har spørgsmål i aften, velkommen til at ringe, e-Gchat, 1707 01:19:11,700 --> 01:19:12,740 brevdue mig. 1708 01:19:12,740 --> 01:19:13,950 Held og lykke i morgen. 1709 01:19:13,950 --> 01:19:16,220 Har en vidunderlig Thanksgiving break, hvis jeg ikke kan se dig inden da. 1710 01:19:16,220 --> 01:19:19,320 Og jeg vil se dig efter Thanksgiving tirsdag for vores endelige 1711 01:19:19,320 --> 01:19:20,295 sektion fest nogensinde. 1712 01:19:20,295 --> 01:19:21,545 >> PUBLIKUM: [uhørligt]. 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 vil se jer næste uge eller to uger. 1716 01:19:28,900 --> 01:19:30,150 Og held og lykke i morgen. 1717 01:19:30,150 --> 01:19:32,203