1 00:00:00,000 --> 00:00:08,090 2 00:00:08,090 --> 00:00:09,810 >> JASON Hirschhorn: Välkommen, alla, till vecka 10. 3 00:00:09,810 --> 00:00:15,130 Det här är en spännande vecka eftersom imorgon är Quiz 1, som vi kommer att få 4 00:00:15,130 --> 00:00:16,400 i en sekund. 5 00:00:16,400 --> 00:00:21,770 Idag i avsnitt kommer vi att gå över vissa resurser för frågesport och 6 00:00:21,770 --> 00:00:24,890 då kommer jag att svara på alla och alla frågor ni har. 7 00:00:24,890 --> 00:00:27,880 Och vi kommer äntligen slut med några övningsproblem. 8 00:00:27,880 --> 00:00:30,940 >> Vi kan tillbringa hela avsnittet svara på frågor. 9 00:00:30,940 --> 00:00:33,240 Vi kan tillbringa hela avsnittet gå över övningsproblem. 10 00:00:33,240 --> 00:00:36,890 Vi kommer bara att expandera för att fylla utrymme och tid har vi. 11 00:00:36,890 --> 00:00:40,590 >> Så jag satte denna lista upp varje vecka, men det är särskilt viktigt här veckan. 12 00:00:40,590 --> 00:00:44,980 För att studera, om du inte började redan, oh boy. 13 00:00:44,980 --> 00:00:46,400 Men förhoppningsvis har du redan börjat. 14 00:00:46,400 --> 00:00:50,710 Och du går igenom det material och resurser som anges här. 15 00:00:50,710 --> 00:00:54,300 Jag skulle starkt rekommendera ett antal av dessa. 16 00:00:54,300 --> 00:00:58,780 >> Särskilt föreläsningsanteckningar är oerhört viktig och hjälpsam. 17 00:00:58,780 --> 00:01:02,880 Den study.cs50.net erbjuder en bra primer på en hel del 18 00:01:02,880 --> 00:01:04,250 de ämnen som vi täckte. 19 00:01:04,250 --> 00:01:07,810 Det har också några bra öva problem. 20 00:01:07,810 --> 00:01:11,260 Och sedan, är Google stor, också. 21 00:01:11,260 --> 00:01:12,360 Jag vet inte vad du skulle använda den till. 22 00:01:12,360 --> 00:01:14,090 Men använder Google, liksom. 23 00:01:14,090 --> 00:01:16,680 >> Nå ut till mig om du har några frågor, kommentarer eller funderingar. 24 00:01:16,680 --> 00:01:19,420 Titta över översyn session bilder från igår kväll. 25 00:01:19,420 --> 00:01:21,540 Eller, om du har tid, titta på videon. 26 00:01:21,540 --> 00:01:24,930 De ger en mycket bra material och information. 27 00:01:24,930 --> 00:01:29,730 Och försöka täcka om inte alla, många av de ämnen som vi har täckt och att du 28 00:01:29,730 --> 00:01:32,610 skulle kunna se på frågesporten. 29 00:01:32,610 --> 00:01:35,590 >> På tal om testet, att kommer att vara i morgon. 30 00:01:35,590 --> 00:01:37,260 Det är 75 minuter lång. 31 00:01:37,260 --> 00:01:40,740 Många av er tar det på 1 klockan, och en del av er är 32 00:01:40,740 --> 00:01:42,740 ta det på 5:30. 33 00:01:42,740 --> 00:01:45,300 För den tid du tar den och den plats du tar det, se till att 34 00:01:45,300 --> 00:01:49,400 du kolla in dokumentet på CS50.net hemsida. 35 00:01:49,400 --> 00:01:54,340 >> Kom ihåg att du kan få en 8 1/2 med 11 ark för att ta med dig. 36 00:01:54,340 --> 00:01:57,310 Ofta behöver man inte använda det här ark alls under testet. 37 00:01:57,310 --> 00:01:59,740 Men egentligen är det en otroligt hjälpsam studieverktyg. 38 00:01:59,740 --> 00:02:04,370 Så att sätta ihop detta blad är det som Jag tillbringade förmodligen tre eller fyra timmar 39 00:02:04,370 --> 00:02:07,110 gör när jag studerade för CS50, och det var lätt den mest användbara 40 00:02:07,110 --> 00:02:08,740 sätt jag kunde studera för testet. 41 00:02:08,740 --> 00:02:10,949 Så även om du har några andras studieguider för att titta på och 42 00:02:10,949 --> 00:02:14,740 använda som referenser, rekommenderar jag starkt göra din egen studiehandledning, sätta 43 00:02:14,740 --> 00:02:15,490 det där tillsammans. 44 00:02:15,490 --> 00:02:17,335 Det hjälper verkligen att du lär dig allt material. 45 00:02:17,335 --> 00:02:20,270 46 00:02:20,270 --> 00:02:24,810 >> Sist men inte minst i detta avsnitt, Efter frågesporten i morgon finns det en 47 00:02:24,810 --> 00:02:25,940 mer lecture - 48 00:02:25,940 --> 00:02:26,960 nästa måndag. 49 00:02:26,960 --> 00:02:30,430 Det finns ytterligare en del, inte nästa Tisdag före Thanksgiving, men den 50 00:02:30,430 --> 00:02:31,630 Tisdag efter det. 51 00:02:31,630 --> 00:02:36,600 Vi kommer att träffa varandra för en sista goodbye party och även göra några häftiga 52 00:02:36,600 --> 00:02:41,530 saker för att få ni glada om fortsatta studier i datavetenskap. 53 00:02:41,530 --> 00:02:45,040 >> Det finns ytterligare ett projekt, en mer rättvisa, ytterligare en hackathon. 54 00:02:45,040 --> 00:02:47,900 Vi närmar oss slutet på CS50, vilket är spännande - 55 00:02:47,900 --> 00:02:50,950 men också, om du är som mig, lite sorgligt. 56 00:02:50,950 --> 00:02:53,950 Innan jag går vidare, är det någon som har några frågor om vad 57 00:02:53,950 --> 00:02:55,200 vi har täckt hittills? 58 00:02:55,200 --> 00:03:02,760 59 00:03:02,760 --> 00:03:08,730 >> OK, bra låt oss gå igenom några frågor att du har för frågesport och ämnen 60 00:03:08,730 --> 00:03:09,960 vi kan täcka. 61 00:03:09,960 --> 00:03:11,540 Så det här är en lista som jag satt ihop. 62 00:03:11,540 --> 00:03:15,500 Det är på intet sätt uttömmande, utan förhoppningsvis kommer att friska upp minnet om du 63 00:03:15,500 --> 00:03:20,310 har några frågor om någon av dessa ämnen, eller om du har frågor om 64 00:03:20,310 --> 00:03:23,260 övningsproblem från frågesporter i år tidigare. 65 00:03:23,260 --> 00:03:27,470 >> Jag hade ett par frågor som var mailade till mig, men jag vill avvakta 66 00:03:27,470 --> 00:03:29,490 om de för en sekund. 67 00:03:29,490 --> 00:03:34,570 Är det någon som har några frågor, problem som de inte förstod, 68 00:03:34,570 --> 00:03:38,100 svar som de inte förstod att komma igång? 69 00:03:38,100 --> 00:03:39,520 Avi. 70 00:03:39,520 --> 00:03:41,585 >> PUBLIK: Kan du bara gå över DOM och Ajax riktigt snabbt? 71 00:03:41,585 --> 00:03:46,540 Liksom, vad vi behöver veta eller borde förstår om dem? 72 00:03:46,540 --> 00:03:49,750 >> JASON Hirschhorn: Jag kommer att svara på allmänhet frågan om, vad gör jag 73 00:03:49,750 --> 00:03:52,100 behöver veta om givet ämne x? 74 00:03:52,100 --> 00:03:55,280 Eftersom jag har en känsla av att många av er kommer att fråga mig det, eller är 75 00:03:55,280 --> 00:03:56,570 nyfiken på det. 76 00:03:56,570 --> 00:04:02,920 Så till den grad att ämnet var täckt av föreläsning, eller sektion, eller på 77 00:04:02,920 --> 00:04:06,460 study.cs50.net, ett problem set, du bör känna till det. 78 00:04:06,460 --> 00:04:10,580 >> Så du behöver inte veta alla typer av tagg som är tillgängliga i HTML eller 79 00:04:10,580 --> 00:04:15,950 varje typ av attribut eller egendom du kan ge något i CSS. 80 00:04:15,950 --> 00:04:20,204 Men om du såg den i en föreläsning exempel om du såg den i ett problem 81 00:04:20,204 --> 00:04:23,290 set, bör du nog känna med det, särskilt saker du såg 82 00:04:23,290 --> 00:04:24,260 på föreläsning. 83 00:04:24,260 --> 00:04:28,510 Så vi diskuterade dokumentet objektmodell lite i 84 00:04:28,510 --> 00:04:30,530 avsnitt, mer så i föreläsning. 85 00:04:30,530 --> 00:04:32,990 Du bör vara bekant med så mycket av det. 86 00:04:32,990 --> 00:04:34,750 >> Och du bör känna till Ajax i samma utsträckning. 87 00:04:34,750 --> 00:04:38,105 Vi såg aldrig oerhört avancerad eller komplicerade exempel på Ajax, så 88 00:04:38,105 --> 00:04:40,920 du kommer inte att bli ombedd att göra något oerhört komplicerat. 89 00:04:40,920 --> 00:04:45,180 Men du kan bli ombedd, hur gör jag göra ett Ajax samtal med jQuery? 90 00:04:45,180 --> 00:04:47,350 Vilket är något som du har sett ett antal gånger innan, både i 91 00:04:47,350 --> 00:04:51,370 granska session och i föredrag, och det är bara två-ish rader kod. 92 00:04:51,370 --> 00:04:53,190 >> Så det är något som du bör känna till. 93 00:04:53,190 --> 00:04:55,550 Men återigen, för alla dessa frågor, om du har sett det 94 00:04:55,550 --> 00:04:59,220 innan, är det rättvist spel. 95 00:04:59,220 --> 00:05:01,540 Och vi kan fråga dig - självklart, vi är kommer att fråga dig saker du 96 00:05:01,540 --> 00:05:02,340 inte har sett förut. 97 00:05:02,340 --> 00:05:04,240 Kodning något du har inte sett förut. 98 00:05:04,240 --> 00:05:06,570 Vilket inte är att säga att du har inte sett verktyg för att lösa 99 00:05:06,570 --> 00:05:08,120 detta problem tidigare. 100 00:05:08,120 --> 00:05:09,200 Du har sett dessa verktyg. 101 00:05:09,200 --> 00:05:11,160 >> Till exempel, på quiz 1, om du behöver för att koda strlen. 102 00:05:11,160 --> 00:05:12,790 Vi har inte kodat strlen innan. 103 00:05:12,790 --> 00:05:14,980 Men du vet hur man använder en for-loop, du vet hur man använder, om förhållanden. 104 00:05:14,980 --> 00:05:18,570 Du vet hur man skriver variabler i C. Det kommer att bli samma sak här. 105 00:05:18,570 --> 00:05:22,350 Du kommer inte att bli ombedd att göra något du inte har sett förut, men 106 00:05:22,350 --> 00:05:25,150 du kan bli ombedd att, liksom, sätta något tillsammans på ett nytt sätt, eller 107 00:05:25,150 --> 00:05:27,650 lösa en annan typ av problem. 108 00:05:27,650 --> 00:05:30,830 >> Förlåt, det var inte specifik för din fråga, men jag kan inte svara på om 109 00:05:30,830 --> 00:05:34,390 varje ämne vad du göra eller inte behöver veta. 110 00:05:34,390 --> 00:05:36,830 Men också, tyvärr, sista på det. 111 00:05:36,830 --> 00:05:42,900 Vi har spenderat betydligt mer tid på länklistor än vad vi har på Ajax. 112 00:05:42,900 --> 00:05:46,160 Du använde inte Ajax i ett problem set. 113 00:05:46,160 --> 00:05:48,510 Ett av de centrala inslagen i det Problemet satt det var länklistor. 114 00:05:48,510 --> 00:05:50,370 Och vi tillbringade mycket tid i föreläsning och avsnitt använder den. 115 00:05:50,370 --> 00:05:57,080 >> Så oddsen är länklista kommer att komma upp mer ofta på frågesport än Ajax vilja. 116 00:05:57,080 --> 00:06:00,390 Eller de frågor som har att göra med länk Listan kommer att vara värt mer poäng. 117 00:06:00,390 --> 00:06:03,520 Så kan du verkligen fokusera och smal in på saker som är mer 118 00:06:03,520 --> 00:06:06,720 sannolikt att komma upp eftersom vi har spenderade mer tid på dem. 119 00:06:06,720 --> 00:06:08,700 >> OK några andra frågor? 120 00:06:08,700 --> 00:06:09,890 Yeah. 121 00:06:09,890 --> 00:06:13,660 >> PUBLIK: Kan vi gå över användningen av anonyma funktioner i JavaScript? 122 00:06:13,660 --> 00:06:17,140 Jag är en är lite förvirrad om det. 123 00:06:17,140 --> 00:06:20,180 >> JASON Hirschhorn: Så i JavaScript - 124 00:06:20,180 --> 00:06:24,400 Jag försöker tänka på hur jag skulle kunna skriva detta på - 125 00:06:24,400 --> 00:06:27,590 så låt oss faktiskt öppna upp denna kod. 126 00:06:27,590 --> 00:06:31,830 127 00:06:31,830 --> 00:06:36,030 Så detta är kod som vi gjorde förra veckan. 128 00:06:36,030 --> 00:06:41,400 Och du har sett det här förut, om du var här i avsnitt förra veckan. 129 00:06:41,400 --> 00:06:43,180 Eller du har sett något liknar detta tidigare. 130 00:06:43,180 --> 00:06:44,800 >> Men du kan titta på detta första raden. 131 00:06:44,800 --> 00:06:46,950 Detta är hur du börjar - 132 00:06:46,950 --> 00:06:48,010 alla har sett det här förut. 133 00:06:48,010 --> 00:06:51,930 Om du vill lägga lite JavaScript-kod, du lägga den inuti denna, förutsatt 134 00:06:51,930 --> 00:06:53,520 du använder jQuery. 135 00:06:53,520 --> 00:06:56,940 Detta säger, gör ingenting tills dokumentet är laddad. 136 00:06:56,940 --> 00:06:59,940 >> Och sedan, Curt, ser du här vi gör något sånt här - 137 00:06:59,940 --> 00:07:02,560 funktions öppna föräldra, stängd paren. 138 00:07:02,560 --> 00:07:05,250 Så vi ger det här fungera ett namn. 139 00:07:05,250 --> 00:07:09,160 Vi kommer inte att definiera denna funktion är tänkt att köra och sedan 140 00:07:09,160 --> 00:07:10,830 kalla det ett gäng gånger. 141 00:07:10,830 --> 00:07:15,140 Vi säger bara detta dokument redan tar en funktion. 142 00:07:15,140 --> 00:07:16,690 Ett par saker att göra. 143 00:07:16,690 --> 00:07:20,670 >> Och vi vill inte att spendera tid ge den ett namn eller spara den för 144 00:07:20,670 --> 00:07:21,650 evighet. 145 00:07:21,650 --> 00:07:24,150 Vi vill bara att köra vissa saker. 146 00:07:24,150 --> 00:07:27,500 Så en anonym funktion sorterar av tjänar detta syfte. 147 00:07:27,500 --> 00:07:30,280 När du inte ska använda något om och om igen, så att du inte behöver 148 00:07:30,280 --> 00:07:32,420 för att ge den ett namn - som du just vill använda den en gång - 149 00:07:32,420 --> 00:07:36,720 du skulle bara säga funktion, för Exempelvis, i det här fallet, och du är bara 150 00:07:36,720 --> 00:07:38,280 definierar något som kan du ge ett namn. 151 00:07:38,280 --> 00:07:40,920 >> Liksom, vi kunde dra denna funktion ut och ge den ett namn och sedan kalla det 152 00:07:40,920 --> 00:07:41,760 fungera här. 153 00:07:41,760 --> 00:07:44,270 Men vi behöver inte, eftersom vi inte vill slösa tid att ge den ett namn eller 154 00:07:44,270 --> 00:07:46,240 slösa något i vårt namn rymden. 155 00:07:46,240 --> 00:07:47,530 Och du ser att en hel del. 156 00:07:47,530 --> 00:07:52,810 Till exempel ser vi att en hel del i detta kod, men du har sett det här förut när 157 00:07:52,810 --> 00:07:54,010 du klickar på något - 158 00:07:54,010 --> 00:07:55,980 köra denna typ av kod. 159 00:07:55,980 --> 00:07:59,850 >> Vi skulle kunna definiera den kod som vi vill att köra när vi klickar på, i det här fallet, 160 00:07:59,850 --> 00:08:03,450 denna ID, som en separat funktion och sedan köra den funktionen. 161 00:08:03,450 --> 00:08:07,940 Men i det här fallet, vi bara hoppa det steget och flytta det till här och 162 00:08:07,940 --> 00:08:10,340 bara för att definiera allt som vi vill ska hända och 163 00:08:10,340 --> 00:08:12,450 inte ge den ett namn. 164 00:08:12,450 --> 00:08:15,550 Som fortfarande kan inte ha svarat på din fråga. 165 00:08:15,550 --> 00:08:15,960 >> PUBLIK: Nej, det gör det. 166 00:08:15,960 --> 00:08:18,290 Jag menar, jag antar att jag bara inte riktigt få varför det skulle vara en 167 00:08:18,290 --> 00:08:20,800 fungerar alls, dock. 168 00:08:20,800 --> 00:08:21,590 Därför att det är inte riktigt att kallas. 169 00:08:21,590 --> 00:08:23,170 Det har egentligen inte ett namn. 170 00:08:23,170 --> 00:08:25,510 >> JASON Hirschhorn: Det är en funktion i meningen att det är en serie av steg, 171 00:08:25,510 --> 00:08:28,460 som om du skulle sätta in en funktion. 172 00:08:28,460 --> 00:08:29,970 Och så det är därför vi kallar det anonym funktion. 173 00:08:29,970 --> 00:08:30,815 Vi kommer inte att ge den ett namn. 174 00:08:30,815 --> 00:08:33,159 Vi ska inte slösa försöka för att nämna det, men vi kunde. 175 00:08:33,159 --> 00:08:34,890 >> Anonyma funktioner du kan alltid ge ett namn. 176 00:08:34,890 --> 00:08:37,620 Så till exempel, den här koden här, vi kunde sätta denna kod i en 177 00:08:37,620 --> 00:08:39,929 funktion och sedan ringa denna funktion här. 178 00:08:39,929 --> 00:08:41,600 I stället säger vi, vi kommer inte att bry sig om det. 179 00:08:41,600 --> 00:08:44,390 Vi ska bara skriva det bra här. 180 00:08:44,390 --> 00:08:49,840 >> Det är som att ibland när du skriver en fyra slinga i C - ni 181 00:08:49,840 --> 00:08:51,630 har sett det här förut - kanske du är iterera genom ett forloop 182 00:08:51,630 --> 00:08:53,090 in i är lika med 0. 183 00:08:53,090 --> 00:08:54,830 Jag är mindre än strlen. 184 00:08:54,830 --> 00:08:59,520 Eller du går igenom några array, kan du spara array 185 00:08:59,520 --> 00:09:01,580 index i någon variabel. 186 00:09:01,580 --> 00:09:02,830 Och du använder den variabeln. 187 00:09:02,830 --> 00:09:06,550 Så du behöver inte skriva array fäste jag om och om och om igen. 188 00:09:06,550 --> 00:09:08,160 >> Och det är ungefär som en dummyvariabel. 189 00:09:08,160 --> 00:09:10,790 Det är inte serverar annat än mycket ändamål för att göra din kod lite renare 190 00:09:10,790 --> 00:09:12,120 och lättare att läsa. 191 00:09:12,120 --> 00:09:13,290 Liknande funktion här. 192 00:09:13,290 --> 00:09:15,665 Bara gör det lite lättare, men funktionellt är det ingen skillnad. 193 00:09:15,665 --> 00:09:18,620 194 00:09:18,620 --> 00:09:19,330 Besvarar det din fråga? 195 00:09:19,330 --> 00:09:19,970 >> PUBLIK: 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 >> PUBLIK: I går de ofta sätter funktion parenteser händelse. 199 00:09:25,380 --> 00:09:26,420 Betyder det något? 200 00:09:26,420 --> 00:09:30,500 Eller är det för saker som att de skulle göra 201 00:09:30,500 --> 00:09:35,100 document.ready funktion händelse. 202 00:09:35,100 --> 00:09:37,130 >> JASON Hirschhorn: Vi har sett detta, och igen, det är mindre saker som 203 00:09:37,130 --> 00:09:39,590 förmodligen jag inte vill spenderar för mycket tid på. 204 00:09:39,590 --> 00:09:43,200 Därför att jag ibland inte vill att folk få utflippad att de inte 205 00:09:43,200 --> 00:09:44,220 hört talas om dessa saker så mycket. 206 00:09:44,220 --> 00:09:46,200 Men vi pratade lite om händelsehanterare. 207 00:09:46,200 --> 00:09:50,360 Så händer något, och sedan denna funktion utförs. 208 00:09:50,360 --> 00:09:53,210 Och sedan vill vi också veta några detaljer om vad 209 00:09:53,210 --> 00:09:54,450 hände i denna händelse. 210 00:09:54,450 --> 00:09:55,730 >> Så tänker tillbaka på problem set 4. 211 00:09:55,730 --> 00:09:58,390 Det är förmodligen det enklaste sättet att förstå att bryta ut. 212 00:09:58,390 --> 00:09:59,740 Det fanns lite kod - 213 00:09:59,740 --> 00:10:01,980 som en händelse skulle inträffa, men händelse kan betyda många saker. 214 00:10:01,980 --> 00:10:06,240 Om kan betyda musen klickas, den kan innebära att du träffa en piltangent, et 215 00:10:06,240 --> 00:10:07,190 cetera, et cetera. 216 00:10:07,190 --> 00:10:09,800 >> Men det är allt sparas i denna generiska som kallas händelser. 217 00:10:09,800 --> 00:10:12,340 Och då kan vi säga, är denna händelse denna sak? 218 00:10:12,340 --> 00:10:13,640 Eller är denna händelse den här saken? 219 00:10:13,640 --> 00:10:15,500 Eller, vad för slags hände med denna händelse? 220 00:10:15,500 --> 00:10:18,660 Så det är därför du skapar den variabeln där för att spara den extra information 221 00:10:18,660 --> 00:10:21,420 om exakt vad som hände den du kommer att vilja 222 00:10:21,420 --> 00:10:24,840 utnyttja i funktionen. 223 00:10:24,840 --> 00:10:28,200 Men återigen, det är förmodligen en av de mindre viktiga saker att vara super 224 00:10:28,200 --> 00:10:29,450 bekant med. 225 00:10:29,450 --> 00:10:31,470 226 00:10:31,470 --> 00:10:36,110 >> OK, vilka andra frågor har människor hade, eller stötestenar som de har 227 00:10:36,110 --> 00:10:37,360 uppstod vid granskning? 228 00:10:37,360 --> 00:10:41,260 229 00:10:41,260 --> 00:10:42,510 Vi kommer tillbaka till den listan. 230 00:10:42,510 --> 00:10:52,550 231 00:10:52,550 --> 00:10:56,080 Hur är det under praktiska frågor, om människor har redan tagit dem? 232 00:10:56,080 --> 00:10:59,110 Vad fanns vissa problem som snubblade ni upp? 233 00:10:59,110 --> 00:11:08,970 234 00:11:08,970 --> 00:11:12,720 Jag vet för ett faktum att förra årets frågesport var verkligen svårt. 235 00:11:12,720 --> 00:11:15,670 >> PUBLIK: Kan du förklara vad en SQL-injektion attack är? 236 00:11:15,670 --> 00:11:18,970 >> JASON Hirschhorn: OK, bra. 237 00:11:18,970 --> 00:11:20,440 Så vi pratade om det här lite. 238 00:11:20,440 --> 00:11:22,050 Det finns en föreläsning om säkerhet. 239 00:11:22,050 --> 00:11:25,670 Och återigen, som jag nämnde tidigare, detta är en åt sidan. 240 00:11:25,670 --> 00:11:30,010 Men du kommer att bli frustrerad på frågesport när du läser någon liten två poäng 241 00:11:30,010 --> 00:11:33,040 fråga, och du är som, när har jag någonsin lärt dig det? 242 00:11:33,040 --> 00:11:35,560 >> Alla dessa saker i dessa föreläsningar att du inte trodde att du behövde 243 00:11:35,560 --> 00:11:38,290 vet, eller du kan släta över eftersom de hade inte att göra med 244 00:11:38,290 --> 00:11:41,860 Problemet set, de kommer sannolikt komma upp igen på frågesport. 245 00:11:41,860 --> 00:11:45,030 Så, coola, roliga saker som du bara tänkte David berättade för dig att 246 00:11:45,030 --> 00:11:49,070 njuta, han berätta för dig att njuta och att du bara vara super 247 00:11:49,070 --> 00:11:50,550 entusiastiska över att lära sig allt det är att lära sig 248 00:11:50,550 --> 00:11:51,670 om datavetenskap. 249 00:11:51,670 --> 00:11:53,680 Dessa saker kommer också upp på frågesporter. 250 00:11:53,680 --> 00:11:56,440 Så, även dessa små saker som inte gjorde direkt relatera till ditt problem 251 00:11:56,440 --> 00:11:59,630 ställa, eftersom ni känner till från Quiz 0, antagligen kommer att komma upp. 252 00:11:59,630 --> 00:12:01,530 Och det här är ett bra exempel av något. 253 00:12:01,530 --> 00:12:10,140 >> Så en SQL-injektion attacker är när du få lite information från användaren och 254 00:12:10,140 --> 00:12:15,090 du vill infoga den i en tabell med en SQL INSERT-sats, men du 255 00:12:15,090 --> 00:12:17,680 inte sanera inmatning förväg. 256 00:12:17,680 --> 00:12:21,560 Så, självklart har vi sett SQL-satser. 257 00:12:21,560 --> 00:12:22,810 Jag ska bara öppna - 258 00:12:22,810 --> 00:12:25,590 259 00:12:25,590 --> 00:12:26,840 kom igen - 260 00:12:26,840 --> 00:12:31,290 261 00:12:31,290 --> 00:12:31,960 går vi till översynen - 262 00:12:31,960 --> 00:12:35,180 Jag tror, ​​som täckte det? 263 00:12:35,180 --> 00:12:36,350 Jag 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 >> PUBLIK: Var hittade du den här? 266 00:12:41,270 --> 00:12:44,990 >> JASON Hirschhorn: Så om du går till CS50.net, frågesporter, och då kan 267 00:12:44,990 --> 00:12:47,170 rulla över och få diabilder från överläggningarna. 268 00:12:47,170 --> 00:12:49,860 Men du kan se det här är ett bra exempel av en SQL-injektion attack. 269 00:12:49,860 --> 00:12:53,690 Vi tar en del information från användaren och de ger oss en sträng, och sedan vi 270 00:12:53,690 --> 00:12:55,780 vill infoga den strängen i en databas. 271 00:12:55,780 --> 00:12:59,780 Generellt kommer vi att sanera det inmatning, vilket innebär att det inte finns några 272 00:12:59,780 --> 00:13:01,050 tecken som är farliga. 273 00:13:01,050 --> 00:13:04,000 >> Till exempel i SQL-strängar, dessa citat - 274 00:13:04,000 --> 00:13:05,000 apostrof eller citationstecken - 275 00:13:05,000 --> 00:13:05,620 betyda något. 276 00:13:05,620 --> 00:13:08,380 De menar avsluta denna sträng här. 277 00:13:08,380 --> 00:13:13,090 Och så om användaren ger dig en enda eller en dubbel citationstecken, kan de vara 278 00:13:13,090 --> 00:13:18,970 försöker resa upp din SQL-fråga och sätt in en del dåliga saker i den. 279 00:13:18,970 --> 00:13:23,130 Och om de gör det, kan de vinna kontroll av din databas eller göra något 280 00:13:23,130 --> 00:13:24,760 saker som du inte vill att de ska göra. 281 00:13:24,760 --> 00:13:28,300 >> Så det är därför när vi tar SQL frågor, sanera vi ingången innan 282 00:13:28,300 --> 00:13:31,090 sätta in den i databasen, vilket innebär att vi undkomma dessa tecken. 283 00:13:31,090 --> 00:13:32,590 Vi kommer att prata om det i en sekund. 284 00:13:32,590 --> 00:13:35,820 Men lång historia kort, en SQL-injektion attack är om du inte gör det - 285 00:13:35,820 --> 00:13:39,760 om du inte tar hand om den ingående de gav dig innan du lägger din 286 00:13:39,760 --> 00:13:46,830 databas, kan de, som du ser ner här, kör en fråga som, faktiskt - 287 00:13:46,830 --> 00:13:52,470 de sätter in sin kod här nere och detta väljer linje här nere kommer att välja 288 00:13:52,470 --> 00:13:56,360 allt från bordet, oavsett om vad lösenordet ges. 289 00:13:56,360 --> 00:13:58,960 Eftersom du har den eller 1 är lika med 1. 290 00:13:58,960 --> 00:14:02,750 >> Så det är i grund och botten, lång historia kort, ett sätt att ta över databasen. 291 00:14:02,750 --> 00:14:07,570 Frågan är då, för er, är var i p set 7 gjorde du desinficera alla 292 00:14:07,570 --> 00:14:10,010 ingångarna på dina SQL-frågor? 293 00:14:10,010 --> 00:14:11,230 Vart tog det steget hända? 294 00:14:11,230 --> 00:14:14,150 Var tror du förhindra SQL-injektion attacker från att hända i p set 7? 295 00:14:14,150 --> 00:14:20,100 296 00:14:20,100 --> 00:14:20,490 Yeah. 297 00:14:20,490 --> 00:14:21,870 >> PUBLIK: Crypt? 298 00:14:21,870 --> 00:14:23,120 >> JASON Hirschhorn: Så det var inte krypta. 299 00:14:23,120 --> 00:14:52,360 300 00:14:52,360 --> 00:14:55,380 Vi gjorde inte du gör detta för detta särskilt problem ställa, men det händer 301 00:14:55,380 --> 00:14:58,190 i frågefunktionen. 302 00:14:58,190 --> 00:15:00,930 Vi skrev faktiskt det åt dig, och vi tog hand om 303 00:15:00,930 --> 00:15:03,040 desinficerande ingångar för dig. 304 00:15:03,040 --> 00:15:07,790 Men i år tidigare, har eleverna haft att skriva ingångarna på egen hand. 305 00:15:07,790 --> 00:15:10,020 I p set 7, en hel del av er - 306 00:15:10,020 --> 00:15:11,270 låt mig öppna upp en annan fil. 307 00:15:11,270 --> 00:15:18,530 308 00:15:18,530 --> 00:15:22,590 >> Så du kommer att märka dig här en hel del människor, i problem set 7, inte ringa 309 00:15:22,590 --> 00:15:25,240 denna funktion på strängar. 310 00:15:25,240 --> 00:15:27,880 Denna funktion, htmlspecialchars, igen - 311 00:15:27,880 --> 00:15:31,410 denna sträng kan ha vissa saker som i HTML betyda något annat. 312 00:15:31,410 --> 00:15:36,160 Som ett stag, en kvadrat eller en vinkel fäste betyda något i HTML. 313 00:15:36,160 --> 00:15:38,980 >> Och så om du skriver ut det till skärmen eller om du bara ta det och 314 00:15:38,980 --> 00:15:42,260 skriva ut det till din HTML, som kan gör något du inte förväntar dig. 315 00:15:42,260 --> 00:15:45,180 Så htmlspecialchars går över alla de tecken som har speciell 316 00:15:45,180 --> 00:15:47,030 möte och undgår dem. 317 00:15:47,030 --> 00:15:51,450 Så det blir utskriven som texten man vill se, i stället för 318 00:15:51,450 --> 00:15:53,280 skruva upp din HTML. 319 00:15:53,280 --> 00:15:55,040 Vi kallade den funktionen i rubriken. 320 00:15:55,040 --> 00:15:57,390 Och många människor har glömt att ring som funktion i 321 00:15:57,390 --> 00:15:58,700 kod du skrev. 322 00:15:58,700 --> 00:16:03,970 >> Så, till exempel, hade om ett aktienamn ett vinkelfäste i den och du har glömt 323 00:16:03,970 --> 00:16:06,675 att kalla denna funktion, den vinkeln fäste kunde ha kastat av vad 324 00:16:06,675 --> 00:16:08,250 HTML såg ut. 325 00:16:08,250 --> 00:16:11,810 Men att kalla denna funktion kommer undan att så det faktiskt skrivs ut som en 326 00:16:11,810 --> 00:16:15,870 vinkelfäste och inte kasta av din HTML-kod. 327 00:16:15,870 --> 00:16:18,760 >> Av samma anledning som vi har sett, ibland, snedstreck före citattecken i en 328 00:16:18,760 --> 00:16:22,310 printf linje eftersom vi inte vill att citationstecken ner på strängen. 329 00:16:22,310 --> 00:16:24,050 Vi vill skriva ut dem ut till skärmen. 330 00:16:24,050 --> 00:16:26,920 Så allt detta är samma idé. 331 00:16:26,920 --> 00:16:28,260 Besvarar det din fråga? 332 00:16:28,260 --> 00:16:31,529 333 00:16:31,529 --> 00:16:33,870 >> PUBLIK: Kind of. 334 00:16:33,870 --> 00:16:35,300 >> JASON Hirschhorn: Har du har en uppföljning? 335 00:16:35,300 --> 00:16:43,252 >> PUBLIK: Jag antar att SQL-injektion attack har att göra med det? 336 00:16:43,252 --> 00:16:45,720 Jag förstår inte hur de två är relaterade. 337 00:16:45,720 --> 00:16:47,610 Varför skulle du göra det specialchars? 338 00:16:47,610 --> 00:16:51,200 >> JASON Hirschhorn: OK, så SQL injektion attack är när du injicerar 339 00:16:51,200 --> 00:16:59,180 några skadliga strängar i någons program, och de bara ta den och köra 340 00:16:59,180 --> 00:17:01,230 SQL-frågan med en sträng du gav dem. 341 00:17:01,230 --> 00:17:04,220 Som ni kan se här nere, att skulle kunna vara problematiskt. 342 00:17:04,220 --> 00:17:07,480 Så hur du förebygga mot det är du tar deras sträng som de ger 343 00:17:07,480 --> 00:17:09,220 du - så här sträng här - 344 00:17:09,220 --> 00:17:11,240 och du sanera det. 345 00:17:11,240 --> 00:17:14,305 Du fly alla de saker som är potentiellt problematiska. 346 00:17:14,305 --> 00:17:18,626 Så du behöver inte tolka dem som något som betyder något. 347 00:17:18,626 --> 00:17:23,390 >> Och ett exempel på det med HTML är denna funktion. 348 00:17:23,390 --> 00:17:26,060 Så det är samma idé här. 349 00:17:26,060 --> 00:17:27,579 Och jag bara visa er andra exempel på när du har 350 00:17:27,579 --> 00:17:29,030 sett den här idén tidigare. 351 00:17:29,030 --> 00:17:33,913 Att fly användarens input före utskrift ut den till en skärm eller tar den 352 00:17:33,913 --> 00:17:36,782 inne i en SQL-sats. 353 00:17:36,782 --> 00:17:40,790 >> Publik: Så i detta fall, kan användaren är jävlas med programmeraren. 354 00:17:40,790 --> 00:17:41,240 >> JASON Hirschhorn: Ja. 355 00:17:41,240 --> 00:17:44,800 Med alla dessa säkerhetsattacker, det är alltid generellt användaren, eller 356 00:17:44,800 --> 00:17:47,470 någon, försöker röra med dig, programmeraren. 357 00:17:47,470 --> 00:17:51,038 Och dessa finns sätt du kan förebygga mot dem. 358 00:17:51,038 --> 00:17:54,280 >> PUBLIK: Så jag har en fråga om hashfunktioner. 359 00:17:54,280 --> 00:17:59,340 I Quiz 1 från 2011, finns det två frågor om ensidiga hashar. 360 00:17:59,340 --> 00:18:02,540 Och jag undrar bara vad det innebar. 361 00:18:02,540 --> 00:18:03,660 >> JASON Hirschhorn: OK, vilken frågesport? 362 00:18:03,660 --> 00:18:03,770 2011? 363 00:18:03,770 --> 00:18:04,705 >> PUBLIK: Ja. 364 00:18:04,705 --> 00:18:06,720 >> PUBLIK: Quiz 1? 365 00:18:06,720 --> 00:18:08,620 >> PUBLIK: [OHÖRBAR]. 366 00:18:08,620 --> 00:18:09,940 Det är som att hashing ett lösenord. 367 00:18:09,940 --> 00:18:12,220 Det är inte att sätta saker och ting - 368 00:18:12,220 --> 00:18:13,440 >> JASON Hirschhorn: Vilken sida var det? 369 00:18:13,440 --> 00:18:15,720 >> PUBLIK: Jag tror det var 9 eller 10, eller båda. 370 00:18:15,720 --> 00:18:16,720 >> JASON Hirschhorn: Okej, gå vidare, Curt. 371 00:18:16,720 --> 00:18:17,780 Du kan svara på när vi ser. 372 00:18:17,780 --> 00:18:19,540 >> PUBLIK: Jag tror det talar om hashing ett lösenord. 373 00:18:19,540 --> 00:18:24,430 Liksom, när någon kommer in ett lösenord, du förvandla den till en krypterad sak. 374 00:18:24,430 --> 00:18:27,395 Det är det lösenord hash, vilket är skiljer sig från en hash-funktion som 375 00:18:27,395 --> 00:18:30,900 sätter något i en hashtabell. 376 00:18:30,900 --> 00:18:31,610 >> JASON Hirschhorn: Låt oss se. 377 00:18:31,610 --> 00:18:33,930 Låt mig dra upp vad de ge som svaret. 378 00:18:33,930 --> 00:18:35,440 Och då ska vi gå igenom det. 379 00:18:35,440 --> 00:18:42,430 380 00:18:42,430 --> 00:18:45,400 >> Så Curt gav ett bra exempel av en envägs hash. 381 00:18:45,400 --> 00:18:48,800 När vi har sett det här förut, vi ta lösenord och vrid - 382 00:18:48,800 --> 00:18:53,040 komma ihåg, i p set 7, någon kanske ha ett lösenord som bara lösenord, 383 00:18:53,040 --> 00:18:55,300 men då blir krypterad i några riktigt långa sak. 384 00:18:55,300 --> 00:18:59,830 Den envägshashvärde innebär att det är mycket lätt att gå från en väg till den andra, men 385 00:18:59,830 --> 00:19:02,800 det är mycket svårt att gå från den andra vägen tillbaka. 386 00:19:02,800 --> 00:19:05,230 >> Och så du vet, när du checkar människors lösenord i problem 387 00:19:05,230 --> 00:19:08,820 set 7, skulle du ta deras - 388 00:19:08,820 --> 00:19:11,953 så, till exempel, säger att de ville ändra sitt lösenord, ber du dem 389 00:19:11,953 --> 00:19:13,130 för deras gamla lösenord. 390 00:19:13,130 --> 00:19:13,910 Du tog sitt gamla lösenord. 391 00:19:13,910 --> 00:19:15,150 Du krypterat det. 392 00:19:15,150 --> 00:19:19,240 Och sedan jämförde två krypteringar snarare än unencrypting den ursprungliga 393 00:19:19,240 --> 00:19:20,780 en, för det är verkligen svårt att gå den vägen. 394 00:19:20,780 --> 00:19:27,070 395 00:19:27,070 --> 00:19:28,035 Yeah. 396 00:19:28,035 --> 00:19:31,430 >> PUBLIK: Hur i djupet gör vår förståelse för TelNet vara? 397 00:19:31,430 --> 00:19:34,870 398 00:19:34,870 --> 00:19:41,360 >> JASON Hirschhorn: Om det nämndes kort i föreläsning, bara en kort 399 00:19:41,360 --> 00:19:43,260 förståelse. 400 00:19:43,260 --> 00:19:45,585 Återigen tillbaka till svaret till avi-fråga - 401 00:19:45,585 --> 00:19:48,260 402 00:19:48,260 --> 00:19:50,430 ju fler saker kommer upp, desto mer sannolikt det är att du måste vara super 403 00:19:50,430 --> 00:19:51,530 bekant med dem. 404 00:19:51,530 --> 00:19:54,730 Om de bara har kommit upp på föreläsning, det är bara ett ställe. 405 00:19:54,730 --> 00:19:57,180 Men om de kommer upp i föreläsning, avsnitt, och ett problem set, då du 406 00:19:57,180 --> 00:19:58,710 förmodligen att vara super bekant med dem. 407 00:19:58,710 --> 00:20:01,320 408 00:20:01,320 --> 00:20:03,960 >> Så jag hade en fråga från tidigare om - 409 00:20:03,960 --> 00:20:06,950 är var hösten 2010 - 410 00:20:06,950 --> 00:20:08,520 Quiz 1, låt oss dra upp - 411 00:20:08,520 --> 00:20:17,390 412 00:20:17,390 --> 00:20:21,790 denna fråga på stackar och köer, som vi tillbringar en hel del tid 413 00:20:21,790 --> 00:20:23,720 talar om i föredrag, även även om vi inte riktigt 414 00:20:23,720 --> 00:20:26,020 någonsin slå den i avsnitt. 415 00:20:26,020 --> 00:20:33,190 Så denna fråga är att ge dig en serie kommandon och frågar dig vad 416 00:20:33,190 --> 00:20:35,560 blir tryckt i det här fallet. 417 00:20:35,560 --> 00:20:40,180 Så det här är en helt rimlig fråga som kan ställas på dig 418 00:20:40,180 --> 00:20:43,090 killar, och då ni ska kunna svara på det. 419 00:20:43,090 --> 00:20:50,020 >> Så varför inte titta på det för 30 sekunder, och sedan om någon vill 420 00:20:50,020 --> 00:20:52,140 föreslå svaren på mig, och då vi kommer att gå igenom den. 421 00:20:52,140 --> 00:21:22,590 422 00:21:22,590 --> 00:21:24,235 Okej, som har ett svar på fråga 27? 423 00:21:24,235 --> 00:21:31,740 424 00:21:31,740 --> 00:21:33,860 Yeah. 425 00:21:33,860 --> 00:21:40,250 >> Publik: Är det 1, 2, 3, 3? 426 00:21:40,250 --> 00:21:40,780 >> JASON Hirschhorn: Det stämmer. 427 00:21:40,780 --> 00:21:42,570 27 är 1, 2, 3, 3. 428 00:21:42,570 --> 00:21:44,510 Så låt oss titta på hur vi fick det. 429 00:21:44,510 --> 00:21:48,930 >> Först säger vi, om s är en kö, vad får skrivas ut? 430 00:21:48,930 --> 00:21:53,360 Så en q är först in, först ut. 431 00:21:53,360 --> 00:21:54,680 Vi har sett det förut. 432 00:21:54,680 --> 00:21:56,820 Vi såg bilden av folket väntar på Apple 433 00:21:56,820 --> 00:21:58,400 Butik för att köpa någon produkt. 434 00:21:58,400 --> 00:22:00,900 De första människorna i är de första människorna ut. 435 00:22:00,900 --> 00:22:02,940 De första sakerna i en kö är de första saker. 436 00:22:02,940 --> 00:22:08,320 >> Så om vi driva något i en kö, du trycker på 1, sedan pop vi 1. 437 00:22:08,320 --> 00:22:09,630 Pop betyder bara ta ut. 438 00:22:09,630 --> 00:22:11,080 I det här fallet, bara ta något. 439 00:22:11,080 --> 00:22:12,910 Vi tar ut den första sak, det är en 1. 440 00:22:12,910 --> 00:22:15,200 Så vi ska lägga saker vi skriva ner här borta. 441 00:22:15,200 --> 00:22:18,110 Detta är inte längre i vår kö. 442 00:22:18,110 --> 00:22:23,500 >> Då kan vi driva på en 2 och en 3, och vi poppar av första. 443 00:22:23,500 --> 00:22:25,030 Återigen, eftersom det är en kö. 444 00:22:25,030 --> 00:22:33,320 Så vi får en 2, så vi satte på en annan 3 och kalla pop igen. 445 00:22:33,320 --> 00:22:34,980 Vår 3 är först. 446 00:22:34,980 --> 00:22:40,940 >> Och sedan hade vi en hel massa annat och samtal pop. 447 00:22:40,940 --> 00:22:43,740 Men återigen, eftersom detta är en kö, först in, först ut. 448 00:22:43,740 --> 00:22:45,980 Vi tar ut det första som någonsin satt i. 449 00:22:45,980 --> 00:22:47,100 Det är vår 3. 450 00:22:47,100 --> 00:22:50,060 Och, i det här fallet, vi var inte orolig om alla dessa andra saker. 451 00:22:50,060 --> 00:22:51,310 Så det är om detta är en kö. 452 00:22:51,310 --> 00:22:58,917 453 00:22:58,917 --> 00:23:00,167 Har du frågor om en kö? 454 00:23:00,167 --> 00:23:03,290 455 00:23:03,290 --> 00:23:04,040 >> En stack är annorlunda. 456 00:23:04,040 --> 00:23:07,782 Vad är en förkortning som vi har för att förstå en skorsten? 457 00:23:07,782 --> 00:23:08,750 >> PUBLIK: Sist in, först ut. 458 00:23:08,750 --> 00:23:10,130 >> JASON Hirschhorn: LIFO, tror jag. 459 00:23:10,130 --> 00:23:11,830 Sist in, först ut. 460 00:23:11,830 --> 00:23:15,630 Så vi såg ett exempel på en stapel av brickor i en matsal. 461 00:23:15,630 --> 00:23:17,590 Oavsett vad facket är på topp raggas upp. 462 00:23:17,590 --> 00:23:19,550 Och sedan om nya brickor kommer in, får de sätta på toppen. 463 00:23:19,550 --> 00:23:21,070 Och sedan allt som är på top raggas upp. 464 00:23:21,070 --> 00:23:24,010 Så dessa brickor på undersidan kanske stanna där ett tag. 465 00:23:24,010 --> 00:23:28,480 >> I detta fall, återigen, vi ska dra ut det. 466 00:23:28,480 --> 00:23:31,770 Vi trycker på en, så man står först i tur. 467 00:23:31,770 --> 00:23:32,790 Och vi pop något av. 468 00:23:32,790 --> 00:23:37,280 Och det finns bara en sak där, så vi flyttar 1 här nere. 469 00:23:37,280 --> 00:23:41,940 Sedan vi satte på 2 och 3 och vi pop något av. 470 00:23:41,940 --> 00:23:43,650 >> Men återigen, eftersom detta är en kö - 471 00:23:43,650 --> 00:23:45,010 eller det är en stack, snarare - 472 00:23:45,010 --> 00:23:47,480 Vi tar allt var i sist. 473 00:23:47,480 --> 00:23:49,300 Vad som än är i sista kommer ut först. 474 00:23:49,300 --> 00:23:50,890 Och 3 är i sist. 475 00:23:50,890 --> 00:23:56,110 Så vi satte 3 där nere, då Vi satte på en annan 3 och vi 476 00:23:56,110 --> 00:23:57,360 pop något igen. 477 00:23:57,360 --> 00:23:59,990 478 00:23:59,990 --> 00:24:05,710 Slutligen, vi sätter på 4, 5, 6 och 7, och här dyker vi. 479 00:24:05,710 --> 00:24:09,060 Och eftersom det är en bunt, vi tar allt sattes i sista och skriva 480 00:24:09,060 --> 00:24:10,240 det här nere. 481 00:24:10,240 --> 00:24:14,256 Så vi sluta med 1, 3, 3, 7. 482 00:24:14,256 --> 00:24:17,380 483 00:24:17,380 --> 00:24:21,380 Är det någon som har några frågor om stackar och köer, eller detta exempel? 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 Låt oss gå tillbaka till listan med ämnen. 487 00:24:30,440 --> 00:24:32,510 Inte på det sättet, det här sättet. 488 00:24:32,510 --> 00:24:34,280 Vilka andra frågor har människor? 489 00:24:34,280 --> 00:24:37,550 490 00:24:37,550 --> 00:24:39,480 >> PUBLIK: Jag vet inte hur viktigt detta är, men jag var förvirrad av 491 00:24:39,480 --> 00:24:43,550 skillnad mellan olika typer av språk som uppmärkning, som sammanställts, 492 00:24:43,550 --> 00:24:45,980 tolkas. 493 00:24:45,980 --> 00:24:46,750 >> JASON Hirschhorn: Det är en bra fråga. 494 00:24:46,750 --> 00:24:50,500 Jag tror att det är något viktigt, så låt oss gå över det snabbt. 495 00:24:50,500 --> 00:24:56,850 De stora språken som vi har sett hittills är C, PHP och JavaScript, när det gäller 496 00:24:56,850 --> 00:24:58,330 av programmeringsspråk. 497 00:24:58,330 --> 00:25:01,060 HTML, som du nämnde, är inte ett programmeringsspråk. 498 00:25:01,060 --> 00:25:02,260 Det är ett märkspråk. 499 00:25:02,260 --> 00:25:05,700 Och sedan har vi CSS, vilket också är inte ett programmeringsspråk. 500 00:25:05,700 --> 00:25:10,330 >> Vi har också sett SQL, vilket inte ett programmeringsspråk heller. 501 00:25:10,330 --> 00:25:15,695 Så SQL kan du skriva frågor till en databas. 502 00:25:15,695 --> 00:25:18,370 503 00:25:18,370 --> 00:25:20,140 HTML är ett märkspråk. 504 00:25:20,140 --> 00:25:22,570 Den definierar hur saker är uppbyggda. 505 00:25:22,570 --> 00:25:26,250 Och CSS tillåter dig att styla saker. 506 00:25:26,250 --> 00:25:28,520 Det är förmodligen den omfattning för vad du behöver veta om dessa tre. 507 00:25:28,520 --> 00:25:32,920 Men det är mer intressant att figur ut skillnaderna mellan C, PHP, 508 00:25:32,920 --> 00:25:34,320 och JavaScript. 509 00:25:34,320 --> 00:25:37,900 >> Så en av de största skillnaderna, som du nämnde, är hur de är 510 00:25:37,900 --> 00:25:40,550 sammanställts, eller vad motsvarigheten är. 511 00:25:40,550 --> 00:25:42,580 Så C sammanställs. 512 00:25:42,580 --> 00:25:43,950 Vi skulle alltid köra en kompilator. 513 00:25:43,950 --> 00:25:51,100 Och sedan var är dina misstag när du kör C-kompilator? 514 00:25:51,100 --> 00:25:55,740 Var kommer det visa dig fel i koden? 515 00:25:55,740 --> 00:25:57,860 Hur vet du att det finns en fel i din kod i C? 516 00:25:57,860 --> 00:25:58,770 >> PUBLIK: Det visar i terminalen. 517 00:25:58,770 --> 00:26:00,410 >> JASON Hirschhorn: Det visar på terminal som du kompilerar. 518 00:26:00,410 --> 00:26:02,620 Och om det är fel, det kommer faktiskt inte kompilera det. 519 00:26:02,620 --> 00:26:04,830 Så du vet att det finns fel rätt bort, i förväg, innan du 520 00:26:04,830 --> 00:26:06,050 även köra din kod. 521 00:26:06,050 --> 00:26:10,010 >> Naturligtvis kan du köra din kod och får en segmentering fel, men det var 522 00:26:10,010 --> 00:26:12,350 förmodligen för att du gjorde några dumma logik sak. 523 00:26:12,350 --> 00:26:15,770 Men koden med tekniskt alla rätt och kunde springa. 524 00:26:15,770 --> 00:26:18,210 Så C-kod blir kompileras i förväg. 525 00:26:18,210 --> 00:26:19,760 Hur är PHP-kod? 526 00:26:19,760 --> 00:26:21,430 Var var fel i din PHP-kod? 527 00:26:21,430 --> 00:26:23,170 Hur visste du att du hade fel i din PHP-kod? 528 00:26:23,170 --> 00:26:26,038 529 00:26:26,038 --> 00:26:28,430 >> PUBLIK: Kör tid? 530 00:26:28,430 --> 00:26:31,230 >> JASON Hirschhorn: Ja, när du skulle köra det, skulle du köra 531 00:26:31,230 --> 00:26:32,180 PHP-kod i ryggen. 532 00:26:32,180 --> 00:26:33,300 Och då skulle du visa en skärm. 533 00:26:33,300 --> 00:26:35,260 Du kan se en del saker på toppen, men då skulle du se, liksom, en del 534 00:26:35,260 --> 00:26:36,710 apelsin, fula bord. 535 00:26:36,710 --> 00:26:41,420 Och det skulle ge dig ett linjenummer och säg, bla, bla, bla, det här 536 00:26:41,420 --> 00:26:42,400 fungerade inte. 537 00:26:42,400 --> 00:26:48,730 >> Så PHP tolkas rad för rad och exekveras på servern. 538 00:26:48,730 --> 00:26:52,380 Och då resultatet är skickas över till dig. 539 00:26:52,380 --> 00:26:53,340 Bra. 540 00:26:53,340 --> 00:26:56,410 Kördes på servern rad för rad och sedan skickas till dig. 541 00:26:56,410 --> 00:26:59,010 Och om det finns ett fel, det ska skicka du felet, men du kan ha 542 00:26:59,010 --> 00:27:00,400 fått en del saker i förväg. 543 00:27:00,400 --> 00:27:02,730 Så en del av det kan ha fungerat, men senare, kanske vissa saker inte har 544 00:27:02,730 --> 00:27:03,890 inte fungerat. 545 00:27:03,890 --> 00:27:04,600 >> Hur är JavaScript? 546 00:27:04,600 --> 00:27:06,065 Var såg du JavaScript-fel? 547 00:27:06,065 --> 00:27:10,860 548 00:27:10,860 --> 00:27:12,870 I p set 8, när du fick en fel, hur visste du? 549 00:27:12,870 --> 00:27:13,710 Var skulle det dyka upp? 550 00:27:13,710 --> 00:27:15,900 >> Publik: I konsolen vid bottnen. 551 00:27:15,900 --> 00:27:17,650 >> JASON Hirschhorn: I konsol, på botten. 552 00:27:17,650 --> 00:27:20,160 Det skulle också ge dig radnumret, och det skulle 553 00:27:20,160 --> 00:27:21,330 dyker upp på botten. 554 00:27:21,330 --> 00:27:24,320 Och Javascript var inte avrättades på servern. 555 00:27:24,320 --> 00:27:27,800 JavaScript lagras på användarens dator, och sedan när det var dags att köra 556 00:27:27,800 --> 00:27:31,670 JavaScript JavaScript var kör rad för rad på 557 00:27:31,670 --> 00:27:33,410 klient, på din sida. 558 00:27:33,410 --> 00:27:35,570 Inte servern, klientsidan. 559 00:27:35,570 --> 00:27:37,690 >> Och på samma sätt, var det kör rad för rad. 560 00:27:37,690 --> 00:27:40,630 Och sedan när du skulle få ett felmeddelande, det skulle dyka upp längst ner. 561 00:27:40,630 --> 00:27:44,580 På samma sätt som PHP, en del av det kan exekvera, och då kanske du får ett 562 00:27:44,580 --> 00:27:46,310 fel senare. 563 00:27:46,310 --> 00:27:49,910 >> Även en liten skillnad från PHP, om du fick ett JavaScript-fel - 564 00:27:49,910 --> 00:27:52,780 säga att du inte gjorde det rätta kod för en varningsruta - 565 00:27:52,780 --> 00:27:55,800 du kan hålla igång ditt program. 566 00:27:55,800 --> 00:27:58,180 Den varningsruta inte skulle fungera, men ditt program skulle vara bra. 567 00:27:58,180 --> 00:28:00,490 Bara kanske den funktionen skulle misslyckas. 568 00:28:00,490 --> 00:28:02,610 >> Så det finns några av de största skillnad när det gäller hur dessa 569 00:28:02,610 --> 00:28:09,230 språk, eller hur programmeringskoden du skriver faktiskt utvärderas. 570 00:28:09,230 --> 00:28:11,970 Det finns också andra skillnader i gäller - den största skillnaden 571 00:28:11,970 --> 00:28:15,590 vi har sett i termer av variabler på de olika språken. 572 00:28:15,590 --> 00:28:19,660 Så kan någon ge mig en skillnad mellan variabler 573 00:28:19,660 --> 00:28:20,910 på de tre språken? 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 >> PUBLIK: I C, de är strikt skrivit. 577 00:28:27,130 --> 00:28:28,550 I de andra två, de är löst skrivit. 578 00:28:28,550 --> 00:28:30,040 >> JASON Hirschhorn: Och vad betyder det? 579 00:28:30,040 --> 00:28:31,775 >> PUBLIK: Att i C, måste du deklarera typ av variabeln när 580 00:28:31,775 --> 00:28:36,140 du deklarerar variabeln, liknande interbool eller röding. 581 00:28:36,140 --> 00:28:36,990 >> JASON Hirschhorn: Excellent. 582 00:28:36,990 --> 00:28:39,780 I C, alltid hade vi att sätta en typ av en variabel. 583 00:28:39,780 --> 00:28:41,360 Och vi kunde inte riktigt blanda typer. 584 00:28:41,360 --> 00:28:45,750 Du kan inte göra ett heltal plus en sträng. 585 00:28:45,750 --> 00:28:48,760 Men som vi har sett i dessa andra språk, du faktiskt kan blanda olika typer, 586 00:28:48,760 --> 00:28:51,230 och du aldrig riktigt har att ge något som en typ, någonsin. 587 00:28:51,230 --> 00:28:53,905 >> Så hur vet vi saker är variabler i PHP och Javascript? 588 00:28:53,905 --> 00:28:57,120 589 00:28:57,120 --> 00:28:58,685 >> PUBLIK: I PHP, de börjar med ett dollartecken. 590 00:28:58,685 --> 00:29:00,810 I JavaScript, när du deklarerar dem, måste du ha en bar. 591 00:29:00,810 --> 00:29:01,760 >> JASON Hirschhorn: Höger. 592 00:29:01,760 --> 00:29:03,535 Så i PHP, de börjar med ett dollartecken. 593 00:29:03,535 --> 00:29:06,300 I JavaScript måste de ha bar, men ibland gör de faktiskt inte 594 00:29:06,300 --> 00:29:07,520 måste ha bar. 595 00:29:07,520 --> 00:29:09,240 Men det är rätt. 596 00:29:09,240 --> 00:29:13,300 >> Så det är en stor skillnad mellan variablerna. 597 00:29:13,300 --> 00:29:16,140 Jag tror att de är förmodligen, utanför toppen av mitt huvud, de två största 598 00:29:16,140 --> 00:29:19,250 skillnaderna mellan dessa tre språk. 599 00:29:19,250 --> 00:29:20,594 Men, ja. 600 00:29:20,594 --> 00:29:24,720 >> PUBLIK: Och omfattningen av C-variabler är begränsad till de klammerparenteser, 601 00:29:24,720 --> 00:29:27,760 där de andra, det är precis som, den dör om det är på bara en funktion, 602 00:29:27,760 --> 00:29:29,650 men annars Det är - 603 00:29:29,650 --> 00:29:30,240 >> JASON Hirschhorn: Höger. 604 00:29:30,240 --> 00:29:36,780 Så omfattning är något annorlunda i C. Som du kommer ihåg, klammerparenteser definierar 605 00:29:36,780 --> 00:29:37,710 räckvidden för variabler. 606 00:29:37,710 --> 00:29:41,680 Så om det definierades inuti en om tillstånd, som är inne i en for-loop, 607 00:29:41,680 --> 00:29:44,290 variabeln existerar bara där. 608 00:29:44,290 --> 00:29:47,760 >> I JavaScript, är om en variabel definierad inuti en om tillstånd - 609 00:29:47,760 --> 00:29:50,750 i en för loop - det ska finnas för denna funktion, men det kommer inte att föreligga 610 00:29:50,750 --> 00:29:52,330 utanför den funktionen. 611 00:29:52,330 --> 00:29:59,250 Så omfattning är lite mer flexibel i JavaScript och PHP. 612 00:29:59,250 --> 00:30:00,500 Att svara på frågan? 613 00:30:00,500 --> 00:30:03,110 614 00:30:03,110 --> 00:30:04,635 OK, några andra frågor? 615 00:30:04,635 --> 00:30:07,260 616 00:30:07,260 --> 00:30:08,865 Vi kan göra ytterligare fyra minuter av frågor, då 617 00:30:08,865 --> 00:30:10,740 vi ska hoppa in kodning. 618 00:30:10,740 --> 00:30:12,645 >> PUBLIK: Kan vi gå in i Ajax och tala om vad det är? 619 00:30:12,645 --> 00:30:15,670 620 00:30:15,670 --> 00:30:17,800 >> JASON Hirschhorn: Prata med Avi efter. 621 00:30:17,800 --> 00:30:19,170 Han frågade den frågan tidigare. 622 00:30:19,170 --> 00:30:19,630 >> PUBLIK: Min dåliga. 623 00:30:19,630 --> 00:30:20,880 >> JASON Hirschhorn: Inga bekymmer. 624 00:30:20,880 --> 00:30:22,740 625 00:30:22,740 --> 00:30:24,290 >> PUBLIK: Vad är JSON? 626 00:30:24,290 --> 00:30:28,360 627 00:30:28,360 --> 00:30:28,900 >> JASON Hirschhorn: Vad är JSON? 628 00:30:28,900 --> 00:30:29,930 Vad är din fråga? 629 00:30:29,930 --> 00:30:31,350 >> PUBLIK: Bara riktigt snabbt, skillnaden mellan 630 00:30:31,350 --> 00:30:32,870 print och eko i PHP. 631 00:30:32,870 --> 00:30:36,200 632 00:30:36,200 --> 00:30:38,490 >> JASON Hirschhorn: Varför inte du google skillnaden mellan tryck och eko? 633 00:30:38,490 --> 00:30:40,670 Liten skillnad. 634 00:30:40,670 --> 00:30:42,020 Inte så stor grej. 635 00:30:42,020 --> 00:30:44,960 Men du bör definitivt google det, och som ger dig ett bra svar. 636 00:30:44,960 --> 00:30:46,910 >> JSON, förmodligen större i en affär. 637 00:30:46,910 --> 00:30:49,300 Står för JavaScript Object Notation. 638 00:30:49,300 --> 00:30:51,865 Och när har vi sett JSON används? 639 00:30:51,865 --> 00:30:55,110 640 00:30:55,110 --> 00:30:55,900 När har du sett - 641 00:30:55,900 --> 00:30:57,400 varför ens vet ordet JSON? 642 00:30:57,400 --> 00:30:59,140 När har du sett den? 643 00:30:59,140 --> 00:31:02,200 >> PUBLIK: När vi fick aktiekurser för finansiering. 644 00:31:02,200 --> 00:31:02,690 >> JASON Hirschhorn: Så du såg det när du fick 645 00:31:02,690 --> 00:31:04,830 aktiekurser för finansiering. 646 00:31:04,830 --> 00:31:07,340 Och varför gjorde du det? 647 00:31:07,340 --> 00:31:09,000 >> PUBLIK: När vi hämta all den information som 648 00:31:09,000 --> 00:31:10,400 kom i det formatet. 649 00:31:10,400 --> 00:31:11,700 >> JASON Hirschhorn: Så du skulle få - 650 00:31:11,700 --> 00:31:12,540 ja. 651 00:31:12,540 --> 00:31:13,020 Varsågod. 652 00:31:13,020 --> 00:31:15,210 >> PUBLIK: [OHÖRBAR] upplysningar av ett objekt? 653 00:31:15,210 --> 00:31:17,170 >> JASON Hirschhorn: Båda av dem sätta ihop är svaret 654 00:31:17,170 --> 00:31:18,100 vi letar efter. 655 00:31:18,100 --> 00:31:21,240 Du vill ha information från denna andra webbsida. 656 00:31:21,240 --> 00:31:23,790 Och du hoppas att när du är att få den informationen, skulle det vara 657 00:31:23,790 --> 00:31:26,720 presenteras för dig i någon typ av standardiserat format. 658 00:31:26,720 --> 00:31:29,530 >> Alla är förmodligen bekant med kommaseparerade värden. 659 00:31:29,530 --> 00:31:32,970 Du kan exportera ett Excel-kalkylblad eller någon typ av kalkylblad som en lista med 660 00:31:32,970 --> 00:31:34,540 kommaseparerade värden. 661 00:31:34,540 --> 00:31:37,370 Och kommatecken dela alla de olika områdena. 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 är en annan typ av standardiserade layout av saker. 665 00:31:43,540 --> 00:31:49,010 Och det är ofta hur vi tar information från våra Ajax frågor. 666 00:31:49,010 --> 00:31:51,770 >> Så i det här fallet, vi fick det från Yahoo webbplats. 667 00:31:51,770 --> 00:31:53,600 De återvänder saker att oss i en JSON objekt. 668 00:31:53,600 --> 00:31:56,790 Och då vet vi, eftersom det är en standard, vad det är 669 00:31:56,790 --> 00:31:57,250 kommer att se ut. 670 00:31:57,250 --> 00:32:00,760 Så vi kan iterera igenom arrayen som har återvänt till oss, den rad av 671 00:32:00,760 --> 00:32:03,180 objekt som returneras till oss. 672 00:32:03,180 --> 00:32:07,770 >> Vi behöver antagligen behöver veta nycklarna, men de i allmänhet ger dig 673 00:32:07,770 --> 00:32:11,370 dokumentation på hemsidan när du hämtar några JSON 674 00:32:11,370 --> 00:32:12,170 notation för dem. 675 00:32:12,170 --> 00:32:16,940 På samma sätt kan du JSON koda för ett objekt. 676 00:32:16,940 --> 00:32:19,900 Så det finns en funktion JSON streck koda. 677 00:32:19,900 --> 00:32:22,970 Och så att du kan ta ett objekt som du har skapat, JSON koda det, och 678 00:32:22,970 --> 00:32:26,390 ge det vidare till något annars, om du vill. 679 00:32:26,390 --> 00:32:30,770 Och JSON avkoda existerar också för ett liknande syfte, eller för 680 00:32:30,770 --> 00:32:31,780 motsatt ändamål. 681 00:32:31,780 --> 00:32:36,570 >> PUBLIK: Behöver vi veta kodning för hashtabeller och försöker? 682 00:32:36,570 --> 00:32:40,300 Eller behöver vi bara förstå hur de används, konceptuellt? 683 00:32:40,300 --> 00:32:44,570 >> JASON Hirschhorn: Så, räck upp handen om du gjorde en hashtabell för p set 4 684 00:32:44,570 --> 00:32:46,920 med en länklista. 685 00:32:46,920 --> 00:32:47,960 Eller p set 5. 686 00:32:47,960 --> 00:32:49,060 Så det var en stor majoritet av folket. 687 00:32:49,060 --> 00:32:50,390 P set 5, 6, vem vet. 688 00:32:50,390 --> 00:32:51,240 För länge sedan. 689 00:32:51,240 --> 00:32:54,140 >> Så de allra flesta av er gjorde hash tabeller med länklistor. 690 00:32:54,140 --> 00:32:56,525 Och eftersom det är förmodligen mer gemensam strategi, och eftersom vi tillbringade 691 00:32:56,525 --> 00:32:59,460 en hel del tid att göra länklistor och hash tabeller, bör du nog vara 692 00:32:59,460 --> 00:33:02,600 ganska bekant med hur man koda en hash-tabell och en länklista. 693 00:33:02,600 --> 00:33:05,060 >> Och om du tänker tillbaka på det problemet set, det var inte riktigt 694 00:33:05,060 --> 00:33:06,410 så hårt som du förväntat. 695 00:33:06,410 --> 00:33:08,120 Och det fanns mycket mindre kod än du förväntat. 696 00:33:08,120 --> 00:33:11,150 697 00:33:11,150 --> 00:33:14,650 Jag skulle säga att du bör veta hur man koda en hashtabell eller en länklista. 698 00:33:14,650 --> 00:33:17,010 Inte för att du skulle bli ombedd att nödvändigtvis, men du bör 699 00:33:17,010 --> 00:33:19,730 säkert vet det. 700 00:33:19,730 --> 00:33:21,860 >> Dessutom, om du tittar igenom tidigare frågesporter, det har varit en hel del 701 00:33:21,860 --> 00:33:26,450 frågor om att skriva funktioner på länklistor eller dubbelt-länkade listor. 702 00:33:26,450 --> 00:33:28,370 Det verkar komma upp varje år. 703 00:33:28,370 --> 00:33:31,940 Rätt sätt in på en länklista, höger bort från en länklista, höger infoga 704 00:33:31,940 --> 00:33:33,610 för en dubbelt-länkad lista, et cetera. 705 00:33:33,610 --> 00:33:36,170 Så att, jag känner mig ganska bekväm säger att du borde veta det. 706 00:33:36,170 --> 00:33:40,600 >> För försök, skulle jag säga att du borde säkert vet hur det fungerar, och kanske 707 00:33:40,600 --> 00:33:43,570 ge lite pseudokod för hur att koda den och ställa in den. 708 00:33:43,570 --> 00:33:45,600 Men det skulle inte vara det värsta i världen om du inte vet hur man 709 00:33:45,600 --> 00:33:48,870 koda den i C. Det skulle vara bra om du visste hur man koda den i C, men jag tror 710 00:33:48,870 --> 00:33:52,516 förmodligen pseudokod för ett försök skulle vara det du behöver 711 00:33:52,516 --> 00:33:53,270 att veta för ett försök. 712 00:33:53,270 --> 00:33:53,930 >> PUBLIK: Extra kredit? 713 00:33:53,930 --> 00:33:58,290 >> JASON Hirschhorn: Och samma med, om vi gå in i binära sökträd, kanske du 714 00:33:58,290 --> 00:34:02,320 behöver - och du har sett tidigare, vi har gjort en hel del - du vet hur 715 00:34:02,320 --> 00:34:03,380 binärt sökträd fungerar. 716 00:34:03,380 --> 00:34:07,150 Du bör nog kunna ställa en upp i pseudo-kod. 717 00:34:07,150 --> 00:34:10,510 Men eftersom den stora majoriteten av människor gjorde inte det på problemet 718 00:34:10,510 --> 00:34:13,880 set, skulle jag säga att det är nog mindre viktigt att du vet hur man ska koda 719 00:34:13,880 --> 00:34:17,380 och ställa upp i ett träd så. 720 00:34:17,380 --> 00:34:19,679 >> Fler frågor? 721 00:34:19,679 --> 00:34:23,234 Vi kan också be dem hela när vi går igenom en del problem. 722 00:34:23,234 --> 00:34:27,170 OK, vi kommer att gå vidare. 723 00:34:27,170 --> 00:34:28,230 Hoppa att glida för nu. 724 00:34:28,230 --> 00:34:32,449 >> På tal om träd, är att den första fråga jag har för er. 725 00:34:32,449 --> 00:34:34,270 Eftersom detta är ett problem. 726 00:34:34,270 --> 00:34:37,380 Jag skulle säga att det är mycket troligt att du kommer får ett problem så här på din frågesport 727 00:34:37,380 --> 00:34:43,659 ber dig att koda någon typ av insats, ta bort, söka, för en typ 728 00:34:43,659 --> 00:34:45,270 av datastruktur som vi har sett. 729 00:34:45,270 --> 00:34:47,719 >> Det kommer upp varje år och vi tillbringade en mycket tid på den andra halvan av denna 730 00:34:47,719 --> 00:34:50,270 termin att gå över dessa datatyper. 731 00:34:50,270 --> 00:34:54,170 Så just nu har jag definierat en nod i ett binärt sökträd. 732 00:34:54,170 --> 00:34:58,490 Och vad jag vill att du ska göra ges ett binärt sökträd som startar 733 00:34:58,490 --> 00:35:05,450 vid denna nod stjärna rot, slutföra genomförande av funktionen nedan, 734 00:35:05,450 --> 00:35:07,430 som råkar vara en hitta-funktionen. 735 00:35:07,430 --> 00:35:09,260 Och gör det med och utan rekursioner. 736 00:35:09,260 --> 00:35:10,860 >> Så jag vill att du ska skriva två funktioner. 737 00:35:10,860 --> 00:35:14,310 Man gör detta med rekursion, en göra detta utan rekursion. 738 00:35:14,310 --> 00:35:18,050 Och ta inte för givet att det root kommer att vara icke-noll. 739 00:35:18,050 --> 00:35:21,790 Så vi letar efter det heltal i i trädet börjar vid roten, och vi behöver 740 00:35:21,790 --> 00:35:25,280 att skriva detta rekursivt och iterativt. 741 00:35:25,280 --> 00:35:26,300 Yeah. 742 00:35:26,300 --> 00:35:29,730 >> PUBLIK: Så du vill att vi ska returnera sant Om vi ​​tycker att det är, och falskt om vi 743 00:35:29,730 --> 00:35:30,480 inte att den är. 744 00:35:30,480 --> 00:35:32,160 >> JASON Hirschhorn: Hur visste du? 745 00:35:32,160 --> 00:35:33,100 Hur visste du det? 746 00:35:33,100 --> 00:35:36,500 >> PUBLIK: Jag frågade först, men jag var antagande, eftersom det står bool på 747 00:35:36,500 --> 00:35:37,490 I början av funktionen. 748 00:35:37,490 --> 00:35:37,880 >> JASON Hirschhorn: Höger. 749 00:35:37,880 --> 00:35:41,020 Den säger bool, så jag behöver inte ens att berätta vad jag förväntar dig att återvända 750 00:35:41,020 --> 00:35:41,350 eftersom det står där. 751 00:35:41,350 --> 00:35:42,280 Men det är rätt. 752 00:35:42,280 --> 00:35:43,510 Avkastning, sant eller falskt. 753 00:35:43,510 --> 00:35:47,630 >> Så innan du börjar, skulle jag rekommendera, Om du inte är bekant med 754 00:35:47,630 --> 00:35:51,300 binära sökträd, snabbt dra en bild på den för att få din 755 00:35:51,300 --> 00:35:51,750 förståelse, rätt. 756 00:35:51,750 --> 00:35:54,720 Det kommer också att hjälpa dig när du skriver din kod och kontrollera det. 757 00:35:54,720 --> 00:35:57,830 Återigen, du behöver inte heller så mycket tid på frågesport för att göra alla de saker 758 00:35:57,830 --> 00:35:59,030 att vi ber dig att göra. 759 00:35:59,030 --> 00:36:02,350 Så skriver pseudokod är till stor hjälp. 760 00:36:02,350 --> 00:36:05,310 >> Och vi ger allmänt om - 761 00:36:05,310 --> 00:36:06,820 om pseudokoden är helt korrekt, det är 762 00:36:06,820 --> 00:36:08,910 vanligen 50% på en fråga. 763 00:36:08,910 --> 00:36:11,410 Så det är inte en hård och snabb regel, men om du bara skriva pseudokod och det är 764 00:36:11,410 --> 00:36:13,460 korrekt, det är i allmänhet 50%. 765 00:36:13,460 --> 00:36:14,970 Så jag skulle alltid rekommendera - 766 00:36:14,970 --> 00:36:16,870 Om du ont om tid, eller ens om du försöker bara lista ut det - 767 00:36:16,870 --> 00:36:18,290 börjar med pseudokod. 768 00:36:18,290 --> 00:36:24,840 Och slutligen, om du kunde skriva detta allt i C, det skulle vara fantastiskt. 769 00:36:24,840 --> 00:36:29,010 >> Så låt oss ta tre minuter att arbeta med detta program. 770 00:36:29,010 --> 00:36:33,120 Och sedan ska vi skriva pseudokod för det bara en gång, och sedan 771 00:36:33,120 --> 00:36:35,455 vi ska koda den rekursivt och sedan iterativt. 772 00:36:35,455 --> 00:37:28,720 773 00:37:28,720 --> 00:37:30,760 >> Om du har några frågor, känner gratis upp handen. 774 00:37:30,760 --> 00:37:34,270 Gott att gå runt och svara på dem innan vi börjar som en grupp. 775 00:37:34,270 --> 00:39:22,600 776 00:39:22,600 --> 00:39:27,200 >> Låt oss fortsätta, och vi ska pseudokod den rekursiva versionen av 777 00:39:27,200 --> 00:39:29,830 detta, och då kommer vi att koda den. 778 00:39:29,830 --> 00:39:33,380 Så en rekursiv funktion behöver två saker. 779 00:39:33,380 --> 00:39:35,960 Detta kan vara en fråga som du skulle bli tillfrågad. 780 00:39:35,960 --> 00:39:37,950 Needs två saker. 781 00:39:37,950 --> 00:39:40,610 Vem kan räcka upp handen och berätta vad de två sakerna en rekursiv 782 00:39:40,610 --> 00:39:43,680 Funktionen behöver? 783 00:39:43,680 --> 00:39:45,030 Per definition har två saker. 784 00:39:45,030 --> 00:39:46,280 Vilka är dessa två saker? 785 00:39:46,280 --> 00:39:48,580 786 00:39:48,580 --> 00:39:49,830 Nya 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 >> PUBLIK: Så jag är inte riktigt säker på om detta är terminologin, men - 790 00:39:57,980 --> 00:39:59,715 >> JASON Hirschhorn: Jag är glad du höjer din hand. 791 00:39:59,715 --> 00:40:03,380 >> PUBLIK: Den behöver en bas fall och det krävs en rekursiv steg. 792 00:40:03,380 --> 00:40:03,960 >> JASON Hirschhorn: Perfect. 793 00:40:03,960 --> 00:40:06,340 Den behöver ett basfall och ett rekursivt steg. 794 00:40:06,340 --> 00:40:10,430 Så vad är vår bas fallet här? 795 00:40:10,430 --> 00:40:12,950 >> PUBLIK: F rot lika lika null. 796 00:40:12,950 --> 00:40:15,110 Tyvärr, bara i pseudokod, om det är null. 797 00:40:15,110 --> 00:40:16,360 Om roten är null. 798 00:40:16,360 --> 00:40:21,900 799 00:40:21,900 --> 00:40:23,540 >> JASON Hirschhorn: Om roten är null. 800 00:40:23,540 --> 00:40:23,850 Det är utmärkt. 801 00:40:23,850 --> 00:40:24,610 Det är vår bas fallet. 802 00:40:24,610 --> 00:40:25,910 Det är vad vi ska att kolla varje gång. 803 00:40:25,910 --> 00:40:28,000 Och basfallet är det första du gör. 804 00:40:28,000 --> 00:40:29,720 Om du träffar basfallet, du är klar. 805 00:40:29,720 --> 00:40:34,140 >> Nu behöver vi vår rekursiva anrop, och jag skulle vara villig att satsa att vi behöver ett par 806 00:40:34,140 --> 00:40:35,440 rekursiv samtal här. 807 00:40:35,440 --> 00:40:39,630 Eftersom det är ett träd, och vi kunde gå flera sätt. 808 00:40:39,630 --> 00:40:43,190 Så om roten är noll, vi är bra. 809 00:40:43,190 --> 00:40:44,970 >> Vad vill föreslå dig? 810 00:40:44,970 --> 00:40:49,640 Och nu ska jag börja ringa ut på er, för jag vet att ni 811 00:40:49,640 --> 00:40:50,540 alla vet detta. 812 00:40:50,540 --> 00:40:52,610 Men Annie, vad ska nästa rad bli? 813 00:40:52,610 --> 00:40:53,570 Tänk om vi hittat det? 814 00:40:53,570 --> 00:40:55,526 Vad gör vi? 815 00:40:55,526 --> 00:40:57,300 >> PUBLIK: Om vi ​​hittat den? 816 00:40:57,300 --> 00:40:59,160 >> JASON Hirschhorn: Eller vad bör vara att - 817 00:40:59,160 --> 00:41:02,124 ge mig pseudokod för linje där vi hittade den. 818 00:41:02,124 --> 00:41:04,700 >> PUBLIK: Om jag är lika med roten i? 819 00:41:04,700 --> 00:41:06,650 >> JASON Hirschhorn: Och vad gör vi? 820 00:41:06,650 --> 00:41:07,590 >> PUBLIK: Returnera sant. 821 00:41:07,590 --> 00:41:08,530 >> JASON Hirschhorn: Great. 822 00:41:08,530 --> 00:41:16,890 Så om jag är jag - 823 00:41:16,890 --> 00:41:17,400 åh, de är båda kallade jag. 824 00:41:17,400 --> 00:41:18,470 Det blir förvirrande. 825 00:41:18,470 --> 00:41:23,830 Men om jag är jag tillbaka sant. 826 00:41:23,830 --> 00:41:25,620 Det är förmodligen nästa vi bör göra. 827 00:41:25,620 --> 00:41:27,300 Vettigt. 828 00:41:27,300 --> 00:41:30,610 >> OK, nu har vi inte gjort vår rekursiva ringa ännu, men eftersom en rekursiv 829 00:41:30,610 --> 00:41:32,300 samtal skulle kalla denna funktion igen. 830 00:41:32,300 --> 00:41:41,460 Så vad ska nästa linje pseudokod vara? 831 00:41:41,460 --> 00:41:42,730 Anna. 832 00:41:42,730 --> 00:41:43,980 >> Publik: vänster sida. 833 00:41:43,980 --> 00:41:47,040 834 00:41:47,040 --> 00:41:47,590 >> JASON Hirschhorn: Var specifik, dock. 835 00:41:47,590 --> 00:41:50,600 Detta är ett binärt sökträd, så vad inte kontrollerar den vänstra sidan innebära? 836 00:41:50,600 --> 00:41:51,890 >> PUBLIK: Så nod - 837 00:41:51,890 --> 00:41:53,342 Jag är ledsen, rot. 838 00:41:53,342 --> 00:41:55,306 Och sedan arrow vänster. 839 00:41:55,306 --> 00:41:59,234 840 00:41:59,234 --> 00:42:00,720 Nod, node, sorry. 841 00:42:00,720 --> 00:42:01,978 Jag tänker inte läsa det ordentligt. 842 00:42:01,978 --> 00:42:05,700 Det kallas nod, eller hur? 843 00:42:05,700 --> 00:42:09,270 >> JASON Hirschhorn: Det kommer att kallas rot i den funktionen, men hur som helst. 844 00:42:09,270 --> 00:42:10,925 Den vänstra sidan - ja? 845 00:42:10,925 --> 00:42:13,780 >> Publik: Om det inte är lika med i, då kommer vi att ringa 846 00:42:13,780 --> 00:42:15,130 funktionen igen? 847 00:42:15,130 --> 00:42:15,490 >> JASON Hirschhorn: Det stämmer. 848 00:42:15,490 --> 00:42:17,870 Om den inte är lika i, vi ska att anropa funktionen igen. 849 00:42:17,870 --> 00:42:21,435 Men vilken sida av trädet ska vi att anropa funktionen igen? 850 00:42:21,435 --> 00:42:22,685 >> Publik: På den vänstra sidan. 851 00:42:22,685 --> 00:42:25,932 852 00:42:25,932 --> 00:42:27,670 >> JASON Hirschhorn: Vi är inte alltid kommer att kalla det vänster, om det 853 00:42:27,670 --> 00:42:29,190 inte lika det. 854 00:42:29,190 --> 00:42:29,610 >> PUBLIK: Åh, förlåt. 855 00:42:29,610 --> 00:42:31,200 Ring till höger. 856 00:42:31,200 --> 00:42:33,680 >> JASON Hirschhorn: Vi vill veta specifikt, men - kom ihåg, i en 857 00:42:33,680 --> 00:42:37,700 binärt sökträd, allt för att den vänstra sidan är mindre. 858 00:42:37,700 --> 00:42:40,460 Allt till höger sidan är större. 859 00:42:40,460 --> 00:42:43,990 Så det är bara inte - ja, gå vidare. 860 00:42:43,990 --> 00:42:46,805 >> PUBLIK: Om det är mindre än jag, då - 861 00:42:46,805 --> 00:42:52,130 862 00:42:52,130 --> 00:42:53,380 om det är till vänster - 863 00:42:53,380 --> 00:42:56,160 864 00:42:56,160 --> 00:42:58,606 >> JASON Hirschhorn: Så om ri är mindre än - 865 00:42:58,606 --> 00:43:01,854 866 00:43:01,854 --> 00:43:09,110 så om vårt nummer är mindre än jag, vilken sida vill vi att gå till? 867 00:43:09,110 --> 00:43:15,120 >> PUBLIK: Vi vill gå till den högra sidan. 868 00:43:15,120 --> 00:43:16,250 >> JASON Hirschhorn: Vi vill gå - 869 00:43:16,250 --> 00:43:19,210 Låt mig dra en snabb träd. 870 00:43:19,210 --> 00:43:23,850 Om det är 5, kommer detta att vara 3. 871 00:43:23,850 --> 00:43:29,410 Så om ri är mindre än fem, vad sida vill vi att gå till? 872 00:43:29,410 --> 00:43:30,390 >> PUBLIK: Förlåt, vad? 873 00:43:30,390 --> 00:43:33,190 >> JASON Hirschhorn: Vårt nummer är mindre än det antal vi är 874 00:43:33,190 --> 00:43:34,710 tittar på just nu. 875 00:43:34,710 --> 00:43:35,890 >> PUBLIK: Åh, då vi vill ha att gå till den vänstra sidan. 876 00:43:35,890 --> 00:43:36,240 Yeah. 877 00:43:36,240 --> 00:43:36,920 Ursäkta. 878 00:43:36,920 --> 00:43:37,230 >> JASON Hirschhorn: Exakt. 879 00:43:37,230 --> 00:43:38,480 Inga problem. 880 00:43:38,480 --> 00:43:41,020 I det binära sökträdet, allt lägre är till vänster, 881 00:43:41,020 --> 00:43:42,110 större är till höger. 882 00:43:42,110 --> 00:43:46,700 Så om vårt nummer är mindre än det jag vi kollar - 883 00:43:46,700 --> 00:43:48,790 eftersom du ser i nod, den har en i - 884 00:43:48,790 --> 00:43:50,040 då du vill gå till vänster. 885 00:43:50,040 --> 00:43:55,480 886 00:43:55,480 --> 00:43:56,720 >> Och det är lätt. 887 00:43:56,720 --> 00:44:01,700 Vad är det den andra raden i pseudokod vi måste skriva? 888 00:44:01,700 --> 00:44:02,910 Carlos? 889 00:44:02,910 --> 00:44:05,970 >> PUBLIK: Samma sak, du bara byta den till en större än-tecken 890 00:44:05,970 --> 00:44:07,420 och gå till höger. 891 00:44:07,420 --> 00:44:08,350 >> JASON Hirschhorn: Kan du säger det en gång till? 892 00:44:08,350 --> 00:44:11,640 >> PUBLIK: Om vårt nummer är större än jag, gå till höger. 893 00:44:11,640 --> 00:44:24,900 894 00:44:24,900 --> 00:44:26,690 >> JASON Hirschhorn: Excellent jobb på pseudokod. 895 00:44:26,690 --> 00:44:28,700 Låt oss göra det i verkliga kod. 896 00:44:28,700 --> 00:44:33,280 Och återigen, denna pseudo kommer förmodligen få dig, eftersom det är 897 00:44:33,280 --> 00:44:35,480 korrekt, 50% på den här frågan. 898 00:44:35,480 --> 00:44:39,720 Men denna pseudo översätter också en till ett i huvudsak i koden. 899 00:44:39,720 --> 00:44:44,380 >> Så låt oss göra det i C. Vem kan ge mig den första raden i koden? 900 00:44:44,380 --> 00:44:48,390 Egentligen först, innan jag gör det, låt mig stanna - 901 00:44:48,390 --> 00:44:49,260 >> PUBLIK: Jag har en fråga. 902 00:44:49,260 --> 00:44:52,430 Varför gjorde du indrag på linje jag gav dig? 903 00:44:52,430 --> 00:44:54,160 >> JASON Hirschhorn: Eftersom Jag kunde inte skriva. 904 00:44:54,160 --> 00:44:55,240 Jag vet inte. 905 00:44:55,240 --> 00:44:55,650 Du har rätt. 906 00:44:55,650 --> 00:44:57,780 Den linjen ska vara borta. 907 00:44:57,780 --> 00:45:11,600 908 00:45:11,600 --> 00:45:14,480 >> OK, här är vår funktion. 909 00:45:14,480 --> 00:45:18,090 Och låt mig stanna, också, vår definition av en nod. 910 00:45:18,090 --> 00:45:23,320 911 00:45:23,320 --> 00:45:27,180 Vad händer om vi inte skriva typedef? 912 00:45:27,180 --> 00:45:30,240 Är det någon som vet? 913 00:45:30,240 --> 00:45:32,570 >> PUBLIK: Det skulle inte kompilera. 914 00:45:32,570 --> 00:45:33,860 >> JASON Hirschhorn: Det skulle kompilera, ja. 915 00:45:33,860 --> 00:45:37,120 >> PUBLIK: Skulle det bara förklara en exempel istället för att göra det till en ny 916 00:45:37,120 --> 00:45:39,840 typ du kan deklarera flera fall av? 917 00:45:39,840 --> 00:45:41,700 >> JASON Hirschhorn: Så det skulle inte vet - det skulle inte 918 00:45:41,700 --> 00:45:43,120 bara förklara en typ. 919 00:45:43,120 --> 00:45:46,150 Du kan fortfarande göra en massa noder. 920 00:45:46,150 --> 00:45:48,070 >> PUBLIK: Men skulle inte vi behöva skriva struct node varje gång? 921 00:45:48,070 --> 00:45:48,640 >> JASON Hirschhorn: Det stämmer. 922 00:45:48,640 --> 00:45:50,960 Du måste skriva struct node varje gång, istället för att bara nod. 923 00:45:50,960 --> 00:45:55,270 Men med typedef kan du bara skriva nod varenda gång. 924 00:45:55,270 --> 00:45:58,240 OK, vem har inte gett - Ja, Avica. 925 00:45:58,240 --> 00:46:01,520 >> PUBLIK: Om root lika jämlikar null, returnera false. 926 00:46:01,520 --> 00:46:07,130 927 00:46:07,130 --> 00:46:09,490 >> JASON Hirschhorn: Great, och det är vår bas fallet. 928 00:46:09,490 --> 00:46:11,200 Nästa rad kod. 929 00:46:11,200 --> 00:46:13,999 Någon som inte har gett mig en kodrad ännu? 930 00:46:13,999 --> 00:46:14,945 Yeah. 931 00:46:14,945 --> 00:46:23,360 >> PUBLIK: Root pilen i är lika lika med jag. 932 00:46:23,360 --> 00:46:27,260 Tillbaka sedan sant. 933 00:46:27,260 --> 00:46:29,162 >> JASON Hirschhorn: Great. 934 00:46:29,162 --> 00:46:32,048 Nästa rad? 935 00:46:32,048 --> 00:46:32,790 Yeah. 936 00:46:32,790 --> 00:46:34,010 Någon annan? 937 00:46:34,010 --> 00:46:36,774 Och sedan kan du gå nästa. 938 00:46:36,774 --> 00:46:44,820 >> PUBLIK: Else om root pil Jag är mindre än jag tillbaka 939 00:46:44,820 --> 00:46:47,737 Funktionen heter find rot - 940 00:46:47,737 --> 00:46:50,611 >> JASON Hirschhorn: Förlåt. 941 00:46:50,611 --> 00:46:56,272 >> PUBLIK: Retur find root pekar på vänster kommatecken i.. 942 00:46:56,272 --> 00:47:01,760 943 00:47:01,760 --> 00:47:08,440 >> JASON Hirschhorn: Så om ri är större än saken i trädet, vill vi 944 00:47:08,440 --> 00:47:09,573 gå till vänster? 945 00:47:09,573 --> 00:47:11,790 >> PUBLIK: Nej, jag hade det bytt. 946 00:47:11,790 --> 00:47:13,040 >> JASON Hirschhorn: Vilken? 947 00:47:13,040 --> 00:47:16,310 948 00:47:16,310 --> 00:47:16,950 >> PUBLIK: Nej, ja. 949 00:47:16,950 --> 00:47:19,050 Jag har en mindre än underteckna det. 950 00:47:19,050 --> 00:47:22,890 >> JASON Hirschhorn: Höger, om ri är mindre än vad som finns i roten - 951 00:47:22,890 --> 00:47:25,660 vår nuvarande rot - då vi vill gå till vänster. 952 00:47:25,660 --> 00:47:26,960 Och vad är den sista raden, eller hur? 953 00:47:26,960 --> 00:47:30,930 >> PUBLIK: I grund och botten samma sak, utom växla större än eller 954 00:47:30,930 --> 00:47:34,690 som är lika med mindre än och vänster till höger. 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 Är det någon som har några frågor om det här? 958 00:47:48,430 --> 00:47:52,560 Så en del andra saker som skulle vara korrekta är att 959 00:47:52,560 --> 00:47:53,810 kan vara den-ltiff. 960 00:47:53,810 --> 00:47:56,520 961 00:47:56,520 --> 00:47:59,520 Gissa, tekniskt sett, ingen av dessa egentligen också vara-ltiff. 962 00:47:59,520 --> 00:48:00,950 >> Dessutom finns det nog bara ett fall här nere. 963 00:48:00,950 --> 00:48:02,380 Så det är nog din sista fallet. 964 00:48:02,380 --> 00:48:04,000 Du behöver inte ens att-ltiff. 965 00:48:04,000 --> 00:48:06,160 Men antagligen bra att skriva det, att vara tydlig. 966 00:48:06,160 --> 00:48:06,660 Yeah. 967 00:48:06,660 --> 00:48:09,200 >> PUBLIK: Så du tror inte att testet - om vi gör fel, till exempel, 968 00:48:09,200 --> 00:48:11,725 i syntax - 969 00:48:11,725 --> 00:48:13,990 små syntaxfel - 970 00:48:13,990 --> 00:48:17,810 hur som får tas i frågesport? 971 00:48:17,810 --> 00:48:21,300 >> JASON Hirschhorn: Generellt på frågesport, små syntaxfel eller små 972 00:48:21,300 --> 00:48:24,010 stil felen inte förlorar du poäng. 973 00:48:24,010 --> 00:48:26,610 Så om du har glömt ett semikolon Här skulle det vara OK. 974 00:48:26,610 --> 00:48:30,290 Om du har glömt att stänga denna parentes, det skulle vara OK. 975 00:48:30,290 --> 00:48:34,880 >> Enorma syntaxfel som förändrar funktionella innebörden av koden 976 00:48:34,880 --> 00:48:37,600 dramatiskt, kan du få tas bort poäng för. 977 00:48:37,600 --> 00:48:40,330 Eller i allmänhet, bara gradering dig på om din 978 00:48:40,330 --> 00:48:42,150 kod fungerar, även - 979 00:48:42,150 --> 00:48:44,830 inte dess design så mycket, och inte dess stil. 980 00:48:44,830 --> 00:48:50,780 981 00:48:50,780 --> 00:48:55,480 >> Låt oss nu koda en iterativ version av find. 982 00:48:55,480 --> 00:49:00,400 983 00:49:00,400 --> 00:49:03,450 Så det kommer att vara ganska lika, men det säkert kommer att bli 984 00:49:03,450 --> 00:49:06,250 några viktiga skillnader. 985 00:49:06,250 --> 00:49:09,160 Men vår pseudokod kan förmodligen gå - 986 00:49:09,160 --> 00:49:11,610 vi kan fortfarande ta en linje av pseudokod och räkna ut vad det 987 00:49:11,610 --> 00:49:14,160 linjen är i det här fallet. 988 00:49:14,160 --> 00:49:18,010 >> Så i en iterativ version, vad tror du, Julia, bör 989 00:49:18,010 --> 00:49:19,260 vara den första raden? 990 00:49:19,260 --> 00:49:23,100 991 00:49:23,100 --> 00:49:26,920 >> PUBLIK: Återigen, i iterativ boolean, du måste ställa in en for-loop, eller hur? 992 00:49:26,920 --> 00:49:27,660 >> JASON Hirschhorn: OK. 993 00:49:27,660 --> 00:49:38,480 >> PUBLIK: Så för liknande, k, för x är lika med 0, x är mindre än jag. 994 00:49:38,480 --> 00:49:42,260 Eller nej, x är mindre än den storleken på trädet. 995 00:49:42,260 --> 00:49:42,760 >> JASON Hirschhorn: Trädet. 996 00:49:42,760 --> 00:49:46,660 Så vi vet inte riktigt storleken på träd, och vi vet inte riktigt för 997 00:49:46,660 --> 00:49:48,900 hur många gånger vi kan gå, så vad är en annan typ av slinga som kan vara 998 00:49:48,900 --> 00:49:50,150 bättre i detta fall? 999 00:49:50,150 --> 00:49:53,250 1000 00:49:53,250 --> 00:49:55,244 >> PUBLIK: Om annat? 1001 00:49:55,244 --> 00:49:57,070 >> JASON Hirschhorn: Om annat inte kan vara en ögla. 1002 00:49:57,070 --> 00:49:58,935 Så vad är en typ av slinga kan vi bara kvar till några fall är uppfyllt? 1003 00:49:58,935 --> 00:50:07,250 1004 00:50:07,250 --> 00:50:11,560 Vad är den enda typ av loop i C förutom en for-loop? 1005 00:50:11,560 --> 00:50:11,930 >> PUBLIK: Medan. 1006 00:50:11,930 --> 00:50:13,380 >> JASON Hirschhorn: När, exakt. 1007 00:50:13,380 --> 00:50:16,430 I en while-slinga, inte behöver veta hur - 1008 00:50:16,430 --> 00:50:18,450 en while-slinga och slinga kan göra exakt samma sak, men det fina med 1009 00:50:18,450 --> 00:50:21,500 om en while-slinga är att vi inte behöver att veta hur stor vår trädet är. 1010 00:50:21,500 --> 00:50:23,060 Så vi kommer att gå fram till vad? 1011 00:50:23,060 --> 00:50:25,880 1012 00:50:25,880 --> 00:50:28,032 >> PUBLIK: Tills det är lika storlek - 1013 00:50:28,032 --> 00:50:32,320 >> JASON Hirschhorn: Tja, det är mycket liknar vår rekursiva fallet. 1014 00:50:32,320 --> 00:50:33,360 Så - 1015 00:50:33,360 --> 00:50:36,470 >> PUBLIK: Medan rot Jag är inte lika med jag. 1016 00:50:36,470 --> 00:50:37,620 >> JASON Hirschhorn: Det är riktigt nära. 1017 00:50:37,620 --> 00:50:39,430 Även rot i - 1018 00:50:39,430 --> 00:50:40,610 Låt oss prova. 1019 00:50:40,610 --> 00:50:41,180 Jag tror inte att [OHÖRBAR] 1020 00:50:41,180 --> 00:50:43,026 där rot jag inte lika i.. 1021 00:50:43,026 --> 00:50:47,380 1022 00:50:47,380 --> 00:50:49,460 Vi kan behöva ändra det i en liten bit, men det låter som det är ganska 1023 00:50:49,460 --> 00:50:50,160 bra, för nu. 1024 00:50:50,160 --> 00:50:51,710 Så vi kommer att göra det. 1025 00:50:51,710 --> 00:50:55,660 >> Kom också ihåg, vi kan inte ta på sig per fråga. 1026 00:50:55,660 --> 00:50:57,880 Du behöver inte anta att root kommer att vara icke-noll. 1027 00:50:57,880 --> 00:51:01,914 Så vad tror du att det mycket första vi bör göra är? 1028 00:51:01,914 --> 00:51:02,770 >> PUBLIK: Bara göra samma sak sak som tidigare. 1029 00:51:02,770 --> 00:51:05,260 Om roten är lika jämlikar null, returnera false. 1030 00:51:05,260 --> 00:51:11,030 1031 00:51:11,030 --> 00:51:12,130 >> JASON Hirschhorn: Great. 1032 00:51:12,130 --> 00:51:13,820 Så det kan vara null. 1033 00:51:13,820 --> 00:51:15,810 Så vi vill bli av den direkt. 1034 00:51:15,810 --> 00:51:19,560 Och sedan ska vi kontrollera om rot jag inte lika i.. 1035 00:51:19,560 --> 00:51:24,480 Så säger vi söker i detta träd för 3, rot jag inte lika i, nu 1036 00:51:24,480 --> 00:51:25,950 vi är i vår while-slinga. 1037 00:51:25,950 --> 00:51:27,500 Vad vill vi göra? 1038 00:51:27,500 --> 00:51:32,320 1039 00:51:32,320 --> 00:51:35,430 Och återigen, det kommer att vara ganska liknar vår rekursiva versionen. 1040 00:51:35,430 --> 00:51:36,230 Yeah. 1041 00:51:36,230 --> 00:51:40,470 >> PUBLIK: Så du skulle vilja att iterera, eller fortsätt ner trädet så länge 1042 00:51:40,470 --> 00:51:42,400 roten inte är lika med noll. 1043 00:51:42,400 --> 00:51:45,120 1044 00:51:45,120 --> 00:51:46,640 >> JASON Hirschhorn: Så länge rot är inte lika med noll? 1045 00:51:46,640 --> 00:51:50,200 >> PUBLIK: Roten streck i inte är lika med noll. 1046 00:51:50,200 --> 00:51:51,220 Bara roten, ja. 1047 00:51:51,220 --> 00:51:52,920 Som länge som roten är inte lika med noll. 1048 00:51:52,920 --> 00:51:54,240 >> JASON Hirschhorn: Så du vill att ändra detta i roten 1049 00:51:54,240 --> 00:51:56,590 inte är lika med noll? 1050 00:51:56,590 --> 00:51:59,020 >> PUBLIK: Ja. 1051 00:51:59,020 --> 00:52:00,800 >> PUBLIK: Vi skulle kunna kombinera dessa, eller hur? 1052 00:52:00,800 --> 00:52:02,990 Vi behöver inte det om, till en början. 1053 00:52:02,990 --> 00:52:05,180 >> JASON Hirschhorn: OK, så om vi inte - 1054 00:52:05,180 --> 00:52:08,140 om vi kombinerar dem, så vi kommer att göra medan roten inte är lika noll, och 1055 00:52:08,140 --> 00:52:10,800 om roten råkar vara noll vid början, vad gör vi här nere? 1056 00:52:10,800 --> 00:52:11,450 >> PUBLIK: returnera false. 1057 00:52:11,450 --> 00:52:12,730 >> JASON Hirschhorn: Great. 1058 00:52:12,730 --> 00:52:14,110 Så båda hållen förmodligen skulle ha fungerat. 1059 00:52:14,110 --> 00:52:15,645 Detta är ett annat sätt, och detta kombinerar den. 1060 00:52:15,645 --> 00:52:18,950 Men återigen, om du gjorde hur som helst, vi är inte att ta av designen 1061 00:52:18,950 --> 00:52:19,800 pekar på frågesport. 1062 00:52:19,800 --> 00:52:21,020 Men det ser bra ut. 1063 00:52:21,020 --> 00:52:23,940 >> Så medan roten inte är lika null, vad är det första 1064 00:52:23,940 --> 00:52:25,400 Det vi vill kontrollera? 1065 00:52:25,400 --> 00:52:26,330 Någon annan? 1066 00:52:26,330 --> 00:52:29,720 Null, vad är det första? 1067 00:52:29,720 --> 00:52:32,850 >> Publik: Om ri är mindre än - 1068 00:52:32,850 --> 00:52:36,140 åh, antar jag, om vi redan hittade den i roten. 1069 00:52:36,140 --> 00:52:40,830 Så om rot pilen i är lika med i - 1070 00:52:40,830 --> 00:52:40,990 >> JASON Hirschhorn: Förlåt? 1071 00:52:40,990 --> 00:52:45,840 >> PUBLIK: Om root pil i är lika lika med i - 1072 00:52:45,840 --> 00:52:47,090 >> JASON Hirschhorn: Vad gör vi? 1073 00:52:47,090 --> 00:52:50,300 1074 00:52:50,300 --> 00:52:51,550 >> PUBLIK: Returnera sant. 1075 00:52:51,550 --> 00:52:58,850 1076 00:52:58,850 --> 00:52:59,280 >> JASON Hirschhorn: Great. 1077 00:52:59,280 --> 00:53:00,530 Och vad händer nu? 1078 00:53:00,530 --> 00:53:04,510 1079 00:53:04,510 --> 00:53:06,843 Jeff, vad är nästa kodrad? 1080 00:53:06,843 --> 00:53:16,190 >> PUBLIK: Om jag är mindre än roten pil i, då roten lika rot pil vänster. 1081 00:53:16,190 --> 00:53:21,550 >> JASON Hirschhorn: Root jämlikar rot pil vänster. 1082 00:53:21,550 --> 00:53:24,530 Så det är förmodligen det största Skillnaden här i denna iterativa 1083 00:53:24,530 --> 00:53:26,600 version i motsats till den rekursiv version. 1084 00:53:26,600 --> 00:53:28,970 Den rekursiva versionen, vi anropa funktionen igen. 1085 00:53:28,970 --> 00:53:32,640 Vi kommer att uppdatera rot när vi kallar den nya funktionen. 1086 00:53:32,640 --> 00:53:34,170 Här är vi inte ringer en ny funktion. 1087 00:53:34,170 --> 00:53:37,610 Vi är helt enkelt bara att uppdatera rot i denna funktion. 1088 00:53:37,610 --> 00:53:38,880 Det är utmärkt. 1089 00:53:38,880 --> 00:53:40,730 Och vad är den sista kodraden? 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 >> PUBLIK: Else rot equals rot pil höger. 1093 00:53:48,290 --> 00:53:49,492 >> JASON Hirschhorn: Förlåt? 1094 00:53:49,492 --> 00:53:52,340 >> PUBLIK: Root equals rot pil höger. 1095 00:53:52,340 --> 00:53:55,590 1096 00:53:55,590 --> 00:53:57,140 >> JASON Hirschhorn: Kan du också skriva något sådant här? 1097 00:53:57,140 --> 00:54:02,786 1098 00:54:02,786 --> 00:54:03,890 >> PUBLIK: Jag har ingen aning. 1099 00:54:03,890 --> 00:54:05,140 >> JASON Hirschhorn: Du kan inte. 1100 00:54:05,140 --> 00:54:07,302 1101 00:54:07,302 --> 00:54:08,270 Du kan inte göra plus jämlikar. 1102 00:54:08,270 --> 00:54:10,780 OK, så det ser bra ut. 1103 00:54:10,780 --> 00:54:13,620 Varför gör vi inte bara att för att rensa den. 1104 00:54:13,620 --> 00:54:15,220 Det ser bra ut, och det skulle fungera. 1105 00:54:15,220 --> 00:54:16,920 Och vi skulle bryta ut. 1106 00:54:16,920 --> 00:54:21,460 >> Om root vänster var noll eller rot höger var noll, skulle vi komma upp hit. 1107 00:54:21,460 --> 00:54:22,470 Root skulle vara lika med noll. 1108 00:54:22,470 --> 00:54:24,270 Vi skulle bryta sig ur vår slinga, och vi skulle returnera false. 1109 00:54:24,270 --> 00:54:26,280 Så när vi bryta sig ur loop, återvänder vi falskt. 1110 00:54:26,280 --> 00:54:29,520 1111 00:54:29,520 --> 00:54:32,793 >> Och återigen, var perfekt för en while-slinga här eftersom vi inte vet hur 1112 00:54:32,793 --> 00:54:33,850 big vårt träd är. 1113 00:54:33,850 --> 00:54:36,460 Vi försökte skriva på för slingan, men vi insåg du har att räkna ut hur 1114 00:54:36,460 --> 00:54:37,410 stort det är i förväg. 1115 00:54:37,410 --> 00:54:38,720 Yeah. 1116 00:54:38,720 --> 00:54:41,790 >> PUBLIK: Om detta inte var en binär sökträd, skulle det vara riktigt matte-y 1117 00:54:41,790 --> 00:54:44,220 att skriva det iterativt, eller hur? 1118 00:54:44,220 --> 00:54:47,170 Liksom, om det var ett träd, men inte nödvändigtvis - 1119 00:54:47,170 --> 00:54:49,730 så det var inte allt mindre på vänster, och allt större till höger. 1120 00:54:49,730 --> 00:54:52,540 Det skulle vara riktigt svårt att iterera över det, eller hur? 1121 00:54:52,540 --> 00:54:55,720 Vi skulle behöva spara det som var tidigare på i trädet och gå tillbaka, 1122 00:54:55,720 --> 00:54:56,970 och sånt. 1123 00:54:56,970 --> 00:54:59,690 1124 00:54:59,690 --> 00:55:02,010 >> JASON Hirschhorn: Om det inte var en binär sökträd, om det bara var en 1125 00:55:02,010 --> 00:55:04,740 träd och det var inte sorteras ut så här - 1126 00:55:04,740 --> 00:55:07,440 och vi insåg tidigare när Anna hjälpte oss att göra det 1127 00:55:07,440 --> 00:55:08,800 sorterad hjälper oss en hel del - 1128 00:55:08,800 --> 00:55:12,610 vi skulle behöva, ja, alltid spara där vi var tidigare. 1129 00:55:12,610 --> 00:55:14,430 Men det kan finnas en hel del där vi var previouslys. 1130 00:55:14,430 --> 00:55:17,730 Det kan finnas en hel del överordnade noder. 1131 00:55:17,730 --> 00:55:22,530 >> Förmodligen det bästa sättet att göra det skulle vara att hålla skjuta saker på vissa 1132 00:55:22,530 --> 00:55:24,170 typ av skorsten eller kö. 1133 00:55:24,170 --> 00:55:26,030 Du skulle aldrig behöva koda det här eftersom det är ett svårt problem. 1134 00:55:26,030 --> 00:55:30,820 Men du skjuta vissa saker på en bunt eller kö och sedan pop dem, och 1135 00:55:30,820 --> 00:55:31,890 sedan utvärdera dem. 1136 00:55:31,890 --> 00:55:34,200 >> Och sedan har en annan sak där du faktiskt är att sätta noderna, och 1137 00:55:34,200 --> 00:55:36,090 sedan skapa det, och sedan söka igenom det. 1138 00:55:36,090 --> 00:55:38,700 Det kan vara det bästa sättet att göra det. 1139 00:55:38,700 --> 00:55:42,410 OK, några frågor om det här problemet? 1140 00:55:42,410 --> 00:55:44,670 >> PUBLIK: Det här är på en relaterad not. 1141 00:55:44,670 --> 00:55:50,460 Kommer vi att jämföra körtider för hashtabeller, binär 1142 00:55:50,460 --> 00:55:52,160 sökträd, et cetera? 1143 00:55:52,160 --> 00:55:54,310 >> JASON Hirschhorn: Förmodligen. 1144 00:55:54,310 --> 00:55:56,150 Så låt oss göra det riktigt snabbt. 1145 00:55:56,150 --> 00:55:58,490 Gångtid för hash table - 1146 00:55:58,490 --> 00:55:59,090 vilka är de andra? 1147 00:55:59,090 --> 00:56:00,050 Binär trädet? 1148 00:56:00,050 --> 00:56:02,920 >> PUBLIK: Länklistor. 1149 00:56:02,920 --> 00:56:04,780 >> JASON Hirschhorn: OK, låt oss göra insats. 1150 00:56:04,780 --> 00:56:09,980 Vad är den stora O för insats på en hash-tabell? 1151 00:56:09,980 --> 00:56:13,080 1152 00:56:13,080 --> 00:56:15,285 Vilka antaganden du gör? 1153 00:56:15,285 --> 00:56:17,760 >> PUBLIK: Du sätter in på början av länklistan. 1154 00:56:17,760 --> 00:56:19,860 >> JASON Hirschhorn: Förmodligen den första antagande är att det inte finns några kollisioner. 1155 00:56:19,860 --> 00:56:22,340 Om inga kollisioner, då införingstiden är en. 1156 00:56:22,340 --> 00:56:26,560 Om det finns kollisioner, och du är gör separat kedja och infoga 1157 00:56:26,560 --> 00:56:31,880 i början av länklistan, då insättning är också konstant. 1158 00:56:31,880 --> 00:56:34,700 >> Om du gör en hash-tabell, men du har en annan metod för att hantera 1159 00:56:34,700 --> 00:56:36,040 med kollisioner, vad är en annan metod? 1160 00:56:36,040 --> 00:56:41,580 1161 00:56:41,580 --> 00:56:42,960 Vad är är en annan metod att hantera 1162 00:56:42,960 --> 00:56:44,205 kollision i en hash-tabell? 1163 00:56:44,205 --> 00:56:44,915 >> PUBLIK: Linjär programmering. 1164 00:56:44,915 --> 00:56:45,540 >> JASON Hirschhorn: Linjär programmering. 1165 00:56:45,540 --> 00:56:47,770 Så vi kommer att fortsätta leta för nästa öppen plats. 1166 00:56:47,770 --> 00:56:50,390 Det är inte konstant inför tid. 1167 00:56:50,390 --> 00:56:52,266 Du kan behöva gå igenom hela tabellen, så att 1168 00:56:52,266 --> 00:56:53,936 kan vara stora O n. 1169 00:56:53,936 --> 00:56:54,740 Yeah. 1170 00:56:54,740 --> 00:56:57,690 >> PUBLIK: Annars bara kedja? 1171 00:56:57,690 --> 00:57:00,160 >> JASON Hirschhorn: Vi gjorde separat kedja. 1172 00:57:00,160 --> 00:57:00,720 Det var den första. 1173 00:57:00,720 --> 00:57:01,560 Det är vad länken listan. 1174 00:57:01,560 --> 00:57:03,720 Den fantasinamn är separat kedja. 1175 00:57:03,720 --> 00:57:06,880 Det kan vara någon typ av liststrukturen vi råkar göra i länklista. 1176 00:57:06,880 --> 00:57:10,490 >> Så återigen, insättning på en hash-tabell skulle kunna vara konstant tid. 1177 00:57:10,490 --> 00:57:13,160 Hur är det med insättning på en stacker kö? 1178 00:57:13,160 --> 00:57:19,260 1179 00:57:19,260 --> 00:57:20,640 >> PUBLIK: Är inte det konstant? 1180 00:57:20,640 --> 00:57:21,530 >> JASON Hirschhorn: Det är konstant tid. 1181 00:57:21,530 --> 00:57:23,420 Du är bara att trycka på den. 1182 00:57:23,420 --> 00:57:24,120 OK. 1183 00:57:24,120 --> 00:57:25,380 Insättning, vilka var de andra? 1184 00:57:25,380 --> 00:57:27,100 På ett försök? 1185 00:57:27,100 --> 00:57:30,252 Vad är stor O för insättning på ett försök? 1186 00:57:30,252 --> 00:57:32,808 >> PUBLIK: Längd är konstant. 1187 00:57:32,808 --> 00:57:34,560 Längd på det längsta - 1188 00:57:34,560 --> 00:57:36,998 längden av ordet du sätter in. 1189 00:57:36,998 --> 00:57:38,210 >> JASON Hirschhorn: Förlåt? 1190 00:57:38,210 --> 00:57:39,120 Vänta, så vad var det jag hör? 1191 00:57:39,120 --> 00:57:40,260 Du sa - vad sa du? 1192 00:57:40,260 --> 00:57:41,650 Vad var ditt svar, Marcus? 1193 00:57:41,650 --> 00:57:43,640 >> Publik: Längden av ordet du sätter in i tecken, 1194 00:57:43,640 --> 00:57:45,480 antar att det är ett tecken försök. 1195 00:57:45,480 --> 00:57:46,840 >> JASON Hirschhorn: OK, så längden av ordet. 1196 00:57:46,840 --> 00:57:49,500 Vi kommer att göra ett antagande om att det är en teckensträng. 1197 00:57:49,500 --> 00:57:51,930 Du sa något annat, dock. 1198 00:57:51,930 --> 00:57:55,490 Du sa längden på den längsta ordet. 1199 00:57:55,490 --> 00:57:57,600 >> PUBLIK: Det är bara konstant, eller hur? 1200 00:57:57,600 --> 00:57:58,440 >> JASON Hirschhorn: Varför skulle det vara konstant? 1201 00:57:58,440 --> 00:58:00,970 >> PUBLIK: Liksom, om du använder stora O notation, då den inte varierar beroende 1202 00:58:00,970 --> 00:58:04,680 på antal saker som är redan i försök. 1203 00:58:04,680 --> 00:58:07,344 >> JASON Hirschhorn: Så vi skulle säger att det är konstant tid. 1204 00:58:07,344 --> 00:58:11,840 Det är konstant sätts in, och det beror på att denna idé - 1205 00:58:11,840 --> 00:58:14,820 säga att vi har ett ord som är 45, eller ett ord som är 60, att 1206 00:58:14,820 --> 00:58:16,800 har ett konstant antal. 1207 00:58:16,800 --> 00:58:21,050 Och det skulle bara läggas i konstant tid. 1208 00:58:21,050 --> 00:58:26,060 >> I praktiken är emellertid skulle det inte vara, uppenbarligen inträffa i en millisekund, 1209 00:58:26,060 --> 00:58:26,590 till exempel. 1210 00:58:26,590 --> 00:58:28,880 Men vi skulle säga stort O är konstant för ett försök. 1211 00:58:28,880 --> 00:58:31,330 Och det är en av dess största fördelarna. 1212 00:58:31,330 --> 00:58:33,330 >> Vad sägs om att föras in i en länklista? 1213 00:58:33,330 --> 00:58:37,220 Bara en generisk, sorterade länklista? 1214 00:58:37,220 --> 00:58:37,700 Yeah. 1215 00:58:37,700 --> 00:58:38,530 >> PUBLIK: Jag hade en fråga. 1216 00:58:38,530 --> 00:58:42,670 I testet, skulle de någonsin frågar oss ingstiden som är fyra steg, 1217 00:58:42,670 --> 00:58:43,270 eller något? 1218 00:58:43,270 --> 00:58:44,300 Eller är det bara - 1219 00:58:44,300 --> 00:58:47,670 när du säger ingstiden är en, det betyder bara konstant tid? 1220 00:58:47,670 --> 00:58:49,770 >> JASON Hirschhorn: Ja, de skulle alltid fråga, är det stort O n? 1221 00:58:49,770 --> 00:58:51,440 Big O av log n? 1222 00:58:51,440 --> 00:58:53,960 N kvadrat konstant. 1223 00:58:53,960 --> 00:58:56,520 Det är egentligen den enda de du behöver veta. 1224 00:58:56,520 --> 00:58:58,420 Hur är det med insättning på sorterade länklista? 1225 00:58:58,420 --> 00:58:59,440 >> PUBLIK: Jag hade en fråga - 1226 00:58:59,440 --> 00:58:59,980 en fråga - 1227 00:58:59,980 --> 00:59:01,060 >> JASON Hirschhorn: Vad är svaret på den frågan, men? 1228 00:59:01,060 --> 00:59:02,120 >> PUBLIK: Vänta, vad gjorde ni? 1229 00:59:02,120 --> 00:59:06,750 >> JASON Hirschhorn: Vad är stort O i insättning i en sorterad länklista? 1230 00:59:06,750 --> 00:59:07,070 >> PUBLIK: en? 1231 00:59:07,070 --> 00:59:09,400 Nej vänta, Nej vänta, n. 1232 00:59:09,400 --> 00:59:11,420 >> JASON Hirschhorn: N. Förutom länklistan. 1233 00:59:11,420 --> 00:59:12,706 Och vad var din fråga? 1234 00:59:12,706 --> 00:59:16,440 >> PUBLIK: Så skulle du skriva o av k eller o av 1 för - 1235 00:59:16,440 --> 00:59:18,150 >> JASON Hirschhorn: Oh. 1236 00:59:18,150 --> 00:59:21,830 Jag skulle skriva o 1, antagligen. 1237 00:59:21,830 --> 00:59:24,160 Det fanns en annan datastruktur som skulle ha varit bra. 1238 00:59:24,160 --> 00:59:25,730 Träd, binärt sökträd. 1239 00:59:25,730 --> 00:59:27,510 Vad är insättning på ett binärt sökträd? 1240 00:59:27,510 --> 00:59:31,190 1241 00:59:31,190 --> 00:59:33,900 >> PUBLIK: Logga in. 1242 00:59:33,900 --> 00:59:39,260 >> JASON Hirschhorn: Så, vad är det värsta fallet i ett binärt sökträd? 1243 00:59:39,260 --> 00:59:45,350 Så om vi råkar börja på 5, och varje antalet är större än 5, så 1244 00:59:45,350 --> 00:59:48,760 vi har 5, 7, 9, 11, et cetera. 1245 00:59:48,760 --> 00:59:52,255 I det här fallet, det är i princip bara en länk lista, och vi måste sätta in alla 1246 00:59:52,255 --> 00:59:52,680 vägen i slutet. 1247 00:59:52,680 --> 00:59:54,350 Så det är stor O n. 1248 00:59:54,350 --> 00:59:57,720 >> Det kan vara vår värsta fall på ett binärt sökträd. 1249 00:59:57,720 --> 01:00:00,890 Självklart skulle du aldrig bygga ett binärt sökträd med 5 i 1250 01:00:00,890 --> 01:00:04,270 mellersta, att veta 5 skulle vara det lägsta numret. 1251 01:00:04,270 --> 01:00:08,030 Men det kan vara, om du är börjar från noll. 1252 01:00:08,030 --> 01:00:10,980 Eventuella frågor om detta innan jag gå vidare till en annan fråga? 1253 01:00:10,980 --> 01:00:11,560 Det var en bra fråga. 1254 01:00:11,560 --> 01:00:15,100 Jag skulle känna stor O - 1255 01:00:15,100 --> 01:00:18,620 >> PUBLIK: Hur är det att söka för de fyra? 1256 01:00:18,620 --> 01:00:20,400 >> JASON Hirschhorn: Definitivt vi gjorde sökning och sortering. 1257 01:00:20,400 --> 01:00:22,160 Vi gjorde alla dessa algoritmer, höger. 1258 01:00:22,160 --> 01:00:23,390 Vänta, var det för Quiz 1? 1259 01:00:23,390 --> 01:00:23,980 Var som omfattas - 1260 01:00:23,980 --> 01:00:25,860 Skulle du ha det Frågan om Quiz 1? 1261 01:00:25,860 --> 01:00:29,650 Den stora O runtime av binär sökning, insättnings sortera, bubbla sort? 1262 01:00:29,650 --> 01:00:30,160 >> PUBLIK: Ja. 1263 01:00:30,160 --> 01:00:32,790 >> JASON Hirschhorn: Om du hade att Frågan om Quiz 0, oddsen är att du inte kommer 1264 01:00:32,790 --> 01:00:35,180 få exakt samma fråga på Quiz 1. 1265 01:00:35,180 --> 01:00:36,300 Kanske ändå bra att känna dem. 1266 01:00:36,300 --> 01:00:38,520 Du ska förhoppningsvis känna gh redan. 1267 01:00:38,520 --> 01:00:40,740 >> Men andra logaritmiska drifttider är nog bra att veta. 1268 01:00:40,740 --> 01:00:42,890 Saker som inte täcks på Quiz 0. 1269 01:00:42,890 --> 01:00:47,300 Liksom alla dessa aktörer på dessa abstrakta datatyper. 1270 01:00:47,300 --> 01:00:50,760 >> OK, låt oss gå vidare. 1271 01:00:50,760 --> 01:00:52,190 Den här borde vara ganska snabb. 1272 01:00:52,190 --> 01:00:56,170 Och det här är ett nytt språk har vi inte faktiskt kodat i tidigare. 1273 01:00:56,170 --> 01:00:59,300 Detta är en fråga frågar att koda i PHP. 1274 01:00:59,300 --> 01:01:01,950 Så överväga PHP-array nedan. 1275 01:01:01,950 --> 01:01:06,150 Skriv PHP och / eller HTML-koder så att den ut en tabell med två kolumner med TF 1276 01:01:06,150 --> 01:01:08,810 namn och hus. 1277 01:01:08,810 --> 01:01:11,600 >> Du har aldrig gjort det här förut, detta problem uppstår. 1278 01:01:11,600 --> 01:01:16,270 Men detta bör vara väl förtrogen med vad du gjorde i problem set 7. 1279 01:01:16,270 --> 01:01:21,250 Så jag skulle vara villig att satsa du kommer att vara ombedd att koda något i PHP som 1280 01:01:21,250 --> 01:01:23,880 är mycket likt det som du gjorde i problem set 7. 1281 01:01:23,880 --> 01:01:26,300 >> För det första är array inte så specifikt. 1282 01:01:26,300 --> 01:01:28,140 Vilken typ av array är detta? 1283 01:01:28,140 --> 01:01:29,080 >> PUBLIK: Associative. 1284 01:01:29,080 --> 01:01:31,250 >> JASON Hirschhorn: Det är en associativ array. 1285 01:01:31,250 --> 01:01:33,750 Och vad är skillnaden mellan en associativ array och ett objekt? 1286 01:01:33,750 --> 01:01:41,780 1287 01:01:41,780 --> 01:01:44,857 >> Publik: Ett ändamål array har ett index av heltal och en associativ array 1288 01:01:44,857 --> 01:01:47,814 är ett index på en sträng, eller något liknande. 1289 01:01:47,814 --> 01:01:50,570 1290 01:01:50,570 --> 01:01:54,880 >> JASON Hirschhorn: Så en matris med föremål skulle index för 1291 01:01:54,880 --> 01:01:57,090 heltal, men ett objekt har fält. 1292 01:01:57,090 --> 01:02:01,590 Den har de fältnamn som namnge, hus, student. 1293 01:02:01,590 --> 01:02:03,720 Har du en idé? 1294 01:02:03,720 --> 01:02:06,630 >> PUBLIK: Tja, associativ array är i PHP, eller hur? 1295 01:02:06,630 --> 01:02:07,880 Och objektet i JavaScript? 1296 01:02:07,880 --> 01:02:12,330 1297 01:02:12,330 --> 01:02:14,820 >> JASON Hirschhorn: Ärligt talat, det finns ingen verkliga skillnaden mellan de två. 1298 01:02:14,820 --> 01:02:19,540 Båda har strängar som nycklar, och kan har i stort sett allt som värde. 1299 01:02:19,540 --> 01:02:21,250 Olika språk kallar en sak associativ array, 1300 01:02:21,250 --> 01:02:22,750 en sak som ett objekt. 1301 01:02:22,750 --> 01:02:25,960 Så ärligt talat, det finns ingen riktig skillnad, men det finns säkert några 1302 01:02:25,960 --> 01:02:27,730 syntaktiska skillnader mellan de två. 1303 01:02:27,730 --> 01:02:28,200 Yeah. 1304 01:02:28,200 --> 01:02:33,580 >> PUBLIK: Så är objekt kodas även under huven som en hashtabell, då? 1305 01:02:33,580 --> 01:02:35,796 >> JASON Hirschhorn: Vad gör du menar, kodat under huven? 1306 01:02:35,796 --> 01:02:38,017 >> PUBLIK: Vi fick höra att associativ array var tekniskt en 1307 01:02:38,017 --> 01:02:39,960 hash-tabell. 1308 01:02:39,960 --> 01:02:44,510 Så är objekt också tekniskt en hash-tabell? 1309 01:02:44,510 --> 01:02:45,350 >> JASON Hirschhorn: Jag tänker inte att svara på den frågan. 1310 01:02:45,350 --> 01:02:46,600 Jag återkommer till dig på det. 1311 01:02:46,600 --> 01:02:48,980 Men jag skulle inte tänka på vare sig av dem så. 1312 01:02:48,980 --> 01:02:53,790 Men, på något sätt, associativ array och objekt, i allmänhet, människor använder dem 1313 01:02:53,790 --> 01:02:54,910 termer omväxlande. 1314 01:02:54,910 --> 01:02:57,630 I det här fallet, den svala delen är att du kan använda knapparna. 1315 01:02:57,630 --> 01:03:00,580 Strängar som nycklar, snarare än bara enkla siffror. 1316 01:03:00,580 --> 01:03:02,070 >> Så jag har pratat om detta ett tag. 1317 01:03:02,070 --> 01:03:04,090 Förhoppningsvis, vissa människor har kommit igång med detta. 1318 01:03:04,090 --> 01:03:08,050 Vi kommer att skriva lite PHP och HTML kod, så att vi får en två-kolonn 1319 01:03:08,050 --> 01:03:11,830 bord med TFS namn och hus. 1320 01:03:11,830 --> 01:03:15,380 >> OK, jag också skulle vilja ha en rubrik ro på denna tabell. 1321 01:03:15,380 --> 01:03:18,410 Så jag ska gå rakt in i detta. 1322 01:03:18,410 --> 01:03:20,770 Vi kommer att lämna in, nytt, och vi kommer att - 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 Hur startar jag en tabell? 1326 01:03:29,970 --> 01:03:32,090 Vad är taggen, Michael, att starta en tabell? 1327 01:03:32,090 --> 01:03:32,890 >> PUBLIK: Table. 1328 01:03:32,890 --> 01:03:34,020 >> JASON Hirschhorn: Table. 1329 01:03:34,020 --> 01:03:37,870 Och om jag öppnar ett tag, vad mer behöver jag? 1330 01:03:37,870 --> 01:03:39,810 >> PUBLIK: Ett huvud? 1331 01:03:39,810 --> 01:03:41,040 Eller, jag antar, klass. 1332 01:03:41,040 --> 01:03:41,730 >> JASON Hirschhorn: Så, sorry. 1333 01:03:41,730 --> 01:03:45,430 Antag att vi redan har skrivit doctab, HTML, allt det där. 1334 01:03:45,430 --> 01:03:50,230 Men om jag öppnar denna tabell tag, vad mer behöver jag skriva? 1335 01:03:50,230 --> 01:03:53,450 för validering av HTML? 1336 01:03:53,450 --> 01:03:55,000 >> PUBLIK: Stäng den. 1337 01:03:55,000 --> 01:03:56,050 >> JASON Hirschhorn: Stäng taggen. 1338 01:03:56,050 --> 01:03:57,575 Hur skriver jag en nära-table-tagg? 1339 01:03:57,575 --> 01:03:59,580 >> PUBLIK: Dot slash bord. 1340 01:03:59,580 --> 01:04:00,960 >> JASON Hirschhorn: Slash bord, stor. 1341 01:04:00,960 --> 01:04:02,730 Förmodligen är vettigt att skriva både av dem tillsammans eftersom 1342 01:04:02,730 --> 01:04:03,870 du måste göra det. 1343 01:04:03,870 --> 01:04:08,575 OK, om jag vill ha en rubrikrad, hur gör Jag skriver en rubrikrad med titlar? 1344 01:04:08,575 --> 01:04:11,650 1345 01:04:11,650 --> 01:04:19,290 >> PUBLIK: Är det mindre än 10 tim nära - 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 >> PUBLIK: Sedan samma sak, snedstrecket, ja. 1349 01:04:25,080 --> 01:04:26,610 >> JASON Hirschhorn: OK, och ge mig två kolumner. 1350 01:04:26,610 --> 01:04:30,100 1351 01:04:30,100 --> 01:04:33,210 >> PUBLIK: 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 Jag vill ha två kolumner. 1355 01:04:39,520 --> 01:04:40,960 Innebär detta att ge mig två kolumner? 1356 01:04:40,960 --> 01:04:43,880 Hur många kolumner är det här? 1357 01:04:43,880 --> 01:04:45,920 One. 1358 01:04:45,920 --> 01:04:47,170 Så låt oss kopiera och klistra in den här. 1359 01:04:47,170 --> 01:04:59,750 1360 01:04:59,750 --> 01:05:03,390 >> Så egentligen, på frågesport, all denna kod att vi har skrivit så långt var 1361 01:05:03,390 --> 01:05:04,710 faktiskt ges till dig. 1362 01:05:04,710 --> 01:05:06,200 Men du bör nog ändå vet hur man skriver det. 1363 01:05:06,200 --> 01:05:06,470 Yeah. 1364 01:05:06,470 --> 01:05:10,636 >> PUBLIK: Ditt hus är mellan de två. 1365 01:05:10,636 --> 01:05:11,130 >> JASON Hirschhorn: Boom. 1366 01:05:11,130 --> 01:05:12,720 Det ska gå just där, eller hur? 1367 01:05:12,720 --> 01:05:14,600 Bra samtal. 1368 01:05:14,600 --> 01:05:17,760 Så återigen, är all denna kod faktiskt ges till dig på själva testet. 1369 01:05:17,760 --> 01:05:19,570 Men det är kul att skriva det, och du bör veta hur man skriver det. 1370 01:05:19,570 --> 01:05:23,640 Så det är här du behöver att starta din kod. 1371 01:05:23,640 --> 01:05:25,150 Vad behöver vi för att skriva här? 1372 01:05:25,150 --> 01:05:28,640 1373 01:05:28,640 --> 01:05:30,565 >> Förlåt, jag måste ändra namnet på denna fil. 1374 01:05:30,565 --> 01:05:41,180 1375 01:05:41,180 --> 01:05:44,270 Så vi sparade den i en. HTML-fil, inte i en. PHP-fil. 1376 01:05:44,270 --> 01:05:47,030 Dessa saker skulle betyda något i ett. PHP-fil. 1377 01:05:47,030 --> 01:05:48,500 Så vi är i en. HTML-fil. 1378 01:05:48,500 --> 01:05:50,090 Vad är det första Jag måste skriva? 1379 01:05:50,090 --> 01:05:52,990 Jag vill lägga en del PHP kod på en HTML. 1380 01:05:52,990 --> 01:05:57,300 >> PUBLIK: PHP, som en annan morot och frågetecken PHP, eller hur? 1381 01:05:57,300 --> 01:05:58,310 >> JASON Hirschhorn: Great. 1382 01:05:58,310 --> 01:05:59,360 Och hur gör jag avslutar det? 1383 01:05:59,360 --> 01:06:02,510 >> PUBLIK: Med ett frågetecken. 1384 01:06:02,510 --> 01:06:03,120 >> JASON Hirschhorn: Det är utmärkt. 1385 01:06:03,120 --> 01:06:07,090 Det är det första jag behöver om jag vill att lägga lite PHP-kod här. 1386 01:06:07,090 --> 01:06:11,210 >> PUBLIK:. Jag trodde en PHP fil kan ta 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 ta lite HTML och visas. 1389 01:06:15,330 --> 01:06:16,450 Det var mitt fel. 1390 01:06:16,450 --> 01:06:18,300 Jag försökte bara härma vad det var på frågesport. 1391 01:06:18,300 --> 01:06:21,910 1392 01:06:21,910 --> 01:06:24,720 >> OK, ledsen att förvirra dig. 1393 01:06:24,720 --> 01:06:25,550 Ja, practice.HTML. 1394 01:06:25,550 --> 01:06:27,340 Nu ska vi sätta någon PHP-kod i. 1395 01:06:27,340 --> 01:06:30,530 Vilken är den första raden i PHP-kod jag ska skriva? 1396 01:06:30,530 --> 01:06:33,360 Jag ska gå igenom denna samling och göra det till en tabell. 1397 01:06:33,360 --> 01:06:34,600 Yeah. 1398 01:06:34,600 --> 01:06:37,160 >> PUBLIK: Du kan antingen använda en för H slinga eller en for-loop. 1399 01:06:37,160 --> 01:06:38,415 >> JASON Hirschhorn: OK, vad vill du använda? 1400 01:06:38,415 --> 01:06:40,720 >> PUBLIK: Jag skulle använda en for-loop. 1401 01:06:40,720 --> 01:06:48,700 För, och då du gör dollartecken Jag är lika med 0 semikolon dollar 1402 01:06:48,700 --> 01:06:51,580 sign i mindre än 2. 1403 01:06:51,580 --> 01:06:55,455 Och då semikolon i dollar sign i plus plus. 1404 01:06:55,455 --> 01:07:01,890 1405 01:07:01,890 --> 01:07:03,880 >> JASON Hirschhorn: Hur du vet att använda en 2? 1406 01:07:03,880 --> 01:07:10,444 >> PUBLIK: Därför att det fanns två associativa arrayer inom större 1407 01:07:10,444 --> 01:07:11,960 associativ array. 1408 01:07:11,960 --> 01:07:13,610 >> JASON Hirschhorn: Så den stora saken är inte ett intresseföretag array. 1409 01:07:13,610 --> 01:07:15,500 Den stora grejen är bara en vanlig array. 1410 01:07:15,500 --> 01:07:17,380 Men du har rätt, det finns två associativa arrayer 1411 01:07:17,380 --> 01:07:18,910 i våra större utbud. 1412 01:07:18,910 --> 01:07:20,310 Det är därför du använder två. 1413 01:07:20,310 --> 01:07:24,270 Jag mår dåligt om man antar att de är 2, så vad är ett sätt att skriva 1414 01:07:24,270 --> 01:07:26,810 detta utan att man antar att de är 2? 1415 01:07:26,810 --> 01:07:27,507 >> PUBLIK: [OHÖRBAR]? 1416 01:07:27,507 --> 01:07:29,165 >> JASON Hirschhorn: OK, hur skriver du det? 1417 01:07:29,165 --> 01:07:35,262 >> PUBLIK: Foreach dollartecken tfs eller liknande dollartecken tf. 1418 01:07:35,262 --> 01:07:38,360 1419 01:07:38,360 --> 01:07:41,960 >> JASON Hirschhorn: OK, så för varje tfs som tfs, vill jag, nu 1420 01:07:41,960 --> 01:07:43,650 igen, har mitt bord. 1421 01:07:43,650 --> 01:07:45,250 Så vem kan ge mig den nästa kodrad? 1422 01:07:45,250 --> 01:07:52,870 1423 01:07:52,870 --> 01:07:59,810 >> PUBLIK: Skriv ut och sedan på citat, fäste tr slut 1424 01:07:59,810 --> 01:08:02,670 fäste, slut 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, och vad är det som går att göra? 1427 01:08:07,135 --> 01:08:08,610 >> PUBLIK: Det kommer att säga, ny rad. 1428 01:08:08,610 --> 01:08:11,070 Det kommer att sätta tagga för en ny rad. 1429 01:08:11,070 --> 01:08:13,000 >> JASON Hirschhorn: Höger, detta PHP, liksom vi talade om tidigare - detta 1430 01:08:13,000 --> 01:08:22,160 PHP kommer att utvärderas, och sedan det kommer att skriva ut till den här filen en 1431 01:08:22,160 --> 01:08:26,350 bord släptåg, och sedan att HTML kommer att utvärderas. 1432 01:08:26,350 --> 01:08:27,810 Vi bara kopierar här HTML vi hade här uppe. 1433 01:08:27,810 --> 01:08:28,120 Yeah. 1434 01:08:28,120 --> 01:08:29,470 >> PUBLIK: [OHÖRBAR]? 1435 01:08:29,470 --> 01:08:30,290 >> JASON Hirschhorn: Förlåt? 1436 01:08:30,290 --> 01:08:31,240 Den är här. 1437 01:08:31,240 --> 01:08:33,590 Fall 2012. 1438 01:08:33,590 --> 01:08:35,970 Titta inte på svaren, Låt oss lösa det tillsammans. 1439 01:08:35,970 --> 01:08:37,330 Så vi skriver ut tabellrad. 1440 01:08:37,330 --> 01:08:38,550 Så du är förmodligen i swing saker. 1441 01:08:38,550 --> 01:08:41,060 Vad är nästa rad av kod måste vi skriva? 1442 01:08:41,060 --> 01:08:42,926 Assam, ge mig nästa kodrad. 1443 01:08:42,926 --> 01:08:46,290 >> PUBLIK: Du behöver tf namn. 1444 01:08:46,290 --> 01:08:54,319 Tf öppen parentes citattecken namnge slutna parentes. 1445 01:08:54,319 --> 01:08:57,310 >> JASON Hirschhorn: Ge mig deras namn. 1446 01:08:57,310 --> 01:08:58,540 >> PUBLIK: Du måste skriva ut det. 1447 01:08:58,540 --> 01:08:59,790 >> [inplacering UTTRYCKER] 1448 01:08:59,790 --> 01:09:01,963 1449 01:09:01,963 --> 01:09:03,430 >> JASON Hirschhorn: OK, Hur skriver jag ut det? 1450 01:09:03,430 --> 01:09:04,680 >> [inplacering UTTRYCKER] 1451 01:09:04,680 --> 01:09:08,609 1452 01:09:08,609 --> 01:09:10,350 >> JASON Hirschhorn: jag saknar något nu. 1453 01:09:10,350 --> 01:09:12,470 Vad är det jag missar? 1454 01:09:12,470 --> 01:09:13,720 >> PUBLIK: Du behöver ett dollartecken. 1455 01:09:13,720 --> 01:09:15,960 1456 01:09:15,960 --> 01:09:17,210 >> JASON Hirschhorn: Vad annars är det jag saknar? 1457 01:09:17,210 --> 01:09:20,100 1458 01:09:20,100 --> 01:09:21,650 Allt vi har skrivit hittills är tr. 1459 01:09:21,650 --> 01:09:25,589 1460 01:09:25,589 --> 01:09:27,470 >> PUBLIK: Stäng st efter det. 1461 01:09:27,470 --> 01:09:28,720 >> JASON Hirschhorn: Så vi behöver att stänga tr efter. 1462 01:09:28,720 --> 01:09:34,390 1463 01:09:34,390 --> 01:09:37,906 Vem ser vad vi saknar på rad 16? 1464 01:09:37,906 --> 01:09:39,340 Ja, Anna. 1465 01:09:39,340 --> 01:09:47,050 >> PUBLIK: Du måste öppna en td och klammerparenteser. 1466 01:09:47,050 --> 01:09:49,380 >> JASON Hirschhorn: Och var vi sätter klammerparenteser? 1467 01:09:49,380 --> 01:09:51,790 >> PUBLIK: Runt tf namnet. 1468 01:09:51,790 --> 01:09:53,080 >> JASON Hirschhorn: Gillar du? 1469 01:09:53,080 --> 01:09:55,420 >> PUBLIK: Ja. 1470 01:09:55,420 --> 01:09:59,000 Och stäng sedan td. 1471 01:09:59,000 --> 01:10:00,250 >> JASON Hirschhorn: Gillar det? 1472 01:10:00,250 --> 01:10:03,370 1473 01:10:03,370 --> 01:10:06,950 >> PUBLIK: Behöver du citat tecken bredvid klammerparenteserna? 1474 01:10:06,950 --> 01:10:07,460 >> JASON Hirschhorn: Här? 1475 01:10:07,460 --> 01:10:08,710 Nej, det gör du inte. 1476 01:10:08,710 --> 01:10:10,820 1477 01:10:10,820 --> 01:10:12,550 Så det är exakt rätt. 1478 01:10:12,550 --> 01:10:12,940 Yeah. 1479 01:10:12,940 --> 01:10:15,290 >> PUBLIK: Så skillnaden mellan det och encatenating med prickar är, om 1480 01:10:15,290 --> 01:10:18,420 du använder punkter, skulle du måste ha dubbla citattecken, då en punkt, 1481 01:10:18,420 --> 01:10:20,370 då pricken - 1482 01:10:20,370 --> 01:10:20,520 >> JASON Hirschhorn: Rätt. 1483 01:10:20,520 --> 01:10:23,800 Så du säger att det finns en ultimat sätt att skriva det så. 1484 01:10:23,800 --> 01:10:26,760 1485 01:10:26,760 --> 01:10:28,966 Vad operatorn i JavaScript? 1486 01:10:28,966 --> 01:10:31,200 >> PUBLIK: Ett plustecken. 1487 01:10:31,200 --> 01:10:34,710 Du glömde att sätta klammer tillbaka. 1488 01:10:34,710 --> 01:10:35,760 >> JASON Hirschhorn: Great. 1489 01:10:35,760 --> 01:10:38,850 Och det finns ytterligare en rad av kod saknas. 1490 01:10:38,850 --> 01:10:40,130 Vem kan ge mig den sista raden av kod vi saknar? 1491 01:10:40,130 --> 01:10:43,940 1492 01:10:43,940 --> 01:10:47,602 >> PUBLIK: Bara exakt samma sak, bara med hus i stället för namn. 1493 01:10:47,602 --> 01:10:52,960 1494 01:10:52,960 --> 01:10:53,450 Bra 1495 01:10:53,450 --> 01:10:54,390 >> JASON Hirschhorn: Great. 1496 01:10:54,390 --> 01:10:59,320 Och din syntax är exakt rätt för få saker i ett intresseföretag array. 1497 01:10:59,320 --> 01:11:04,450 Så i själva testet, du är faktiskt gett upp förrän här. 1498 01:11:04,450 --> 01:11:05,710 Så här koden gavs till dig. 1499 01:11:05,710 --> 01:11:07,750 Allt du tvungen att skriva var dessa fyra rader och kom ihåg att 1500 01:11:07,750 --> 01:11:09,190 stäng tabellen taggen. 1501 01:11:09,190 --> 01:11:11,370 Ni gjorde faktiskt allt detta och mer. 1502 01:11:11,370 --> 01:11:11,810 Yeah. 1503 01:11:11,810 --> 01:11:14,850 >> PUBLIK: Så det skulle vara funktionellt samma om du bara hade att alla i 1504 01:11:14,850 --> 01:11:17,250 ett stort tryck samtal, eller hur? 1505 01:11:17,250 --> 01:11:19,630 Och sedan bara sammanfogas på den, et cetera? 1506 01:11:19,630 --> 01:11:20,730 >> JASON Hirschhorn: Gillar det? 1507 01:11:20,730 --> 01:11:21,980 >> PUBLIK: Ja. 1508 01:11:21,980 --> 01:11:23,810 1509 01:11:23,810 --> 01:11:26,940 Det skulle inte se bra ut om du var titta på det när du inspekterar 1510 01:11:26,940 --> 01:11:28,550 elementet på din webbplats, eller hur? 1511 01:11:28,550 --> 01:11:29,800 >> JASON Hirschhorn: Jag håller med. 1512 01:11:29,800 --> 01:11:35,410 1513 01:11:35,410 --> 01:11:38,710 Om jag laddat denna webbsida, skulle jag vara kunna se denna PHP-kod, någonsin? 1514 01:11:38,710 --> 01:11:39,240 >> PUBLIK: Nej. 1515 01:11:39,240 --> 01:11:40,080 >> JASON Hirschhorn: Nej. 1516 01:11:40,080 --> 01:11:42,240 Och faktiskt, jag skulle inte. 1517 01:11:42,240 --> 01:11:43,920 >> PUBLIK: Det här är inte HTML, eller hur? 1518 01:11:43,920 --> 01:11:45,000 Så du kanske kan - 1519 01:11:45,000 --> 01:11:46,780 >> JASON Hirschhorn: Så här PHP skulle utvärderas serversidan. 1520 01:11:46,780 --> 01:11:51,020 PHP är alltid utvärderas serversidan, så du aldrig kunna se PHP-kod. 1521 01:11:51,020 --> 01:11:52,980 >> PUBLIK: Men du skulle kunna se resultatet av utskrifter. 1522 01:11:52,980 --> 01:11:53,480 >> JASON Hirschhorn: Höger. 1523 01:11:53,480 --> 01:11:55,510 Och det ärligt kanske inte sätta allt på spel. 1524 01:11:55,510 --> 01:11:59,740 Det kan formatera det fint för dig, eller det kan sätta den på en rad. 1525 01:11:59,740 --> 01:12:01,521 Oklar. 1526 01:12:01,521 --> 01:12:03,596 Men ja, bra poäng. 1527 01:12:03,596 --> 01:12:06,470 >> PUBLIK: Hur kommer det har ingen text markering för 1528 01:12:06,470 --> 01:12:07,550 någon av PHP-kommandon? 1529 01:12:07,550 --> 01:12:09,370 För jag kommer ihåg att se det. 1530 01:12:09,370 --> 01:12:11,620 >> JASON Hirschhorn: För att det är en . HTML-filen här uppe i toppen. 1531 01:12:11,620 --> 01:12:20,390 1532 01:12:20,390 --> 01:12:21,650 Varsågod. 1533 01:12:21,650 --> 01:12:25,752 1534 01:12:25,752 --> 01:12:28,800 >> PUBLIK: Om vi ​​gjorde den första metoden med den för loopar, rätt, om vi 1535 01:12:28,800 --> 01:12:33,500 ville komma åt en tfs, skulle vi göra tfs fäste 0 fäste, sedan 1536 01:12:33,500 --> 01:12:35,180 [OHÖRBAR]? 1537 01:12:35,180 --> 01:12:35,970 >> JASON Hirschhorn: Du skulle - 1538 01:12:35,970 --> 01:12:40,560 så du säger att det för loop, du skulle göra i dollartecken tfs Fäste 1 1539 01:12:40,560 --> 01:12:41,850 eller jag, höger. 1540 01:12:41,850 --> 01:12:46,780 Eller dollartecken jag stänger fäste och sedan hakparentes 1541 01:12:46,780 --> 01:12:49,600 citationstecken, ja. 1542 01:12:49,600 --> 01:12:50,640 >> OK, utmärkt. 1543 01:12:50,640 --> 01:12:53,020 Vi har ytterligare en snabb en. 1544 01:12:53,020 --> 01:12:55,090 Sju minuter, så jag vill ha att gå över detta. 1545 01:12:55,090 --> 01:12:56,160 Detta är ett annat exempel. 1546 01:12:56,160 --> 01:12:58,740 Vi är nu ett helt annat språk. 1547 01:12:58,740 --> 01:12:59,990 >> Vi har lite HTML-kod. 1548 01:12:59,990 --> 01:13:02,480 1549 01:13:02,480 --> 01:13:07,460 Det är ganska liten på skärmen, men Jag vill att du tittar igenom den verkligen 1550 01:13:07,460 --> 01:13:11,140 snabbt, och kan någon berätta för mig, om jag skulle läsa den här webbsidan, 1551 01:13:11,140 --> 01:13:12,390 vad jag skulle få se? 1552 01:13:12,390 --> 01:13:22,710 1553 01:13:22,710 --> 01:13:26,450 Beskriv allt om denna webbsida. 1554 01:13:26,450 --> 01:13:28,630 Noah? 1555 01:13:28,630 --> 01:13:30,450 Vad vill jag? 1556 01:13:30,450 --> 01:13:38,140 >> Publik: kod vid den främre änden av Google med en känsla för text och en 1557 01:13:38,140 --> 01:13:39,190 Skicka-knappen. 1558 01:13:39,190 --> 01:13:41,180 >> JASON Hirschhorn: Och vad skulle knappen säga? 1559 01:13:41,180 --> 01:13:42,430 >> PUBLIK: Skicka. 1560 01:13:42,430 --> 01:13:44,620 1561 01:13:44,620 --> 01:13:45,160 Åh, sökning. 1562 01:13:45,160 --> 01:13:45,840 Jag är ledsen. 1563 01:13:45,840 --> 01:13:46,830 >> JASON Hirschhorn: Det skulle säga sökning. 1564 01:13:46,830 --> 01:13:47,520 Kom ihåg namn. 1565 01:13:47,520 --> 01:13:50,550 Vad använder vi namn? 1566 01:13:50,550 --> 01:13:53,774 Detta namn attribut, vad är som används för? 1567 01:13:53,774 --> 01:13:55,470 >> [inplacering UTTRYCKER] 1568 01:13:55,470 --> 01:13:59,300 >> PUBLIK: Det är namnet för när en användare klickar på? 1569 01:13:59,300 --> 01:14:00,160 >> JASON Hirschhorn: Det skulle kunna vara. 1570 01:14:00,160 --> 01:14:02,690 Men vad är det vi vanligtvis ser - varför ger vi detta namn kö? 1571 01:14:02,690 --> 01:14:03,830 Varför gör vi det? 1572 01:14:03,830 --> 01:14:05,220 Yeah. 1573 01:14:05,220 --> 01:14:08,600 >> PUBLIK: Använder inte det blir index av super globala variabeln? 1574 01:14:08,600 --> 01:14:12,740 >> JASON Hirschhorn: Ja, i allmänhet när denna form skulle lämna, och sedan var 1575 01:14:12,740 --> 01:14:13,500 Detta skulle underkasta sig? 1576 01:14:13,500 --> 01:14:14,750 Vilken sida? 1577 01:14:14,750 --> 01:14:16,820 1578 01:14:16,820 --> 01:14:18,460 Noa, vilken sida skulle underkasta sig? 1579 01:14:18,460 --> 01:14:25,710 1580 01:14:25,710 --> 01:14:27,700 >> PUBLIK: Jag är inte säker. 1581 01:14:27,700 --> 01:14:28,920 >> JASON Hirschhorn: Där kunde vi kan hitta den? 1582 01:14:28,920 --> 01:14:31,025 Var hittar du det sida ställs till? 1583 01:14:31,025 --> 01:14:32,850 Vilken kodrad? 1584 01:14:32,850 --> 01:14:34,040 >> PUBLIK: Form åtgärd. 1585 01:14:34,040 --> 01:14:34,650 >> JASON Hirschhorn: Exakt. 1586 01:14:34,650 --> 01:14:35,130 Action. 1587 01:14:35,130 --> 01:14:37,100 Så det lämnar till söksidan. 1588 01:14:37,100 --> 01:14:38,630 Bakstreck sökning. 1589 01:14:38,630 --> 01:14:40,140 Så det är exakt rätt. 1590 01:14:40,140 --> 01:14:40,680 Vilken metod? 1591 01:14:40,680 --> 01:14:42,090 >> PUBLIK: Hämta. 1592 01:14:42,090 --> 01:14:42,490 >> JASON Hirschhorn: Hämta. 1593 01:14:42,490 --> 01:14:43,420 Exakt. 1594 01:14:43,420 --> 01:14:44,490 Så vi läser detta. 1595 01:14:44,490 --> 01:14:45,180 Detta kommer att vara en form. 1596 01:14:45,180 --> 01:14:45,910 Du har helt rätt. 1597 01:14:45,910 --> 01:14:50,340 Två saker på formen, titeln på sidan och toppen skulle vara Google. 1598 01:14:50,340 --> 01:14:54,270 >> Så här är två frågor som du bör kunna svara på den här sidan. 1599 01:14:54,270 --> 01:15:01,760 Om HTML bor på denna webbplats och användaren matar bugg i denna text 1600 01:15:01,760 --> 01:15:06,900 fält här, vilken URL kommer användaren att hitta sig själv på 1601 01:15:06,900 --> 01:15:08,150 skicka formuläret? 1602 01:15:08,150 --> 01:15:10,980 1603 01:15:10,980 --> 01:15:12,510 >> Så vi har det här. 1604 01:15:12,510 --> 01:15:13,720 Jag kommer att gå tillbaka till denna sida, dock. 1605 01:15:13,720 --> 01:15:16,980 Jag ska skriva upp det här första delen. 1606 01:15:16,980 --> 01:15:18,230 Kan alla se hit? 1607 01:15:18,230 --> 01:15:30,620 1608 01:15:30,620 --> 01:15:32,906 OK, Mario, tror du att du vet? 1609 01:15:32,906 --> 01:15:34,700 Vilken sida? 1610 01:15:34,700 --> 01:15:37,630 >> PUBLIK: omvänt snedstreck sökning. 1611 01:15:37,630 --> 01:15:38,880 >> JASON Hirschhorn: Jag tänker att flytta ner hit. 1612 01:15:38,880 --> 01:15:44,800 1613 01:15:44,800 --> 01:15:49,155 OK, backslash sökfråga markera q lika bugg. 1614 01:15:49,155 --> 01:15:53,560 1615 01:15:53,560 --> 01:15:55,165 Någon som har ett annat förslag? 1616 01:15:55,165 --> 01:15:57,910 1617 01:15:57,910 --> 01:15:59,160 Yeah. 1618 01:15:59,160 --> 01:16:01,700 1619 01:16:01,700 --> 01:16:03,740 >> Så hur får vi det? 1620 01:16:03,740 --> 01:16:05,520 Tja, vi har sett det här förut. 1621 01:16:05,520 --> 01:16:07,170 Och du kom med detta tidigare. 1622 01:16:07,170 --> 01:16:08,870 Du hade rätt, Noa, att åtgärder att berätta vad 1623 01:16:08,870 --> 01:16:11,700 sida ska vi. 1624 01:16:11,700 --> 01:16:12,820 >> Vi vet också vilken metod. 1625 01:16:12,820 --> 01:16:13,420 Vi gör få. 1626 01:16:13,420 --> 01:16:17,040 Och skillnaden mellan get och post är att få visas i URL 1627 01:16:17,040 --> 01:16:18,490 och post inte. 1628 01:16:18,490 --> 01:16:22,760 Så om jag skrev inlägget direkt i metod, vad skulle vara annorlunda? 1629 01:16:22,760 --> 01:16:24,250 >> PUBLIK: Det skulle bara vara snedstreck sökning. 1630 01:16:24,250 --> 01:16:25,400 >> JASON Hirschhorn: Det skulle bara vara slash sökning. 1631 01:16:25,400 --> 01:16:27,400 Ingenting över här skulle hända. 1632 01:16:27,400 --> 01:16:30,030 Men eftersom det är ett får, URL visas på följande sätt. 1633 01:16:30,030 --> 01:16:35,140 Först ser vi ett frågetecken och Vi ser namnet och värdet. 1634 01:16:35,140 --> 01:16:42,730 Säg att det var en annan textfält och Jag gav det ett namn på r och jag in ett 1635 01:16:42,730 --> 01:16:45,220 värde, larv. 1636 01:16:45,220 --> 01:16:48,560 Vad skulle det nu se ut? 1637 01:16:48,560 --> 01:16:52,040 Jag har ytterligare ett textfält, ger jag en namn på r och ett värde på larv. 1638 01:16:52,040 --> 01:16:56,990 >> PUBLIK: När bar du skulle ha et-tecknet larv. 1639 01:16:56,990 --> 01:16:58,380 >> JASON Hirschhorn: Det är inte et-tecken. 1640 01:16:58,380 --> 01:17:00,500 >> PUBLIK: Eller bara vad den och symbolen. 1641 01:17:00,500 --> 01:17:01,330 >> JASON Hirschhorn: Ja, nej. 1642 01:17:01,330 --> 01:17:03,700 Du hade rätt, jag hade fel. 1643 01:17:03,700 --> 01:17:05,660 Det är som en g.. 1644 01:17:05,660 --> 01:17:06,910 >> PUBLIK: Caterpillar. 1645 01:17:06,910 --> 01:17:08,840 1646 01:17:08,840 --> 01:17:11,090 r lika med larv, sorry. 1647 01:17:11,090 --> 01:17:13,970 1648 01:17:13,970 --> 01:17:14,700 >> JASON Hirschhorn: Finns det ingen r där? 1649 01:17:14,700 --> 01:17:16,680 >> Publik: Nej, det finns. 1650 01:17:16,680 --> 01:17:18,030 >> JASON Hirschhorn: Vi ska tala om det efter lektionen. 1651 01:17:18,030 --> 01:17:18,930 Det är precis rätt. 1652 01:17:18,930 --> 01:17:20,530 Så den och är korrekt. 1653 01:17:20,530 --> 01:17:23,430 Och då kan du ha många av dessa, och de skulle alla behöva förkortas 1654 01:17:23,430 --> 01:17:24,950 tillsammans med det och. 1655 01:17:24,950 --> 01:17:25,900 Så det är exakt rätt. 1656 01:17:25,900 --> 01:17:27,700 >> Det finns ytterligare en fråga. 1657 01:17:27,700 --> 01:17:30,676 Skissa denna HTML för DOM, med start med dokument. 1658 01:17:30,676 --> 01:17:33,330 1659 01:17:33,330 --> 01:17:34,570 Vi skulle kunna göra det på två minuter. 1660 01:17:34,570 --> 01:17:36,790 Vi gör det här borta. 1661 01:17:36,790 --> 01:17:38,040 Jag ska gå tillbaka till den här webbsidan. 1662 01:17:38,040 --> 01:17:40,630 1663 01:17:40,630 --> 01:17:42,160 OK, börjar vi med dokument. 1664 01:17:42,160 --> 01:17:49,698 1665 01:17:49,698 --> 01:17:52,090 >> Vad händer nu? 1666 01:17:52,090 --> 01:17:53,910 Så när du läser igenom - 1667 01:17:53,910 --> 01:17:54,540 >> PUBLIK: HTML. 1668 01:17:54,540 --> 01:17:55,790 >> JASON Hirschhorn: HTML är nästa. 1669 01:17:55,790 --> 01:17:57,850 Vi kommer att gå tag efter tag. 1670 01:17:57,850 --> 01:18:00,890 Vad är efter HTML? 1671 01:18:00,890 --> 01:18:01,550 >> PUBLIK: 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 Vad är efter huvudet? 1675 01:18:08,520 --> 01:18:09,770 >> PUBLIK: 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 Och titeln har ett värde på Google, men jag tänker inte 1679 01:18:14,740 --> 01:18:16,240 skriver att i för nu. 1680 01:18:16,240 --> 01:18:18,750 OK, var kommer kroppen gå? 1681 01:18:18,750 --> 01:18:20,890 >> PUBLIK: Också komma bort av HTML. 1682 01:18:20,890 --> 01:18:21,490 >> JASON Hirschhorn: Exakt. 1683 01:18:21,490 --> 01:18:22,820 Body lossnar härifrån. 1684 01:18:22,820 --> 01:18:25,970 1685 01:18:25,970 --> 01:18:30,330 Kan alla se varför så är fallet? 1686 01:18:30,330 --> 01:18:32,970 Du bör nog kunna räkna denna ut, också, även om jag inte hade 1687 01:18:32,970 --> 01:18:33,665 denna fina inbuktning. 1688 01:18:33,665 --> 01:18:37,680 >> Indraget ger den sorts bort, men du kan se att huvudet tagg har 1689 01:18:37,680 --> 01:18:41,240 stängts, vilket innebär att vi troligen kan inte gå ner hit. 1690 01:18:41,240 --> 01:18:43,460 Vi måste gå tillbaka till vad var precis innan huvudet 1691 01:18:43,460 --> 01:18:44,730 tag, eller under det. 1692 01:18:44,730 --> 01:18:46,720 Vi är till och med huvudet taggen. 1693 01:18:46,720 --> 01:18:48,560 >> Och i kroppen går formulär. 1694 01:18:48,560 --> 01:18:50,300 Under formen finns det två ingångar. 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 är allt jag har. 1698 01:18:55,490 --> 01:18:56,980 Quiz 1 är i morgon. 1699 01:18:56,980 --> 01:18:58,350 Jag är så glad för er. 1700 01:18:58,350 --> 01:18:59,690 Det kommer att bli skitkul. 1701 01:18:59,690 --> 01:19:00,250 >> Om du har - 1702 01:19:00,250 --> 01:19:00,600 >> PUBLIK: [applåder] 1703 01:19:00,600 --> 01:19:02,460 >> JASON Hirschhorn: Åh sluta, sluta. 1704 01:19:02,460 --> 01:19:04,520 Men nej, jag skojar. 1705 01:19:04,520 --> 01:19:07,220 Om du har några frågor, rätt efter avsnitt, jag ska vara ute. 1706 01:19:07,220 --> 01:19:11,700 Om du har några frågor ikväll, välkommen att ringa, e-post, Gchat, 1707 01:19:11,700 --> 01:19:12,740 brevduva mig. 1708 01:19:12,740 --> 01:19:13,950 Lycka till i morgon. 1709 01:19:13,950 --> 01:19:16,220 Ha en underbar Thanksgiving rast, om jag inte ser dig innan dess. 1710 01:19:16,220 --> 01:19:19,320 Och jag kommer att se dig efter Thanksgiving på tisdagen för vår sista 1711 01:19:19,320 --> 01:19:20,295 avsnitt fest någonsin. 1712 01:19:20,295 --> 01:19:21,545 >> PUBLIK: [OHÖRBAR]. 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, jag får se er nästa vecka, eller i två veckor. 1716 01:19:28,900 --> 01:19:30,150 Och lycka till i morgon. 1717 01:19:30,150 --> 01:19:32,203