1 00:00:00,000 --> 00:00:05,530 2 00:00:05,530 --> 00:00:09,790 >> PROFESSOR: Så dagordningen för den här veckan, inte så mycket grejer. 3 00:00:09,790 --> 00:00:12,801 Men förhoppningsvis mycket, mycket bra och relevant för er denna vecka. 4 00:00:12,801 --> 00:00:15,550 Men vi kommer att tillbringa kanske 15, 20 minuter bara snabbt talar 5 00:00:15,550 --> 00:00:17,370 om länklista. 6 00:00:17,370 --> 00:00:19,694 Länklistor kommer att täckas på testet. 7 00:00:19,694 --> 00:00:22,610 Så kanske det skulle vara till stor hjälp att lära sig lite om vad det är. 8 00:00:22,610 --> 00:00:25,210 >> Vi kommer att tillbringa den stora Majoriteten av dagens avsnitt 9 00:00:25,210 --> 00:00:27,640 gå över quiz noll övningsproblem. 10 00:00:27,640 --> 00:00:30,970 Och sedan ska vi spara kanske 20, 30 minuter i slutet för eventuella kvardröjande frågor 11 00:00:30,970 --> 00:00:32,850 någon har. 12 00:00:32,850 --> 00:00:34,610 >> Och sedan, den sista fem minuter, jag kommer 13 00:00:34,610 --> 00:00:36,467 att ge en pump upp tal för testet. 14 00:00:36,467 --> 00:00:38,050 Ni alla vill vara för det här. 15 00:00:38,050 --> 00:00:39,591 Eftersom det kommer att bli en bra tid. 16 00:00:39,591 --> 00:00:42,650 17 00:00:42,650 --> 00:00:49,230 >> Okej, så vissa material på länklista. 18 00:00:49,230 --> 00:00:52,620 Hur de är oftast strukturerade är du har vad som kallas en nod, eller hur? 19 00:00:52,620 --> 00:00:54,870 Du har dessa saker som kallas noder, som är structs. 20 00:00:54,870 --> 00:00:57,360 Jag ska gå igenom hur man skapar en nod i nästa bild. 21 00:00:57,360 --> 00:01:00,680 Men i huvudsak alla kopplade listor är är data som 22 00:01:00,680 --> 00:01:03,340 har uppträdda tillsammans via pekare. 23 00:01:03,340 --> 00:01:09,110 >> Och så fördelen vi har för att använda en länkad lista över, 24 00:01:09,110 --> 00:01:11,280 kanske, som en matris, är det faktum att i en array 25 00:01:11,280 --> 00:01:15,000 du behöver ett sammanhängande block av minne alla på samma plats, en 26 00:01:15,000 --> 00:01:16,870 efter den andra, för att kunna ha det. 27 00:01:16,870 --> 00:01:20,200 En länkad lista, du kan har slumpmässiga små bitar av minne 28 00:01:20,200 --> 00:01:23,020 hela datorn uppträdda tillsammans med pekare. 29 00:01:23,020 --> 00:01:26,270 >> Och på detta sätt kan få tillgång till information 30 00:01:26,270 --> 00:01:28,610 som kommer en efter andra, efter den andra 31 00:01:28,610 --> 00:01:32,720 utan att behöva bara en stor del av minne i datorn någonstans. 32 00:01:32,720 --> 00:01:35,910 Och så detta är en av de stora anledningar till varför vi använder länklista. 33 00:01:35,910 --> 00:01:40,300 >> För det andra är det väldigt lätt att dynamiskt ändra storlek på länklistan eftersom array, 34 00:01:40,300 --> 00:01:44,720 när du deklarerar en array, du har en viss uppsättning värde. 35 00:01:44,720 --> 00:01:47,340 Låt oss säga att jag ville skapa en array av 10 heltal. 36 00:01:47,340 --> 00:01:49,970 Jag skapar en rad 10 heltal, och det är det. 37 00:01:49,970 --> 00:01:50,580 Det är 10. 38 00:01:50,580 --> 00:01:52,038 Jag vet inte vad jag ska göra efter det. 39 00:01:52,038 --> 00:01:53,680 Om jag ville göra det 11, kan inte göra det. 40 00:01:53,680 --> 00:01:55,710 Om jag vill göra det 9, inte kan göra det. 41 00:01:55,710 --> 00:01:59,910 >> Medan i en länklista, kan du lägga till och radera och infoga var du vill. 42 00:01:59,910 --> 00:02:04,940 Du kan dynamiskt ändra storlek på din strukturera här, din datastruktur. 43 00:02:04,940 --> 00:02:08,370 Och det ger oss en hel del mer ökad flexibilitet 44 00:02:08,370 --> 00:02:11,320 att vi inte vanligtvis har med matriser. 45 00:02:11,320 --> 00:02:15,210 >> Någon förvirrad på grund struktur för hur en länklista är 46 00:02:15,210 --> 00:02:17,930 eller varför vi måste använda ett över en array? 47 00:02:17,930 --> 00:02:20,330 Ja, vi ska gå över i detalj hur man faktiskt skapa en. 48 00:02:20,330 --> 00:02:24,121 Men detta är bara typ av den allmänna känslan just nu. 49 00:02:24,121 --> 00:02:24,620 Häftigt. 50 00:02:24,620 --> 00:02:28,770 Och så arrayer sätts ihop av dessa underbara små saker 51 00:02:28,770 --> 00:02:29,960 som kallas noder. 52 00:02:29,960 --> 00:02:32,210 Allt en nod är en typ av struct. 53 00:02:32,210 --> 00:02:36,090 Kom ihåg att en struct är om du ville för att skapa en viss typ av variabel 54 00:02:36,090 --> 00:02:39,850 i C som inte redan finns du, som programmerare, 55 00:02:39,850 --> 00:02:42,030 kan faktiskt skapa det själv. 56 00:02:42,030 --> 00:02:46,540 >> Och så denna typ av data struktur kallas en nod, 57 00:02:46,540 --> 00:02:50,770 faktiskt har skapats av oss, att existerar inte inom C på egen hand. 58 00:02:50,770 --> 00:02:53,150 Och det sätt som du skapa en är att du måste 59 00:02:53,150 --> 00:02:57,170 huvudet av typedef struct, som berättar kompilatorn jag 60 00:02:57,170 --> 00:02:59,640 på väg att skapa en struct. 61 00:02:59,640 --> 00:03:00,830 >> Vi ska name it "nod." 62 00:03:00,830 --> 00:03:03,350 Och inuti vi ska att deklarera en variabel i, 63 00:03:03,350 --> 00:03:05,060 som kommer att lagra ett värde. 64 00:03:05,060 --> 00:03:09,320 Och då vi också kommer att har en pekare som heter "nästa" 65 00:03:09,320 --> 00:03:12,090 som pekar på nästa nod i länklistan. 66 00:03:12,090 --> 00:03:14,730 Och sedan du är klar att off genom att bara upprepa noden igen så 67 00:03:14,730 --> 00:03:17,490 kompilatorn vet, OK det är slutet av min struct. 68 00:03:17,490 --> 00:03:22,540 >> Och så på det här sättet, vi är typ att skapa en söt liten array 69 00:03:22,540 --> 00:03:25,450 sånt med en värde och med en pekare. 70 00:03:25,450 --> 00:03:27,757 Och du kan länka dem alla tillsammans med dessa pekare. 71 00:03:27,757 --> 00:03:30,090 Så att de alla slag kan vara uppträdda tillsammans i en kedja. 72 00:03:30,090 --> 00:03:32,920 73 00:03:32,920 --> 00:03:34,162 >> Häftigt. 74 00:03:34,162 --> 00:03:35,453 Kan du höra att lite bättre? 75 00:03:35,453 --> 00:03:36,140 >> PUBLIK: Ja. 76 00:03:36,140 --> 00:03:38,540 >> PROFESSOR: Okej. 77 00:03:38,540 --> 00:03:44,280 Så det sätt att, som ni ser, en typisk länklista är strukturerad 78 00:03:44,280 --> 00:03:45,500 är du har ett huvud. 79 00:03:45,500 --> 00:03:49,460 Du har huvudet värde som inte som pekade av någon annan pekare. 80 00:03:49,460 --> 00:03:53,177 Men det kommer att peka på, eller referens, en annan nod. 81 00:03:53,177 --> 00:03:56,510 Noden efter kommer att referera till nod efter det, och så vidare och så vidare 82 00:03:56,510 --> 00:03:59,170 tills du så småningom hit i slutet av din länklista. 83 00:03:59,170 --> 00:04:00,980 Och du bara inte kommer att ha en pekare där. 84 00:04:00,980 --> 00:04:04,659 >> Och så, tänka som, på en kedja, eller till och med Om någon av er gjort, jag vet inte, 85 00:04:04,659 --> 00:04:06,450 som med frukt slingor när du var liten. 86 00:04:06,450 --> 00:04:08,590 Du skulle sträng ihop dem och bära dem runt halsen. 87 00:04:08,590 --> 00:04:09,840 Tycker det är exakt samma sak. 88 00:04:09,840 --> 00:04:12,964 Du har dessa små saker som du kan koppla ihop som pekar på en 89 00:04:12,964 --> 00:04:15,291 efter denna till ett efter det, och så vidare och så vidare 90 00:04:15,291 --> 00:04:17,040 tills du har en kedja av en datastruktur 91 00:04:17,040 --> 00:04:21,190 som du kan använda hur du vill. 92 00:04:21,190 --> 00:04:27,370 >> Så det sätt som detta skulle vi typiskt infoga eller ta bort 93 00:04:27,370 --> 00:04:30,020 varje nod från en länk Listan är mycket olika 94 00:04:30,020 --> 00:04:31,970 beroende på var den noden är. 95 00:04:31,970 --> 00:04:34,880 Så, till exempel, därför att pekare är alltid 96 00:04:34,880 --> 00:04:38,645 pekar på ett specifikt värde, när du tar bort eller sätter i en nod, 97 00:04:38,645 --> 00:04:41,770 du vill vara säker på att pekaren är allt pekar på rätt saker. 98 00:04:41,770 --> 00:04:46,200 >> Så om du ville potentiellt infoga en ny nod med värdet på en 99 00:04:46,200 --> 00:04:48,379 inuti en sorterad länk lista, vi vet alla här 100 00:04:48,379 --> 00:04:51,170 från den bild som kommer att gå in mellan huvudet och två, eller hur? 101 00:04:51,170 --> 00:04:52,620 Eftersom en passar just där. 102 00:04:52,620 --> 00:04:59,060 Men det sätt på vilket vi skulle göra det är genom att först Återgång pekaren 103 00:04:59,060 --> 00:05:02,160 från huvudet och skicka det till en. 104 00:05:02,160 --> 00:05:05,040 >> Men vi kommer i ett problem här. 105 00:05:05,040 --> 00:05:08,280 Kan någon se vad problemet är om vi skulle första dereference 106 00:05:08,280 --> 00:05:10,090 pekaren från huvudet till en? 107 00:05:10,090 --> 00:05:14,202 Vilket problem kan vi stöter på om vi försöker att lägga detta på framsidan av vår array? 108 00:05:14,202 --> 00:05:15,409 >> PUBLIK: [OHÖRBAR] 109 00:05:15,409 --> 00:05:16,200 PROFESSOR: Exakt. 110 00:05:16,200 --> 00:05:20,000 Så här har vi en pekare som var en gång pekar från huvudet till två. 111 00:05:20,000 --> 00:05:23,120 Men om du bli av med det pekaren, pekar du det till en, 112 00:05:23,120 --> 00:05:26,500 Vi har nu ingen aning vart den ska gå att hitta två. 113 00:05:26,500 --> 00:05:29,850 För som jag sa tidigare, har du fått en jätte bit av minne i datorn. 114 00:05:29,850 --> 00:05:31,860 Alla dessa noder kunde slumpmässigt varvat 115 00:05:31,860 --> 00:05:33,350 var som helst i din dator. 116 00:05:33,350 --> 00:05:36,140 Och du inte vet hur att gå om att hitta det. 117 00:05:36,140 --> 00:05:40,420 >> Och så måste du ha tips pekar på alla noder i slutet. 118 00:05:40,420 --> 00:05:42,420 Eller så om du råkar dereference en 119 00:05:42,420 --> 00:05:44,485 utan att först tilldelning först ett värde, du är 120 00:05:44,485 --> 00:05:47,410 bara kommer att förlora allt efteråt. 121 00:05:47,410 --> 00:05:49,720 >> Så vad vi ska gör är, du skulle först 122 00:05:49,720 --> 00:05:53,270 vill skapa en pekare på noden du vill infoga. 123 00:05:53,270 --> 00:05:55,270 Peka där du vill infoga det till, 124 00:05:55,270 --> 00:05:59,410 och sedan efteråt kunde peka huvudet bakåt till ett. 125 00:05:59,410 --> 00:06:02,800 >> Innebär det vettigt att alla här? 126 00:06:02,800 --> 00:06:03,346 Bra. 127 00:06:03,346 --> 00:06:04,720 Tänk på det som precis som en kedja. 128 00:06:04,720 --> 00:06:07,420 Om du lägger till en kedja, det är typ av intuitiva 129 00:06:07,420 --> 00:06:10,742 hur skulle du gå om hur du sätter det. 130 00:06:10,742 --> 00:06:15,274 >> OK, så det är faktiskt mycket kortare än jag trodde det skulle vara, 131 00:06:15,274 --> 00:06:16,690 en fem minuters spiel på länklistor. 132 00:06:16,690 --> 00:06:19,960 Bara så ni har grundläggande uppfattning om vad det är. 133 00:06:19,960 --> 00:06:23,580 >> Här har vi dagordningen för frågesport noll. 134 00:06:23,580 --> 00:06:24,895 Låt inte detta skrämma dig. 135 00:06:24,895 --> 00:06:26,270 Jag vet att det är en hel del information. 136 00:06:26,270 --> 00:06:27,580 Det ser mycket skrämmande. 137 00:06:27,580 --> 00:06:33,130 Det är också en hel del, jag tror, ​​CSC slags termer. 138 00:06:33,130 --> 00:06:37,440 Saker som hexadecimala strängar, pekare, avsättningar dynamiskt minne 139 00:06:37,440 --> 00:06:40,120 är mycket skrämmande klingande termer. 140 00:06:40,120 --> 00:06:42,700 >> Men vi kommer att bryta dem ner, göra några praktiska problem 141 00:06:42,700 --> 00:06:44,980 så att ni alla är redo för detta test. 142 00:06:44,980 --> 00:06:47,104 Hur många av er har redan börjat studera? 143 00:06:47,104 --> 00:06:50,040 144 00:06:50,040 --> 00:06:53,670 >> OK, ni förmodligen vill att börja komma igång 145 00:06:53,670 --> 00:06:56,480 på det, eftersom testet är i morgon. 146 00:06:56,480 --> 00:06:58,739 Eller torsdag för vissa av er. 147 00:06:58,739 --> 00:07:01,030 Ja, så vi kommer att gå över några praktiska problem. 148 00:07:01,030 --> 00:07:04,600 Om ni vill att alla att ta ut ett pappersark, en penna. 149 00:07:04,600 --> 00:07:07,310 Vi ska bara tillbringa stora majoriteten av dagens avsnitt 150 00:07:07,310 --> 00:07:11,590 gå över en del av det så ni har en idé om vad som väntar på frågesporten. 151 00:07:11,590 --> 00:07:14,957 152 00:07:14,957 --> 00:07:16,890 >> OK. 153 00:07:16,890 --> 00:07:19,730 Ett par logistiska detaljer också, för vem som helst 154 00:07:19,730 --> 00:07:25,120 som inte har varit att som länkar där, om du går till cs50.yale.edu, på framsidan 155 00:07:25,120 --> 00:07:28,566 denna sida finns en länk som säger "Om Quiz Zero." 156 00:07:28,566 --> 00:07:29,440 Link tar dig dit. 157 00:07:29,440 --> 00:07:31,065 Om du inte har läst den, läs den. 158 00:07:31,065 --> 00:07:34,470 Eftersom det säger du verkligen viktigt information om testet. 159 00:07:34,470 --> 00:07:37,410 >> Jag kommer att dra ut det från att bara för att, fysiskt, 160 00:07:37,410 --> 00:07:40,200 Om ni inte vet var att gå, kommer vi att ha problem. 161 00:07:40,200 --> 00:07:44,220 Och så om din sista i termer med A till N, gå till lagen skolans aula. 162 00:07:44,220 --> 00:07:47,500 Och om din senaste börjar med P till Z, gå till Davies Auditorium. 163 00:07:47,500 --> 00:07:50,240 Och detta gäller endast för människor i onsdag avsnittet. 164 00:07:50,240 --> 00:07:53,420 >> Om du tar frågesport på Torsdag, du går till SSS 114 165 00:07:53,420 --> 00:07:55,078 där din föreläsning är typiskt. 166 00:07:55,078 --> 00:07:55,953 PUBLIK: [OHÖRBAR] 167 00:07:55,953 --> 00:07:59,316 168 00:07:59,316 --> 00:08:01,940 PROFESSOR: O Z, du kommer att gå till Davies auditorium. 169 00:08:01,940 --> 00:08:03,273 Jag kommer att ändra på det, eller hur? 170 00:08:03,273 --> 00:08:05,670 171 00:08:05,670 --> 00:08:09,698 >> Oh, ja, du bara misslyckas automatiskt. 172 00:08:09,698 --> 00:08:11,753 >> Oh yeah, det är du Christa. 173 00:08:11,753 --> 00:08:15,190 174 00:08:15,190 --> 00:08:16,030 Ja, min dåliga. 175 00:08:16,030 --> 00:08:17,610 Japp, O Z, du kommer att gå till Davies Auditorim. 176 00:08:17,610 --> 00:08:19,140 Jag ska fixa det här när jag ladda upp. 177 00:08:19,140 --> 00:08:20,320 Ja. 178 00:08:20,320 --> 00:08:22,160 >> Och sedan också något viktigt att tänka 179 00:08:22,160 --> 00:08:25,290 är att onsdag, om du är officiellt inskrivna i onsdag avsnittet, 180 00:08:25,290 --> 00:08:26,832 du måste ta din frågesport på onsdag. 181 00:08:26,832 --> 00:08:29,706 Och om du är inskriven i torsdag, du måste ta din frågesport torsdag. 182 00:08:29,706 --> 00:08:31,000 Och det är under lektionstid. 183 00:08:31,000 --> 00:08:35,970 Där tror jag att det är 1:00 till 02:15 på onsdagar och 2:30 till 3:45 184 00:08:35,970 --> 00:08:37,220 på torsdagar. 185 00:08:37,220 --> 00:08:41,710 >> Om du har en oförsonliga konflikter, Dean: s ursäkter är det enda, 186 00:08:41,710 --> 00:08:43,030 Tyvärr kan vi ta. 187 00:08:43,030 --> 00:08:45,560 Eftersom vi har haft en allra flesta begäranden 188 00:08:45,560 --> 00:08:47,970 att byta från onsdag till torsdag. 189 00:08:47,970 --> 00:08:51,265 Som vi kan inte hedra inte Vi har en Dean begäran. 190 00:08:51,265 --> 00:08:52,650 >> OK. 191 00:08:52,650 --> 00:08:57,000 Så innan vi sätter igång på en par av problemen praxis, 192 00:08:57,000 --> 00:09:00,540 Jag kommer bara att gå över Andys användbara tips för framgång. 193 00:09:00,540 --> 00:09:04,140 Ni, när man studerar, du verkligen vill öva att skriva kod för hand. 194 00:09:04,140 --> 00:09:07,050 Första gången jag någonsin tog en CS frågesport, hade jag inte 195 00:09:07,050 --> 00:09:09,960 praxis att skriva kod för hand innan och det var mycket 196 00:09:09,960 --> 00:09:11,890 chockerande på hur svårt det var. 197 00:09:11,890 --> 00:09:16,125 >> När ni inte komma in i vana att skriva ut allt, 198 00:09:16,125 --> 00:09:20,260 det kommer helt naturligt att kunna ha autocompleted 199 00:09:20,260 --> 00:09:22,015 fästen och semikolon där. 200 00:09:22,015 --> 00:09:23,890 När du skriver ut hand, ibland är det 201 00:09:23,890 --> 00:09:27,100 mycket, mycket lätt att glömma ett semikolon, eller glömmer att stänga en konsol, 202 00:09:27,100 --> 00:09:30,970 eller glömmer att stänga ett kolon, eller något sådant. 203 00:09:30,970 --> 00:09:34,322 >> Så när du skriver kod för hand, Det är en helt annan känsla. 204 00:09:34,322 --> 00:09:37,280 Så ni, när du arbetar genom några av de problem praxis, 205 00:09:37,280 --> 00:09:38,904 det skulle bra att verkligen öva idag. 206 00:09:38,904 --> 00:09:41,770 Eller i morgon, antar jag, om du är ta frågesport på torsdagen. 207 00:09:41,770 --> 00:09:45,280 >> För det andra har vi den sista, som, åtta års värde av praktik 208 00:09:45,280 --> 00:09:47,070 quizzes på nätet. 209 00:09:47,070 --> 00:09:50,759 Årets quiz kommer förmodligen att vara mycket, mycket lik dem alla. 210 00:09:50,759 --> 00:09:51,800 De är alla mycket lika. 211 00:09:51,800 --> 00:09:54,220 Du slags komma in i stil av den typ av frågor 212 00:09:54,220 --> 00:09:57,250 att vi ber, vilken typ av funktioner som vi kommer att skriva det, 213 00:09:57,250 --> 00:09:58,580 et cetera, et cetera. 214 00:09:58,580 --> 00:10:01,980 >> Så ta övningsfrågesporter, särskilt under tidspress. 215 00:10:01,980 --> 00:10:05,390 75 minuter för att göra testet är inte mycket tid. 216 00:10:05,390 --> 00:10:07,254 Det är mycket, mycket länge. 217 00:10:07,254 --> 00:10:09,670 Och så ni verkligen vill att se till att ni är 218 00:10:09,670 --> 00:10:11,990 för vana att skriva kod för hand snabbt. 219 00:10:11,990 --> 00:10:15,070 Eftersom du inte vill att den första tid för att se en frågesport av den längden 220 00:10:15,070 --> 00:10:16,560 vara på din frågesport. 221 00:10:16,560 --> 00:10:20,540 Ni verkligen vill vara säker att du tränar i förväg. 222 00:10:20,540 --> 00:10:24,550 >> För det fjärde vill granska föreläsnings och sektions diabilder. 223 00:10:24,550 --> 00:10:25,980 Du behöver inte memorera saker. 224 00:10:25,980 --> 00:10:30,430 Egentligen är alla får en ett vitt papper anteckningar, 225 00:10:30,430 --> 00:10:31,090 fram och bak. 226 00:10:31,090 --> 00:10:32,920 Ni kan skriva eller skriva. 227 00:10:32,920 --> 00:10:37,070 Om du befinner dig behöver memorera något, lägg ner på detta blad. 228 00:10:37,070 --> 00:10:40,810 >> Jag garanterar dig, vill du inte att fastnat i mitten av denna frågesport 229 00:10:40,810 --> 00:10:43,890 att vara som, oh ja, vad är det runtime av detta slag gentemot denna typ. 230 00:10:43,890 --> 00:10:46,490 Bara lägga den ner och kopiera det direkt från din anteckning blad. 231 00:10:46,490 --> 00:10:50,420 Sedan kan du faktiskt bara använda din hjärna att tänka på de problem 232 00:10:50,420 --> 00:10:52,190 i stället för att återkalla fakta. 233 00:10:52,190 --> 00:10:55,250 Och så verkligen dra nytta av någon nisch detaljer 234 00:10:55,250 --> 00:11:00,140 att du tror att du behöver för att memorera, plopp ner om översynen bladet. 235 00:11:00,140 --> 00:11:02,680 >> OK, några frågor logistiskt om frågesporten 236 00:11:02,680 --> 00:11:05,510 innan vi börjar några frågesport problem öva? 237 00:11:05,510 --> 00:11:06,416 Ja? 238 00:11:06,416 --> 00:11:10,040 >> PUBLIK: Jag har inte haft en chans att titta på frågesport [OHÖRBAR] 239 00:11:10,040 --> 00:11:11,757 men det kommer att bli ansökan mestadels, 240 00:11:11,757 --> 00:11:14,090 eller finns det också kommer att bli, liknande, kunskapsfrågor? 241 00:11:14,090 --> 00:11:14,940 >> PROFESSOR: Det är en hel del. 242 00:11:14,940 --> 00:11:16,731 Så, det sätt som jag skulle beskrev frågesport 243 00:11:16,731 --> 00:11:18,810 är-- jag satte ihop vissa praktiska problem 244 00:11:18,810 --> 00:11:20,960 att jag drog från alla frågesporter. 245 00:11:20,960 --> 00:11:25,210 Men du kommer att se att det finns två huvudsakliga typer av frågor som vi kommer att be dig. 246 00:11:25,210 --> 00:11:28,750 >> Den ena är en mycket låg detaljnivå av saker. 247 00:11:28,750 --> 00:11:31,720 Vi ger dig en liten bit av kod och säga, är det ett fel här? 248 00:11:31,720 --> 00:11:33,110 Vad skulle skriva ut här? 249 00:11:33,110 --> 00:11:35,980 Vad kommer denna kod producerar, et cetera. 250 00:11:35,980 --> 00:11:38,710 Så mycket låg nivå informationsuppgifter. 251 00:11:38,710 --> 00:11:42,700 >> Och på steken, kommer vi att ha mycket hög nivå kunskapsbaserade frågor. 252 00:11:42,700 --> 00:11:45,190 Kan du förklara vad skillnaden mellan en binär sökning 253 00:11:45,190 --> 00:11:46,148 och en linjär sökning är? 254 00:11:46,148 --> 00:11:48,500 Varför skulle vi vilja Använd en framför den andra? 255 00:11:48,500 --> 00:11:49,960 Kanske, vad är GDB? 256 00:11:49,960 --> 00:11:51,560 Varför vill vi att använda GDB? 257 00:11:51,560 --> 00:11:54,590 Högre nivå, mer grundläggande förståelse frågor. 258 00:11:54,590 --> 00:11:58,240 Så du ser en blandning av två av dem på din frågesport. 259 00:11:58,240 --> 00:12:01,462 >> Något annat innan vi huvudet rakt in i det? 260 00:12:01,462 --> 00:12:02,879 OK. 261 00:12:02,879 --> 00:12:03,670 PUBLIK: En mer. 262 00:12:03,670 --> 00:12:04,030 PROFESSOR: Åh, en mer. 263 00:12:04,030 --> 00:12:04,340 Förlåt. 264 00:12:04,340 --> 00:12:05,631 >> Målgrupp: Ja, det är okej. 265 00:12:05,631 --> 00:12:10,140 Så du säger 75 minuter är för kort, som om det är osannolikt 266 00:12:10,140 --> 00:12:11,640 att vi kommer att avsluta? 267 00:12:11,640 --> 00:12:13,571 Eller, som, 75 minuter är precis så mycket tid 268 00:12:13,571 --> 00:12:15,700 som vi skulle behöva om vi var lämplig beredning? 269 00:12:15,700 --> 00:12:17,450 PROFESSOR: OK, så quiz är en utmaning. 270 00:12:17,450 --> 00:12:19,550 Det är definitivt en utmaning. 271 00:12:19,550 --> 00:12:21,092 Du kommer att hitta dig själv kort om tid. 272 00:12:21,092 --> 00:12:24,341 Du förmodligen kommer att slå, som 10, 15 minuter att gå, och att vara som, skit. 273 00:12:24,341 --> 00:12:25,520 Jag har så mycket kvar att göra. 274 00:12:25,520 --> 00:12:26,520 Och det är helt bra. 275 00:12:26,520 --> 00:12:28,740 Alla kommer att känna på samma sätt. 276 00:12:28,740 --> 00:12:31,074 >> Bara vara mycket medvetna om hur mycket tid du har. 277 00:12:31,074 --> 00:12:33,490 Och så det är därför jag berätta killar gör praktiska frågor. 278 00:12:33,490 --> 00:12:36,672 Eftersom det ger verkligen en stor känsla vad testet kommer att se ut. 279 00:12:36,672 --> 00:12:39,130 Så om du hittar dig själv som kunna avslutat praxis 280 00:12:39,130 --> 00:12:41,671 frågesporter i en bra mängd tid, kan du takten själv väl, 281 00:12:41,671 --> 00:12:45,695 kommer du inte har ett problem på onsdag eller torsdag. 282 00:12:45,695 --> 00:12:46,575 >> Häftigt. 283 00:12:46,575 --> 00:12:49,200 Så om alla wants-- jag tror de flesta människor har pappersark 284 00:12:49,200 --> 00:12:49,810 ut redan. 285 00:12:49,810 --> 00:12:52,604 Jag kommer att i huvudsak bara ge dig exempel på frågor, 286 00:12:52,604 --> 00:12:54,520 ge er, som en några minuter att göra dem. 287 00:12:54,520 --> 00:12:59,610 Och vi ska gå över som en klass vad svaren på dem är. 288 00:12:59,610 --> 00:13:02,860 >> Så det här är en mycket typisk tidigt fråga vi ska 289 00:13:02,860 --> 00:13:06,720 frågar dig, bara konvertera tal mellan olika baser. 290 00:13:06,720 --> 00:13:09,070 Binära, som ni kan minns, är basen två. 291 00:13:09,070 --> 00:13:12,470 Decimal är bas 10, eller vad vi som människor tolkar normalt. 292 00:13:12,470 --> 00:13:17,120 Hexadecimal är basen 16, som är noll genom nio samt A till F. 293 00:13:17,120 --> 00:13:19,990 >> Så det finns fyra siffror jag förmiddag frågar ni att konvertera här. 294 00:13:19,990 --> 00:13:23,909 Jag ska ge dig gillar, tre till fyra minuter att tänka igenom hur 295 00:13:23,909 --> 00:13:25,200 vi skulle gå att lösa detta. 296 00:13:25,200 --> 00:13:32,832 297 00:13:32,832 --> 00:13:35,710 >> PUBLIK: Är vi tillåtna räknare? 298 00:13:35,710 --> 00:13:37,630 >> PROFESSOR: Du kommer inte behöver räknemaskiner, ja. 299 00:13:37,630 --> 00:13:42,420 Jag tror grundläggande tillägg, tror jag, är alla ni kommer att bli ombedda att göra. 300 00:13:42,420 --> 00:14:41,700 301 00:14:41,700 --> 00:14:45,070 >> Och bara så jag slags har en känsla av när alla är klar, leta upp, 302 00:14:45,070 --> 00:14:47,429 våg, jag vet inte, leende, ser glad om du är klar. 303 00:14:47,429 --> 00:14:47,929 Ja. 304 00:14:47,929 --> 00:17:21,680 305 00:17:21,680 --> 00:17:23,945 Kanske ett par minuter. 306 00:17:23,945 --> 00:18:28,080 307 00:18:28,080 --> 00:18:29,600 >> OK, låt oss ta det. 308 00:18:29,600 --> 00:18:31,580 Jag avsiktligt gå till ge er mindre tid 309 00:18:31,580 --> 00:18:33,760 än du behöver antagligen göra en del av dessa problem, 310 00:18:33,760 --> 00:18:37,124 bara för att jag vill vara säker på att vi få igenom en massa problem. 311 00:18:37,124 --> 00:18:39,290 Så inga bekymmer om du inte har en chans att avsluta. 312 00:18:39,290 --> 00:18:43,770 Helt OK så länge du har en idé om hur man ska gå om detta. 313 00:18:43,770 --> 00:18:45,850 Så låt oss gå vidare och göra den första. 314 00:18:45,850 --> 00:18:52,690 315 00:18:52,690 --> 00:18:57,870 >> Så först, är det någon som vill berätta för mig i binär, vad gör var och en av dessa siffror 316 00:18:57,870 --> 00:19:00,484 representerar i termer av deras värderingar? 317 00:19:00,484 --> 00:19:01,250 Ja? 318 00:19:01,250 --> 00:19:03,349 >> PUBLIK: Två till strömmen noll, 2 till en. 319 00:19:03,349 --> 00:19:04,140 PROFESSOR: Exakt. 320 00:19:04,140 --> 00:19:04,640 Så. 321 00:19:04,640 --> 00:19:13,430 322 00:19:13,430 --> 00:19:16,430 >> Höger, så typiskt när vi är i botten 10 323 00:19:16,430 --> 00:19:20,580 alla dessa representerar är, liksom, 10 till basen på noll, eller hur? 324 00:19:20,580 --> 00:19:21,810 Det är det enda ställe. 325 00:19:21,810 --> 00:19:24,520 Alla dina 10 plats är är 10 upphöjt till ett. 326 00:19:24,520 --> 00:19:26,600 Du 100 plats är 10 upphöjt till två. 327 00:19:26,600 --> 00:19:29,570 >> Oavsett bas du i går att göra med exakt samma sak, 328 00:19:29,570 --> 00:19:31,480 bara med en annan bas. 329 00:19:31,480 --> 00:19:34,130 Så binär, är allt som är basen två. 330 00:19:34,130 --> 00:19:37,110 Du kommer att konvertera alla siffror i två till vad makt 331 00:19:37,110 --> 00:19:38,190 av den siffran. 332 00:19:38,190 --> 00:19:41,450 Och så i denna mening, vi kan ha ett enklare sätt 333 00:19:41,450 --> 00:19:43,800 av att kunna lägga upp eller summera alla talen för 334 00:19:43,800 --> 00:19:46,010 konvertera till basen 10. 335 00:19:46,010 --> 00:19:50,362 >> Så är det någon som vill berätta vad Svaret på den första är i basen tio? 336 00:19:50,362 --> 00:19:51,674 >> Publik: Två [OHÖRBAR] 337 00:19:51,674 --> 00:19:52,340 PROFESSOR: Ja. 338 00:19:52,340 --> 00:19:53,230 PUBLIK: 42. 339 00:19:53,230 --> 00:19:56,560 PROFESSOR: 42, där du går. 340 00:19:56,560 --> 00:20:00,660 Så hur vi fick detta svar var gör två första, vilket är två. 341 00:20:00,660 --> 00:20:02,760 Plus två tredje, vilket är åtta. 342 00:20:02,760 --> 00:20:07,590 Plus två till den femte, som är allt som är kvar. 343 00:20:07,590 --> 00:20:09,390 Du sammanfatta dem och det är 42. 344 00:20:09,390 --> 00:20:12,000 >> Är det någon förvirrad om hur vi fick det? 345 00:20:12,000 --> 00:20:15,630 Så basiskt additions, som Jag sa, du bör vara OK. 346 00:20:15,630 --> 00:20:17,410 Om inte, ja, kan vi träna det också. 347 00:20:17,410 --> 00:20:18,720 Men det är okej. 348 00:20:18,720 --> 00:20:20,560 Häftigt. 349 00:20:20,560 --> 00:20:25,570 >> Finns det någon som vill ge mig svara på den andra också? 350 00:20:25,570 --> 00:20:26,860 >> 50? 351 00:20:26,860 --> 00:20:27,600 Bra. 352 00:20:27,600 --> 00:20:30,044 Någon förvirrad om hur vi fick det heller? 353 00:20:30,044 --> 00:20:31,960 Cool, I have svar på nästa bild. 354 00:20:31,960 --> 00:20:34,440 Så inga bekymmer om du behöver kopiera det. 355 00:20:34,440 --> 00:20:38,860 >> OK, hexadecimal är så lite svårare. 356 00:20:38,860 --> 00:20:41,840 men jag ska visa er en genväg för hur man gör det. 357 00:20:41,840 --> 00:20:44,800 Så hexadecimal, som ni kom ihåg, det är ju vara 16. 358 00:20:44,800 --> 00:20:48,920 Och eftersom vi som människor gör faktiskt inte har 16 siffror för att representera det, 359 00:20:48,920 --> 00:20:56,940 Vi går från noll till nio, som vår första 10-värden, och sedan gör vi A till F, 360 00:20:56,940 --> 00:20:58,630 vilka är de kommande sex värden. 361 00:20:58,630 --> 00:21:03,040 >> Och så det enklaste sättet att gå från varje binärt tal till hexadecimalt 362 00:21:03,040 --> 00:21:05,350 är att bryta upp dem i halvor. 363 00:21:05,350 --> 00:21:10,042 Och så alla binära tal vi ska ge du kommer antagligen behöva åtta siffror. 364 00:21:10,042 --> 00:21:11,750 Du kan bara bryta dem i mitten. 365 00:21:11,750 --> 00:21:17,460 >> Så den första en-- en en, en en, en, en, en en. 366 00:21:17,460 --> 00:21:21,340 Typ av tror det upp, du vet, rita ett snedstreck eller ett komma mellan dem. 367 00:21:21,340 --> 00:21:23,800 Och du kan bara konvertera direkt oavsett 368 00:21:23,800 --> 00:21:26,670 detta är att den första antal hexadecimala, 369 00:21:26,670 --> 00:21:29,880 och allt vad här är att den andra av hexadecimal. 370 00:21:29,880 --> 00:21:37,584 >> Så kom ihåg från vanliga notation, vad gör hexadecimalvärden börja med? 371 00:21:37,584 --> 00:21:38,460 >> PUBLIK: Zero. 372 00:21:38,460 --> 00:21:39,270 >> PROFESSOR: 0X. 373 00:21:39,270 --> 00:21:45,210 Så vi vet att varje gång ber vi dig att konvertera alla nummer till hexadecimal, 374 00:21:45,210 --> 00:21:48,230 eller någon gång du ser någon nummer som börjar med 0X, 375 00:21:48,230 --> 00:21:50,230 du vet att det är ett hexadecimalt värde. 376 00:21:50,230 --> 00:21:54,160 >> Och då du kommer att bli ombedd att avgöra vad dessa två siffror är. 377 00:21:54,160 --> 00:21:59,690 Och hur du gör det, avprickning upp att hälften och avprickning upp att hälften. 378 00:21:59,690 --> 00:22:02,870 Så i detta exempel, vad skulle man, en, ett, en vara? 379 00:22:02,870 --> 00:22:04,890 Vilket värde skulle det vara? 380 00:22:04,890 --> 00:22:06,040 Det skulle vara F, eller hur? 381 00:22:06,040 --> 00:22:08,050 Det skulle vara 15. 382 00:22:08,050 --> 00:22:11,780 >> Så det skulle vara F. One, en, en, en här är också 383 00:22:11,780 --> 00:22:21,270 F. Så en, ett, ett, ett, ett, ett, ett, en i hexadecimal, allt är är 0xFF. 384 00:22:21,270 --> 00:22:25,350 Eftersom Halv representerade F, värdet av 15, 385 00:22:25,350 --> 00:22:27,331 och Halv representerade F, värdet 15. 386 00:22:27,331 --> 00:22:29,456 Eftersom ihåg, vi är räknat från noll till nio. 387 00:22:29,456 --> 00:22:35,290 A är som 10, B är som 11, F är 15. 388 00:22:35,290 --> 00:22:41,690 >> Låter det vettigt för alla hur vi fick från binär till hexadecimalt? 389 00:22:41,690 --> 00:22:44,595 >> PUBLIK: Och så hur vi fick 15 från en, ett, ett, ett? 390 00:22:44,595 --> 00:22:46,220 PROFESSOR: Ja, det är binärt, eller hur? 391 00:22:46,220 --> 00:22:48,090 Tänk dig detta är bara ett binärt tal. 392 00:22:48,090 --> 00:22:50,792 Så du har två till nollte, som är ett. 393 00:22:50,792 --> 00:22:51,500 Målgrupp: Åh, OK. 394 00:22:51,500 --> 00:22:51,670 Så du bara totalt ut. 395 00:22:51,670 --> 00:22:52,670 >> PROFESSOR: Ja, och sedan du bara totalt ut det. 396 00:22:52,670 --> 00:22:53,380 Det är allt det är. 397 00:22:53,380 --> 00:22:54,890 >> PUBLIK: OK. 398 00:22:54,890 --> 00:22:55,830 >> PROFESSOR: OK. 399 00:22:55,830 --> 00:23:00,740 >> PUBLIK: Så du går från binär till decimal till hexadecimal? 400 00:23:00,740 --> 00:23:04,590 >> PROFESSOR: Det är enklaste sättet att göra det, ja. 401 00:23:04,590 --> 00:23:11,390 Du kommer inte att decimal eftersom decimal har endast noll till nio. 402 00:23:11,390 --> 00:23:13,410 Vi är bara typ av dela upp detta i två delar. 403 00:23:13,410 --> 00:23:15,201 >> PUBLIK: [OHÖRBAR] med hjälp av decimal för att hitta 404 00:23:15,201 --> 00:23:17,809 vad den matchar upp till hexadecimalt. 405 00:23:17,809 --> 00:23:20,100 PROFESSOR: Jag menar, du är avprickning upp med grundläggande matematik. 406 00:23:20,100 --> 00:23:20,725 PUBLIK: Ja. 407 00:23:20,725 --> 00:23:22,300 PROFESSOR: Ja, ganska mycket. 408 00:23:22,300 --> 00:23:23,630 Det är lite förvirrande. 409 00:23:23,630 --> 00:23:26,410 Men bara vet att du kan dela upp vad 410 00:23:26,410 --> 00:23:28,160 detta värde är i bara halvor. 411 00:23:28,160 --> 00:23:29,570 Titta, vad är det i binär? 412 00:23:29,570 --> 00:23:30,610 Vilket nummer är det? 413 00:23:30,610 --> 00:23:33,270 Det kommer att bli något från noll till F. 414 00:23:33,270 --> 00:23:35,722 >> Här kommer också att vara något från noll till F. 415 00:23:35,722 --> 00:23:37,722 Och då kan du bara lägga dessa två rätt där. 416 00:23:37,722 --> 00:23:38,263 >> PUBLIK: OK. 417 00:23:38,263 --> 00:23:38,910 PROFESSOR: Japp. 418 00:23:38,910 --> 00:23:39,410 OK. 419 00:23:39,410 --> 00:23:42,320 Så ni vill prova nästa man då? 420 00:23:42,320 --> 00:23:49,601 Noll, ett, noll ett, en, noll, en nolla. 421 00:23:49,601 --> 00:23:52,350 Jag ska ge er som 30 sekunder, eftersom du förmodligen inte visste 422 00:23:52,350 --> 00:23:53,850 tricket att hur man gör detta tidigare. 423 00:23:53,850 --> 00:24:24,950 424 00:24:24,950 --> 00:24:27,381 >> OK, någon vill få det här en chans? 425 00:24:27,381 --> 00:24:28,774 >> 0X5A. 426 00:24:28,774 --> 00:24:29,440 PROFESSOR: 0X5A. 427 00:24:29,440 --> 00:24:30,470 5a. 428 00:24:30,470 --> 00:24:31,340 Bra. 429 00:24:31,340 --> 00:24:37,050 Så detta här skulle be-- du vill att berätta hur du fick det? 430 00:24:37,050 --> 00:24:38,920 Först, hur fick du fem? 431 00:24:38,920 --> 00:24:42,030 >> PUBLIK: Eftersom noll, ett, noll, är en fem. 432 00:24:42,030 --> 00:24:45,170 >> PROFESSOR: Förstår alla varför noll, ett, noll, en är fem? 433 00:24:45,170 --> 00:24:46,260 Du har en här. 434 00:24:46,260 --> 00:24:48,010 Du har inget i två till den första. 435 00:24:48,010 --> 00:24:50,300 I två till den andra, du har en, vilket är fyra. 436 00:24:50,300 --> 00:24:52,600 Så du lägger till fyra plus den, har du fem. 437 00:24:52,600 --> 00:24:53,600 Alla bra? 438 00:24:53,600 --> 00:24:54,100 OK. 439 00:24:54,100 --> 00:24:56,570 Och vad detta vara och varför? 440 00:24:56,570 --> 00:24:58,350 Vilket nummer gör A motsvarar? 441 00:24:58,350 --> 00:24:59,350 >> PUBLIK: 10. 442 00:24:59,350 --> 00:25:00,976 >> PROFESSOR: Och vad detta i basen två? 443 00:25:00,976 --> 00:25:01,850 PUBLIK: [OHÖRBAR] 444 00:25:01,850 --> 00:25:03,010 PROFESSOR: Exakt. 445 00:25:03,010 --> 00:25:06,370 Så detta andra värde här skulle vara 0X5A. 446 00:25:06,370 --> 00:25:08,410 >> Alla bra om hur du konverterar? 447 00:25:08,410 --> 00:25:10,770 Det är mycket enklare än du tror att det är. 448 00:25:10,770 --> 00:25:13,330 Jag vill bara se till att du vet tips 449 00:25:13,330 --> 00:25:14,950 och tricks för hur man gör det. 450 00:25:14,950 --> 00:25:18,432 >> PUBLIK: Varför kan du bara dela den i mitten som? 451 00:25:18,432 --> 00:25:21,390 Bara vara som, OK, jag kommer bara att bryr sig om dessa första [OHÖRBAR]? 452 00:25:21,390 --> 00:25:24,240 >> PROFESSOR: Eftersom det är faktiskt sätt hexadecimala värden är representerade. 453 00:25:24,240 --> 00:25:26,890 0X, som faktiskt betyder inget annat än att berätta 454 00:25:26,890 --> 00:25:28,710 att det är ett hexadecimalt tal. 455 00:25:28,710 --> 00:25:31,580 Och detta alltid representerar de fyra första siffrorna. 456 00:25:31,580 --> 00:25:34,330 Och detta alltid representerar de fyra sista siffrorna. 457 00:25:34,330 --> 00:25:37,835 Och så dessa två siffror bara motsvarar olika bitar. 458 00:25:37,835 --> 00:25:39,200 >> PUBLIK: Så vi kommer always-- 459 00:25:39,200 --> 00:25:41,830 >> PROFESSOR: Du är alltid kommer att få åtta värdebitar. 460 00:25:41,830 --> 00:25:44,580 >> PUBLIK: Är det precis som en sak här eller att en sak överallt? 461 00:25:44,580 --> 00:25:46,883 PROFESSOR: Det är bara en sak i datorer, yep. 462 00:25:46,883 --> 00:25:47,424 PUBLIK: OK. 463 00:25:47,424 --> 00:25:48,240 Fantastisk. 464 00:25:48,240 --> 00:25:51,290 >> Professor: Också, så i detta exempel vi omvandlas från binär till decimal, 465 00:25:51,290 --> 00:25:53,290 och från binär till hexadecimal. 466 00:25:53,290 --> 00:25:56,610 Ni vill se till att du också öva går tvärtom. 467 00:25:56,610 --> 00:26:03,370 Så om jag gav dig 0xFF, du kunde dra ut det i binär, eller hur? 468 00:26:03,370 --> 00:26:06,820 >> Du konvertera F till binär, som är ett, ett, ett, ett, 469 00:26:06,820 --> 00:26:09,380 konvertera F till binär, som är ett, ett, ett, en. 470 00:26:09,380 --> 00:26:11,310 >> Så vi kan be dig att göra tvärtom. 471 00:26:11,310 --> 00:26:14,817 Så decimal till binär, eller hexadecimal till binärt. 472 00:26:14,817 --> 00:26:16,650 Så du vill göra att du vet åt båda hållen. 473 00:26:16,650 --> 00:26:19,371 Vi kommer förmodligen att be dig en kombination av de två. 474 00:26:19,371 --> 00:26:20,660 >> Ja, har du en fråga? 475 00:26:20,660 --> 00:26:22,724 Jag kan see-- du är bra? 476 00:26:22,724 --> 00:26:23,348 PUBLIK: Ja. 477 00:26:23,348 --> 00:26:24,560 PROFESSOR: OK. 478 00:26:24,560 --> 00:26:26,101 Är jag bra att radera det här? 479 00:26:26,101 --> 00:26:26,600 Bra. 480 00:26:26,600 --> 00:26:33,965 481 00:26:33,965 --> 00:26:40,437 >> Okej, så svaren är här om någon är nyfikna senare och blir förvirrade. 482 00:26:40,437 --> 00:26:41,844 OK. 483 00:26:41,844 --> 00:26:46,070 >> PUBLIK: Spelar det någon roll om vi sätter våra brev i huvudstaden eller gemener? 484 00:26:46,070 --> 00:26:50,360 >> PROFESSOR: Det gör, eftersom i hexadecimal, enligt konvention, 485 00:26:50,360 --> 00:26:52,840 alla tecken är versaler. 486 00:26:52,840 --> 00:26:54,650 Så A till F är kommer att vara versaler. 487 00:26:54,650 --> 00:26:58,660 Om du sätter ett gement a, jag vet inte om vi nödvändigtvis skulle märka det fel. 488 00:26:58,660 --> 00:27:00,679 Men teoretiskt, det är inte tekniskt 489 00:27:00,679 --> 00:27:01,970 hur man ska få det. 490 00:27:01,970 --> 00:27:03,303 Så de bör alla vara versaler. 491 00:27:03,303 --> 00:27:05,910 Ja, bra fråga. 492 00:27:05,910 --> 00:27:07,780 >> OK. 493 00:27:07,780 --> 00:27:08,790 Den andra frågan. 494 00:27:08,790 --> 00:27:12,750 Tänk på detta underbara program här. 495 00:27:12,750 --> 00:27:15,180 Jag ska ställa frågan, Jag ska komma tillbaka redan. 496 00:27:15,180 --> 00:27:23,170 >> Så, för det första, vad som finns inuti standard io.h det är av intresse för programmet? 497 00:27:23,170 --> 00:27:26,640 För det andra, vad gör ogiltig betyda i linje tre? 498 00:27:26,640 --> 00:27:30,572 Och för det tredje, vad återvänder noll från main, som linje sex, i allmänhet betyda? 499 00:27:30,572 --> 00:27:33,280 Om ni vill skriva dem ner, eftersom jag måste gå tillbaka 500 00:27:33,280 --> 00:27:36,810 till bilden bara så att du kan se koden. 501 00:27:36,810 --> 00:27:40,400 Detta är ett exempel på, liksom, kanske en högre fråga nivå där vi ber dig 502 00:27:40,400 --> 00:27:42,435 vad saker betyder i ett program. 503 00:27:42,435 --> 00:27:47,290 504 00:27:47,290 --> 00:27:49,215 >> Alla bra för mig att gå tillbaka till bilden? 505 00:27:49,215 --> 00:27:53,400 506 00:27:53,400 --> 00:27:54,361 OK bra. 507 00:27:54,361 --> 00:27:57,610 Så jag ska ge er som kanske tre minuter att titta på detta en riktigt snabbt. 508 00:27:57,610 --> 00:28:41,330 509 00:28:41,330 --> 00:28:44,140 >> OK, så detta är som ganska lätt, konceptuellt. 510 00:28:44,140 --> 00:28:49,280 Finns det någon som vill berätta vad som är först inuti genom hash inklusive 511 00:28:49,280 --> 00:28:52,630 vår standard io.h bibliotek fil? 512 00:28:52,630 --> 00:28:55,510 Varför behöver vi att biblioteket ingår för det här programmet? 513 00:28:55,510 --> 00:28:56,930 Vad här behöver vi det för? 514 00:28:56,930 --> 00:28:56,980 >> Ja? 515 00:28:56,980 --> 00:28:58,340 >> PUBLIK: Är det när du sätter det printf? 516 00:28:58,340 --> 00:28:59,131 >> PROFESSOR: Exakt. 517 00:28:59,131 --> 00:29:01,780 Så printf, när du ta en inmatning från användaren 518 00:29:01,780 --> 00:29:04,140 och skriva ut något till skärmen, det är 519 00:29:04,140 --> 00:29:05,600 standard input, output bibliotek. 520 00:29:05,600 --> 00:29:07,170 Tänk på det som way-- input, output. 521 00:29:07,170 --> 00:29:08,430 >> Har jag en utgång? 522 00:29:08,430 --> 00:29:09,207 Ja det gör jag. 523 00:29:09,207 --> 00:29:12,040 Så jag vet att jag alltid kommer att behöver standardisera i.o biblioteket. 524 00:29:12,040 --> 00:29:16,400 >> Så printf är funktionen genom vilket vi behöver komma åt 525 00:29:16,400 --> 00:29:19,370 och hashtag inkluderar standard i.o bibliotek. 526 00:29:19,370 --> 00:29:20,280 OK. 527 00:29:20,280 --> 00:29:22,660 >> För det andra vad void betyda? 528 00:29:22,660 --> 00:29:26,970 Vi har int main (void), vad gör ogiltig här menar här på rad tre? 529 00:29:26,970 --> 00:29:28,080 Ja, i ryggen. 530 00:29:28,080 --> 00:29:29,020 >> PUBLIK: [OHÖRBAR] 531 00:29:29,020 --> 00:29:29,920 >> PROFESSOR: Exakt. 532 00:29:29,920 --> 00:29:33,320 Så kom ihåg, vi har lärt oss börjar med vår pset 533 00:29:33,320 --> 00:29:35,360 att du kan faktiskt ange kommandoraden 534 00:29:35,360 --> 00:29:39,010 argument som ditt program, som du huvudsakliga funktion, tar du, användaren, 535 00:29:39,010 --> 00:29:39,650 kalla det. 536 00:29:39,650 --> 00:29:42,650 Om vi ​​har tomrum, betyder det att du kunde bara köra programmet direkt 537 00:29:42,650 --> 00:29:44,680 utan kommandoradsargument. 538 00:29:44,680 --> 00:29:46,160 Alla tydliga på den punkten? 539 00:29:46,160 --> 00:29:46,660 OK. 540 00:29:46,660 --> 00:29:52,850 >> Och slutligen varför vi bry gör denna avkastning noll sak här? 541 00:29:52,850 --> 00:29:54,740 Varför har vi även en int main? 542 00:29:54,740 --> 00:29:57,330 Varför kan vi inte bara void main tomrum? 543 00:29:57,330 --> 00:29:59,216 Ja? 544 00:29:59,216 --> 00:30:01,590 PUBLIK: Bara så att vi kan vara säker på att programmet är 545 00:30:01,590 --> 00:30:04,247 spännande framgångsrikt, som motsats till om det var räknade. 546 00:30:04,247 --> 00:30:06,580 Och vi skulle veta att det är en annan typ av fel. 547 00:30:06,580 --> 00:30:07,621 >> PROFESSOR: Ja, exakt. 548 00:30:07,621 --> 00:30:10,670 Detta är bara ett mycket konventionell sak som vi gör, 549 00:30:10,670 --> 00:30:13,840 är att precis i slutet av ditt program, bara för att se 550 00:30:13,840 --> 00:30:15,830 att din huvudsakliga funktion körs på rätt sätt, 551 00:30:15,830 --> 00:30:17,940 vi alltid vill göra retur noll. 552 00:30:17,940 --> 00:30:21,160 Även om vi får nödvändigtvis inte att skrivas ut som helst. 553 00:30:21,160 --> 00:30:25,092 >> För som programmerare, du vet, om du har många olika rader kod 554 00:30:25,092 --> 00:30:27,050 och du inte vet var dessa går fel, 555 00:30:27,050 --> 00:30:30,240 och om ett fel inträffar som du vill se till att du får detta fel. 556 00:30:30,240 --> 00:30:33,240 Och så typiskt om något går fel vi kommer att ha en avkastning på en bara 557 00:30:33,240 --> 00:30:34,669 att se till att vi vet att det är. 558 00:30:34,669 --> 00:30:36,460 Så om du ser en återgång noll, som typiskt 559 00:30:36,460 --> 00:30:38,293 innebär att ditt program är avrättades framgångsrikt. 560 00:30:38,293 --> 00:30:40,490 561 00:30:40,490 --> 00:30:40,990 Bra? 562 00:30:40,990 --> 00:30:45,180 563 00:30:45,180 --> 00:30:45,680 Häftigt. 564 00:30:45,680 --> 00:30:48,710 565 00:30:48,710 --> 00:30:52,680 >> OK, andra program här. 566 00:30:52,680 --> 00:30:54,827 Tänk på att. 567 00:30:54,827 --> 00:30:56,910 Och om ni ser en flyta, ni kan förmodligen 568 00:30:56,910 --> 00:31:00,810 ha en god uppfattning om vad Jag är på väg att be er. 569 00:31:00,810 --> 00:31:05,200 >> Så när det här programmet körs, som ni kan se, 570 00:31:05,200 --> 00:31:09,330 Jag förklara en flottör i min huvudsakliga funktion. 571 00:31:09,330 --> 00:31:13,470 Jag namnge det "svara" och jag inställning som är lika med ett delat med 10. 572 00:31:13,470 --> 00:31:17,860 Jag skrivs ut, till en decimal, som flyter. 573 00:31:17,860 --> 00:31:19,880 Och då jag återvänder noll. 574 00:31:19,880 --> 00:31:24,470 >> Så när programmet körs, tänker tillbaka på giriga nu, 575 00:31:24,470 --> 00:31:26,550 Programmet skriver 0.0. 576 00:31:26,550 --> 00:31:29,993 Som vi alla vet, förhoppningsvis vi alla vet, ett delat med 10 är inte en 0,00, 577 00:31:29,993 --> 00:31:32,350 det är 0,1. 578 00:31:32,350 --> 00:31:37,810 Men förklara varför detta program tänker att ett dividerat med 10 utskrifter till 0,1 andra 579 00:31:37,810 --> 00:31:39,504 än 0,1? 580 00:31:39,504 --> 00:31:42,545 Jag ska ge er kanske gillar 30 sekunder för att bara snabbt tänka på det 581 00:31:42,545 --> 00:31:43,878 och jag ska gå tillbaka till programmet. 582 00:31:43,878 --> 00:32:17,800 583 00:32:17,800 --> 00:32:20,290 >> OK. 584 00:32:20,290 --> 00:32:22,205 Någon som vill ge det en chans? 585 00:32:22,205 --> 00:32:24,330 I tre meningar eller mindre, eftersom det vanligtvis är vi 586 00:32:24,330 --> 00:32:27,650 kommer att begränsa alla svar till tre meningar eller mindre 587 00:32:27,650 --> 00:32:31,130 så att du inte bara regurgitate slumpmässiga saker på dina frågesport. 588 00:32:31,130 --> 00:32:32,740 >> Ja, ta ett skott. 589 00:32:32,740 --> 00:32:36,390 >> PUBLIK: Så jag tror att det är det här som kallas, liksom, [OHÖRBAR] 590 00:32:36,390 --> 00:32:42,320 Så det kan vara, till exempel, det kan finnas, liksom, 0,09, 591 00:32:42,320 --> 00:32:47,250 att om du skriver ut första siffra, skulle det vara till 0,0? 592 00:32:47,250 --> 00:32:49,100 >> PROFESSOR: Stäng inte riktigt. 593 00:32:49,100 --> 00:32:49,810 Chris? 594 00:32:49,810 --> 00:32:51,770 >> PUBLIK: Du dela en och 10, och de är båda heltal. 595 00:32:51,770 --> 00:32:54,610 Och så sätt att det kommer att lagra den är som ett heltal. 596 00:32:54,610 --> 00:32:56,480 Och så det närmaste heltal skulle vara 0,0. 597 00:32:56,480 --> 00:32:57,471 Och så det är 0,1. 598 00:32:57,471 --> 00:32:58,970 PROFESSOR: Ja, det är riktigt bra. 599 00:32:58,970 --> 00:33:00,040 Det är det rätta svaret. 600 00:33:00,040 --> 00:33:03,597 Så det här är ett mycket förvirrande koncept för många barn. 601 00:33:03,597 --> 00:33:06,680 Och jag vill verkligen se till att Detta förstärks i allas huvud. 602 00:33:06,680 --> 00:33:10,090 >> Så vad vi kallar flytande punkt inexakthet, 603 00:33:10,090 --> 00:33:12,800 där orsaken till att en hel del av dina program i giriga 604 00:33:12,800 --> 00:33:17,010 fungerade inte från början var att du har glömt att lägga din variabel. 605 00:33:17,010 --> 00:33:19,370 Så vad Chris sa var helt korrekt. 606 00:33:19,370 --> 00:33:21,990 >> En flottör är till sin natur oprecisa. 607 00:33:21,990 --> 00:33:26,400 För i en dator, rätt, vi har en ändlig mängd av bitar av minnet 608 00:33:26,400 --> 00:33:28,480 vi kan använda för att representera tal. 609 00:33:28,480 --> 00:33:33,480 Så, till exempel, denna CS50 ID är-- Jag tror att det är en 64-bitarsdator. 610 00:33:33,480 --> 00:33:37,520 >> En flottör kan endast representeras med en begränsad mängd av dessa bitar. 611 00:33:37,520 --> 00:33:42,260 Och så 0,1 med oändliga nollor, att var 0,1 är, eller hur? 612 00:33:42,260 --> 00:33:45,450 Men vi kan inte faktiskt lagra det numret i vår dator. 613 00:33:45,450 --> 00:33:47,810 Vi har helt enkelt inte tillräckligt med minne för att göra så. 614 00:33:47,810 --> 00:33:52,340 >> Och så den närmaste tillnärmning av vad lagras i minnet är faktiskt 615 00:33:52,340 --> 00:33:55,390 något liknande 0,000 något, något, något, något. 616 00:33:55,390 --> 00:34:01,240 Som, när du trunkerar det, avrundar ner till 0,0. 617 00:34:01,240 --> 00:34:05,640 >> Och så det här exemplet är bara en som visar massor av frågor 618 00:34:05,640 --> 00:34:08,469 vi har när vi är försöker felaktigt göra matte 619 00:34:08,469 --> 00:34:11,000 utan gjutning som en annan heltal. 620 00:34:11,000 --> 00:34:14,870 Så bara vara försiktig med att detta händer. 621 00:34:14,870 --> 00:34:18,239 >> På frågesporter, om vi ger dig en kodblock och det är, 622 00:34:18,239 --> 00:34:19,510 Vad skrivs ut i slutet? 623 00:34:19,510 --> 00:34:24,096 Och om det är något slumpmässigt värde som du killar bör veta varför det händer. 624 00:34:24,096 --> 00:34:24,909 Ja? 625 00:34:24,909 --> 00:34:27,926 >> PUBLIK: Trunkera är att bli av med allt efter en viss punkt? 626 00:34:27,926 --> 00:34:28,513 [OHÖRBAR] 627 00:34:28,513 --> 00:34:30,929 PROFESSOR: Ja, så faktiskt Detta är ett riktigt dåligt exempel, 628 00:34:30,929 --> 00:34:37,870 eftersom 0,100 oavsett faktiskt skulle stympa ner till 0,1. 629 00:34:37,870 --> 00:34:41,389 Men om du skulle köra det-- jag inte minns, eftersom förra året 630 00:34:41,389 --> 00:34:42,830 körde den på ett annat program. 631 00:34:42,830 --> 00:34:45,300 De körde det i något som kallas den CS50 Appliance, som 632 00:34:45,300 --> 00:34:46,389 skiljer sig från den ID. 633 00:34:46,389 --> 00:34:48,520 Det var en 32-bitarssystem, tror jag. 634 00:34:48,520 --> 00:34:50,290 Och så fanns det olika nummer. 635 00:34:50,290 --> 00:34:53,330 >> Men i huvudsak vet bara att hela konceptet med stympning 636 00:34:53,330 --> 00:34:54,815 och hur det bara skär saker. 637 00:34:54,815 --> 00:34:55,690 Och så om det rounds-- 638 00:34:55,690 --> 00:34:56,300 >> PUBLIK: Utan avrundning. 639 00:34:56,300 --> 00:34:57,370 >> PROFESSOR: Exakt. 640 00:34:57,370 --> 00:34:57,870 Ja. 641 00:34:57,870 --> 00:35:02,330 642 00:35:02,330 --> 00:35:04,380 Häftigt. 643 00:35:04,380 --> 00:35:05,250 >> Hej, i ryggen. 644 00:35:05,250 --> 00:35:07,634 Vi ska bara över några quiz omdöme frågor. 645 00:35:07,634 --> 00:35:08,430 >> Okej. 646 00:35:08,430 --> 00:35:10,150 Så överväga ett annat program här. 647 00:35:10,150 --> 00:35:12,797 648 00:35:12,797 --> 00:35:15,380 Jag ska ge er en par minuter att läsa över detta. 649 00:35:15,380 --> 00:35:18,588 Detta är något som var för en mycket nyligen att jag tror blåste en hel del av er 650 00:35:18,588 --> 00:35:19,142 killar sinnen. 651 00:35:19,142 --> 00:35:21,100 Men vi kommer att prata genom detta igen bara 652 00:35:21,100 --> 00:35:24,152 se till att du förstår det helt. 653 00:35:24,152 --> 00:35:24,652 OK. 654 00:35:24,652 --> 00:35:41,280 655 00:35:41,280 --> 00:35:41,780 OK. 656 00:35:41,780 --> 00:35:44,342 Någon behöver mer tid att läsa igenom denna kod? 657 00:35:44,342 --> 00:35:45,650 OK. 658 00:35:45,650 --> 00:35:50,630 >> Så det tycks mig som om i detta program jag 659 00:35:50,630 --> 00:35:53,460 skapa två strängar med hjälp getString. 660 00:35:53,460 --> 00:35:55,180 En kallas s och en kallas t. 661 00:35:55,180 --> 00:35:58,680 Och om de är lika lika med varandra, 662 00:35:58,680 --> 00:36:00,880 Det ska skriva "Du skriver samma sak. " 663 00:36:00,880 --> 00:36:04,170 >> Men elsewise, skulle det ut: "Du skrivit olika saker, "rätt? 664 00:36:04,170 --> 00:36:05,990 Verkar väldigt, väldigt enkelt. 665 00:36:05,990 --> 00:36:08,720 Men, men, om jag faktiskt försök att skriva det här programmet, 666 00:36:08,720 --> 00:36:12,230 det verkar som även när jag mata in exakt samma strängar, 667 00:36:12,230 --> 00:36:15,490 det fortfarande skrivs ut, "Du skrivit olika saker! " 668 00:36:15,490 --> 00:36:18,020 Finns det någon som vill ta en skott på varför detta program alltid 669 00:36:18,020 --> 00:36:20,370 svarar att ingångarna är olika, även 670 00:36:20,370 --> 00:36:22,090 när orden själva är densamma? 671 00:36:22,090 --> 00:36:24,870 672 00:36:24,870 --> 00:36:29,170 >> Så om jag skulle input-- David kärlek att använda ett exempel som mamma, rätt? 673 00:36:29,170 --> 00:36:37,890 Gemener M-O-M för S, T lika gemener M-O-M. 674 00:36:37,890 --> 00:36:40,340 Om jag körde detta genom denna kod, varför skulle det 675 00:36:40,340 --> 00:36:44,180 skriva ut "du skrivit olika saker?" 676 00:36:44,180 --> 00:36:46,336 >> Finns det någon som behöver mer tid att tänka på det här? 677 00:36:46,336 --> 00:36:47,294 OK, jag tror att vi är bra. 678 00:36:47,294 --> 00:36:48,716 Ja? 679 00:36:48,716 --> 00:36:53,930 >> Målgrupp: OK, så det är något om där det lagras i minnet, eller hur? 680 00:36:53,930 --> 00:36:54,890 >> PROFESSOR: Japp. 681 00:36:54,890 --> 00:37:00,400 >> PUBLIK: Om det är som, om detta string s lagras på minnet spot-- 682 00:37:00,400 --> 00:37:01,689 Jag uppfinna this-- är noll. 683 00:37:01,689 --> 00:37:02,355 PROFESSOR: Visst. 684 00:37:02,355 --> 00:37:05,290 PUBLIK: Och string t lagras vid minnespunkt, 685 00:37:05,290 --> 00:37:11,000 liknande, 167, och därefter noll inte är lika 167. 686 00:37:11,000 --> 00:37:12,610 >> PROFESSOR: Exakt. 687 00:37:12,610 --> 00:37:18,350 OK, så kom ihåg denna otroliga uppenbarelse vi förklarat för er 688 00:37:18,350 --> 00:37:21,530 den senaste veckan, att strängar egentligen inte existerar? 689 00:37:21,530 --> 00:37:25,380 När vi skapar något som kallas sträng vi är, i verkligheten, 690 00:37:25,380 --> 00:37:29,330 skapa något som kallas röding stjärna. 691 00:37:29,330 --> 00:37:34,470 Som allt är det är en pekare till en sträng eller till en matris av tecken. 692 00:37:34,470 --> 00:37:39,480 >> Och så i detta exempel, om jag var att mata in M-O-M vägen 693 00:37:39,480 --> 00:37:49,350 att min dator skulle förvara det är i minnet backslash noll, eller hur? 694 00:37:49,350 --> 00:37:53,180 Dessa fyra tecken, tecken, skulle lagras någonstans. 695 00:37:53,180 --> 00:37:59,290 >> Och då dessa fyra tecken, omvänt snedstreck noll, 696 00:37:59,290 --> 00:38:01,275 lagras någon annanstans, eller hur? 697 00:38:01,275 --> 00:38:04,685 Jag har ingen aning om adresserna är, de är någonstans i min dator. 698 00:38:04,685 --> 00:38:07,080 Men jag vet inte exakt var de befinner sig. 699 00:38:07,080 --> 00:38:10,170 >> När jag skapar en sträng s, allt som verkligen är 700 00:38:10,170 --> 00:38:15,550 är en pekare till start av denna sträng. 701 00:38:15,550 --> 00:38:21,130 Och när jag skapar denna t-värdet, allt som är en pekare till här. 702 00:38:21,130 --> 00:38:23,980 Och så när du försöker att likställa och kontrollera 703 00:38:23,980 --> 00:38:27,710 för att se om s är jämlikar lika till t, datorn 704 00:38:27,710 --> 00:38:31,635 är egentligen bara återvänder till du adressen till denna m 705 00:38:31,635 --> 00:38:33,390 och adressen för den m. 706 00:38:33,390 --> 00:38:36,230 Och eftersom de är två separata delar av data 707 00:38:36,230 --> 00:38:38,750 som är lagrade i två olika adresser i din dator, 708 00:38:38,750 --> 00:38:41,750 datorn kommer aldrig att erkänna dem som samma. 709 00:38:41,750 --> 00:38:43,500 Finns det någon som vill ge ett skott på vad vi 710 00:38:43,500 --> 00:38:46,900 skulle behöva göra om vi ville korrigera detta och har en korrekt pågående program 711 00:38:46,900 --> 00:38:49,360 i stället? 712 00:38:49,360 --> 00:38:52,070 Tänk på att för ett par sekunder. 713 00:38:52,070 --> 00:38:54,929 Vad behöver vi byta till få det här programmet fungerar 714 00:38:54,929 --> 00:38:56,220 det sätt vi vill att det ska fungera? 715 00:38:56,220 --> 00:39:17,260 716 00:39:17,260 --> 00:39:18,918 >> Ja, vill ta ett hugg på det? 717 00:39:18,918 --> 00:39:24,082 >> PUBLIK: Kan vi försöker dereference den pekare och kolla igenom arrayen? 718 00:39:24,082 --> 00:39:25,540 PROFESSOR: Det är ett sätt att göra det. 719 00:39:25,540 --> 00:39:27,880 Så, vad är ditt namn igen? 720 00:39:27,880 --> 00:39:29,010 Jag är ledsen, påminna mig. 721 00:39:29,010 --> 00:39:29,589 >> Zee: Zee. 722 00:39:29,589 --> 00:39:32,130 PROFESSOR: Ja, så vad Zee föreslog skulle absolut fungera. 723 00:39:32,130 --> 00:39:32,629 Höger? 724 00:39:32,629 --> 00:39:35,730 Vi kunde dereference pekaren och faktiskt gå och tillgång 725 00:39:35,730 --> 00:39:38,460 fysiska data i härifrån. 726 00:39:38,460 --> 00:39:40,300 Och vi kan bara jämföra hela skärmen. 727 00:39:40,300 --> 00:39:43,670 >> Vi kan säga, OK, pekare, ge mig vad som finns inuti här. 728 00:39:43,670 --> 00:39:44,960 Det skulle återvända en m. 729 00:39:44,960 --> 00:39:47,168 Och jag skulle säga, pekare, ge mig vad som finns inuti här. 730 00:39:47,168 --> 00:39:47,750 Returnera en m. 731 00:39:47,750 --> 00:39:48,410 Gör de matchen? 732 00:39:48,410 --> 00:39:49,410 Ja. 733 00:39:49,410 --> 00:39:50,340 Då kan vi gå vidare. 734 00:39:50,340 --> 00:39:54,240 >> Vi håller kontroll av hela två strängar hela vägen fram till slutet 735 00:39:54,240 --> 00:39:56,635 och se om de är lika, Om alla värden är lika. 736 00:39:56,635 --> 00:39:59,680 Och om alla värden är lika, då vet vi strängarna är sanna. 737 00:39:59,680 --> 00:40:01,600 Absolut, det är hur vi skulle göra det? 738 00:40:01,600 --> 00:40:03,930 >> Finns det någon förvirrad på något av detta? 739 00:40:03,930 --> 00:40:06,970 Hela tanken med hur strängar i verkligheten bara pekare, 740 00:40:06,970 --> 00:40:08,440 och hur de egentligen inte existerar? 741 00:40:08,440 --> 00:40:10,480 Och varför vi får fel gillar hur vi får det? 742 00:40:10,480 --> 00:40:15,070 Eftersom jag garanterar att du killar, pekare och sträng tilldelning och minne 743 00:40:15,070 --> 00:40:16,470 kommer att komma upp. 744 00:40:16,470 --> 00:40:17,410 >> Ja? 745 00:40:17,410 --> 00:40:21,072 >> PUBLIK: [OHÖRBAR] dereference det, du bara sätta en stjärna [OHÖRBAR] 746 00:40:21,072 --> 00:40:21,780 PROFESSOR: Rätt. 747 00:40:21,780 --> 00:40:28,430 Så för att derererence en pekarorgan för att gå till den adressen för pekaren 748 00:40:28,430 --> 00:40:30,390 och få de uppgifter, värdet där. 749 00:40:30,390 --> 00:40:32,700 Och sättet att göra det är stjärn pekare. 750 00:40:32,700 --> 00:40:34,262 Förväxla inte det. 751 00:40:34,262 --> 00:40:35,186 >> PUBLIK: [OHÖRBAR]. 752 00:40:35,186 --> 00:40:35,852 >> PROFESSOR: Ja. 753 00:40:35,852 --> 00:40:39,750 PUBLIK: Så du kan bara skriva Om stjärnan s lika jämlikar stjärna t. 754 00:40:39,750 --> 00:40:40,630 >> PROFESSOR: Tja, nej. 755 00:40:40,630 --> 00:40:40,960 Nej. 756 00:40:40,960 --> 00:40:41,640 >> PUBLIK: Det är inte bra nog, eller hur? 757 00:40:41,640 --> 00:40:43,760 >> PROFESSOR: Det är inte för att du är bara kontrollera den första bokstaven. 758 00:40:43,760 --> 00:40:46,010 Du förmodligen kommer att behöver någon form av en slinga som 759 00:40:46,010 --> 00:40:49,055 itererar genom varje enskild karaktär i båda strängarna. 760 00:40:49,055 --> 00:40:49,837 Ja. 761 00:40:49,837 --> 00:40:52,920 Så om du ville bara kolla att se om de började med samma sak, 762 00:40:52,920 --> 00:40:58,220 du kan göra om, stjärna s är lika med stjärnan t. 763 00:40:58,220 --> 00:41:01,300 Då vet du att åtminstone de började med samma tecken. 764 00:41:01,300 --> 00:41:01,952 >> Ja? 765 00:41:01,952 --> 00:41:04,056 >> PUBLIK: Så sätt du gör det skulle vara 766 00:41:04,056 --> 00:41:06,064 som en inbäddad for-loop eller pekare? 767 00:41:06,064 --> 00:41:06,730 PROFESSOR: Ja. 768 00:41:06,730 --> 00:41:08,170 Ganska mycket bara en for-loop. 769 00:41:08,170 --> 00:41:12,430 Kom ihåg att David i klassen nämnt den fria syntaktiska socker? 770 00:41:12,430 --> 00:41:17,690 Och han hade denna mycket förvirrande sak stjärna t 771 00:41:17,690 --> 00:41:22,030 plus ett, där det skulle integrera igenom och det flyttar pekaren? 772 00:41:22,030 --> 00:41:29,910 Ju enklare sätt att göra detta är bara ton i. 773 00:41:29,910 --> 00:41:31,090 >> Så det är bara en array. 774 00:41:31,090 --> 00:41:34,630 Det sätt som du skulle ha en för loop som sprang från noll till i, där 775 00:41:34,630 --> 00:41:36,580 i är längden av den sträng, kunde du bara 776 00:41:36,580 --> 00:41:39,510 skriver att istället för att göra det Hela pekare, referens sak. 777 00:41:39,510 --> 00:41:43,510 Så dessa saker är exakt motsvarande i din dator. 778 00:41:43,510 --> 00:41:45,905 >> Ni förmodligen inte måste veta att, 779 00:41:45,905 --> 00:41:48,280 men det är bra att bara typ av har i ryggen ditt sinne. 780 00:41:48,280 --> 00:41:52,630 Bara vet att datorn erkänner olika block av kod 781 00:41:52,630 --> 00:41:53,890 som samma sak. 782 00:41:53,890 --> 00:41:57,510 Eftersom detta är bara långt mer användar vänliga för oss att presentera det som det är 783 00:41:57,510 --> 00:41:58,150 en array. 784 00:41:58,150 --> 00:42:00,990 Det är bara lättare. 785 00:42:00,990 --> 00:42:02,719 >> PUBLIK: Så använd strlen att gilla, get-- 786 00:42:02,719 --> 00:42:03,385 PROFESSOR: Ja. 787 00:42:03,385 --> 00:42:03,926 PUBLIK: OK. 788 00:42:03,926 --> 00:42:05,940 PROFESSOR: Du kunde använda strlen eller om du 789 00:42:05,940 --> 00:42:10,420 hade inte strlen du kan bara göra upp tills du träffar bakstreck noll för båda. 790 00:42:10,420 --> 00:42:11,568 Antingen skulle fungera. 791 00:42:11,568 --> 00:42:12,068 Ja. 792 00:42:12,068 --> 00:42:14,871 793 00:42:14,871 --> 00:42:17,996 PUBLIK: Så det är att dereference varje enstaka tecken om vi var faktiskt 794 00:42:17,996 --> 00:42:21,044 skriva denna kod, vi bara kunde göra t parentes i 795 00:42:21,044 --> 00:42:22,460 gillar med stjärnan framför den? 796 00:42:22,460 --> 00:42:27,700 >> PROFESSOR: Ja, lika likar s fäste i, och sedan hålla sig i rörelse i 797 00:42:27,700 --> 00:42:29,790 down up tills du träffar slutet. 798 00:42:29,790 --> 00:42:31,286 Ja, det är vad du skulle göra. 799 00:42:31,286 --> 00:42:33,660 Och jag ska faktiskt ha en nästa exempel på när vi faktiskt 800 00:42:33,660 --> 00:42:36,740 skriva strlen så ni kommer slag av få leka med den lite. 801 00:42:36,740 --> 00:42:43,567 >> Så är alla klart på bara minne, strängar, pekare, kvalitets adresser? 802 00:42:43,567 --> 00:42:46,650 Vissa begrepp högre nivå som du kommer säkert behov av att veta på frågesporten 803 00:42:46,650 --> 00:42:48,928 i morgon. 804 00:42:48,928 --> 00:42:49,904 >> Okej. 805 00:42:49,904 --> 00:42:50,404 Bra. 806 00:42:50,404 --> 00:42:54,824 807 00:42:54,824 --> 00:42:55,324 Japp. 808 00:42:55,324 --> 00:42:58,770 809 00:42:58,770 --> 00:43:04,180 OK, så en sak som vi ska också be du, som vi gör varje år på en frågesport, är, 810 00:43:04,180 --> 00:43:08,340 Anta att du har glömt (som Vi tycks glömma att göra årligen) 811 00:43:08,340 --> 00:43:10,810 där rubrikfil strlen deklareras. 812 00:43:10,810 --> 00:43:13,860 Och så måste vi skriva det själva. 813 00:43:13,860 --> 00:43:16,350 >> Här är en lista över riktlinjer att vi kan presentera dig 814 00:43:16,350 --> 00:43:20,660 killar där du får anta att s strängen kommer inte att vara noll. 815 00:43:20,660 --> 00:43:23,830 Du kan anta att s kommer att vara avslutas med ett omvänt snedstreck noll. 816 00:43:23,830 --> 00:43:26,670 Så du vet att det är vad det kommer att sluta med. 817 00:43:26,670 --> 00:43:29,500 >> Och, till exempel, att den längd hello skulle vara fem. 818 00:43:29,500 --> 00:43:32,890 Så du kan anta att hello kommer att vara fem, H-E-L-L-O. 819 00:43:32,890 --> 00:43:35,890 Du behöver inte anta att backside noll står för längden. 820 00:43:35,890 --> 00:43:39,720 821 00:43:39,720 --> 00:43:42,300 >> Denna sista här, inte oroa heltalsspill. 822 00:43:42,300 --> 00:43:45,270 Kommer någon ihåg vad heltalsspill är? 823 00:43:45,270 --> 00:43:48,041 >> PUBLIK: Går bortom längden på [OHÖRBAR]. 824 00:43:48,041 --> 00:43:50,740 >> PROFESSOR: Ja, kan du förklara lite, vad betyder det? 825 00:43:50,740 --> 00:43:55,330 >> Målgrupp: Så, jag antar att det går tillbaka till trunkera exempel tidigare. 826 00:43:55,330 --> 00:43:58,380 Men om du har bara så många siffror som går utöver det antal bitar 827 00:43:58,380 --> 00:44:01,409 att du faktiskt kan tilldela den att det kommer bara typ av avskurna. 828 00:44:01,409 --> 00:44:04,242 PROFESSOR: Ja, så på en typisk dator, hur många bitar har vi? 829 00:44:04,242 --> 00:44:05,306 PUBLIK: 32? 830 00:44:05,306 --> 00:44:06,430 PROFESSOR: Ja, 32, till höger. 831 00:44:06,430 --> 00:44:10,030 Och så det är, vad, fyra miljarder, två miljarder? 832 00:44:10,030 --> 00:44:13,579 Fyra miljarder, upp till fyra miljarder positiva heltal, eller hur? 833 00:44:13,579 --> 00:44:15,370 Två miljarder negativ, två miljarder positiv, 834 00:44:15,370 --> 00:44:16,900 beror på hur du vill göra det. 835 00:44:16,900 --> 00:44:21,470 >> Och så i princip kan vi ha tillräckligt heltal som kan gå upp 836 00:44:21,470 --> 00:44:25,800 till två till 31 minus 1, eller hur? 837 00:44:25,800 --> 00:44:27,980 På grund när vi slog två till den 32: a, gör vi inte 838 00:44:27,980 --> 00:44:30,040 har så mycket minne i vår dator. 839 00:44:30,040 --> 00:44:32,310 >> Och så, teoretiskt, jag kunde komma med ett antal 840 00:44:32,310 --> 00:44:34,560 det vill säga, liksom, två till den 46: e. 841 00:44:34,560 --> 00:44:38,040 Det är en enorm-ass nummer, men teoretiskt du kunde. 842 00:44:38,040 --> 00:44:42,730 Och så heltalsspill är om du försöker skapa ett heltal som går utöver vad 843 00:44:42,730 --> 00:44:44,790 datorn kan lagra. 844 00:44:44,790 --> 00:44:46,590 >> Och så du killar för detta exempel har inte 845 00:44:46,590 --> 00:44:51,330 oroa sig för oss att ge dig en jätte sträng som är två till den 32: a tecken 846 00:44:51,330 --> 00:44:51,830 lång. 847 00:44:51,830 --> 00:44:54,010 Det skulle verkligen innebära. 848 00:44:54,010 --> 00:44:59,430 >> Okej, så jag ska bara ge ni basstrukturen av detta. 849 00:44:59,430 --> 00:45:02,020 Du kommer att skapa en Funktionen kallas int strlen där 850 00:45:02,020 --> 00:45:08,436 ett pass i en röding stjärna eller sträng, pekare till strängen som kallas s. 851 00:45:08,436 --> 00:45:10,820 >> Okej, alla kopiera den ner. 852 00:45:10,820 --> 00:45:13,550 853 00:45:13,550 --> 00:45:14,850 Häftigt. 854 00:45:14,850 --> 00:45:17,020 Oops-- annat sätt. 855 00:45:17,020 --> 00:45:21,360 >> Så det här är ungefär som en hårdare bit av problem, 856 00:45:21,360 --> 00:45:25,320 så jag ska ge er kanske fem till sex minuter till slags brain 857 00:45:25,320 --> 00:45:27,478 och skriva denna funktion ut. 858 00:45:27,478 --> 00:45:29,710 >> PUBLIK: Vi gör inte redogöra för [OHÖRBAR] 859 00:45:29,710 --> 00:45:30,200 vi behöver inte använda heltal? 860 00:45:30,200 --> 00:45:31,241 >> PROFESSOR: Nej, det gör du inte. 861 00:45:31,241 --> 00:48:05,847 862 00:48:05,847 --> 00:48:06,930 Jag ska ge er en ledtråd. 863 00:48:06,930 --> 00:48:12,325 En while-slinga kan vara mycket användbar här. 864 00:48:12,325 --> 00:48:12,825 Ja. 865 00:48:12,825 --> 00:48:44,995 866 00:48:44,995 --> 00:48:45,495 Här är 867 00:48:45,495 --> 00:48:45,995 godis. 868 00:48:45,995 --> 00:48:49,980 869 00:48:49,980 --> 00:48:53,410 Candy kommer också att finnas tillgängliga för frågesport, tror jag. 870 00:48:53,410 --> 00:48:55,315 Så ni kommer att bli sockrade upp i morgon. 871 00:48:55,315 --> 00:49:01,110 872 00:49:01,110 --> 00:49:02,962 Kan Jag-- du fick den. 873 00:49:02,962 --> 00:49:03,718 >> PUBLIK: OK. 874 00:49:03,718 --> 00:49:04,384 PROFESSOR: Ja. 875 00:49:04,384 --> 00:49:10,550 876 00:49:10,550 --> 00:49:11,870 >> Kanske 30 sekunder eller så. 877 00:49:11,870 --> 00:50:02,220 878 00:50:02,220 --> 00:50:07,340 >> Okej, om du är inte gjort, inga bekymmer. 879 00:50:07,340 --> 00:50:08,810 Vi kommer att gå igenom det här tillsammans. 880 00:50:08,810 --> 00:50:09,310 OK. 881 00:50:09,310 --> 00:50:13,800 Så jag ska bara layouten på grundläggande strukturen för denna funktion här. 882 00:50:13,800 --> 00:50:17,255 Int strlen. 883 00:50:17,255 --> 00:50:20,040 884 00:50:20,040 --> 00:50:23,460 Först, någon som vill berätta mig vad som int betyder? 885 00:50:23,460 --> 00:50:25,160 Vi måste ha denna funktion. 886 00:50:25,160 --> 00:50:26,709 >> PUBLIK: strlen [OHÖRBAR]. 887 00:50:26,709 --> 00:50:27,500 PROFESSOR: Exakt. 888 00:50:27,500 --> 00:50:31,140 Så oavsett vad som händer här, vi behöver gå tillbaka ett heltal. 889 00:50:31,140 --> 00:50:36,367 Och enligt vad som anges i spec, vi vill return-- 890 00:50:36,367 --> 00:50:37,700 Go for it killar, bara fortsätta. 891 00:50:37,700 --> 00:50:40,480 Allt är bra. 892 00:50:40,480 --> 00:50:42,960 Ät det hela så jag inte har att ta det tillbaka, faktiskt. 893 00:50:42,960 --> 00:50:46,022 894 00:50:46,022 --> 00:50:48,855 Int betyder bara att du är kommer att vara tillbaka ett heltal. 895 00:50:48,855 --> 00:50:55,350 896 00:50:55,350 --> 00:50:57,106 >> Vad är detta char stjärna s? 897 00:50:57,106 --> 00:50:58,640 Vad betyder det? 898 00:50:58,640 --> 00:51:00,879 >> Målgrupp: Precis, vad som matas in. 899 00:51:00,879 --> 00:51:01,670 PROFESSOR: Exakt. 900 00:51:01,670 --> 00:51:04,142 Och vad är nästan Samma sak som char stjärna? 901 00:51:04,142 --> 00:51:04,850 PUBLIK: String? 902 00:51:04,850 --> 00:51:05,641 PROFESSOR: Exakt. 903 00:51:05,641 --> 00:51:09,080 Så allt vi gör är att ge detta är en pekare till en sträng. 904 00:51:09,080 --> 00:51:09,580 OK. 905 00:51:09,580 --> 00:51:12,860 906 00:51:12,860 --> 00:51:13,360 Häftigt. 907 00:51:13,360 --> 00:51:16,650 >> Dessutom, glöm inte, om vi glömmer för att ge dig dessa konsoler, 908 00:51:16,650 --> 00:51:18,330 Glöm inte att skriva dem själv. 909 00:51:18,330 --> 00:51:20,720 Eftersom teoretiskt, är din kod felaktigt om du glömmer att skriva dem. 910 00:51:20,720 --> 00:51:21,803 Bara alltid uppmärksamma. 911 00:51:21,803 --> 00:51:23,750 Liksom, småsaker att du inte märker 912 00:51:23,750 --> 00:51:26,917 när du programmerar på din bärbara dator, eftersom din bärbara dator gör det åt dig? 913 00:51:26,917 --> 00:51:28,624 Glöm inte när du skriver för hand. 914 00:51:28,624 --> 00:51:29,170 Ja? 915 00:51:29,170 --> 00:51:30,954 >> PUBLIK: Men hur fel? 916 00:51:30,954 --> 00:51:33,190 Liksom, får vi hela problemet fel? 917 00:51:33,190 --> 00:51:34,190 >> PROFESSOR: Nej, nej. 918 00:51:34,190 --> 00:51:34,860 Oroa dig inte. 919 00:51:34,860 --> 00:51:39,270 Det är faktiskt teoretiskt möjligt för dig att få full poäng på en fråga 920 00:51:39,270 --> 00:51:41,980 även om din kod kommer kör aldrig i verkligheten. 921 00:51:41,980 --> 00:51:46,052 Jag föreslår att du inte försöker för att förverkliga detta. 922 00:51:46,052 --> 00:51:48,260 Till exempel, som om allt det är här är rätt, 923 00:51:48,260 --> 00:51:51,850 men du glömmer ett kolon eller en konsol, koden kommer faktiskt inte köra. 924 00:51:51,850 --> 00:51:53,740 Men vi kan vara barmhärtiga. 925 00:51:53,740 --> 00:51:54,394 >> Ja? 926 00:51:54,394 --> 00:51:56,050 >> PUBLIK: Måste man kommentera vår handstil? 927 00:51:56,050 --> 00:51:57,758 >> PROFESSOR: Nej, nej, nej bekymmer om detta. 928 00:51:57,758 --> 00:51:58,440 Nr kommentera. 929 00:51:58,440 --> 00:51:59,400 Stil bör vara god. 930 00:51:59,400 --> 00:52:01,470 Liksom, inte Smush allt på en rad. 931 00:52:01,470 --> 00:52:04,580 Vi kommer inte att vara lycklig med dig om du gör det. 932 00:52:04,580 --> 00:52:07,250 >> Finns det någon som vill ge mig den första raden? 933 00:52:07,250 --> 00:52:08,633 Tips, är det väldigt enkelt. 934 00:52:08,633 --> 00:52:09,320 >> Ja? 935 00:52:09,320 --> 00:52:11,920 >> ÅHÖRARNA: Int, n är lika med noll. 936 00:52:11,920 --> 00:52:13,734 Bara ställa in räknaren. 937 00:52:13,734 --> 00:52:15,900 PROFESSOR: Så vi vill ha sorts en räknare, eller hur? 938 00:52:15,900 --> 00:52:19,780 Jag kommer bara att nämna den "räkna" till förmån för läsbarheten. 939 00:52:19,780 --> 00:52:21,265 Vad vill vi ställa in den lika med? 940 00:52:21,265 --> 00:52:21,890 >> PUBLIK: Zero. 941 00:52:21,890 --> 00:52:23,840 PROFESSOR: Japp. 942 00:52:23,840 --> 00:52:24,340 Semikolon. 943 00:52:24,340 --> 00:52:26,250 Det är också mycket konstiga ritningssemikolon. 944 00:52:26,250 --> 00:52:28,870 Bara öva att göra det. 945 00:52:28,870 --> 00:52:31,990 >> Så vi vill först ha en räknare av typen int. 946 00:52:31,990 --> 00:52:35,360 Eftersom vi vill räkna upp hur många tecken eller bokstäver är 947 00:52:35,360 --> 00:52:36,780 i denna sträng, eller hur? 948 00:52:36,780 --> 00:52:38,330 Mycket lätt första steg. 949 00:52:38,330 --> 00:52:42,140 >> OK, kanske lite mer komplex nu, hur ska vi göra det? 950 00:52:42,140 --> 00:52:45,400 Finns det någon som vill ge mig kodraden 951 00:52:45,400 --> 00:52:48,450 som kanske kan hjälpa slinga genom vad det här är? 952 00:52:48,450 --> 00:52:54,540 953 00:52:54,540 --> 00:52:56,900 >> Ja, modig själ i ryggen? 954 00:52:56,900 --> 00:53:06,832 >> Målgrupp: OK, så medan punkt asterisker, den ja, stjärna av s, 955 00:53:06,832 --> 00:53:09,465 är inte lika med noll, sedan göra något? 956 00:53:09,465 --> 00:53:11,090 PROFESSOR: Det är riktigt, riktigt nära. 957 00:53:11,090 --> 00:53:11,835 Riktigt nära. 958 00:53:11,835 --> 00:53:13,710 Så jag kommer att ta itu med två saker med det. 959 00:53:13,710 --> 00:53:18,240 Först av allt, det är inte exakt noll. 960 00:53:18,240 --> 00:53:20,110 Vad är det? 961 00:53:20,110 --> 00:53:22,550 Det är noll terminatorn, vilket är omvänt snedstreck noll. 962 00:53:22,550 --> 00:53:24,960 Så de är olika i när det gäller hur de ska lagras. 963 00:53:24,960 --> 00:53:26,270 Så du är riktigt nära. 964 00:53:26,270 --> 00:53:30,330 >> Och för det andra, vill vi inte att bara flytta pekaren. 965 00:53:30,330 --> 00:53:32,320 Vi vill faktiskt åtkomst till värden, eller hur? 966 00:53:32,320 --> 00:53:34,050 Och så hur gör vi det? 967 00:53:34,050 --> 00:53:34,550 Väldigt enkelt. 968 00:53:34,550 --> 00:53:36,841 Tänk inte på pekare, tycker inte om minnen. 969 00:53:36,841 --> 00:53:38,525 Gå tillbaka till vecka två av kursen. 970 00:53:38,525 --> 00:53:39,555 >> PUBLIK: [OHÖRBAR]. 971 00:53:39,555 --> 00:53:40,680 PROFESSOR: Såsom av, minns du? 972 00:53:40,680 --> 00:53:41,400 Vad är strängar? 973 00:53:41,400 --> 00:53:42,650 Hur lagras de i minnet? 974 00:53:42,650 --> 00:53:43,300 >> PUBLIK: De är upp. 975 00:53:43,300 --> 00:53:43,810 >> Professor: De föds upp. 976 00:53:43,810 --> 00:53:45,550 Så hur gör vi tillgång varje tecken inne? 977 00:53:45,550 --> 00:53:46,466 >> PUBLIK: [OHÖRBAR]. 978 00:53:46,466 --> 00:53:47,530 PROFESSOR: Exakt. 979 00:53:47,530 --> 00:53:53,195 Så while-- vad som händer här inne? 980 00:53:53,195 --> 00:53:54,940 S av - 981 00:53:54,940 --> 00:53:55,920 >> AUDIENCE: I. 982 00:53:55,920 --> 00:53:58,216 >> PROFESSOR: Åh, inte existerar i, eller hur? 983 00:53:58,216 --> 00:53:59,620 >> Målgrupp: Åh, räknas? 984 00:53:59,620 --> 00:54:01,640 >> PROFESSOR: Vi kan bara Använd räkna, kan inte vi? 985 00:54:01,640 --> 00:54:03,050 >> Målgrupp: Tyvärr, jag kallade det i. 986 00:54:03,050 --> 00:54:04,341 >> PROFESSOR: Ja, det är allt bra. 987 00:54:04,341 --> 00:54:06,710 988 00:54:06,710 --> 00:54:10,760 Vi har en variabel upp här som är redan förklarats som vår disk. 989 00:54:10,760 --> 00:54:13,650 Så varför inte vi bara använda det att gå igenom while-slingan? 990 00:54:13,650 --> 00:54:15,230 Betyder det vettigt? 991 00:54:15,230 --> 00:54:20,864 >> Så medan tals count-- någon som vill att ge mig vad som händer efter här? 992 00:54:20,864 --> 00:54:22,030 PUBLIK: Det inte är lika. 993 00:54:22,030 --> 00:54:23,405 PROFESSOR: Inte lika, eller hur? 994 00:54:23,405 --> 00:54:26,200 Det är bang lika, utropstecken är lika, 995 00:54:26,200 --> 00:54:28,500 vad ni vill kalla det inte equal-- 996 00:54:28,500 --> 00:54:29,496 >> PUBLIK: [OHÖRBAR]. 997 00:54:29,496 --> 00:54:30,990 >> PROFESSOR: Ja. 998 00:54:30,990 --> 00:54:37,110 Kom ihåg enda anbud är en röding, citattecken är för en sträng. 999 00:54:37,110 --> 00:54:38,630 Var försiktig när du använder dem. 1000 00:54:38,630 --> 00:54:42,430 Så när vi letar igenom arrayen, det sista tecknet, 1001 00:54:42,430 --> 00:54:46,420 vi vet att vi inte vill ha det ska vara omvänt snedstreck noll. 1002 00:54:46,420 --> 00:54:47,340 >> Så tag. 1003 00:54:47,340 --> 00:54:48,840 Vi är inte i slutet av strängen. 1004 00:54:48,840 --> 00:54:52,335 Vad vill vi göra där inne? 1005 00:54:52,335 --> 00:54:55,269 >> PUBLIK: Vi vill lägga till disk så det räknar plus plus? 1006 00:54:55,269 --> 00:54:56,060 PROFESSOR: Exakt. 1007 00:54:56,060 --> 00:55:03,064 Så här är vi ska göra räkna, räkna plus plus. 1008 00:55:03,064 --> 00:55:03,980 Saknas en mer lina. 1009 00:55:03,980 --> 00:55:05,090 Vi är nästan där. 1010 00:55:05,090 --> 00:55:07,398 Vad är det vi glömmer att göra? 1011 00:55:07,398 --> 00:55:08,770 >> PUBLIK: Åter noll? 1012 00:55:08,770 --> 00:55:10,820 >> Professor: Du vill returnera noll? 1013 00:55:10,820 --> 00:55:12,962 >> Målgrupp: Nej, återvänder till strlen. 1014 00:55:12,962 --> 00:55:13,511 Vänta. 1015 00:55:13,511 --> 00:55:14,760 PROFESSOR: Vilket är lagrat i? 1016 00:55:14,760 --> 00:55:15,090 PUBLIK: Räkna. 1017 00:55:15,090 --> 00:55:15,589 Räkna. 1018 00:55:15,589 --> 00:55:17,150 PROFESSOR: Exakt. 1019 00:55:17,150 --> 00:55:20,760 Så här vi kommer att återvända räkningen. 1020 00:55:20,760 --> 00:55:23,450 1021 00:55:23,450 --> 00:55:25,380 >> För vad vi är gör här ultimately-- 1022 00:55:25,380 --> 00:55:29,780 Vi har en räknare variabel som är kommer att inkrementera genom vår sträng. 1023 00:55:29,780 --> 00:55:33,050 Vi kommer att fortsätta hålla går, runt och runt i denna loop. 1024 00:55:33,050 --> 00:55:37,700 Och medan vi är inte på slutet av denna sträng, som är noll terminator. 1025 00:55:37,700 --> 00:55:40,410 >> Och varje gång vi går igenom det, vi lägga till vår disk. 1026 00:55:40,410 --> 00:55:42,640 Och vi gå längre tillsammans i denna array. 1027 00:55:42,640 --> 00:55:44,880 Och i slutet, när vi träffade null terminator, 1028 00:55:44,880 --> 00:55:48,469 vi vet, åh, vi kan bryta tillbaka räkningen. 1029 00:55:48,469 --> 00:55:49,260 Vi har vår strlen. 1030 00:55:49,260 --> 00:55:52,280 1031 00:55:52,280 --> 00:55:56,400 >> Får alla människor hur Detta genomfördes? 1032 00:55:56,400 --> 00:55:58,830 Medan loops-- Jag vet att vi har inte gjort för mycket med dem, 1033 00:55:58,830 --> 00:56:01,240 men de är oftast mycket, mycket användbart om du 1034 00:56:01,240 --> 00:56:05,390 vet inte vad du stoppar tillstånd med nödvändighet att vara. 1035 00:56:05,390 --> 00:56:06,220 >> Fråga? 1036 00:56:06,220 --> 00:56:10,080 >> PUBLIK: Kan vi skriver null på så länge villkor? 1037 00:56:10,080 --> 00:56:10,940 >> PROFESSOR: Medan? 1038 00:56:10,940 --> 00:56:15,304 Ja, så i det här problemet jag hade dig killar antar att s inte kommer att vara noll. 1039 00:56:15,304 --> 00:56:17,220 Eftersom minns, teoretiskt, om jag gav dig 1040 00:56:17,220 --> 00:56:21,180 en pekare som var för stort minne, Det skulle ge dig noll, eller hur? 1041 00:56:21,180 --> 00:56:23,770 Det är vad den operativa system skulle göra. 1042 00:56:23,770 --> 00:56:26,960 >> Så om jag inte berätta för dig att anta s skulle vara null, måste du kontrollera. 1043 00:56:26,960 --> 00:56:32,050 Så här uppe, skulle du göra om s lika är lika med noll, tillbaka en. 1044 00:56:32,050 --> 00:56:33,028 Något sådant. 1045 00:56:33,028 --> 00:56:34,153 PUBLIK: [OHÖRBAR] noll. 1046 00:56:34,153 --> 00:56:37,287 1047 00:56:37,287 --> 00:56:39,370 PROFESSOR: OK, jag ska berätta varför vi inte kan göra det. 1048 00:56:39,370 --> 00:56:43,357 Eftersom minns i minnet, rätt här. 1049 00:56:43,357 --> 00:56:43,940 Vi kommer att gå här. 1050 00:56:43,940 --> 00:56:49,940 1051 00:56:49,940 --> 00:56:54,090 >> Du har jätte block minne alla med galler 1052 00:56:54,090 --> 00:56:56,680 att lagra olika värden, eller hur? 1053 00:56:56,680 --> 00:57:00,110 Och så alla en sträng är-- för exempel, om vi ska kunna input hej, 1054 00:57:00,110 --> 00:57:05,490 det skulle vara H-E-L-L-O bakstreck noll, eller hur? 1055 00:57:05,490 --> 00:57:09,570 Och vem vet, som slumpvis saker som är i här efter det. 1056 00:57:09,570 --> 00:57:11,220 >> Vi vet faktiskt inte vad som finns där. 1057 00:57:11,220 --> 00:57:13,350 Och så om du skulle göra i stället för omvänt snedstreck noll, 1058 00:57:13,350 --> 00:57:15,590 null, kan det inte vara null. 1059 00:57:15,590 --> 00:57:17,680 Eftersom det bara kan betyda några slumpmässiga annat 1060 00:57:17,680 --> 00:57:19,270 som inte hör hemma i din sträng. 1061 00:57:19,270 --> 00:57:23,219 Och så sätt att vi alltid vet att en sträng slutar är med ett omvänt snedstreck noll. 1062 00:57:23,219 --> 00:57:25,760 Och så det är alltid hur vi kontrollera för att se änden av en sträng. 1063 00:57:25,760 --> 00:57:30,820 >> Null, är allt som betyder att om du har en icke-existerande pekare, först och främst, 1064 00:57:30,820 --> 00:57:36,160 eller om ditt minne är bara så stor att du kan inte lämna tillbaka den, så det skulle vara noll. 1065 00:57:36,160 --> 00:57:40,150 Så vara mycket försiktig när differentiering skillnaden mellan noll 1066 00:57:40,150 --> 00:57:42,130 och det omvända snedstrecket noll. 1067 00:57:42,130 --> 00:57:43,670 Ja. 1068 00:57:43,670 --> 00:57:46,886 >> Alla OK med detta? 1069 00:57:46,886 --> 00:57:48,150 OK. 1070 00:57:48,150 --> 00:57:50,440 >> Så jag hade ni skriver ut strlen. 1071 00:57:50,440 --> 00:57:53,790 Feasibly kan vi också be du skriver ut A till I, kom ihåg att "Atwoa" 1072 00:57:53,790 --> 00:57:55,400 eller vad ni vill kalla det? 1073 00:57:55,400 --> 00:57:58,010 Denna funktion i Vigenère och Caesar, som 1074 00:57:58,010 --> 00:58:00,900 omvandlar ett ASCII-värdet till ett heltal? 1075 00:58:00,900 --> 00:58:04,360 Det har också kommit upp tidigare frågesporter funktioner vi har bett dig att skriva. 1076 00:58:04,360 --> 00:58:08,280 >> Ganska mycket någon funktion att du har använt och är 1077 00:58:08,280 --> 00:58:11,660 mycket lätt att skriva själv, sensorer gillar är lägre, 1078 00:58:11,660 --> 00:58:14,620 är övre, sänka, till den övre. 1079 00:58:14,620 --> 00:58:17,964 Funktioner som skulle omvandla en sträng från gemener till versaler. 1080 00:58:17,964 --> 00:58:19,380 Vi vet alla hur man gör det, eller hur? 1081 00:58:19,380 --> 00:58:21,100 Det är ganska lätt. 1082 00:58:21,100 --> 00:58:24,770 Vill bara vara säker på att du can-- det är samma tankeprocess. 1083 00:58:24,770 --> 00:58:26,940 Du iterera bara genom och du vända saker. 1084 00:58:26,940 --> 00:58:30,190 Du antingen räkna eller när du vända saker annorlunda. 1085 00:58:30,190 --> 00:58:32,280 >> Jag skulle suggest-- I vet inte om vi ska 1086 00:58:32,280 --> 00:58:39,080 be dig att memorera vad kapital A eller kapital Z, eller gemener A eller gemener 1087 00:58:39,080 --> 00:58:42,640 z är i Ascii, men jag skulle föreslå kanske skriva ner det i fallet 1088 00:58:42,640 --> 00:58:44,124 vi gör. 1089 00:58:44,124 --> 00:58:45,540 Bara så ni har en referens. 1090 00:58:45,540 --> 00:58:47,180 Liksom versaler A är, vad, 197? 1091 00:58:47,180 --> 00:58:51,320 Och sedan gemener är som 50 något. 1092 00:58:51,320 --> 00:58:52,492 65, ja, där du går. 1093 00:58:52,492 --> 00:58:54,950 Så bara ganska mycket vet Skillnaden mellan dem är 32. 1094 00:58:54,950 --> 00:58:57,670 Det är ganska viktigt. 1095 00:58:57,670 --> 00:58:58,170 Ja. 1096 00:58:58,170 --> 00:59:01,445 Är jag bra på detta? 1097 00:59:01,445 --> 00:59:01,945 OK. 1098 00:59:01,945 --> 00:59:03,109 >> PUBLIK: Vi kunde teoretiskt skriva några 1099 00:59:03,109 --> 00:59:04,410 av dessa ned samt på vår little-- 1100 00:59:04,410 --> 00:59:07,035 >> PROFESSOR: Du teoretiskt kunde bara kopiera funktionen ner. 1101 00:59:07,035 --> 00:59:08,482 Det är sant. 1102 00:59:08,482 --> 00:59:11,080 >> PUBLIK: Inte [OHÖRBAR]. 1103 00:59:11,080 --> 00:59:12,720 >> Professor: Ni har ett blad. 1104 00:59:12,720 --> 00:59:14,194 Ni har en anteckning blad. 1105 00:59:14,194 --> 00:59:14,860 Du kan skriva det. 1106 00:59:14,860 --> 00:59:15,490 Du kan skriva det. 1107 00:59:15,490 --> 00:59:17,031 Du kan göra vad du vill med den. 1108 00:59:17,031 --> 00:59:18,530 Ja. 1109 00:59:18,530 --> 00:59:21,406 Så teoretiskt, om du vill, gå till. 1110 00:59:21,406 --> 00:59:23,338 >> PUBLIK: [OHÖRBAR] men vi vet inte riktigt 1111 00:59:23,338 --> 00:59:25,994 nödvändigtvis måste komma ihåg värdet, vi kan bara 1112 00:59:25,994 --> 00:59:28,914 Använd till övre eller nedre funktion, eller hur? 1113 00:59:28,914 --> 00:59:29,580 PROFESSOR: Ja. 1114 00:59:29,580 --> 00:59:32,740 Men om vi gav dig en fråga som säger skriva till övre 1115 00:59:32,740 --> 00:59:34,350 då skulle du behöva skriva det. 1116 00:59:34,350 --> 00:59:38,150 Så ni kan anta att du killar har tillgång till alla funktioner, 1117 00:59:38,150 --> 00:59:41,523 men om du vill använda för att övre eller lägre, vad har du också att göra? 1118 00:59:41,523 --> 00:59:43,840 >> PUBLIK: [OHÖRBAR] använd CS50 [OHÖRBAR] 1119 00:59:43,840 --> 00:59:44,840 >> PROFESSOR: Är det CS50.h? 1120 00:59:44,840 --> 00:59:47,320 1121 00:59:47,320 --> 00:59:48,310 Var försiktig där. 1122 00:59:48,310 --> 00:59:50,640 >> Så för att övre, sänka, är övre, lägre, 1123 00:59:50,640 --> 00:59:52,990 funktioner som involverar string manipulation är 1124 00:59:52,990 --> 00:59:55,490 alla inom antingen Ascii eller inom matematik biblioteket 1125 00:59:55,490 --> 00:59:57,350 eller inom strängen biblioteket. 1126 00:59:57,350 --> 01:00:00,290 Så om ni använder dem funktioner, vara noga med att komma ihåg 1127 01:00:00,290 --> 01:00:01,451 att inkludera den rubriken. 1128 01:00:01,451 --> 01:00:03,950 Så kanske också något som du vill ha med i bladet, 1129 01:00:03,950 --> 01:00:04,892 vad är huvudet? 1130 01:00:04,892 --> 01:00:06,600 Vilka är biblioteken du har använt? 1131 01:00:06,600 --> 01:00:08,550 Vilka funktioner är inom dessa bibliotek? 1132 01:00:08,550 --> 01:00:09,230 Det är viktigt. 1133 01:00:09,230 --> 01:00:10,420 >> Ja? 1134 01:00:10,420 --> 01:00:12,570 >> PUBLIK: Kan vi bara cop ut och göra hashtag 1135 01:00:12,570 --> 01:00:14,955 genom den absolut varje bokstav som vi någonsin 1136 01:00:14,955 --> 01:00:17,340 sett som på alla frågor? 1137 01:00:17,340 --> 01:00:18,320 >> PROFESSOR: Du kunde. 1138 01:00:18,320 --> 01:00:20,361 Jag vet inte hur lycklig vi kommer att vara att grad 1139 01:00:20,361 --> 01:00:25,090 att quiz när varje bit kod är dubbelt så lång som den behöver vara. 1140 01:00:25,090 --> 01:00:27,200 Jag vet inte, vi kanske ta bort en poäng för stil. 1141 01:00:27,200 --> 01:00:28,790 Men teoretiskt din koden skulle vara rätt. 1142 01:00:28,790 --> 01:00:30,915 Ni kunde cop ut och bara inkludera allt. 1143 01:00:30,915 --> 01:00:32,044 Det är också bra, ja. 1144 01:00:32,044 --> 01:00:32,960 PUBLIK: [OHÖRBAR]. 1145 01:00:32,960 --> 01:00:33,270 PROFESSOR: Ja. 1146 01:00:33,270 --> 01:00:34,900 Jag föreslår inte att göra det ändå. 1147 01:00:34,900 --> 01:00:35,505 Ja. 1148 01:00:35,505 --> 01:00:36,130 PUBLIK: Cool. 1149 01:00:36,130 --> 01:00:36,620 PROFESSOR: Bra fråga. 1150 01:00:36,620 --> 01:00:37,480 Målgrupp: Så, det värsta scenariot. 1151 01:00:37,480 --> 01:00:38,563 Professor: Det värsta fallet. 1152 01:00:38,563 --> 01:00:40,350 Om du helt har glömt, du kunde göra det. 1153 01:00:40,350 --> 01:00:40,850 Ja. 1154 01:00:40,850 --> 01:00:43,870 1155 01:00:43,870 --> 01:00:45,400 >> Japp, är koden direkt. 1156 01:00:45,400 --> 01:00:49,176 Jag använde n istället för räkning, men du vet, oavsett flyter din båt. 1157 01:00:49,176 --> 01:00:51,092 Målgrupp: Vänta, så vi skulle inte behöva Hashtag 1158 01:00:51,092 --> 01:00:53,460 inkluderar eftersom vi är med början vid int? 1159 01:00:53,460 --> 01:00:56,150 1160 01:00:56,150 --> 01:00:59,924 >> PROFESSOR: Ja, jag bara anta att blev vi ombedda att skriva funktionen. 1161 01:00:59,924 --> 01:01:02,340 Om du vill vara säker, du skulle förmodligen lägga den där. 1162 01:01:02,340 --> 01:01:05,650 Men jag bara inte bry, ja. 1163 01:01:05,650 --> 01:01:09,919 >> Jag vet inte ens om du behöver någon bibliotek för detta. 1164 01:01:09,919 --> 01:01:12,710 Eftersom du inte riktigt utskrift ut någonting eller något, eller hur? 1165 01:01:12,710 --> 01:01:16,500 1166 01:01:16,500 --> 01:01:19,568 Ja, jag vet inte om du behöver ett bibliotek. 1167 01:01:19,568 --> 01:01:22,400 >> OK. 1168 01:01:22,400 --> 01:01:26,020 Detta är också lite mer tillsammans linjerna av minnesmanipulering. 1169 01:01:26,020 --> 01:01:27,400 Denna typ av lite knepigt. 1170 01:01:27,400 --> 01:01:28,960 Tänk på detta. 1171 01:01:28,960 --> 01:01:30,580 Du har en funktion som kallas funk. 1172 01:01:30,580 --> 01:01:33,570 Jag kunde ha namngett det vad, men jag väljer att kalla den funk. 1173 01:01:33,570 --> 01:01:36,000 Jag har det ovanför mitt huvud. 1174 01:01:36,000 --> 01:01:39,790 Kom ihåg att du vill ha en funktion efter din huvudsakliga, 1175 01:01:39,790 --> 01:01:42,370 du vill vara säker på att du inkluderar prototypen för toppen. 1176 01:01:42,370 --> 01:01:45,750 >> Men i detta fall det var så kort att jag kände att jag kunde bara 1177 01:01:45,750 --> 01:01:47,260 inkludera det ovanpå viktigaste. 1178 01:01:47,260 --> 01:01:51,170 Jag behövde inte ha prototypen, eftersom det är redan skrivet ovan. 1179 01:01:51,170 --> 01:01:55,430 Så allt jag gör i min huvudfunktion skapar heltal x är lika 10. 1180 01:01:55,430 --> 01:02:00,490 Jag ringer min funk funktion, och sedan skriva upp något. 1181 01:02:00,490 --> 01:02:02,840 >> Och då är det faktiskt vad funk gör. 1182 01:02:02,840 --> 01:02:04,340 Ni vill tänka igenom det här. 1183 01:02:04,340 --> 01:02:05,423 Eftersom det är lite knepigt. 1184 01:02:05,423 --> 01:02:07,220 Det är mycket, mycket svårt, faktiskt. 1185 01:02:07,220 --> 01:02:09,549 Tänk igenom vad detta Programmet skulle vara utmatning. 1186 01:02:09,549 --> 01:02:10,840 Jag ska ge er två minuter. 1187 01:02:10,840 --> 01:03:36,660 1188 01:03:36,660 --> 01:03:37,891 >> Bra diskussioner? 1189 01:03:37,891 --> 01:03:38,853 >> PUBLIK: Ja. 1190 01:03:38,853 --> 01:03:39,815 >> PROFESSOR: Ja. 1191 01:03:39,815 --> 01:03:42,220 Okej, så det här är knepigt för en anledning. 1192 01:03:42,220 --> 01:03:44,845 Och det är därför jag ville föra detta för allas uppmärksamhet. 1193 01:03:44,845 --> 01:03:47,870 1194 01:03:47,870 --> 01:03:51,147 Finns det någon som vill ge mig ett förslag, ett försök? 1195 01:03:51,147 --> 01:03:52,230 Vad skulle detta skriva ut? 1196 01:03:52,230 --> 01:03:53,930 Helt bra om du har fel. 1197 01:03:53,930 --> 01:03:55,619 Ja? 1198 01:03:55,619 --> 01:03:59,483 >> PUBLIK: Jag tror att det är 100 och sedan 10 på två separata rader. 1199 01:03:59,483 --> 01:04:00,940 >> PROFESSOR: Och en 10? 1200 01:04:00,940 --> 01:04:03,154 Finns det någon som har några andra gissningar? 1201 01:04:03,154 --> 01:04:04,150 Ja? 1202 01:04:04,150 --> 01:04:09,040 >> PUBLIK: Kanske bara 10 eftersom funk inte tillbaka någonting? 1203 01:04:09,040 --> 01:04:11,610 >> PROFESSOR: OK, så vi har gissa nummer ett 1204 01:04:11,610 --> 01:04:14,990 är att gissa nummer två är bara att skriva ut 10. 1205 01:04:14,990 --> 01:04:17,623 Finns det någon som har några andra gissningar? 1206 01:04:17,623 --> 01:04:19,654 OK. 1207 01:04:19,654 --> 01:04:21,070 Så låt oss gå igenom det här, eller hur? 1208 01:04:21,070 --> 01:04:23,903 När du får en bit kod, inte bara titta på det och vara, 1209 01:04:23,903 --> 01:04:25,060 ah, det är så mycket grejer! 1210 01:04:25,060 --> 01:04:26,460 Jag är så förvirrad! 1211 01:04:26,460 --> 01:04:28,220 Liksom, lugna ner dig själv. 1212 01:04:28,220 --> 01:04:31,602 Bara vet att du kunde bara titta igenom koden rad för rad. 1213 01:04:31,602 --> 01:04:32,310 Det är allt det är. 1214 01:04:32,310 --> 01:04:33,840 Det är som att läsa en bok. 1215 01:04:33,840 --> 01:04:38,000 >> Så med någon funktion, Vi börjar alltid vid huvud. 1216 01:04:38,000 --> 01:04:40,860 Så vi kommer att starta vid int main tomrum, 1217 01:04:40,860 --> 01:04:43,010 även programmets redan kör ned, eller hur? 1218 01:04:43,010 --> 01:04:45,070 Börja på i huvud tomrum. 1219 01:04:45,070 --> 01:04:48,030 Int x motsvarar 10. 1220 01:04:48,030 --> 01:04:50,400 >> Så jag kommer att radera detta. 1221 01:04:50,400 --> 01:04:55,179 1222 01:04:55,179 --> 01:04:58,470 Jag kommer att dra minnet bara så att du killar kan typ av se vad som händer. 1223 01:04:58,470 --> 01:05:02,190 >> Kom ihåg här nere vi har vår stack? 1224 01:05:02,190 --> 01:05:05,810 Här uppe har vi vår heap någonstans här uppe. 1225 01:05:05,810 --> 01:05:07,470 Stack växer upp, eller hur? 1226 01:05:07,470 --> 01:05:10,150 Och inom stacken, har du elnätet fungera så bra som 1227 01:05:10,150 --> 01:05:12,230 alla elnätet lokala variabler. 1228 01:05:12,230 --> 01:05:14,310 >> Så här, int x motsvara 10. 1229 01:05:14,310 --> 01:05:17,670 Inom vår huvuduppgift är vi skapa en variabel som heter x. 1230 01:05:17,670 --> 01:05:20,590 Vi inställning som är lika med 10. 1231 01:05:20,590 --> 01:05:24,200 Här har du några x, och du är inställning som är lika med 10, höger, 1232 01:05:24,200 --> 01:05:25,400 inom huvud. 1233 01:05:25,400 --> 01:05:27,430 Alla bra? 1234 01:05:27,430 --> 01:05:28,070 >> Fungera. 1235 01:05:28,070 --> 01:05:30,330 Så nu, i våran funktionen, vi kallar 1236 01:05:30,330 --> 01:05:31,810 funktionen som vi har skrivit ovan. 1237 01:05:31,810 --> 01:05:34,550 Så vi nu går in i den andra funktionen. 1238 01:05:34,550 --> 01:05:40,120 Vi kommer att skapa en ny variabel int x är lika med 100. 1239 01:05:40,120 --> 01:05:42,410 Vad händer här på traven? 1240 01:05:42,410 --> 01:05:46,980 Vad händer när du ringer ett funktion som skapar nya variabler? 1241 01:05:46,980 --> 01:05:50,038 Vad händer här på traven? 1242 01:05:50,038 --> 01:05:52,134 >> PUBLIK: [OHÖRBAR] högar på toppen? 1243 01:05:52,134 --> 01:05:52,800 PROFESSOR: Ja. 1244 01:05:52,800 --> 01:05:54,050 Så det faktiskt skapar en kopia. 1245 01:05:54,050 --> 01:05:56,560 1246 01:05:56,560 --> 01:05:57,740 Och det slags högar ovanpå. 1247 01:05:57,740 --> 01:06:00,700 Tänk på stack-- en stapel böcker, en bunt någonting. 1248 01:06:00,700 --> 01:06:06,520 Högar på toppen, först i förra ut, sist in, först ut. 1249 01:06:06,520 --> 01:06:08,471 >> Så det kommer att skapa en x här. 1250 01:06:08,471 --> 01:06:12,080 1251 01:06:12,080 --> 01:06:14,450 >> Det kommer att ha alla funcs variabler. 1252 01:06:14,450 --> 01:06:14,950 Bra. 1253 01:06:14,950 --> 01:06:20,980 Så nu har vi två olika kryssen att representerar två helt olika saker. 1254 01:06:20,980 --> 01:06:24,470 Sen ska vi ut ut heltalet för x. 1255 01:06:24,470 --> 01:06:26,430 Så låt oss skriva ut 100, eller hur? 1256 01:06:26,430 --> 01:06:29,389 För här är det 100. 1257 01:06:29,389 --> 01:06:31,680 Så det är det första att det kommer att skriva ut. 1258 01:06:31,680 --> 01:06:35,710 Eftersom denna funktionen returnerar ingenting, nu denna funktion, att linjen i huvud 1259 01:06:35,710 --> 01:06:37,070 är klart. 1260 01:06:37,070 --> 01:06:39,160 Alla bra med mig så här långt? 1261 01:06:39,160 --> 01:06:43,034 >> Så vi är nu till två av de tre rader av vår huvuduppgift. 1262 01:06:43,034 --> 01:06:44,450 Nu ska vi till den tredje raden. 1263 01:06:44,450 --> 01:06:46,350 Vi kommer att printf. 1264 01:06:46,350 --> 01:06:48,222 Vad är detta x inom huvud? 1265 01:06:48,222 --> 01:06:49,263 Vad som representerar? 1266 01:06:49,263 --> 01:06:52,720 1267 01:06:52,720 --> 01:06:54,280 >> Vilket värde är x nu? 1268 01:06:54,280 --> 01:06:55,220 >> PUBLIK: 100. 1269 01:06:55,220 --> 01:06:56,799 >> PROFESSOR: Det är 100? 1270 01:06:56,799 --> 01:06:57,590 PUBLIK: Still 10. 1271 01:06:57,590 --> 01:06:58,878 PROFESSOR: Still 10. 1272 01:06:58,878 --> 01:07:00,870 Ja. 1273 01:07:00,870 --> 01:07:06,810 Eftersom minns, inom vår funk, x är lika med 100. 1274 01:07:06,810 --> 01:07:09,690 Men om vi återvänder tillbaka till vår huvuduppgift, 1275 01:07:09,690 --> 01:07:12,440 den variabeln lagras i en annan plats på vår stack. 1276 01:07:12,440 --> 01:07:16,250 >> Så nu måste vi gå tillbaka till Huvud stack, nät lokala variabler. 1277 01:07:16,250 --> 01:07:18,460 Och här x är lika med 10. 1278 01:07:18,460 --> 01:07:20,300 Och så ska vi skriva ut 10. 1279 01:07:20,300 --> 01:07:22,530 >> Så hon var helt rätt. 1280 01:07:22,530 --> 01:07:25,053 Vi kommer att ha Utsignalen från 100 och 10. 1281 01:07:25,053 --> 01:07:25,553 Ja? 1282 01:07:25,553 --> 01:07:28,700 PUBLIK: När du malloc, är det heap eller stack som är [OHÖRBAR]? 1283 01:07:28,700 --> 01:07:31,950 PROFESSOR: När du malloc, du tar minne från högen 1284 01:07:31,950 --> 01:07:32,830 och fördela det. 1285 01:07:32,830 --> 01:07:34,950 Så att du inte har bråka med något av detta. 1286 01:07:34,950 --> 01:07:38,100 Så jag antar att större takeaway här är något som kallas omfattning. 1287 01:07:38,100 --> 01:07:39,650 >> För er som var på översynen sessionen i går kväll, 1288 01:07:39,650 --> 01:07:41,080 Vi pratade kort om detta. 1289 01:07:41,080 --> 01:07:45,380 Räckvidd definierar hur och när dina variabler existerar. 1290 01:07:45,380 --> 01:07:48,050 Eller inom vilka ramar gör dina variabler existerar. 1291 01:07:48,050 --> 01:07:51,690 >> Ganska mycket tumregeln i allmänhet är din variables-- om du skapar dem 1292 01:07:51,690 --> 01:07:56,660 inuti lockigt braces-- de finns endast inom dessa klammerparentes. 1293 01:07:56,660 --> 01:08:00,312 >> Så till exempel i vår funktion funk, ser du dessa två hängslen. 1294 01:08:00,312 --> 01:08:02,020 Om du skapar något inuti det, 1295 01:08:02,020 --> 01:08:06,500 chanserna är allt du gör är skapa en stapel och lagra det där. 1296 01:08:06,500 --> 01:08:07,430 Samma sak i main. 1297 01:08:07,430 --> 01:08:09,950 Det är bara förvaras inuti huvud. 1298 01:08:09,950 --> 01:08:13,560 >> Även du vill vara mycket, mycket försiktig här. 1299 01:08:13,560 --> 01:08:18,310 Eftersom omfattningen lånar också sig till olika exempel. 1300 01:08:18,310 --> 01:08:25,950 Så t ex en för loop, för int i lika med 0. 1301 01:08:25,950 --> 01:08:28,460 Jag är mindre än, jag vet inte, 10. 1302 01:08:28,460 --> 01:08:32,111 Jag plus plus. 1303 01:08:32,111 --> 01:08:34,560 Och du har koden inne i den, eller hur? 1304 01:08:34,560 --> 01:08:38,830 >> Var gör denna variabel, i, egentligen bara existerar? 1305 01:08:38,830 --> 01:08:40,510 Bara insidan av för loop. 1306 01:08:40,510 --> 01:08:43,640 Så jag satsade många av er har förmodligen stött på detta fel när 1307 01:08:43,640 --> 01:08:45,930 du gör program i din psets. 1308 01:08:45,930 --> 01:08:49,990 Hur många av er har försökt att använda i utanför en for-loop och hade ett fel? 1309 01:08:49,990 --> 01:08:53,310 Liknande en orefererade heltal eller något sådant? 1310 01:08:53,310 --> 01:08:56,069 >> Anledningen till det händer är för här är 1311 01:08:56,069 --> 01:08:59,109 skapa något som bara finns inom din for-loop. 1312 01:08:59,109 --> 01:09:01,972 Och om du försöker använda det, gör jag inte faktiskt existerar utanför det. 1313 01:09:01,972 --> 01:09:04,930 Så i princip en dator säger jag vet inte vad du pratar om. 1314 01:09:04,930 --> 01:09:08,689 Allt jag vet är att en jag var här, men nu inte längre. 1315 01:09:08,689 --> 01:09:12,580 >> Så om jag skulle skapa en för slinga inne, eller hur? 1316 01:09:12,580 --> 01:09:19,080 Och jag kommer att skapa en ny, som int j, och har den gör vad som helst. 1317 01:09:19,080 --> 01:09:23,689 Och du har en kod inuti denna slinga, j existerar endast här. 1318 01:09:23,689 --> 01:09:26,029 Men det finns även inom i. 1319 01:09:26,029 --> 01:09:29,310 Och så j endast existerar inom detta för loop, 1320 01:09:29,310 --> 01:09:33,850 medan jag finns i det hela. 1321 01:09:33,850 --> 01:09:34,500 >> Alla klart? 1322 01:09:34,500 --> 01:09:37,416 Samma sak med villkorssatser Om du vill skapa någonting. 1323 01:09:37,416 --> 01:09:40,390 Samma sak med while-slingor i förekommande du vill skapa någonting. 1324 01:09:40,390 --> 01:09:42,390 Det är något att vara mycket, mycket försiktig. 1325 01:09:42,390 --> 01:09:45,681 Så det här var ett riktigt bra problem i avkänna att det visade två saker. 1326 01:09:45,681 --> 01:09:47,160 Det visade först, omfattning. 1327 01:09:47,160 --> 01:09:49,550 Och det visade även minnesallokering. 1328 01:09:49,550 --> 01:09:54,130 Eftersom ni bör veta att funktioner växer uppåt i stapeln. 1329 01:09:54,130 --> 01:09:56,710 Och att när du ringer funktioner, skapar du 1330 01:09:56,710 --> 01:09:59,060 i huvudsak en ny stapel av minnet. 1331 01:09:59,060 --> 01:10:02,100 Detta är mycket annorlunda från vad din huvudminne är. 1332 01:10:02,100 --> 01:10:03,300 Ja. 1333 01:10:03,300 --> 01:10:03,800 Puh! 1334 01:10:03,800 --> 01:10:05,470 Alla OK om det? 1335 01:10:05,470 --> 01:10:06,750 Det var förvirrande. 1336 01:10:06,750 --> 01:10:09,380 Mycket bra ämnen att gå över, eftersom du förmodligen 1337 01:10:09,380 --> 01:10:12,255 kommer att få några knepiga saker som på frågesport. 1338 01:10:12,255 --> 01:10:13,350 Ja. 1339 01:10:13,350 --> 01:10:13,850 Häftigt. 1340 01:10:13,850 --> 01:10:16,014 1341 01:10:16,014 --> 01:10:18,430 Jag ska sätta dig att få 100 på en linje och sedan 10 på den andra. 1342 01:10:18,430 --> 01:10:21,468 Ja, mycket bra. 1343 01:10:21,468 --> 01:10:26,350 >> OK, nu ni kommer att få chansen att vara resebyråerna. 1344 01:10:26,350 --> 01:10:30,600 Du får svara på alla härliga e-postmeddelanden som jag får ibland. 1345 01:10:30,600 --> 01:10:34,290 >> Så, kära Andi, jag ser att jag tror att något är gå fel med min kompilator. 1346 01:10:34,290 --> 01:10:37,910 Jag är säker på att min kod är korrekt, men jag får hela tiden en segmentering fel 1347 01:10:37,910 --> 01:10:39,074 varje gång jag kör. 1348 01:10:39,074 --> 01:10:39,740 Vad händer? 1349 01:10:39,740 --> 01:10:42,844 Snälla hjälp, massor av kärlek. 1350 01:10:42,844 --> 01:10:45,740 1351 01:10:45,740 --> 01:10:49,410 >> Om ni fick något liknande att hur skulle du reagera? 1352 01:10:49,410 --> 01:10:51,860 Dessa är faktiskt mycket vanligt frågor som vi kommer att be dig. 1353 01:10:51,860 --> 01:10:54,090 Är om vi ska ge er en scenario, ger vi oss 1354 01:10:54,090 --> 01:10:56,350 din bästa gissning på vad som händer. 1355 01:10:56,350 --> 01:11:00,710 Någon har en stab på vad som händer? 1356 01:11:00,710 --> 01:11:02,654 Ja? 1357 01:11:02,654 --> 01:11:06,056 >> PUBLIK: Kanske dereferenced den null, något som pekaren 1358 01:11:06,056 --> 01:11:08,924 pekar på något null. 1359 01:11:08,924 --> 01:11:11,590 PROFESSOR: Ja, det skulle vara en exempel på när det skulle hända. 1360 01:11:11,590 --> 01:11:14,467 Men vad är större bild om vad som händer här? 1361 01:11:14,467 --> 01:11:17,050 PUBLIK: Är det du försöker att få tillgång till minne som du inte 1362 01:11:17,050 --> 01:11:18,175 ska ha tillgång till? 1363 01:11:18,175 --> 01:11:19,200 PROFESSOR: Exakt. 1364 01:11:19,200 --> 01:11:24,800 Så tänk på en seg fel, en off gränser, begränsat område i minnet 1365 01:11:24,800 --> 01:11:27,780 att du inte ska röra. 1366 01:11:27,780 --> 01:11:31,670 >> Så ganska mycket när du försöker att index-- som t.ex. 1367 01:11:31,670 --> 01:11:34,110 du har deklarerat en array från noll till nio. 1368 01:11:34,110 --> 01:11:37,360 Men du försöker röra den 10: e värde, har du inte tillgång till den. 1369 01:11:37,360 --> 01:11:38,694 Eftersom du inte har förklarat det. 1370 01:11:38,694 --> 01:11:40,943 Och så att datorn går att titta på det vara, 1371 01:11:40,943 --> 01:11:43,440 uh oh, du försöker gå utanför gränserna för ett index. 1372 01:11:43,440 --> 01:11:45,270 Jag kommer att ge dig en segmentering fel. 1373 01:11:45,270 --> 01:11:46,590 >> Tänk på som segment, eller hur? 1374 01:11:46,590 --> 01:11:49,665 En extra segment, är felet när du försöker bryta något 1375 01:11:49,665 --> 01:11:50,790 och du bör inte vara där. 1376 01:11:50,790 --> 01:11:53,660 Segmente fel är när som helst du försöker röra saker 1377 01:11:53,660 --> 01:11:54,970 att du inte ska röra. 1378 01:11:54,970 --> 01:11:56,815 >> Så vanliga exempel är ett index. 1379 01:11:56,815 --> 01:11:58,940 Självklart, om du försöker att röra det var noll, 1380 01:11:58,940 --> 01:12:00,220 som också skulle fungera lika bra. 1381 01:12:00,220 --> 01:12:02,300 Om pekaren försökte röra saker som inte borde röra, 1382 01:12:02,300 --> 01:12:03,730 som skulle också kunna fungera lika bra. 1383 01:12:03,730 --> 01:12:07,120 Mest typiskt du kommer se detta i en matris. 1384 01:12:07,120 --> 01:12:07,740 Alla bra? 1385 01:12:07,740 --> 01:12:10,374 >> PUBLIK: Så om du vill att få tillgång till den 10: e punkten 1386 01:12:10,374 --> 01:12:12,290 och det finns bara en gräns nio eller något. 1387 01:12:12,290 --> 01:12:13,160 >> PROFESSOR: Ja, exakt. 1388 01:12:13,160 --> 01:12:13,660 Ganska mycket. 1389 01:12:13,660 --> 01:12:15,930 1390 01:12:15,930 --> 01:12:16,430 Häftigt. 1391 01:12:16,430 --> 01:12:19,070 1392 01:12:19,070 --> 01:12:19,920 >> Kära Andi. 1393 01:12:19,920 --> 01:12:23,440 Så vi har fått dessa underbara saker som kallas sorterar. 1394 01:12:23,440 --> 01:12:25,472 Om Merge sort-- som vi sågen i exempel när 1395 01:12:25,472 --> 01:12:27,180 David gjorde hela sak class-- varför, 1396 01:12:27,180 --> 01:12:29,760 Om det är så mycket snabbare än någon av de andra slag, 1397 01:12:29,760 --> 01:12:33,310 varför vi bry ens veta någon av de andra slag? 1398 01:12:33,310 --> 01:12:35,100 >> Vad är denna fråga verkligen frågar dig? 1399 01:12:35,100 --> 01:12:36,659 Vad är tre word-- 1400 01:12:36,659 --> 01:12:37,950 PUBLIK: Vad är trade-off? 1401 01:12:37,950 --> 01:12:38,530 PROFESSOR: Exakt. 1402 01:12:38,530 --> 01:12:39,946 Det är vad frågan frågar. 1403 01:12:39,946 --> 01:12:43,682 Vad är avvägningen mellan Merge sort verser andra typer? 1404 01:12:43,682 --> 01:12:45,850 >> PUBLIK: Tar minnet, eller hur? 1405 01:12:45,850 --> 01:12:47,720 >> PROFESSOR: Har du förklara det lite mer? 1406 01:12:47,720 --> 01:12:49,490 Först ska vi förklara Merge butik. 1407 01:12:49,490 --> 01:12:50,970 Hur fungerar merge sort fungerar? 1408 01:12:50,970 --> 01:12:55,220 >> PUBLIK: Så det fungerar genom att dela allt i halv 1409 01:12:55,220 --> 01:13:00,660 och sedan sätta ihop och omfördela det i ordning, 1410 01:13:00,660 --> 01:13:02,862 som varje gång du kopplar uppsättningar. 1411 01:13:02,862 --> 01:13:03,820 PROFESSOR: Ganska mycket. 1412 01:13:03,820 --> 01:13:06,861 Så jag kan dra ut det här, men det skulle ta mig fem minuter att dra ut. 1413 01:13:06,861 --> 01:13:10,220 Titta tillbaka på sektions bilderna där vi täckt Merge slag. 1414 01:13:10,220 --> 01:13:10,790 Exakt. 1415 01:13:10,790 --> 01:13:13,406 >> Så sätt merge sort fungerar är den delar saker i halv, 1416 01:13:13,406 --> 01:13:15,780 och då är det bara tittar på första värdena av alla av dem 1417 01:13:15,780 --> 01:13:17,000 och sorterar bara det. 1418 01:13:17,000 --> 01:13:20,364 Kontinuerligt skapar nya arrayer och sätter saker mer och mer i ordning. 1419 01:13:20,364 --> 01:13:23,030 Och så medan det är riktigt, riktigt snabbt eftersom it's-- du vet, 1420 01:13:23,030 --> 01:13:25,380 en binär sökning är n log n. 1421 01:13:25,380 --> 01:13:27,880 Du skapar så många olika matriser som du är 1422 01:13:27,880 --> 01:13:29,700 med hjälp av en stor mängd minne. 1423 01:13:29,700 --> 01:13:33,080 Och så medan det är snabbare, den avvägning här är att du använder mer minne. 1424 01:13:33,080 --> 01:13:38,490 >> Och så, tips, sorterar och sökningar täcktes mycket mer i år 1425 01:13:38,490 --> 01:13:41,610 än vad de har varit i år tidigare. 1426 01:13:41,610 --> 01:13:45,100 Ni bör se till att återspeglas på testet. 1427 01:13:45,100 --> 01:13:49,160 Jag skulle definitivt spendera tid att gå över vad alla de olika slag 1428 01:13:49,160 --> 01:13:52,320 är, hur binär sökning, hur linjär sökning arbete. 1429 01:13:52,320 --> 01:13:54,750 Hur man kanske pseudo koda de ut. 1430 01:13:54,750 --> 01:13:55,950 Vilka är drifttider? 1431 01:13:55,950 --> 01:13:59,210 Något liknande drifttider är mycket lätt att kopiera ner på en lapp ark, 1432 01:13:59,210 --> 01:13:59,710 höger? 1433 01:13:59,710 --> 01:14:01,420 >> Det är verkligen svårt när du är i mitten testet 1434 01:14:01,420 --> 01:14:02,390 och du måste lista ut det. 1435 01:14:02,390 --> 01:14:03,160 Kopiera den ner. 1436 01:14:03,160 --> 01:14:05,550 Jag garanterar att du är kommer att behöva veta det. 1437 01:14:05,550 --> 01:14:06,860 Vilka är de avvägningar? 1438 01:14:06,860 --> 01:14:10,064 Värsta fall bästa fall för dem alla, mycket få veta. 1439 01:14:10,064 --> 01:14:10,564 Ja? 1440 01:14:10,564 --> 01:14:12,730 >> PUBLIK: Behöver vi vet hur att koda merge sort? 1441 01:14:12,730 --> 01:14:15,470 Precis, behöver vi minns den rekursiva? 1442 01:14:15,470 --> 01:14:18,950 >> PROFESSOR: Jag tvivlar starkt det, bara eftersom det är som ganska komplicerat. 1443 01:14:18,950 --> 01:14:22,282 Men det kan inte vara omöjligt om vi be dig att använda pseudokod ut. 1444 01:14:22,282 --> 01:14:22,781 Ja. 1445 01:14:22,781 --> 01:14:25,470 1446 01:14:25,470 --> 01:14:29,170 >> Japp, OK, det ena mer. 1447 01:14:29,170 --> 01:14:31,387 Detta kan ha kommit upp i du sista biten i en bit. 1448 01:14:31,387 --> 01:14:42,101 1449 01:14:42,101 --> 01:14:43,090 Ja? 1450 01:14:43,090 --> 01:14:44,930 Gjorde alla höra det? 1451 01:14:44,930 --> 01:14:48,360 >> OK, så ganska mycket först allt, vilken typ av program 1452 01:14:48,360 --> 01:14:51,000 skulle ge dig en utgång som denna? 1453 01:14:51,000 --> 01:14:54,350 Kom ihåg att vi har bett dig att lära sig om denna nya typ av felsökning verktyg? 1454 01:14:54,350 --> 01:14:57,340 Vad hette det? 1455 01:14:57,340 --> 01:14:59,460 Valgrind, höger 1456 01:14:59,460 --> 01:15:02,600 >> Det var ett program där du kan kalla det kunde 1457 01:15:02,600 --> 01:15:05,940 hålla koll på allt minne du använder i ditt program och pågick. 1458 01:15:05,940 --> 01:15:11,090 Så om du har något, som, definitivt förlorat, 40 bytes i ett block. 1459 01:15:11,090 --> 01:15:14,870 Förmodligen du inte kom ihåg att befria den. 1460 01:15:14,870 --> 01:15:18,710 För om du använder byte minne, som innebär att du har åtkomst till att minnet, 1461 01:15:18,710 --> 01:15:20,240 men du har inte kunnat frigöra. 1462 01:15:20,240 --> 01:15:21,948 Så du vill göra Se till att du är också 1463 01:15:21,948 --> 01:15:31,420 använder free-- det är en function-- att befria alla 1464 01:15:31,420 --> 01:15:34,930 av minnet omfördelas genom malloc. 1465 01:15:34,930 --> 01:15:35,500 >> Häftigt. 1466 01:15:35,500 --> 01:15:37,140 Så den här bilden, jag har det. 1467 01:15:37,140 --> 01:15:41,050 Det är överallt i en hel del föreläsningar, i en hel del avsnitt diabilder. 1468 01:15:41,050 --> 01:15:44,254 Du vill verkligen vara säker på du bara vet allt detta. 1469 01:15:44,254 --> 01:15:47,170 Antingen i din anteckning blad eller om du vill memorera det, gärna. 1470 01:15:47,170 --> 01:15:48,836 Det är verkligen, verkligen, verkligen viktigt. 1471 01:15:48,836 --> 01:15:53,200 1472 01:15:53,200 --> 01:15:56,890 >> Också en mycket bra fråga som vi kan begära. 1473 01:15:56,890 --> 01:16:00,320 Varför är Selection sort-- titta på Urval sort-- alla drifttider 1474 01:16:00,320 --> 01:16:02,060 är n i kvadrat. 1475 01:16:02,060 --> 01:16:06,714 Oavsett hur listan kommer till du som, så varför är Selection sort-- 1476 01:16:06,714 --> 01:16:08,630 Jag ska ge er 30 andra tycker om detta. 1477 01:16:08,630 --> 01:16:10,700 Eftersom det är typ av förvirrande. 1478 01:16:10,700 --> 01:16:12,710 Det innebär en viss begrepps tanke. 1479 01:16:12,710 --> 01:16:16,470 Varför skulle de körtider vara densamma i både de värsta och bästa fall? 1480 01:16:16,470 --> 01:16:28,850 1481 01:16:28,850 --> 01:16:30,000 >> Ja? 1482 01:16:30,000 --> 01:16:38,084 >> PUBLIK: Eftersom val Sortera varje position eller plats i denna lilla samling 1483 01:16:38,084 --> 01:16:40,350 sak eller något annat. 1484 01:16:40,350 --> 01:16:44,430 Så även i bästa fall, även om det är perfekt sorteras, 1485 01:16:44,430 --> 01:16:47,380 det skulle fortfarande behöva vara, OK, en. 1486 01:16:47,380 --> 01:16:49,000 I min första plats jag har en. 1487 01:16:49,000 --> 01:16:50,250 Och gå igenom dem alla. 1488 01:16:50,250 --> 01:16:51,249 OK, en den minsta. 1489 01:16:51,249 --> 01:16:53,053 Och sedan går igen och är som, OK, två 1490 01:16:53,053 --> 01:16:54,594 är den minsta av alla de saker. 1491 01:16:54,594 --> 01:16:56,804 Men det återstår att kontrollera var och en. 1492 01:16:56,804 --> 01:16:57,470 PROFESSOR: Ja. 1493 01:16:57,470 --> 01:17:00,490 Så till exempel, låt oss bara säga Vi har en lista, redan sorteras, 1494 01:17:00,490 --> 01:17:03,390 en matris en till fem. 1495 01:17:03,390 --> 01:17:07,100 Det sätt som urvals slag är att det går igenom, det kontrollerar dessa två. 1496 01:17:07,100 --> 01:17:08,234 Då kontrollerar dessa två. 1497 01:17:08,234 --> 01:17:09,650 Och sedan kontrollerar och kontrollerar. 1498 01:17:09,650 --> 01:17:13,285 Det håller kontrollera alla av dem, oberoende av om eller inte 1499 01:17:13,285 --> 01:17:14,160 det är faktiskt sortering. 1500 01:17:14,160 --> 01:17:16,450 Eftersom det är enkelt vägen sorteringen fungerar. 1501 01:17:16,450 --> 01:17:19,530 >> Och så denna fråga är ungefär som en konceptuell fråga kommer vi att be. 1502 01:17:19,530 --> 01:17:21,430 Var först, du vet vad val Sortera 1503 01:17:21,430 --> 01:17:23,304 är rätt, för att kunna att besvara frågan. 1504 01:17:23,304 --> 01:17:26,200 Du måste kunna förstå konceptuellt vad som händer. 1505 01:17:26,200 --> 01:17:30,760 Och då kan du använda den och tänker, OK låt oss bara föreställa värsta scenariot. 1506 01:17:30,760 --> 01:17:32,230 De är alla i fallande ordning. 1507 01:17:32,230 --> 01:17:33,290 Hur skulle det påverka det? 1508 01:17:33,290 --> 01:17:34,650 >> Tänk om det är stigande ordning? 1509 01:17:34,650 --> 01:17:35,640 Om det redan är sorterade? 1510 01:17:35,640 --> 01:17:37,240 Hur skulle det påverka drifttider? 1511 01:17:37,240 --> 01:17:40,270 Och sedan val Sortera, kommer du att märka att det faktiskt inte spelar någon roll. 1512 01:17:40,270 --> 01:17:43,500 Eftersom du kollar alla värden oavsett vad som händer. 1513 01:17:43,500 --> 01:17:45,810 >> Och så bra saker att komma ihåg. 1514 01:17:45,810 --> 01:17:50,290 Varför vissa typer skiljer sig från andra och hur man bäst och värsta scenarier 1515 01:17:50,290 --> 01:17:52,740 skulle påverka dem alla. 1516 01:17:52,740 --> 01:17:56,700 >> Jag ska verkligen hit i sorterar eftersom det kommer att vara på testet. 1517 01:17:56,700 --> 01:17:57,199 Ja. 1518 01:17:57,199 --> 01:18:00,820 1519 01:18:00,820 --> 01:18:01,320 OK. 1520 01:18:01,320 --> 01:18:05,590 Det finns sex minuter kvar. 1521 01:18:05,590 --> 01:18:09,880 Jag kan ta tre minuter av frågor. 1522 01:18:09,880 --> 01:18:12,290 Jag kan också hänga för som 20 minuter efter avsnitt 1523 01:18:12,290 --> 01:18:13,850 Om du vill ställa frågor samt. 1524 01:18:13,850 --> 01:18:16,330 Har någon bara riktigt kort frågor eller konceptuella frågor 1525 01:18:16,330 --> 01:18:17,360 de är oklart om just nu? 1526 01:18:17,360 --> 01:18:17,832 Ja? 1527 01:18:17,832 --> 01:18:19,720 >> PUBLIK: Kan du berätta lite lite om bitvisa operatörer? 1528 01:18:19,720 --> 01:18:20,280 >> PROFESSOR: Ja. 1529 01:18:20,280 --> 01:18:22,446 Så bitvisa operatörer är något som du förmodligen 1530 01:18:22,446 --> 01:18:24,170 kanske bara vill sätta på bladet. 1531 01:18:24,170 --> 01:18:27,540 Så quickly-- jag inte vill att gå för mycket på djupet 1532 01:18:27,540 --> 01:18:31,164 eftersom Harvard, i sin granskning session täckte det ganska bra. 1533 01:18:31,164 --> 01:18:33,080 Bitvis operatör, det finns fem av dem, eller hur? 1534 01:18:33,080 --> 01:18:41,370 >> Det är det här som är x eller funktion, det finns et-tecken, som är och. 1535 01:18:41,370 --> 01:18:44,050 Rör, som är eller. 1536 01:18:44,050 --> 01:18:46,790 Och sedan har de två olika typer av skift. 1537 01:18:46,790 --> 01:18:50,610 >> Om jag ger dig två värden, om Jag ger dig, som, en och en. 1538 01:18:50,610 --> 01:18:52,390 Vad skulle det utvärderas till? 1539 01:18:52,390 --> 01:18:55,490 Om jag ger dig sann och sann, sant? 1540 01:18:55,490 --> 01:18:56,930 Vad sägs om sant eller falskt? 1541 01:18:56,930 --> 01:18:57,830 Fortfarande sant, eller hur? 1542 01:18:57,830 --> 01:18:59,762 Eftersom det finns en eller. 1543 01:18:59,762 --> 01:19:01,220 Vi kommer troligen att ge dig siffror. 1544 01:19:01,220 --> 01:19:03,780 Så kom ihåg, en lika sant, noll är lika falskt. 1545 01:19:03,780 --> 01:19:07,407 Och vi kan ge dig dessa saker och ber dig att berätta för oss vad som händer. 1546 01:19:07,407 --> 01:19:10,240 Harvard täcker det inom den första 10 minuter av deras studie session 1547 01:19:10,240 --> 01:19:11,230 riktigt, riktigt bra. 1548 01:19:11,230 --> 01:19:14,260 Så ni vill göra att du ser tillbaka på det. 1549 01:19:14,260 --> 01:19:16,387 >> PUBLIK: Är pisa5 kommer att vara på frågesport? 1550 01:19:16,387 --> 01:19:16,970 PROFESSOR: Nej 1551 01:19:16,970 --> 01:19:18,240 Inte ens titta på pisa5 just nu. 1552 01:19:18,240 --> 01:19:18,810 Det är svårt. 1553 01:19:18,810 --> 01:19:22,830 Bara inte ens bry tittar på pisa5. 1554 01:19:22,830 --> 01:19:25,665 >> Eftersom några tips och förslag, jag 1555 01:19:25,665 --> 01:19:28,320 skulle föreslår att du börjar pisa5 så snart som testet är över. 1556 01:19:28,320 --> 01:19:30,319 Detta kommer att bli den svåraste vecka, men då ni 1557 01:19:30,319 --> 01:19:34,590 kommer att vidarebefordras det på kullarna av böljande gröna och valpar, 1558 01:19:34,590 --> 01:19:36,115 och det är bra. 1559 01:19:36,115 --> 01:19:39,810 >> Denna klass får betydande lättare efter den femte pset. 1560 01:19:39,810 --> 01:19:41,560 PUBLIK: Kontorstider är söndag, måndag? 1561 01:19:41,560 --> 01:19:44,260 PROFESSOR: Ja, så kontorstid kommer söndag till måndag för pset. 1562 01:19:44,260 --> 01:19:47,009 Kontorstid ikväll väsentligen kommer bara vara översyn för testet. 1563 01:19:47,009 --> 01:19:50,350 Om någon vill komma in och fråga Tas en fråga, kommer vi att vara där. 1564 01:19:50,350 --> 01:19:53,220 >> Jag tar kanske en fråga om någon har en fråga? 1565 01:19:53,220 --> 01:19:53,809 Ja? 1566 01:19:53,809 --> 01:19:55,850 PUBLIK: När du är definierande noderna, [OHÖRBAR] 1567 01:19:55,850 --> 01:20:00,700 om du säger nod stjärna och sedan nästa, gör datorn automatiskt 1568 01:20:00,700 --> 01:20:03,610 förstår att du är hänvisar till en annan pekare? 1569 01:20:03,610 --> 01:20:04,580 >> PROFESSOR: Nej 1570 01:20:04,580 --> 01:20:06,710 >> PUBLIK: Du måste länka det [OHÖRBAR]? 1571 01:20:06,710 --> 01:20:09,270 >> PROFESSOR: Så i princip struct av en nod, kom ihåg, 1572 01:20:09,270 --> 01:20:12,620 det är som du skapar noden och så har du en pekare som heter nästa. 1573 01:20:12,620 --> 01:20:14,630 Allt du gör är att ha strukturen där. 1574 01:20:14,630 --> 01:20:16,387 Du måste tilldela att pekaren någonstans. 1575 01:20:16,387 --> 01:20:18,470 Så datorerna inte vet vad den gör ännu. 1576 01:20:18,470 --> 01:20:20,250 Du måste faktiskt tilldela den när du skapar din länkad lista. 1577 01:20:20,250 --> 01:20:22,170 Och det är vad huvudsakligen pset 5 kommer att vara på. 1578 01:20:22,170 --> 01:20:24,106 Så ingen oro något av det just nu. 1579 01:20:24,106 --> 01:20:26,380 >> PUBLIK: Så vi behöver inte fokuserar för mycket på länklistan, precis 1580 01:20:26,380 --> 01:20:27,440 den allmänna uppfattningen? 1581 01:20:27,440 --> 01:20:30,980 >> PROFESSOR: Bara ganska mycket stackar, köer, länklistor, träd, hashtabeller. 1582 01:20:30,980 --> 01:20:33,639 Bara att kunna veta vad de är. 1583 01:20:33,639 --> 01:20:35,680 Vi kommer inte att fråga du något särskilt 1584 01:20:35,680 --> 01:20:39,300 eftersom vi inte har verkligen gjort ett pset att täcka något av det ännu. 1585 01:20:39,300 --> 01:20:45,540 >> Så i de sista två minuter innan Jag ställa dig fri att döda det här testet. 1586 01:20:45,540 --> 01:20:49,370 Ganska mycket, liksom, tänk på hur långt ni har kommit i denna klass. 1587 01:20:49,370 --> 01:20:52,820 >> Jag minns när vecka två i denna klass, en del av er 1588 01:20:52,820 --> 01:20:55,720 spendera tre timmar att skriva vatten. 1589 01:20:55,720 --> 01:20:57,970 Hur lång tid skulle det ta dig killar att skriva vatten nu? 1590 01:20:57,970 --> 01:20:59,670 30 sekunder, kanske? 1591 01:20:59,670 --> 01:21:01,810 Tänk på hur mycket ni har lärt sig. 1592 01:21:01,810 --> 01:21:04,320 CS är en riktigt, riktigt hårt ämne. 1593 01:21:04,320 --> 01:21:06,190 Det är ingen tvekan om det. 1594 01:21:06,190 --> 01:21:09,160 Det är svårt, det är därför ingen man studerar det. 1595 01:21:09,160 --> 01:21:10,730 Det är bara svårt. 1596 01:21:10,730 --> 01:21:11,650 Och det är helt bra. 1597 01:21:11,650 --> 01:21:14,150 >> Och jag är verkligen stolt över att alla har gjort det här långt. 1598 01:21:14,150 --> 01:21:16,380 Psets är inte lätt. 1599 01:21:16,380 --> 01:21:17,790 De tar en hel del tid. 1600 01:21:17,790 --> 01:21:22,580 Ni kommer jag aldrig att be dig att skriva spelet 15 eller Vigenère på pset. 1601 01:21:22,580 --> 01:21:24,160 Du behöver inte bara galen om det. 1602 01:21:24,160 --> 01:21:28,080 Allt vi testar här är att utvärdera din konceptuella kunskaper, samt 1603 01:21:28,080 --> 01:21:31,524 som några av dina grundläggande färdigheter i kodning. 1604 01:21:31,524 --> 01:21:33,440 Testet är utformat för att vara riktigt utmanande. 1605 01:21:33,440 --> 01:21:36,180 Precis, det är utformat för dig att inte få 100. 1606 01:21:36,180 --> 01:21:39,880 Det är också utformad för dig att förmodligen inte att kunna avsluta i 75 minuter. 1607 01:21:39,880 --> 01:21:41,995 Och det är helt bra. 1608 01:21:41,995 --> 01:21:42,870 Jag är en student själv. 1609 01:21:42,870 --> 01:21:45,960 Jag vet, jag hatar det när jag går av en frågesport vara, skit. 1610 01:21:45,960 --> 01:21:47,044 Det var verkligen svårt. 1611 01:21:47,044 --> 01:21:49,460 Förmodligen vad som kommer att happen-- och det är helt bra, 1612 01:21:49,460 --> 01:21:50,751 Jag säger er just nu. 1613 01:21:50,751 --> 01:21:53,190 Medlen på dessa saker är inte hög alls. 1614 01:21:53,190 --> 01:21:55,360 >> Och för er som har fått, liksom, 1615 01:21:55,360 --> 01:21:57,870 treor på dina problem uppsättningar, det betyder inte att du är 1616 01:21:57,870 --> 01:21:59,536 kommer att få en 60 procent i denna klass. 1617 01:21:59,536 --> 01:22:01,440 Om du får 60% på quiz, som inte 1618 01:22:01,440 --> 01:22:03,330 menar du kommer att få en D i denna klass. 1619 01:22:03,330 --> 01:22:05,740 Vi ser, speciellt jag, för de av er i min avdelning, 1620 01:22:05,740 --> 01:22:07,406 Jag ser hur hårt ni arbetar alla. 1621 01:22:07,406 --> 01:22:09,190 Och jag håller koll på det. 1622 01:22:09,190 --> 01:22:11,420 >> Ni kommer att bli bra. 1623 01:22:11,420 --> 01:22:14,580 Det finns inget institutionellt minne av lycka i slutet av terminen. 1624 01:22:14,580 --> 01:22:16,840 Eftersom alla Harvard barnen berättar deras vänner, åh, ska du vara fina. 1625 01:22:16,840 --> 01:22:18,381 Ingen säger er det här. 1626 01:22:18,381 --> 01:22:20,950 Så jag måste berätta för er att här. 1627 01:22:20,950 --> 01:22:22,280 >> Ni kommer att bli bra. 1628 01:22:22,280 --> 01:22:24,080 Jag är så stolt över alla er. 1629 01:22:24,080 --> 01:22:25,680 Testet kommer att bli svårt. 1630 01:22:25,680 --> 01:22:28,140 Studera för det, och efteråt bara kasta bort det. 1631 01:22:28,140 --> 01:22:31,280 Gör dig redo att lära sig nya saker. 1632 01:22:31,280 --> 01:22:33,990 Och äta godis. 1633 01:22:33,990 --> 01:22:35,940 Vi har har massor av godis. 1634 01:22:35,940 --> 01:22:37,760 >> Få en god natts sömn. 1635 01:22:37,760 --> 01:22:40,420 Inte inte sova, eftersom det skulle vara riktigt dåligt. 1636 01:22:40,420 --> 01:22:41,490 CS är en hel del logik. 1637 01:22:41,490 --> 01:22:44,960 Om du inte sover, kan du inte fungera, och din hjärna kan inte fungera. 1638 01:22:44,960 --> 01:22:48,780 Och jag kommer att vara här för nästa 20 minuter om någon vill hänga. 1639 01:22:48,780 --> 01:22:51,150 Ni kommer att döda den. 1640 01:22:51,150 --> 01:22:53,000 Lycka till. 1641 01:22:53,000 --> 01:22:55,663