1 00:00:00,000 --> 00:00:05,530 2 00:00:05,530 --> 00:00:09,790 >> PROFESSOR: Så dagsordenen for denne uge, ikke så meget stuff. 3 00:00:09,790 --> 00:00:12,801 Men forhåbentlig meget, meget hjælpsomme og relevant for jer i denne uge. 4 00:00:12,801 --> 00:00:15,550 Men vi kommer til at tilbringe måske 15, 20 minutter bare hurtigt taler 5 00:00:15,550 --> 00:00:17,370 om link listen. 6 00:00:17,370 --> 00:00:19,694 Link lister kommer til at dækkes på quizzen. 7 00:00:19,694 --> 00:00:22,610 Så måske ville det være meget nyttigt at lære lidt om, hvad det er. 8 00:00:22,610 --> 00:00:25,210 >> Vi kommer til at tilbringe det store størstedelen af ​​dagens afsnit 9 00:00:25,210 --> 00:00:27,640 gå over quiz nul praksis problemer. 10 00:00:27,640 --> 00:00:30,970 Og så vil vi spare måske 20, 30 minutter i slutningen for eventuelle dvælende spørgsmål 11 00:00:30,970 --> 00:00:32,850 nogen har. 12 00:00:32,850 --> 00:00:34,610 >> Og så den sidste fem minutter, jeg vil 13 00:00:34,610 --> 00:00:36,467 at give en pumpe op tale for quizzen. 14 00:00:36,467 --> 00:00:38,050 Du fyre alle ønsker at være her for at. 15 00:00:38,050 --> 00:00:39,591 Fordi det kommer til at være et godt tidspunkt. 16 00:00:39,591 --> 00:00:42,650 17 00:00:42,650 --> 00:00:49,230 >> Okay, så nogle materiale på linket listen. 18 00:00:49,230 --> 00:00:52,620 Hvordan de er typisk struktureret er du har, hvad der kaldes en knude, ikke? 19 00:00:52,620 --> 00:00:54,870 Du har disse ting kaldet knuder, der er structs. 20 00:00:54,870 --> 00:00:57,360 Jeg vil gå over, hvordan du opretter en knude i det næste dias. 21 00:00:57,360 --> 00:01:00,680 Men det væsentlige alle forbundet lister er er data, som 22 00:01:00,680 --> 00:01:03,340 er blevet sat sammen via pointere. 23 00:01:03,340 --> 00:01:09,110 >> Og så den fordel, vi har til anvendelse af en sammenkædet liste løbet, 24 00:01:09,110 --> 00:01:11,280 måske, som et array, er det faktum, at i et array 25 00:01:11,280 --> 00:01:15,000 du har brug for en sammenhængende blok af memory alle i samme sted, en 26 00:01:15,000 --> 00:01:16,870 efter den anden, for at kunne have det. 27 00:01:16,870 --> 00:01:20,200 Hvorimod en linket liste, kunne du har tilfældige små bidder af hukommelse 28 00:01:20,200 --> 00:01:23,020 hele din computer hængte sammen af ​​pointere. 29 00:01:23,020 --> 00:01:26,270 >> Og på denne måde, du kan få adgang til oplysninger 30 00:01:26,270 --> 00:01:28,610 der kommer den ene efter den anden, efter den anden 31 00:01:28,610 --> 00:01:32,720 uden at behøve blot en enorm chunk hukommelse i computeren eller andet sted. 32 00:01:32,720 --> 00:01:35,910 Og så dette er en af ​​de største grunde til, at vi bruger link listen. 33 00:01:35,910 --> 00:01:40,300 >> For det andet er det meget let at dynamisk ændre størrelsen på linket listen, fordi i array, 34 00:01:40,300 --> 00:01:44,720 når du erklærer et array, du har et bestemt sæt værdi. 35 00:01:44,720 --> 00:01:47,340 Lad os sige, at jeg ønskede at skabe et array af 10 heltal. 36 00:01:47,340 --> 00:01:49,970 Jeg skaber en vifte af 10 heltal, og det er det. 37 00:01:49,970 --> 00:01:50,580 Det er 10. 38 00:01:50,580 --> 00:01:52,038 Jeg ved ikke, hvad de skal gøre efter det. 39 00:01:52,038 --> 00:01:53,680 Hvis jeg ønskede at gøre det 11, kan ikke gøre det. 40 00:01:53,680 --> 00:01:55,710 Hvis jeg ønsker at gøre det 9, kan ikke gøre det. 41 00:01:55,710 --> 00:01:59,910 >> Mens det i et link listen, kan du tilføje og slette og indsætte hvor du vil. 42 00:01:59,910 --> 00:02:04,940 Du kan dynamisk ændre størrelsen på din strukturere her, din datastruktur. 43 00:02:04,940 --> 00:02:08,370 Og det giver os en masse mere ekstra fleksibilitet 44 00:02:08,370 --> 00:02:11,320 at vi typisk ikke har med arrays. 45 00:02:11,320 --> 00:02:15,210 >> Enhver forvirret på den grundlæggende struktur, hvordan et link liste 46 00:02:15,210 --> 00:02:17,930 eller hvorfor vi er nødt til at bruge en over et array? 47 00:02:17,930 --> 00:02:20,330 Ja, vi vil gå over i detaljer hvordan man rent faktisk oprette en. 48 00:02:20,330 --> 00:02:24,121 Men det er bare lidt generel forstand lige nu. 49 00:02:24,121 --> 00:02:24,620 Afkøle. 50 00:02:24,620 --> 00:02:28,770 Og så arrays hængte sammen af disse dejlige små ting 51 00:02:28,770 --> 00:02:29,960 kaldet knuder. 52 00:02:29,960 --> 00:02:32,210 Alle en node er er en form for struct. 53 00:02:32,210 --> 00:02:36,090 Husk, en struct er, hvis du ønskede at skabe en bestemt type variabel 54 00:02:36,090 --> 00:02:39,850 i C, der ikke allerede eksisterer, du som programmør, 55 00:02:39,850 --> 00:02:42,030 kan faktisk skabe den selv. 56 00:02:42,030 --> 00:02:46,540 >> Og så denne type data struktur kaldes en node, 57 00:02:46,540 --> 00:02:50,770 rent faktisk er blevet skabt af os, at eksisterer ikke inden C på egen hånd. 58 00:02:50,770 --> 00:02:53,150 Og den måde, som du oprette en er du har 59 00:02:53,150 --> 00:02:57,170 overskriften på typedef struct, som fortæller compileren jeg 60 00:02:57,170 --> 00:02:59,640 ved at skabe en struct. 61 00:02:59,640 --> 00:03:00,830 >> Vi vil navngive den "knude". 62 00:03:00,830 --> 00:03:03,350 Og inde vi skal at erklære en variabel i, 63 00:03:03,350 --> 00:03:05,060 som vil gemme en værdi. 64 00:03:05,060 --> 00:03:09,320 Og så er vi også kommer til at har en pointer kaldet "næste" 65 00:03:09,320 --> 00:03:12,090 der peger på den næste knude i link-listen. 66 00:03:12,090 --> 00:03:14,730 Og så du er færdig at off ved blot at gentage node igen, så 67 00:03:14,730 --> 00:03:17,490 compileren ved, OK det er i slutningen af ​​min struct. 68 00:03:17,490 --> 00:03:22,540 >> Og så på den måde, vi er slags at skabe en sød lille vifte 69 00:03:22,540 --> 00:03:25,450 slags ting med en værdi og med en pegepind. 70 00:03:25,450 --> 00:03:27,757 Og du kan linke dem alle sammen med de pointere. 71 00:03:27,757 --> 00:03:30,090 Så de alle slags kan være bundet sammen i en kæde. 72 00:03:30,090 --> 00:03:32,920 73 00:03:32,920 --> 00:03:34,162 >> Afkøle. 74 00:03:34,162 --> 00:03:35,453 Kan du høre, at lidt bedre? 75 00:03:35,453 --> 00:03:36,140 >> Publikum: Ja. 76 00:03:36,140 --> 00:03:38,540 >> PROFESSOR: Okay. 77 00:03:38,540 --> 00:03:44,280 Så den måde, som du fyre kan se, en typisk link liste er struktureret 78 00:03:44,280 --> 00:03:45,500 er du har et hoved. 79 00:03:45,500 --> 00:03:49,460 Du har hovedet værdi, som ikke er bliver påpeget af en anden pointer. 80 00:03:49,460 --> 00:03:53,177 Men det kommer til at pege på, eller reference, en anden node. 81 00:03:53,177 --> 00:03:56,510 Knudepunktet efter kommer til at henvise til node efter det, og så videre og så videre 82 00:03:56,510 --> 00:03:59,170 indtil du til sidst ramt I slutningen af ​​dit link listen. 83 00:03:59,170 --> 00:04:00,980 Og du bare ikke vil have en pointer der. 84 00:04:00,980 --> 00:04:04,659 >> Og så tænke som, på en kæde, eller endda hvis nogen af ​​jer lavet, ved jeg ikke, 85 00:04:04,659 --> 00:04:06,450 lignende med Fruit Loops da du var lille. 86 00:04:06,450 --> 00:04:08,590 Du ville strengen dem sammen og bære dem rundt om halsen. 87 00:04:08,590 --> 00:04:09,840 Synes det er præcis de samme ting. 88 00:04:09,840 --> 00:04:12,964 Du har disse små ting, som du kan strengen sammen dette punkt til én 89 00:04:12,964 --> 00:04:15,291 efter det, at den ene efter det, og så videre og så videre 90 00:04:15,291 --> 00:04:17,040 indtil du har en kæde af en datastruktur 91 00:04:17,040 --> 00:04:21,190 som du kan bruge som du vil. 92 00:04:21,190 --> 00:04:27,370 >> Så den måde, at det vi ville typisk indsætte eller slette 93 00:04:27,370 --> 00:04:30,020 enhver node fra et link listen er meget forskellige 94 00:04:30,020 --> 00:04:31,970 afhængigt af hvor denne node er. 95 00:04:31,970 --> 00:04:34,880 Så for eksempel, fordi pointere er altid 96 00:04:34,880 --> 00:04:38,645 peger på en specifik værdi, når du sletter eller indsætte en node, 97 00:04:38,645 --> 00:04:41,770 du vil være sikker på, at markøren er alle peger på de rigtige ting. 98 00:04:41,770 --> 00:04:46,200 >> Så hvis du ville potentielt indsætte en ny node med værdien af ​​en 99 00:04:46,200 --> 00:04:48,379 inde i en sorterede link liste, vi alle kender her 100 00:04:48,379 --> 00:04:51,170 fra det billede, der kommer til gå i mellem hoved og to, ikke? 101 00:04:51,170 --> 00:04:52,620 Fordi man passer lige der. 102 00:04:52,620 --> 00:04:59,060 Men den måde, som vi ville gøre det er ved først dereferere markøren 103 00:04:59,060 --> 00:05:02,160 fra hoved og at fremsende disse til én. 104 00:05:02,160 --> 00:05:05,040 >> Men vi kommer ind i et problem her. 105 00:05:05,040 --> 00:05:08,280 Kan nogen se, hvad problemet er, hvis vi skulle først dereference 106 00:05:08,280 --> 00:05:10,090 markøren fra hoved til en? 107 00:05:10,090 --> 00:05:14,202 Hvilket problem kan vi løbe ind i, hvis vi forsøger for at føje denne til forsiden af ​​vores array? 108 00:05:14,202 --> 00:05:15,409 >> PUBLIKUM: [uhørligt] 109 00:05:15,409 --> 00:05:16,200 PROFESSOR: Præcis. 110 00:05:16,200 --> 00:05:20,000 Så her har vi en pointer, der var når der peger fra hoved til to. 111 00:05:20,000 --> 00:05:23,120 Men hvis du slippe af med det pointer, du peger den til en, 112 00:05:23,120 --> 00:05:26,500 vi nu har ingen idé hvor de skal gå for at finde to. 113 00:05:26,500 --> 00:05:29,850 Fordi som jeg sagde før, har du en kæmpe luns af hukommelse i computeren. 114 00:05:29,850 --> 00:05:31,860 Alle disse knudepunkter kunne tilfældigt afbrudt 115 00:05:31,860 --> 00:05:33,350 i ethvert sted i din computer. 116 00:05:33,350 --> 00:05:36,140 Og du ved ikke, hvordan at gå om at finde det. 117 00:05:36,140 --> 00:05:40,420 >> Og så er du nødt til at have pejlemærker peger på alle knuder i slutningen. 118 00:05:40,420 --> 00:05:42,420 Eller andet, hvis du ved et uheld dereference én 119 00:05:42,420 --> 00:05:44,485 uden først at tildelingen en værdi først, er du 120 00:05:44,485 --> 00:05:47,410 bare kommer til at tabe alt bagefter. 121 00:05:47,410 --> 00:05:49,720 >> Så det, vi kommer til at gør, er, du ville først 122 00:05:49,720 --> 00:05:53,270 ønsker at oprette en markør på node, du vil indsætte. 123 00:05:53,270 --> 00:05:55,270 Pege på, hvor du vil indsætte det til, 124 00:05:55,270 --> 00:05:59,410 og så bagefter du kunne pege hovedet tilbage til én. 125 00:05:59,410 --> 00:06:02,800 >> Giver det mening for alle her? 126 00:06:02,800 --> 00:06:03,346 Stor. 127 00:06:03,346 --> 00:06:04,720 Tænk på det som ligesom en kæde. 128 00:06:04,720 --> 00:06:07,420 Hvis du tilføjer en kæde, det er slags intuitiv 129 00:06:07,420 --> 00:06:10,742 hvordan du ville gå om at indsætte det. 130 00:06:10,742 --> 00:06:15,274 >> OK, så det er faktisk meget kortere end jeg troede det ville være, 131 00:06:15,274 --> 00:06:16,690 fem minutters spiel på link lister. 132 00:06:16,690 --> 00:06:19,960 Bare så du fyre har den grundlæggende idé om, hvad det er. 133 00:06:19,960 --> 00:06:23,580 >> Her har vi dagsordenen for quizzen nul. 134 00:06:23,580 --> 00:06:24,895 Lad ikke dette skræmme dig. 135 00:06:24,895 --> 00:06:26,270 Jeg ved, det er en masse information. 136 00:06:26,270 --> 00:06:27,580 Det ser meget skræmmende. 137 00:06:27,580 --> 00:06:33,130 Det er også en masse, jeg tror, ​​CSC slags udtryk. 138 00:06:33,130 --> 00:06:37,440 Ting som hexadecimale strenge, pegepinde, tildelinger dynamisk hukommelse 139 00:06:37,440 --> 00:06:40,120 er meget skræmmende klingende vilkår. 140 00:06:40,120 --> 00:06:42,700 >> Men vi kommer til at bryde dem ned, gøre nogle praksis problemer 141 00:06:42,700 --> 00:06:44,980 så du fyre alle er klar til denne test. 142 00:06:44,980 --> 00:06:47,104 Hvor mange af jer har allerede begyndt at studere? 143 00:06:47,104 --> 00:06:50,040 144 00:06:50,040 --> 00:06:53,670 >> OK, du fyre sikkert gerne at begynde at komme i gang 145 00:06:53,670 --> 00:06:56,480 på, at fordi quizzen er i morgen. 146 00:06:56,480 --> 00:06:58,739 Eller torsdag for nogle af jer. 147 00:06:58,739 --> 00:07:01,030 Ja, så vi kommer til at gå over nogle praksis problemer. 148 00:07:01,030 --> 00:07:04,600 Hvis du fyre alle ønsker at tage ud et ark papir, en blyant. 149 00:07:04,600 --> 00:07:07,310 Vi kommer til at bare tilbringe Langt størstedelen af ​​dagens afsnit 150 00:07:07,310 --> 00:07:11,590 gå over noget af det, så du fyre har en idé om, hvad de skal forvente af quizzen. 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 Et par af logistisk detaljer så godt, for nogen 154 00:07:19,730 --> 00:07:25,120 som ikke har været til linket der, hvis du går til cs50.yale.edu, på forsiden 155 00:07:25,120 --> 00:07:28,566 denne side er der et link der siger "Om Quiz Zero." 156 00:07:28,566 --> 00:07:29,440 Link tager dig der. 157 00:07:29,440 --> 00:07:31,065 Hvis du ikke har læst den, kan du læse den. 158 00:07:31,065 --> 00:07:34,470 Fordi det fortæller dig virkelig vigtigt oplysninger om quiz. 159 00:07:34,470 --> 00:07:37,410 >> Jeg har tænkt mig at trække det ud fra at bare fordi, fysisk, 160 00:07:37,410 --> 00:07:40,200 hvis du fyre ikke ved, hvor at gå, vil vi have problemer. 161 00:07:40,200 --> 00:07:44,220 Og så hvis din sidste i form med A til N, gå til jura auditorium. 162 00:07:44,220 --> 00:07:47,500 Og hvis dine sidste starter med P til Z, gå til Davies Auditorium. 163 00:07:47,500 --> 00:07:50,240 Og dette kun gælder for mennesker i onsdag sektion. 164 00:07:50,240 --> 00:07:53,420 >> Hvis du tager quizzen på Torsdag du går til SSS 114 165 00:07:53,420 --> 00:07:55,078 hvor din forelæsning typisk er. 166 00:07:55,078 --> 00:07:55,953 PUBLIKUM: [uhørligt] 167 00:07:55,953 --> 00:07:59,316 168 00:07:59,316 --> 00:08:01,940 PROFESSOR: O til Z, er du nødt at gå til Davies auditorium. 169 00:08:01,940 --> 00:08:03,273 Jeg har tænkt mig at ændre det, ikke? 170 00:08:03,273 --> 00:08:05,670 171 00:08:05,670 --> 00:08:09,698 >> Oh, yeah, du bare mislykkes automatisk. 172 00:08:09,698 --> 00:08:11,753 >> Oh yeah, det er dig Christa. 173 00:08:11,753 --> 00:08:15,190 174 00:08:15,190 --> 00:08:16,030 Ja, min dårlige. 175 00:08:16,030 --> 00:08:17,610 Jep, O til Z, er du nødt at gå til Davies Auditorim. 176 00:08:17,610 --> 00:08:19,140 Jeg har tænkt mig at løse dette, når jeg uploader. 177 00:08:19,140 --> 00:08:20,320 Ja. 178 00:08:20,320 --> 00:08:22,160 >> Og så også noget vigtigt at tænke 179 00:08:22,160 --> 00:08:25,290 er, at onsdag hvis du er officielt indskrevet i onsdag afsnittet 180 00:08:25,290 --> 00:08:26,832 du skal tage din quiz på onsdag. 181 00:08:26,832 --> 00:08:29,706 Og hvis du er tilmeldt torsdag du skal tage din quiz torsdag. 182 00:08:29,706 --> 00:08:31,000 Og det er i løbet af klassen tid. 183 00:08:31,000 --> 00:08:35,970 Hvor, jeg synes det er ligesom 1:00 til 02:15 på onsdage og fra 2:30 til 03:45 184 00:08:35,970 --> 00:08:37,220 om torsdagen. 185 00:08:37,220 --> 00:08:41,710 >> Hvis du har en uforsonlig konflikter, Dean undskyldninger er det eneste, 186 00:08:41,710 --> 00:08:43,030 Desværre kan vi tage. 187 00:08:43,030 --> 00:08:45,560 Fordi vi har haft en Langt størstedelen af ​​anmodninger 188 00:08:45,560 --> 00:08:47,970 at skifte fra onsdag til torsdag. 189 00:08:47,970 --> 00:08:51,265 Som vi kan ikke ære medmindre vi har en Dean anmodning. 190 00:08:51,265 --> 00:08:52,650 >> OK. 191 00:08:52,650 --> 00:08:57,000 Så før vi går i gang på en par af de praksis problemer, 192 00:08:57,000 --> 00:09:00,540 Jeg er bare kommer til at gå over Andys nyttige tips til succes. 193 00:09:00,540 --> 00:09:04,140 Gutter, når du studerer, du virkelig ønsker at øve skrive kode i hånden. 194 00:09:04,140 --> 00:09:07,050 Første gang jeg nogensinde tog en CS quiz, havde jeg ikke 195 00:09:07,050 --> 00:09:09,960 praksis skrive kode manuelt før, og det var meget 196 00:09:09,960 --> 00:09:11,890 chokerende ved, hvor svært det var. 197 00:09:11,890 --> 00:09:16,125 >> Når du fyre ikke komme ind i vane at skrive ud af alt, 198 00:09:16,125 --> 00:09:20,260 det kommer meget naturligt at være kunne have automatisk kompletteret 199 00:09:20,260 --> 00:09:22,015 beslag og semikoloner der. 200 00:09:22,015 --> 00:09:23,890 Når du skriver det ud i hånden, nogle gange er det 201 00:09:23,890 --> 00:09:27,100 meget, meget nemt at glemme et semikolon, eller glemmer at lukke et beslag, 202 00:09:27,100 --> 00:09:30,970 eller glemmer at lukke et kolon, eller sådan noget. 203 00:09:30,970 --> 00:09:34,322 >> Så når du skriver koden i hånden, det er en meget anderledes fornemmelse. 204 00:09:34,322 --> 00:09:37,280 Så du fyre, når du arbejder gennem nogle af de praksis problemer, 205 00:09:37,280 --> 00:09:38,904 det ville godt at virkelig øve i dag. 206 00:09:38,904 --> 00:09:41,770 Eller i morgen, formoder jeg, hvis du er tage quizzen på torsdag. 207 00:09:41,770 --> 00:09:45,280 >> For det andet har vi det sidste, ligesom, otte år værd af praksis 208 00:09:45,280 --> 00:09:47,070 quizzer online. 209 00:09:47,070 --> 00:09:50,759 Dette års quiz vil sandsynligvis være meget, meget lig dem alle. 210 00:09:50,759 --> 00:09:51,800 De er alle meget ens. 211 00:09:51,800 --> 00:09:54,220 Du slags komme ind i stil af type spørgsmål 212 00:09:54,220 --> 00:09:57,250 at vi spørger, hvilken type funktioner, som vi vil skrive det i, 213 00:09:57,250 --> 00:09:58,580 et cetera, et cetera. 214 00:09:58,580 --> 00:10:01,980 >> Så tag den praksis quizzer, især under tidspres. 215 00:10:01,980 --> 00:10:05,390 75 minutter til at gøre quizzen er ikke en masse tid. 216 00:10:05,390 --> 00:10:07,254 Det er meget, meget lang. 217 00:10:07,254 --> 00:10:09,670 Og så du fyre virkelig ønsker at sikre, at du fyre er 218 00:10:09,670 --> 00:10:11,990 for vane at skrive kode ved hånden hurtigt. 219 00:10:11,990 --> 00:10:15,070 Fordi du ikke ønsker den første tid til at se en quiz af denne længde 220 00:10:15,070 --> 00:10:16,560 være på din quiz. 221 00:10:16,560 --> 00:10:20,540 Du fyre virkelig ønsker at sikre, at du øve på forhånd. 222 00:10:20,540 --> 00:10:24,550 >> For det fjerde, du ønsker at gennemgå forelæsning og § dias. 223 00:10:24,550 --> 00:10:25,980 Du behøver ikke at huske ting. 224 00:10:25,980 --> 00:10:30,430 Faktisk er alle tilladt en et ark hvidt papir noter 225 00:10:30,430 --> 00:10:31,090 foran og bagpå. 226 00:10:31,090 --> 00:10:32,920 Du fyre kan skrive eller skrive. 227 00:10:32,920 --> 00:10:37,070 Hvis du finder dig selv behøver at huske noget, sætte den ned på dette ark. 228 00:10:37,070 --> 00:10:40,810 >> Jeg garanterer dig, behøver du ikke ønsker at blive hængende i midten af ​​denne quiz 229 00:10:40,810 --> 00:10:43,890 være som, oh yeah, hvad er runtime af denne art versus den slags. 230 00:10:43,890 --> 00:10:46,490 Bare sætte den ned og kopiere det direkte fra din note ark. 231 00:10:46,490 --> 00:10:50,420 Så kan du faktisk bare bruge din hjernen til at tænke over de problemer 232 00:10:50,420 --> 00:10:52,190 snarere end at skulle huske fakta. 233 00:10:52,190 --> 00:10:55,250 Og så virkelig drage fordel af eventuelle niche detaljer 234 00:10:55,250 --> 00:11:00,140 at du tror, ​​du har brug for at huske, plop det ned om revisionen ark. 235 00:11:00,140 --> 00:11:02,680 >> OK, nogen spørgsmål logistisk vedrørende quizzen 236 00:11:02,680 --> 00:11:05,510 før vi begynder nogle quiz problemer praksis? 237 00:11:05,510 --> 00:11:06,416 Ja? 238 00:11:06,416 --> 00:11:10,040 >> PUBLIKUM: Jeg har ikke haft en chance at se på quizzen [uhørligt] 239 00:11:10,040 --> 00:11:11,757 men det vil være anvendelse meste, 240 00:11:11,757 --> 00:11:14,090 Eller er der også kommer til at være, lignende, viden spørgsmål? 241 00:11:14,090 --> 00:11:14,940 >> PROFESSOR: Det er en masse. 242 00:11:14,940 --> 00:11:16,731 Så den måde, som jeg ville beskrev quizzen 243 00:11:16,731 --> 00:11:18,810 is-- Jeg sat sammen nogle praksis problemer 244 00:11:18,810 --> 00:11:20,960 at jeg trak fra alle quizzer. 245 00:11:20,960 --> 00:11:25,210 Men du vil se, at der er to vigtigste typer af spørgsmål, vi vil bede dig om. 246 00:11:25,210 --> 00:11:28,750 >> Den ene er et meget lavt niveau detalje ting. 247 00:11:28,750 --> 00:11:31,720 Vi giver dig en lille bid af kode og siger, er der en fejl her? 248 00:11:31,720 --> 00:11:33,110 Hvad ville være at udskrive her? 249 00:11:33,110 --> 00:11:35,980 Hvad vil denne kode producere, et cetera. 250 00:11:35,980 --> 00:11:38,710 Så meget lavt niveau oplysninger detaljer. 251 00:11:38,710 --> 00:11:42,700 >> Og på bagsiden, vil vi have meget højt niveau videnbaserede spørgsmål. 252 00:11:42,700 --> 00:11:45,190 Kan du forklare, hvad det forskellen mellem en binær søgning 253 00:11:45,190 --> 00:11:46,148 og en lineær søgning er? 254 00:11:46,148 --> 00:11:48,500 Hvorfor skulle vi ønsker at bruge en over den anden? 255 00:11:48,500 --> 00:11:49,960 Måske, hvad der er GDB? 256 00:11:49,960 --> 00:11:51,560 Hvorfor ønsker vi at bruge GDB? 257 00:11:51,560 --> 00:11:54,590 Højere niveau, mere grundlæggende forståelse spørgsmål. 258 00:11:54,590 --> 00:11:58,240 Så vil du se en blanding af de to af dem på din quiz. 259 00:11:58,240 --> 00:12:01,462 >> Noget andet, før vi hovedet lige ind i det? 260 00:12:01,462 --> 00:12:02,879 OK. 261 00:12:02,879 --> 00:12:03,670 PUBLIKUM: Endnu. 262 00:12:03,670 --> 00:12:04,030 PROFESSOR: Åh, en mere. 263 00:12:04,030 --> 00:12:04,340 Undskyld. 264 00:12:04,340 --> 00:12:05,631 >> PUBLIKUM: Ja, det er i orden. 265 00:12:05,631 --> 00:12:10,140 Så du siger 75 minutter er for kort, ligesom det er usandsynligt 266 00:12:10,140 --> 00:12:11,640 at vi vil slutte? 267 00:12:11,640 --> 00:12:13,571 Eller lignende, 75 minutter er præcis så meget tid 268 00:12:13,571 --> 00:12:15,700 som vi ville brug for, hvis vi var passende forberedt? 269 00:12:15,700 --> 00:12:17,450 PROFESSOR: OK, så det quiz er udfordrende. 270 00:12:17,450 --> 00:12:19,550 Det er absolut udfordrende. 271 00:12:19,550 --> 00:12:21,092 Du vil finde dig selv på kort tid. 272 00:12:21,092 --> 00:12:24,341 Du er sandsynligvis kommer til at ramme, ligesom 10, 15 minutter til at gå, og være ligesom, lort. 273 00:12:24,341 --> 00:12:25,520 Jeg har så meget tilbage at gøre. 274 00:12:25,520 --> 00:12:26,520 Og det er helt fint. 275 00:12:26,520 --> 00:12:28,740 Alle kommer til at føle på samme måde. 276 00:12:28,740 --> 00:12:31,074 >> Bare være meget opmærksom på hvor meget tid du har. 277 00:12:31,074 --> 00:12:33,490 Og så det er derfor jeg fortælle dig fyre gøre den praksis quizzer. 278 00:12:33,490 --> 00:12:36,672 Fordi det virkelig giver en stor ansvarsfølelse af, hvad quizzen vil være ligesom. 279 00:12:36,672 --> 00:12:39,130 Så hvis du finde dig selv at blive stand til færdig praksis 280 00:12:39,130 --> 00:12:41,671 quizzer i en god mængde af tid, kan du pace selv godt, 281 00:12:41,671 --> 00:12:45,695 så vil du ikke have et problem onsdag eller torsdag. 282 00:12:45,695 --> 00:12:46,575 >> Afkøle. 283 00:12:46,575 --> 00:12:49,200 Så hvis alle wants-- jeg tror de fleste mennesker har papirark 284 00:12:49,200 --> 00:12:49,810 ud allerede. 285 00:12:49,810 --> 00:12:52,604 Jeg har tænkt mig at væsentlige blot give dig prøvens spørgsmål, 286 00:12:52,604 --> 00:12:54,520 giver jer, ligesom en par minutter til at gøre dem. 287 00:12:54,520 --> 00:12:59,610 Og vi vil gå over som en klasse hvad svarene på dem er. 288 00:12:59,610 --> 00:13:02,860 >> Så det er et meget typisk tidlig spørgsmål vi får 289 00:13:02,860 --> 00:13:06,720 spørge dig, bare at konvertere numre mellem forskellige baser. 290 00:13:06,720 --> 00:13:09,070 Binære, som du fyre kan tilbagekaldelse, er basen to. 291 00:13:09,070 --> 00:13:12,470 Decimal er basis 10, eller hvad vi som mennesker typisk fortolke. 292 00:13:12,470 --> 00:13:17,120 Hexadecimal er basis 16, som er nul til ni samt A til F. 293 00:13:17,120 --> 00:13:19,990 >> Så der er fire tal jeg er beder jer til at konvertere her. 294 00:13:19,990 --> 00:13:23,909 Jeg vil give dig lyst, tre til fire minutter til at tænke igennem, hvordan 295 00:13:23,909 --> 00:13:25,200 vi ville gå om at løse dette. 296 00:13:25,200 --> 00:13:32,832 297 00:13:32,832 --> 00:13:35,710 >> PUBLIKUM: Er vi lov regnemaskiner? 298 00:13:35,710 --> 00:13:37,630 >> PROFESSOR: Du vil ikke brug for regnemaskiner, ja. 299 00:13:37,630 --> 00:13:42,420 Jeg tror grundlæggende kommer, tror jeg, er alle du fyre vil blive bedt om at gøre. 300 00:13:42,420 --> 00:14:41,700 301 00:14:41,700 --> 00:14:45,070 >> Og bare så jeg slags har en følelse af når alle er færdig, se op, 302 00:14:45,070 --> 00:14:47,429 bølge, ved jeg ikke, smil, ser glad, hvis du er færdig. 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 Måske et par minutter mere. 306 00:17:23,945 --> 00:18:28,080 307 00:18:28,080 --> 00:18:29,600 >> OK, lad os bringe det ind. 308 00:18:29,600 --> 00:18:31,580 Jeg vilje vil giver jer mindre tid 309 00:18:31,580 --> 00:18:33,760 end du sandsynligvis nødt til at gøre nogle af disse problemer, 310 00:18:33,760 --> 00:18:37,124 simpelthen fordi jeg vil være sikker på, at vi komme igennem en masse problemer. 311 00:18:37,124 --> 00:18:39,290 Så ingen bekymringer, hvis du ikke har en chance for at afslutte. 312 00:18:39,290 --> 00:18:43,770 Helt OK, så længe du har en idé om, hvordan man kan gå om dette. 313 00:18:43,770 --> 00:18:45,850 Så lad os gå videre og gøre den første. 314 00:18:45,850 --> 00:18:52,690 315 00:18:52,690 --> 00:18:57,870 >> Så først, er der nogen ønsker at fortælle mig i binær, hvad gør hver af disse cifre 316 00:18:57,870 --> 00:19:00,484 repræsentere i form af deres værdier? 317 00:19:00,484 --> 00:19:01,250 Ja? 318 00:19:01,250 --> 00:19:03,349 >> PUBLIKUM: To til power nul, 00:58. 319 00:19:03,349 --> 00:19:04,140 PROFESSOR: Præcis. 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 >> Lige så typisk når vi er i bunden 10 323 00:19:16,430 --> 00:19:20,580 alle disse repræsenterer, er, ligesom, 10 til basis af nul, ikke? 324 00:19:20,580 --> 00:19:21,810 Det er din ens plads. 325 00:19:21,810 --> 00:19:24,520 Alle dine 10 sted er er 10 til potensen af ​​en. 326 00:19:24,520 --> 00:19:26,600 Du 100 sted er 10 til magten for to. 327 00:19:26,600 --> 00:19:29,570 >> Uanset basen du er i går at gøre med præcis de samme ting, 328 00:19:29,570 --> 00:19:31,480 bare med en anden base. 329 00:19:31,480 --> 00:19:34,130 Så binær, alt hvad der er, er bunden to. 330 00:19:34,130 --> 00:19:37,110 Du kommer til at konvertere alle de cifre i to til uanset magt 331 00:19:37,110 --> 00:19:38,190 af dette ciffer. 332 00:19:38,190 --> 00:19:41,450 Og så i denne forstand, vi kan have en lettere måde 333 00:19:41,450 --> 00:19:43,800 for at kunne tilføje op eller adderer alle tallene i rækkefølge 334 00:19:43,800 --> 00:19:46,010 at konvertere til basis 10. 335 00:19:46,010 --> 00:19:50,362 >> Så er der nogen ønsker at fortælle mig, hvad det Svaret på det første er i bunden ti? 336 00:19:50,362 --> 00:19:51,674 >> PUBLIKUM: To, [uhørligt] 337 00:19:51,674 --> 00:19:52,340 PROFESSOR: Ja. 338 00:19:52,340 --> 00:19:53,230 PUBLIKUM: 42. 339 00:19:53,230 --> 00:19:56,560 PROFESSOR: 42, der du går. 340 00:19:56,560 --> 00:20:00,660 Så den måde, vi fik dette svar var gør to første, som er to. 341 00:20:00,660 --> 00:20:02,760 Plus to tredje, som er otte. 342 00:20:02,760 --> 00:20:07,590 Plus to til den femte, som er hvad der er tilovers. 343 00:20:07,590 --> 00:20:09,390 Du opsummere dem op, og det er 42. 344 00:20:09,390 --> 00:20:12,000 >> Er der nogen forvirret om, hvordan vi fik det? 345 00:20:12,000 --> 00:20:15,630 Så grundlæggende kommer, som Jeg sagde, du bør være OK. 346 00:20:15,630 --> 00:20:17,410 Hvis ikke, godt, kan vi praktiserer det også. 347 00:20:17,410 --> 00:20:18,720 Men det er i orden. 348 00:20:18,720 --> 00:20:20,560 Afkøle. 349 00:20:20,560 --> 00:20:25,570 >> Er der nogen ønsker at give mig Svaret på det andet en så godt? 350 00:20:25,570 --> 00:20:26,860 >> 50? 351 00:20:26,860 --> 00:20:27,600 God. 352 00:20:27,600 --> 00:20:30,044 Enhver forvirret om, hvordan vi fik at enten? 353 00:20:30,044 --> 00:20:31,960 Cool, jeg får svar på næste dias. 354 00:20:31,960 --> 00:20:34,440 Så ingen bekymringer, hvis du skal kopiere det ned. 355 00:20:34,440 --> 00:20:38,860 >> OK, så hexadecimal er en smule tricky. 356 00:20:38,860 --> 00:20:41,840 men jeg har tænkt mig at vise jer en genvej til, hvordan du gør det. 357 00:20:41,840 --> 00:20:44,800 Så hexadecimal, som du Husk, det er jo være 16. 358 00:20:44,800 --> 00:20:48,920 Og fordi vi som mennesker ikke faktisk have 16 numre til at repræsentere det, 359 00:20:48,920 --> 00:20:56,940 vi går fra nul til ni, som vores første 10 værdier, og så har vi A til F, 360 00:20:56,940 --> 00:20:58,630 som er de næste seks værdier. 361 00:20:58,630 --> 00:21:03,040 >> Og så den nemmeste måde at gå fra enhver binært tal til hexadecimal 362 00:21:03,040 --> 00:21:05,350 er at bryde dem op i to halvdele. 363 00:21:05,350 --> 00:21:10,042 Og så enhver binært tal vi vil give vil du sandsynligvis have otte cifre. 364 00:21:10,042 --> 00:21:11,750 Du kan bare bryde dem op i midten. 365 00:21:11,750 --> 00:21:17,460 >> Så den første en-- en en, én én, en, en, én én. 366 00:21:17,460 --> 00:21:21,340 Slags tror det op, du ved, tegne en skråstreg eller et komma i mellem dem. 367 00:21:21,340 --> 00:21:23,800 Og du kan bare konvertere direkte uanset 368 00:21:23,800 --> 00:21:26,670 dette er til den første antal hexadecimal, 369 00:21:26,670 --> 00:21:29,880 og hvad her er at den anden af ​​hexadecimal. 370 00:21:29,880 --> 00:21:37,584 >> Så husk fra almindelig notation, hvad gør hexadecimale værdier starte med? 371 00:21:37,584 --> 00:21:38,460 >> PUBLIKUM: Zero. 372 00:21:38,460 --> 00:21:39,270 >> PROFESSOR: 0X. 373 00:21:39,270 --> 00:21:45,210 Så vi ved, at hver gang vi beder dig at konvertere et vilkårligt antal til hexadecimal, 374 00:21:45,210 --> 00:21:48,230 eller helst du se nogen nummer, der starter med 0X, 375 00:21:48,230 --> 00:21:50,230 du ved, at det er en hexadecimal værdi. 376 00:21:50,230 --> 00:21:54,160 >> Og så du vil blive bedt om at afgøre, hvad disse to cifre er. 377 00:21:54,160 --> 00:21:59,690 Og den måde du gør det, sammentælle op at halvdelen og optælling op at halvdelen. 378 00:21:59,690 --> 00:22:02,870 Så i dette eksempel, hvad ville man, én, én, man være? 379 00:22:02,870 --> 00:22:04,890 Hvilken værdi ville det være? 380 00:22:04,890 --> 00:22:06,040 Det ville være F, ikke? 381 00:22:06,040 --> 00:22:08,050 Det ville være 15. 382 00:22:08,050 --> 00:22:11,780 >> Så det ville være F. One, én, en, en her er også 383 00:22:11,780 --> 00:22:21,270 F. Så en, én, én, en, en, én, en, én i hexadecimal, alt det er, er 0xFF. 384 00:22:21,270 --> 00:22:25,350 Fordi denne halvdel repræsenterede F, værdien af ​​15, 385 00:22:25,350 --> 00:22:27,331 og denne halve repræsenteret F, værdien 15. 386 00:22:27,331 --> 00:22:29,456 Fordi husk, vi er tælle fra nul til ni. 387 00:22:29,456 --> 00:22:35,290 A er som 10, B er ligesom 11, F er 15. 388 00:22:35,290 --> 00:22:41,690 >> Giver det mening for alle, hvordan vi fik fra binær til hexadecimalt? 389 00:22:41,690 --> 00:22:44,595 >> PUBLIKUM: Og så hvordan vi får 15 fra den ene, en, en, én? 390 00:22:44,595 --> 00:22:46,220 PROFESSOR: Ja, det er binært, ikke? 391 00:22:46,220 --> 00:22:48,090 Forestil dig dette er blot et binært tal. 392 00:22:48,090 --> 00:22:50,792 Så du har to til nulte, som er en. 393 00:22:50,792 --> 00:22:51,500 PUBLIKUM: Åh, OK. 394 00:22:51,500 --> 00:22:51,670 Så du bare alt det ud. 395 00:22:51,670 --> 00:22:52,670 >> PROFESSOR: Ja, og derefter du bare alt det ud. 396 00:22:52,670 --> 00:22:53,380 Det er alt det er. 397 00:22:53,380 --> 00:22:54,890 >> PUBLIKUM: OK. 398 00:22:54,890 --> 00:22:55,830 >> PROFESSOR: OK. 399 00:22:55,830 --> 00:23:00,740 >> PUBLIKUM: Så du går fra binær til decimal til hexadecimal? 400 00:23:00,740 --> 00:23:04,590 >> PROFESSOR: Det er den nemmeste måde at gøre det, ja. 401 00:23:04,590 --> 00:23:11,390 Du kommer ikke til til decimal, fordi decimal kun har nul til ni. 402 00:23:11,390 --> 00:23:13,410 Vi er bare sådan opdele denne i to. 403 00:23:13,410 --> 00:23:15,201 >> PUBLIKUM: [uhørligt] bruge decimal for at finde 404 00:23:15,201 --> 00:23:17,809 hvad det matcher op til i hexadecimal. 405 00:23:17,809 --> 00:23:20,100 PROFESSOR: Jeg mener, du er sammentælle op ved hjælp af grundlæggende matematik. 406 00:23:20,100 --> 00:23:20,725 Publikum: Ja. 407 00:23:20,725 --> 00:23:22,300 PROFESSOR: Ja, temmelig meget. 408 00:23:22,300 --> 00:23:23,630 Det er en smule forvirrende. 409 00:23:23,630 --> 00:23:26,410 Men bare vide, at du kan opdele op uanset 410 00:23:26,410 --> 00:23:28,160 denne værdi er i bare halvdele. 411 00:23:28,160 --> 00:23:29,570 Se, hvad er det i binær? 412 00:23:29,570 --> 00:23:30,610 Hvilket nummer er det? 413 00:23:30,610 --> 00:23:33,270 Det kommer til at blive noget fra nul til F. 414 00:23:33,270 --> 00:23:35,722 >> Her vil også være noget fra nul til F. 415 00:23:35,722 --> 00:23:37,722 Og så kan du bare sætte de to lige der. 416 00:23:37,722 --> 00:23:38,263 >> PUBLIKUM: OK. 417 00:23:38,263 --> 00:23:38,910 PROFESSOR: Yep. 418 00:23:38,910 --> 00:23:39,410 OK. 419 00:23:39,410 --> 00:23:42,320 Så du fyre ønsker at prøve den næste så? 420 00:23:42,320 --> 00:23:49,601 Zero, en, nul én, en, nul, en nul. 421 00:23:49,601 --> 00:23:52,350 Jeg vil give jer gerne 30 sekunder, da du sikkert ikke vidste 422 00:23:52,350 --> 00:23:53,850 det trick til, hvordan du gør dette tidligere. 423 00:23:53,850 --> 00:24:24,950 424 00:24:24,950 --> 00:24:27,381 >> OK, nogen ønsker at få denne ene et skud? 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 God. 429 00:24:31,340 --> 00:24:37,050 Så dette her ville være-- du ønsker til at fortælle os, hvordan du fik det? 430 00:24:37,050 --> 00:24:38,920 Først hvordan fik du fem? 431 00:24:38,920 --> 00:24:42,030 >> PUBLIKUM: Fordi nul, en, nul, en er fem. 432 00:24:42,030 --> 00:24:45,170 >> PROFESSOR: Er alle forstår hvorfor nul, en, nul, en er fem? 433 00:24:45,170 --> 00:24:46,260 Du har en her. 434 00:24:46,260 --> 00:24:48,010 Du har intet i to til den første. 435 00:24:48,010 --> 00:24:50,300 I to til det andet, du har en, der er fire. 436 00:24:50,300 --> 00:24:52,600 Så du tilføje fire plus den ene, har du fem. 437 00:24:52,600 --> 00:24:53,600 Alle godt? 438 00:24:53,600 --> 00:24:54,100 OK. 439 00:24:54,100 --> 00:24:56,570 Og så, hvad dette være, og hvorfor? 440 00:24:56,570 --> 00:24:58,350 Hvilket nummer er A svarer til? 441 00:24:58,350 --> 00:24:59,350 >> PUBLIKUM: 10. 442 00:24:59,350 --> 00:25:00,976 >> PROFESSOR: Og hvad det i bund to? 443 00:25:00,976 --> 00:25:01,850 PUBLIKUM: [uhørligt] 444 00:25:01,850 --> 00:25:03,010 PROFESSOR: Præcis. 445 00:25:03,010 --> 00:25:06,370 Så denne anden værdi her ville være 0X5A. 446 00:25:06,370 --> 00:25:08,410 >> Alle godt om, hvordan du konvertere? 447 00:25:08,410 --> 00:25:10,770 Det er en meget enklere end du tror det er. 448 00:25:10,770 --> 00:25:13,330 Jeg vil bare være sikker på, du kender nyttige tips 449 00:25:13,330 --> 00:25:14,950 og tricks til, hvordan du gør det. 450 00:25:14,950 --> 00:25:18,432 >> PUBLIKUM: Hvorfor kan du bare opdele det i midten sådan? 451 00:25:18,432 --> 00:25:21,390 Bare være ligesom, OK, jeg kun kommer til at bekymre sig om disse første [uhørligt]? 452 00:25:21,390 --> 00:25:24,240 >> PROFESSOR: Fordi det er faktisk den måde hexadecimale værdier er repræsenteret. 453 00:25:24,240 --> 00:25:26,890 0X, der rent faktisk betyder intet andet end at fortælle dig 454 00:25:26,890 --> 00:25:28,710 at det er et hexadecimalt tal. 455 00:25:28,710 --> 00:25:31,580 Og dette repræsenterer altid de første fire cifre. 456 00:25:31,580 --> 00:25:34,330 Og dette repræsenterer altid de sidste fire cifre. 457 00:25:34,330 --> 00:25:37,835 Og så disse to cifre bare svarer til forskellige bits. 458 00:25:37,835 --> 00:25:39,200 >> PUBLIKUM: Så vi vil always-- 459 00:25:39,200 --> 00:25:41,830 >> PROFESSOR: Du er altid kommer til at få otte bits værdi. 460 00:25:41,830 --> 00:25:44,580 >> PUBLIKUM: Er det ligesom en ting herfra, eller at en ting hele? 461 00:25:44,580 --> 00:25:46,883 PROFESSOR: Det er bare en ting i computere, JEP. 462 00:25:46,883 --> 00:25:47,424 PUBLIKUM: OK. 463 00:25:47,424 --> 00:25:48,240 Awesome. 464 00:25:48,240 --> 00:25:51,290 >> Professor: Også, så i dette eksempel vi konverteret fra binær til decimal, 465 00:25:51,290 --> 00:25:53,290 og fra binær til hexadecimal. 466 00:25:53,290 --> 00:25:56,610 Du fyre ønsker at sikre, at du også øve gå den anden vej rundt. 467 00:25:56,610 --> 00:26:03,370 Så hvis jeg gav dig 0xFF, kunne du trække det ud i binær, ikke? 468 00:26:03,370 --> 00:26:06,820 >> Du konvertere F til binær, som er en, en, en, én, 469 00:26:06,820 --> 00:26:09,380 konvertere F til binær, som er en, en, en, én. 470 00:26:09,380 --> 00:26:11,310 >> Så vi kan bede dig om at gøre den anden vej rundt. 471 00:26:11,310 --> 00:26:14,817 Så decimal til binær eller hexadecimal til binær. 472 00:26:14,817 --> 00:26:16,650 Så du ønsker at gøre sikker på du kender begge veje. 473 00:26:16,650 --> 00:26:19,371 Vi vil sandsynligvis spørge dig en kombination af de to. 474 00:26:19,371 --> 00:26:20,660 >> Ja, du har et spørgsmål? 475 00:26:20,660 --> 00:26:22,724 Jeg kan see-- du er god? 476 00:26:22,724 --> 00:26:23,348 Publikum: Ja. 477 00:26:23,348 --> 00:26:24,560 PROFESSOR: OK. 478 00:26:24,560 --> 00:26:26,101 Er jeg god til at slette dette? 479 00:26:26,101 --> 00:26:26,600 Stor. 480 00:26:26,600 --> 00:26:33,965 481 00:26:33,965 --> 00:26:40,437 >> Okay, så svarene er her, hvis nogen er nysgerrig senere og få forvirret. 482 00:26:40,437 --> 00:26:41,844 OK. 483 00:26:41,844 --> 00:26:46,070 >> PUBLIKUM: Betyder det noget, hvis vi sætter vores bogstaver i capitol eller små bogstaver? 484 00:26:46,070 --> 00:26:50,360 >> PROFESSOR: Det gør, fordi i hexadecimal, efter sædvane, 485 00:26:50,360 --> 00:26:52,840 alle tegn er store bogstaver. 486 00:26:52,840 --> 00:26:54,650 Så A til F er kommer til at være store bogstaver. 487 00:26:54,650 --> 00:26:58,660 Hvis du sætter et lille et, jeg ikke kender hvis vi nødvendigvis ville markere det forkert. 488 00:26:58,660 --> 00:27:00,679 Men teoretisk, det er ikke teknisk 489 00:27:00,679 --> 00:27:01,970 hvordan du skulle have det. 490 00:27:01,970 --> 00:27:03,303 Så de bør alle være store bogstaver. 491 00:27:03,303 --> 00:27:05,910 Ja, godt spørgsmål. 492 00:27:05,910 --> 00:27:07,780 >> OK. 493 00:27:07,780 --> 00:27:08,790 Andet spørgsmål. 494 00:27:08,790 --> 00:27:12,750 Overvej dette dejlige program her. 495 00:27:12,750 --> 00:27:15,180 Jeg vil stille spørgsmålet, Jeg kommer tilbage dette. 496 00:27:15,180 --> 00:27:23,170 >> Så det første, hvad der er indeni standard io.h der er af interesse for programmet? 497 00:27:23,170 --> 00:27:26,640 For det andet, hvad betyder ugyldig tilkendegiver på linje tre? 498 00:27:26,640 --> 00:27:30,572 Og for det tredje, hvad betyder returnere nul fra vigtigste, som linje seks, generelt betyde? 499 00:27:30,572 --> 00:27:33,280 Hvis du fyre ønsker at skrive dem ned, da jeg er nødt til at skifte tilbage 500 00:27:33,280 --> 00:27:36,810 til dias bare så du kan se koden. 501 00:27:36,810 --> 00:27:40,400 Dette er et eksempel på, lignende, måske en højere niveau spørgsmål, hvor vi beder dig 502 00:27:40,400 --> 00:27:42,435 hvilke ting betyder i et program. 503 00:27:42,435 --> 00:27:47,290 504 00:27:47,290 --> 00:27:49,215 >> Alle godt for mig at gå tilbage til dias? 505 00:27:49,215 --> 00:27:53,400 506 00:27:53,400 --> 00:27:54,361 OK, cool. 507 00:27:54,361 --> 00:27:57,610 Så jeg vil give dig fyre som måske tre minutter til at se på denne ene virkelig hurtig. 508 00:27:57,610 --> 00:28:41,330 509 00:28:41,330 --> 00:28:44,140 >> OK, så denne ene er ligesom forholdsvis let, begrebsmæssigt. 510 00:28:44,140 --> 00:28:49,280 Er der nogen ønsker at fortælle mig, hvad der er først inden om af hash, herunder 511 00:28:49,280 --> 00:28:52,630 vores standard io.h biblioteket fil? 512 00:28:52,630 --> 00:28:55,510 Hvorfor har vi brug for, at biblioteket medtaget til dette program? 513 00:28:55,510 --> 00:28:56,930 Hvad her har vi brug for det til? 514 00:28:56,930 --> 00:28:56,980 >> Ja? 515 00:28:56,980 --> 00:28:58,340 >> PUBLIKUM: Er at når du sætte det printf? 516 00:28:58,340 --> 00:28:59,131 >> PROFESSOR: Præcis. 517 00:28:59,131 --> 00:29:01,780 Så printf, hver gang du tage input fra brugeren 518 00:29:01,780 --> 00:29:04,140 og udskrive noget til skærmen, det er 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 jeg en udgang? 522 00:29:08,430 --> 00:29:09,207 Ja jeg gør. 523 00:29:09,207 --> 00:29:12,040 Så jeg ved, at jeg altid har tænkt mig at brug for standardisere i.o biblioteket. 524 00:29:12,040 --> 00:29:16,400 >> Så printf er den funktion hvorved vi har brug for at få adgang 525 00:29:16,400 --> 00:29:19,370 og hashtag omfatte standard i.o biblioteket. 526 00:29:19,370 --> 00:29:20,280 OK. 527 00:29:20,280 --> 00:29:22,660 >> For det andet hvad betyder ugyldig betyde? 528 00:29:22,660 --> 00:29:26,970 Vi har den int main (void), hvad betyder ugyldiggøre her mener her on line tre? 529 00:29:26,970 --> 00:29:28,080 Ja, i ryggen. 530 00:29:28,080 --> 00:29:29,020 >> PUBLIKUM: [uhørligt] 531 00:29:29,020 --> 00:29:29,920 >> PROFESSOR: Præcis. 532 00:29:29,920 --> 00:29:33,320 Så husk, vi har lært startende med vores pset 533 00:29:33,320 --> 00:29:35,360 at du kan faktisk specificere kommandolinje 534 00:29:35,360 --> 00:29:39,010 argumenter, dit program, at du hovedfunktion, tager dig, brugeren, 535 00:29:39,010 --> 00:29:39,650 kald det. 536 00:29:39,650 --> 00:29:42,650 Hvis vi har tomrum, der betyder, at du kunne bare køre programmet direkte 537 00:29:42,650 --> 00:29:44,680 uden nogen kommandolinjeargumenter. 538 00:29:44,680 --> 00:29:46,160 Alle klar på det? 539 00:29:46,160 --> 00:29:46,660 OK. 540 00:29:46,660 --> 00:29:52,850 >> Og endelig hvorfor vi gider at gøre denne tilbagevenden nul ting her? 541 00:29:52,850 --> 00:29:54,740 Hvorfor har vi selv har en int main? 542 00:29:54,740 --> 00:29:57,330 Hvorfor kan vi ikke bare har void main tomrum? 543 00:29:57,330 --> 00:29:59,216 Ja? 544 00:29:59,216 --> 00:30:01,590 PUBLIKUM: Bare så vi kan være sikker på, at programmet er 545 00:30:01,590 --> 00:30:04,247 afslutter succes, som i modsætning til, hvis det blev nummereret. 546 00:30:04,247 --> 00:30:06,580 Og vi ville vide, at det er en anden form for fejl. 547 00:30:06,580 --> 00:30:07,621 >> PROFESSOR: Ja, præcis. 548 00:30:07,621 --> 00:30:10,670 Dette er blot et meget konventionelle ting, som vi gør, 549 00:30:10,670 --> 00:30:13,840 er, at lige ved udgangen af dit program, bare for at sikre 550 00:30:13,840 --> 00:30:15,830 at din vigtigste funktion kører korrekt, 551 00:30:15,830 --> 00:30:17,940 vi altid ønsker at gøre afkast nul. 552 00:30:17,940 --> 00:30:21,160 Selvom vi kan nødvendigvis ikke se, at trykt nogen steder. 553 00:30:21,160 --> 00:30:25,092 >> Fordi som programmører, du ved, hvis du har mange forskellige linjer kode 554 00:30:25,092 --> 00:30:27,050 og du ved ikke, hvor disse går galt, 555 00:30:27,050 --> 00:30:30,240 og hvis der sker en fejl, du ønsker at sørge for, at du får denne fejl. 556 00:30:30,240 --> 00:30:33,240 Og så typisk, hvis noget går forkert, vi vil have et afkast på en bare 557 00:30:33,240 --> 00:30:34,669 at sikre, at vi ved, at det er. 558 00:30:34,669 --> 00:30:36,460 Så hvis du ser en tilbagevenden nul, som typisk 559 00:30:36,460 --> 00:30:38,293 betyder, dit program er henrettet med succes. 560 00:30:38,293 --> 00:30:40,490 561 00:30:40,490 --> 00:30:40,990 God? 562 00:30:40,990 --> 00:30:45,180 563 00:30:45,180 --> 00:30:45,680 Afkøle. 564 00:30:45,680 --> 00:30:48,710 565 00:30:48,710 --> 00:30:52,680 >> OK, det andet program her. 566 00:30:52,680 --> 00:30:54,827 Overveje det. 567 00:30:54,827 --> 00:30:56,910 Og hvis du fyre se en flyde, kan du fyre sandsynligvis 568 00:30:56,910 --> 00:31:00,810 har en god idé om, hvad Jeg er ved at spørge dig. 569 00:31:00,810 --> 00:31:05,200 >> Så når dette program henretter, som du kan se, 570 00:31:05,200 --> 00:31:09,330 Jeg erklære en flyder inde i min vigtigste funktion. 571 00:31:09,330 --> 00:31:13,470 Jeg navngive det "svare," og jeg indstilling at svarende til en divideret med 10. 572 00:31:13,470 --> 00:31:17,860 Jeg udskrivning ud, til én decimal, at flyde. 573 00:31:17,860 --> 00:31:19,880 Og så er jeg tilbage nul. 574 00:31:19,880 --> 00:31:24,470 >> Så når udførelsen af ​​programmet, tænker tilbage på grådige nu, 575 00:31:24,470 --> 00:31:26,550 dette program udskriver 0.0. 576 00:31:26,550 --> 00:31:29,993 Som vi alle ved, forhåbentlig vi alle ved, en divideret med 10 ikke er en 0,00, 577 00:31:29,993 --> 00:31:32,350 det er 0,1. 578 00:31:32,350 --> 00:31:37,810 Men forklare, hvorfor dette program mener at 1 divideret med 10 udskrifter til 0,1 andre 579 00:31:37,810 --> 00:31:39,504 end 0,1? 580 00:31:39,504 --> 00:31:42,545 Jeg vil give jer måske gerne 30 sekunder til bare hurtigt at tænke over det 581 00:31:42,545 --> 00:31:43,878 og jeg vil gå tilbage til 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 Nogen ønsker at give det et skud? 585 00:32:22,205 --> 00:32:24,330 I tre sætninger eller mindre, fordi der typisk er vi 586 00:32:24,330 --> 00:32:27,650 kommer til at begrænse alle svar til tre sætninger eller mindre 587 00:32:27,650 --> 00:32:31,130 så du ikke bare gylpe tilfældige ting på din quiz. 588 00:32:31,130 --> 00:32:32,740 >> Ja, tage et skud. 589 00:32:32,740 --> 00:32:36,390 >> PUBLIKUM: Så jeg tror der er denne ting kaldet, ligesom, [uhørligt] 590 00:32:36,390 --> 00:32:42,320 Så der kan være, for eksempel, der kan være ligesom, 0,09, 591 00:32:42,320 --> 00:32:47,250 at hvor du udskrive den første ciffer, ville det være til 0,0? 592 00:32:47,250 --> 00:32:49,100 >> PROFESSOR: Luk, ikke helt. 593 00:32:49,100 --> 00:32:49,810 Christabell? 594 00:32:49,810 --> 00:32:51,770 >> PUBLIKUM: Du dividere et og 10, og de er begge heltal. 595 00:32:51,770 --> 00:32:54,610 Og så den måde, at det vil at gemme det som et heltal. 596 00:32:54,610 --> 00:32:56,480 Og så nærmeste heltal ville være 0,0. 597 00:32:56,480 --> 00:32:57,471 Og så det er 0,1. 598 00:32:57,471 --> 00:32:58,970 PROFESSOR: Ja, det er rigtig godt. 599 00:32:58,970 --> 00:33:00,040 Det er det rigtige svar. 600 00:33:00,040 --> 00:33:03,597 Så det er et meget forvirrende koncept for en masse børn. 601 00:33:03,597 --> 00:33:06,680 Og jeg virkelig ønsker at sikre, at dette er forstærket i alles hoved. 602 00:33:06,680 --> 00:33:10,090 >> Så det, vi kalder flydende punkt unøjagtighed, 603 00:33:10,090 --> 00:33:12,800 hvor grunden en masse af dine programmer i grådige 604 00:33:12,800 --> 00:33:17,010 fungerede oprindeligt var fordi du har glemt at kaste din variabel. 605 00:33:17,010 --> 00:33:19,370 Så hvad Christabell sagde var helt korrekt. 606 00:33:19,370 --> 00:33:21,990 >> En flyder i sig selv er upræcis. 607 00:33:21,990 --> 00:33:26,400 Fordi der i en computer, til højre, har vi en endelig mængde bits hukommelse 608 00:33:26,400 --> 00:33:28,480 vi kan bruge til at repræsentere tal. 609 00:33:28,480 --> 00:33:33,480 Så for eksempel, denne CS50 id is-- Jeg synes det er en 64-bit computer. 610 00:33:33,480 --> 00:33:37,520 >> En flyder kun kan repræsenteres af en begrænset mængde af disse bits. 611 00:33:37,520 --> 00:33:42,260 Og så 0,1 med uendelige nuller, Det er var 0,1 er, ikke? 612 00:33:42,260 --> 00:33:45,450 Men vi kan faktisk ikke gemme dette nummer i vores computer. 613 00:33:45,450 --> 00:33:47,810 Vi har bare ikke tilstrækkelig hukommelse til at gøre det. 614 00:33:47,810 --> 00:33:52,340 >> Og så den nærmeste tilnærmelse af hvad der er gemt i hukommelsen, er faktisk 615 00:33:52,340 --> 00:33:55,390 noget 0.000 noget, noget, noget, noget. 616 00:33:55,390 --> 00:34:01,240 Som, når du afkorter det, runder ned til 0,0. 617 00:34:01,240 --> 00:34:05,640 >> Og så dette eksempel er blot en der demonstrerer masser af emner 618 00:34:05,640 --> 00:34:08,469 vi har, når vi arbejder forsøger at fejlagtigt lave matematik 619 00:34:08,469 --> 00:34:11,000 uden støbning som en anden heltal. 620 00:34:11,000 --> 00:34:14,870 Så bare være på vagt over for dette sker. 621 00:34:14,870 --> 00:34:18,239 >> På quizzer, hvis vi giver dig en blok af kode, og det er ligesom, 622 00:34:18,239 --> 00:34:19,510 hvad udskriver i slutningen? 623 00:34:19,510 --> 00:34:24,096 Og hvis det er nogle tilfældige værdi, du fyre skal vide, hvorfor det sker. 624 00:34:24,096 --> 00:34:24,909 Ja? 625 00:34:24,909 --> 00:34:27,926 >> PUBLIKUM: Trunkér er at slippe af med alt efter et bestemt punkt? 626 00:34:27,926 --> 00:34:28,513 [Uhørligt] 627 00:34:28,513 --> 00:34:30,929 PROFESSOR: Ja, så faktisk dette er en virkelig dårligt eksempel, 628 00:34:30,929 --> 00:34:37,870 fordi 0,100 uanset faktisk vil afkorte ned til 0,1. 629 00:34:37,870 --> 00:34:41,389 Men hvis du skulle køre det-- jeg ikke husk, fordi sidste år de 630 00:34:41,389 --> 00:34:42,830 kørte det på et andet program. 631 00:34:42,830 --> 00:34:45,300 De løb det i noget, der hedder det CS50 Appliance, som 632 00:34:45,300 --> 00:34:46,389 er forskellig fra ID. 633 00:34:46,389 --> 00:34:48,520 Det var en 32-bit-system, tror jeg. 634 00:34:48,520 --> 00:34:50,290 Og så der var forskellige numre. 635 00:34:50,290 --> 00:34:53,330 >> Men det væsentlige, bare vide, at hele konceptet med trunkering 636 00:34:53,330 --> 00:34:54,815 og hvordan det bare skærer ting ud. 637 00:34:54,815 --> 00:34:55,690 Og så hvis det rounds-- 638 00:34:55,690 --> 00:34:56,300 >> PUBLIKUM: Uden afrunding. 639 00:34:56,300 --> 00:34:57,370 >> PROFESSOR: Præcis. 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 Afkøle. 643 00:35:04,380 --> 00:35:05,250 >> Hi, i ryggen. 644 00:35:05,250 --> 00:35:07,634 Vi er bare at gå over nogle quiz anmeldelse spørgsmål. 645 00:35:07,634 --> 00:35:08,430 >> Okay. 646 00:35:08,430 --> 00:35:10,150 Så overveje et andet program her. 647 00:35:10,150 --> 00:35:12,797 648 00:35:12,797 --> 00:35:15,380 Jeg har tænkt mig at give jer fyre en par minutter til at læse over dette. 649 00:35:15,380 --> 00:35:18,588 Det er noget, var for en meget for nylig, at jeg synes blæste en masse af jer 650 00:35:18,588 --> 00:35:19,142 fyre sind. 651 00:35:19,142 --> 00:35:21,100 Men vi kommer til at tale gennem denne igen bare 652 00:35:21,100 --> 00:35:24,152 at sikre, at du forstå 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 Nogen har brug for mere tid til at læse denne kode? 657 00:35:44,342 --> 00:35:45,650 OK. 658 00:35:45,650 --> 00:35:50,630 >> Så det forekommer mig, at i dette program er jeg 659 00:35:50,630 --> 00:35:53,460 oprette to strenge ved hjælp getString. 660 00:35:53,460 --> 00:35:55,180 En kaldet s og en kaldet t. 661 00:35:55,180 --> 00:35:58,680 Og hvis de er lige lig med hinanden, 662 00:35:58,680 --> 00:36:00,880 det skal udskrives "Du skrive det samme. " 663 00:36:00,880 --> 00:36:04,170 >> Men elsewise ville det udskrives, "du indtastet forskellige ting, "ikke? 664 00:36:04,170 --> 00:36:05,990 Virker meget, meget enkel. 665 00:36:05,990 --> 00:36:08,720 Men, men hvis jeg rent faktisk forsøger at skrive dette program, 666 00:36:08,720 --> 00:36:12,230 Det lader til, at selv når jeg input præcis de samme strenge, 667 00:36:12,230 --> 00:36:15,490 det stadig udskriver, "du indtastet forskellige ting! " 668 00:36:15,490 --> 00:36:18,020 Er der nogen ønsker at tage en skudt på, hvorfor dette program altid 669 00:36:18,020 --> 00:36:20,370 svarer, at de input er forskellige, selv 670 00:36:20,370 --> 00:36:22,090 når ordene selv er de samme? 671 00:36:22,090 --> 00:36:24,870 672 00:36:24,870 --> 00:36:29,170 >> Så hvis jeg skulle input-- David kærlighed at bruge et eksempel som mor, ikke? 673 00:36:29,170 --> 00:36:37,890 Små bogstaver M-O-M til S, T lig små bogstaver M-O-M. 674 00:36:37,890 --> 00:36:40,340 Hvis jeg kørte dette gennem denne kode, hvorfor skulle det 675 00:36:40,340 --> 00:36:44,180 udskrive "du har skrevet forskellige ting?" 676 00:36:44,180 --> 00:36:46,336 >> Er der nogen der har brug for mere tid til at tænke over dette? 677 00:36:46,336 --> 00:36:47,294 OK, jeg tror, ​​vi er gode. 678 00:36:47,294 --> 00:36:48,716 Ja? 679 00:36:48,716 --> 00:36:53,930 >> PUBLIKUM: OK, så det er noget om hvor den er gemt i hukommelsen, ikke? 680 00:36:53,930 --> 00:36:54,890 >> PROFESSOR: Yep. 681 00:36:54,890 --> 00:37:00,400 >> PUBLIKUM: Hvor det er ligesom, hvis det string s opbevares ved hukommelsen spot-- 682 00:37:00,400 --> 00:37:01,689 Jeg opfinde denne-- er nul. 683 00:37:01,689 --> 00:37:02,355 PROFESSOR: Selvfølgelig. 684 00:37:02,355 --> 00:37:05,290 PUBLIKUM: Og snor t opbevares ved hukommelsen stedet, 685 00:37:05,290 --> 00:37:11,000 lignende, 167, og derefter nul ikke er lig 167. 686 00:37:11,000 --> 00:37:12,610 >> PROFESSOR: Præcis. 687 00:37:12,610 --> 00:37:18,350 OK, så husk denne utrolige åbenbaring vi forklarede jer 688 00:37:18,350 --> 00:37:21,530 denne sidste uge, at strings ikke rigtig eksisterer? 689 00:37:21,530 --> 00:37:25,380 Når vi skaber noget, der hedder streng er vi i virkeligheden 690 00:37:25,380 --> 00:37:29,330 skabe noget, der hedder char stjerne. 691 00:37:29,330 --> 00:37:34,470 Hvilket alt det er, er en pointer til en streng eller et array af chars. 692 00:37:34,470 --> 00:37:39,480 >> Og så i dette eksempel, hvis jeg var indtaste M-O-M vejen 693 00:37:39,480 --> 00:37:49,350 at min computer ville gemme det er inden hukommelse omvendt skråstreg nul, ikke? 694 00:37:49,350 --> 00:37:53,180 Disse fire tegn, tegn, ville blive gemt et sted. 695 00:37:53,180 --> 00:37:59,290 >> Og så disse fire tegn, omvendt skråstreg nul, 696 00:37:59,290 --> 00:38:01,275 gemmes et andet sted hen, ikke? 697 00:38:01,275 --> 00:38:04,685 Jeg har ingen idé om, hvor adresserne er, de er et eller andet sted i min computer. 698 00:38:04,685 --> 00:38:07,080 Men jeg ved ikke præcis ved, hvor de er. 699 00:38:07,080 --> 00:38:10,170 >> Når jeg opretter en streng s, alt det er virkelig 700 00:38:10,170 --> 00:38:15,550 er en pegepind til start af denne streng. 701 00:38:15,550 --> 00:38:21,130 Og når jeg opretter denne t-værdien, alt hvad der er en pointer til her. 702 00:38:21,130 --> 00:38:23,980 Og så når du forsøger at sidestille og tjek 703 00:38:23,980 --> 00:38:27,710 at se, om s er ligemænd lig med t, computeren 704 00:38:27,710 --> 00:38:31,635 er egentlig bare at vende tilbage til du adressen på denne m 705 00:38:31,635 --> 00:38:33,390 og adressen på denne m. 706 00:38:33,390 --> 00:38:36,230 Og fordi de er to separate stykker data 707 00:38:36,230 --> 00:38:38,750 der er lagret i to forskellige adresser i computeren, 708 00:38:38,750 --> 00:38:41,750 din computer er aldrig vil genkende dem som værende det samme. 709 00:38:41,750 --> 00:38:43,500 Er der nogen ønsker at giver et skud på, hvad vi 710 00:38:43,500 --> 00:38:46,900 ville have at gøre, hvis vi ønskede at rette dette og har en korrekt kørende program 711 00:38:46,900 --> 00:38:49,360 i stedet? 712 00:38:49,360 --> 00:38:52,070 Tænk over, at der for et par sekunder. 713 00:38:52,070 --> 00:38:54,929 Hvad skal vi nødt til at skifte til hente dette program fungerer 714 00:38:54,929 --> 00:38:56,220 den måde, vi ønsker det til at fungere? 715 00:38:56,220 --> 00:39:17,260 716 00:39:17,260 --> 00:39:18,918 >> Ja, ønsker at tage et stik på det? 717 00:39:18,918 --> 00:39:24,082 >> PUBLIKUM: Kan vi forsøge at dereference den pointer og kontrollere gennem array? 718 00:39:24,082 --> 00:39:25,540 PROFESSOR: Det er én måde at gøre det. 719 00:39:25,540 --> 00:39:27,880 Så, hvad er dit navn igen? 720 00:39:27,880 --> 00:39:29,010 Jeg er ked af, at minde mig. 721 00:39:29,010 --> 00:39:29,589 >> Zee: Zee. 722 00:39:29,589 --> 00:39:32,130 PROFESSOR: Ja, så hvad Zee foreslået ville absolut arbejde. 723 00:39:32,130 --> 00:39:32,629 Højre? 724 00:39:32,629 --> 00:39:35,730 Vi kunne dereference markøren og faktisk gå og adgang 725 00:39:35,730 --> 00:39:38,460 de fysiske data inde på her. 726 00:39:38,460 --> 00:39:40,300 Og vi kan bare sammenligne hele skærmen. 727 00:39:40,300 --> 00:39:43,670 >> Vi kan sige, OK, pointer, give mig, hvad der er indeni her. 728 00:39:43,670 --> 00:39:44,960 Det ville returnere en meter. 729 00:39:44,960 --> 00:39:47,168 Og jeg vil sige, pointer, give mig, hvad der er indeni her. 730 00:39:47,168 --> 00:39:47,750 Returnere en m. 731 00:39:47,750 --> 00:39:48,410 Gør dem kamp? 732 00:39:48,410 --> 00:39:49,410 Ja. 733 00:39:49,410 --> 00:39:50,340 Så vi videre. 734 00:39:50,340 --> 00:39:54,240 >> Vi holder kontrol af hele to strenge hele vejen op til slutningen 735 00:39:54,240 --> 00:39:56,635 og se, om de er ens, hvis alle værdier er ens. 736 00:39:56,635 --> 00:39:59,680 Og hvis alle værdier er ens, så vi ved, strengene er sande. 737 00:39:59,680 --> 00:40:01,600 Absolut, det er, hvordan vi ville gøre det? 738 00:40:01,600 --> 00:40:03,930 >> Er der nogen forvirret på noget af dette? 739 00:40:03,930 --> 00:40:06,970 Hele konceptet af, hvordan strygere er virkelig bare pointere, 740 00:40:06,970 --> 00:40:08,440 og hvordan de egentlig ikke eksisterer? 741 00:40:08,440 --> 00:40:10,480 Og hvorfor vi får fejl lide den måde, vi får det? 742 00:40:10,480 --> 00:40:15,070 Fordi jeg garantere jer, pointers og snor allokering og hukommelse 743 00:40:15,070 --> 00:40:16,470 kommer til at komme op. 744 00:40:16,470 --> 00:40:17,410 >> Ja? 745 00:40:17,410 --> 00:40:21,072 >> PUBLIKUM: [uhørligt] dereference det, du bare sætte en stjerne [uhørligt] 746 00:40:21,072 --> 00:40:21,780 PROFESSOR: Right. 747 00:40:21,780 --> 00:40:28,430 Så for at derererence en pointer middel at gå til denne adresse af markøren 748 00:40:28,430 --> 00:40:30,390 og få de data, værdien der. 749 00:40:30,390 --> 00:40:32,700 Og den måde at gøre det er stjerne pointer. 750 00:40:32,700 --> 00:40:34,262 Du må ikke forveksle det. 751 00:40:34,262 --> 00:40:35,186 >> PUBLIKUM: [uhørligt]. 752 00:40:35,186 --> 00:40:35,852 >> PROFESSOR: Ja. 753 00:40:35,852 --> 00:40:39,750 PUBLIKUM: Så du kan bare skrive hvis stjerne er lige ligemænd stjerne t. 754 00:40:39,750 --> 00:40:40,630 >> PROFESSOR: Nå, nej. 755 00:40:40,630 --> 00:40:40,960 Ingen. 756 00:40:40,960 --> 00:40:41,640 >> PUBLIKUM: Det er ikke godt nok, ikke? 757 00:40:41,640 --> 00:40:43,760 >> PROFESSOR: Det er ikke, fordi du er kun kontrollere det første bogstav. 758 00:40:43,760 --> 00:40:46,010 Du er sandsynligvis kommer til at brug for en form af en løkke, der 759 00:40:46,010 --> 00:40:49,055 gentager gennem hver eneste tegn i begge strenge. 760 00:40:49,055 --> 00:40:49,837 Ja. 761 00:40:49,837 --> 00:40:52,920 Så hvis du ville bare kontrollere at se hvis de begyndte med det samme, 762 00:40:52,920 --> 00:40:58,220 du kan gøre, hvis, stjerne s er lig med stjerne t. 763 00:40:58,220 --> 00:41:01,300 Så ved du, at mindst de begyndte med det samme tegn. 764 00:41:01,300 --> 00:41:01,952 >> Ja? 765 00:41:01,952 --> 00:41:04,056 >> PUBLIKUM: Så den måde du gør det ville være 766 00:41:04,056 --> 00:41:06,064 som en indlejret for løkke eller pointer? 767 00:41:06,064 --> 00:41:06,730 PROFESSOR: Ja. 768 00:41:06,730 --> 00:41:08,170 Temmelig blot en for-løkke. 769 00:41:08,170 --> 00:41:12,430 Husk, David i klassen nævnt fri syntaktiske sukker? 770 00:41:12,430 --> 00:41:17,690 Og han havde denne meget forvirrende ting af stjerne t 771 00:41:17,690 --> 00:41:22,030 plus en, hvor det ville integrere igennem, og det flytter markøren? 772 00:41:22,030 --> 00:41:29,910 Jo lettere måde at gøre dette er blot t i. 773 00:41:29,910 --> 00:41:31,090 >> Så det er bare et array. 774 00:41:31,090 --> 00:41:34,630 Den måde, som du ville have en for løkke, der løb fra nul til jeg, hvor 775 00:41:34,630 --> 00:41:36,580 i er længden af streng, kunne du bare 776 00:41:36,580 --> 00:41:39,510 skriver, at i stedet for at gøre det Hele pointer, henvises ting. 777 00:41:39,510 --> 00:41:43,510 Så disse ting er præcis tilsvarende i din computer. 778 00:41:43,510 --> 00:41:45,905 >> Du fyre sandsynligvis ikke skal vide, at, 779 00:41:45,905 --> 00:41:48,280 men det er godt at bare lidt have i ryggen dit sind. 780 00:41:48,280 --> 00:41:52,630 Bare vide, at computeren anerkender forskellige blokke af kode 781 00:41:52,630 --> 00:41:53,890 som det samme. 782 00:41:53,890 --> 00:41:57,510 Da dette er bare langt mere bruger venlige for os at præsentere det, som det er 783 00:41:57,510 --> 00:41:58,150 et array. 784 00:41:58,150 --> 00:42:00,990 Det er bare nemmere. 785 00:42:00,990 --> 00:42:02,719 >> PUBLIKUM: Så brug strlen at kunne lide, get-- 786 00:42:02,719 --> 00:42:03,385 PROFESSOR: Ja. 787 00:42:03,385 --> 00:42:03,926 PUBLIKUM: OK. 788 00:42:03,926 --> 00:42:05,940 PROFESSOR: Du kunne bruge strlen eller, hvis du 789 00:42:05,940 --> 00:42:10,420 havde ikke strlen du kan bare gøre op indtil du rammer backslash nul for begge. 790 00:42:10,420 --> 00:42:11,568 Enten ville arbejde. 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 PUBLIKUM: Så det er til dereference hver enkelt tegn, hvis vi var faktisk 794 00:42:17,996 --> 00:42:21,044 skrive denne kode, vi kunne bare gøre t parentes i 795 00:42:21,044 --> 00:42:22,460 gerne med stjernen foran det? 796 00:42:22,460 --> 00:42:27,700 >> PROFESSOR: Ja, lig lig s beslag i, og derefter holde bevæger jeg 797 00:42:27,700 --> 00:42:29,790 ned, indtil du rammer enden. 798 00:42:29,790 --> 00:42:31,286 Ja, det er hvad du ville gøre. 799 00:42:31,286 --> 00:42:33,660 Og jeg vil faktisk har en næste eksempel på, hvornår vi faktisk 800 00:42:33,660 --> 00:42:36,740 skrive strlen så du fyre vil slags af komme til at lege med det en smule. 801 00:42:36,740 --> 00:42:43,567 >> Så er alle klar på bare hukommelse, strygere, pegepinde, kvalitet adresser? 802 00:42:43,567 --> 00:42:46,650 Nogle højere koncepter niveau, som du vil sikkert behov for at vide om quizzen 803 00:42:46,650 --> 00:42:48,928 i morgen. 804 00:42:48,928 --> 00:42:49,904 >> Okay. 805 00:42:49,904 --> 00:42:50,404 God. 806 00:42:50,404 --> 00:42:54,824 807 00:42:54,824 --> 00:42:55,324 Yep. 808 00:42:55,324 --> 00:42:58,770 809 00:42:58,770 --> 00:43:04,180 OK, så en ting, som vi vil også spørge Dem, som vi gør hvert år på en quiz, er, 810 00:43:04,180 --> 00:43:08,340 antage, at du har glemt (som vi synes at glemme at gøre årligt) 811 00:43:08,340 --> 00:43:10,810 hvor header fil strlen deklareres. 812 00:43:10,810 --> 00:43:13,860 Og så vi er nødt til at omskrive det os. 813 00:43:13,860 --> 00:43:16,350 >> Her er en liste over retningslinjer at vi kan præsentere dig 814 00:43:16,350 --> 00:43:20,660 fyre, hvor du får at antage, at s strengen vil ikke være null. 815 00:43:20,660 --> 00:43:23,830 Du kan antage, at s vil være afsluttet med en omvendt skråstreg nul. 816 00:43:23,830 --> 00:43:26,670 Så du ved det er, hvad det vil ende med. 817 00:43:26,670 --> 00:43:29,500 >> Og for eksempel, at længde hej ville være fem. 818 00:43:29,500 --> 00:43:32,890 Så du kan antage, at goddag vil være fem, H-E-L-L-O. 819 00:43:32,890 --> 00:43:35,890 Du behøver ikke at antage, at backside nul regnskab for længden. 820 00:43:35,890 --> 00:43:39,720 821 00:43:39,720 --> 00:43:42,300 >> Denne sidste ting her, ikke bekymre sig om heltalsoverløb. 822 00:43:42,300 --> 00:43:45,270 Er der nogen der kan huske hvad heltalsoverløb er? 823 00:43:45,270 --> 00:43:48,041 >> PUBLIKUM: Går ud over den Længden af ​​[højttalersystemet]. 824 00:43:48,041 --> 00:43:50,740 >> PROFESSOR: Ja, kan du forklare lidt, hvad betyder det? 825 00:43:50,740 --> 00:43:55,330 >> PUBLIKUM: Så jeg tror det går tilbage til at trunkere eksempel tidligere. 826 00:43:55,330 --> 00:43:58,380 Men hvis du har lige så mange numre at gå ud over antallet af bit 827 00:43:58,380 --> 00:44:01,409 at du faktisk kan tildele den at det vil bare slags afskåret. 828 00:44:01,409 --> 00:44:04,242 PROFESSOR: Ja, så på en typisk computer, hvor mange bits har vi? 829 00:44:04,242 --> 00:44:05,306 PUBLIKUM: 32? 830 00:44:05,306 --> 00:44:06,430 PROFESSOR: Ja, 32, til højre. 831 00:44:06,430 --> 00:44:10,030 Og så det er, hvad, fire milliarder, to milliarder? 832 00:44:10,030 --> 00:44:13,579 Fire milliarder, op til fire milliarder positive heltal, ikke? 833 00:44:13,579 --> 00:44:15,370 To milliarder negativ, to milliarder positive, 834 00:44:15,370 --> 00:44:16,900 afhænger af, hvordan du ønsker at gøre det. 835 00:44:16,900 --> 00:44:21,470 >> Og så dybest set vi kan have nok heltal, der kan gå op 836 00:44:21,470 --> 00:44:25,800 til to til 31 minus 1, ikke? 837 00:44:25,800 --> 00:44:27,980 Fordi når vi ramt to til den 32., gør vi ikke 838 00:44:27,980 --> 00:44:30,040 har så meget hukommelse i vores computer. 839 00:44:30,040 --> 00:44:32,310 >> Og så, i teorien, jeg kunne komme op med en række 840 00:44:32,310 --> 00:44:34,560 det er, ligesom, to til den 46.. 841 00:44:34,560 --> 00:44:38,040 Det er et kæmpe-ass nummer, men teoretisk kunne du. 842 00:44:38,040 --> 00:44:42,730 Og så heltalsoverløb er, hvis du forsøger at skabe et heltal, der går ud over, hvad 843 00:44:42,730 --> 00:44:44,790 din computer er i stand til at lagre. 844 00:44:44,790 --> 00:44:46,590 >> Og så du fyre til dette eksempel ikke har 845 00:44:46,590 --> 00:44:51,330 at bekymre sig om os at give dig en kæmpe streng, der er to til den 32. tegn 846 00:44:51,330 --> 00:44:51,830 lang. 847 00:44:51,830 --> 00:44:54,010 Det ville være virkelig betyder. 848 00:44:54,010 --> 00:44:59,430 >> Okay, så jeg bare vil give du fyre base struktur af denne. 849 00:44:59,430 --> 00:45:02,020 Du kommer til at skabe en funktion kaldet int strlen hvor 850 00:45:02,020 --> 00:45:08,436 en aflevering ind, en char stjerne, eller snor, pointer til strengen kaldes s. 851 00:45:08,436 --> 00:45:10,820 >> Okay, alle kopier det ned. 852 00:45:10,820 --> 00:45:13,550 853 00:45:13,550 --> 00:45:14,850 Afkøle. 854 00:45:14,850 --> 00:45:17,020 Oops-- anden vej. 855 00:45:17,020 --> 00:45:21,360 >> Så dette er lidt ligesom en hårdere stykke problem, 856 00:45:21,360 --> 00:45:25,320 så jeg vil give jer måske fem til seks minutter til slags brainstorm 857 00:45:25,320 --> 00:45:27,478 og skrive denne funktion ud. 858 00:45:27,478 --> 00:45:29,710 >> PUBLIKUM: Vi har ikke tegner sig for [uhørligt], 859 00:45:29,710 --> 00:45:30,200 Vi behøver ikke at bruge heltal? 860 00:45:30,200 --> 00:45:31,241 >> PROFESSOR: Nej, det gør du ikke. 861 00:45:31,241 --> 00:48:05,847 862 00:48:05,847 --> 00:48:06,930 Jeg vil give jer et tip. 863 00:48:06,930 --> 00:48:12,325 En while-løkke kan være meget nyttigt her. 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 Her er 867 00:48:45,495 --> 00:48:45,995 slik. 868 00:48:45,995 --> 00:48:49,980 869 00:48:49,980 --> 00:48:53,410 Candy vil også være tilgængelige for quizzen, tror jeg. 870 00:48:53,410 --> 00:48:55,315 Så jer vil være alle sukkersød op i morgen. 871 00:48:55,315 --> 00:49:01,110 872 00:49:01,110 --> 00:49:02,962 Kan jeg-- du fik det. 873 00:49:02,962 --> 00:49:03,718 >> PUBLIKUM: 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 >> Måske 30 sekunder mere eller deromkring. 877 00:49:11,870 --> 00:50:02,220 878 00:50:02,220 --> 00:50:07,340 >> Okay, hvis du er ikke gjort, ingen bekymringer. 879 00:50:07,340 --> 00:50:08,810 Vi vil bevæge sig gennem det sammen. 880 00:50:08,810 --> 00:50:09,310 OK. 881 00:50:09,310 --> 00:50:13,800 Så jeg har tænkt mig at bare layoutet den grundstruktur for denne funktion her. 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 er der nogen ønsker at fortælle mig, hvad det int betyder? 885 00:50:23,460 --> 00:50:25,160 Vi er nødt til at have i denne funktion. 886 00:50:25,160 --> 00:50:26,709 >> PUBLIKUM: strlen [uhørligt]. 887 00:50:26,709 --> 00:50:27,500 PROFESSOR: Præcis. 888 00:50:27,500 --> 00:50:31,140 Så uanset hvad der sker herinde, vi nødt til at vende tilbage et heltal. 889 00:50:31,140 --> 00:50:36,367 Og som angivet i spec, vi ønsker at return-- 890 00:50:36,367 --> 00:50:37,700 Gå efter det gutter, bare holde ud. 891 00:50:37,700 --> 00:50:40,480 Det er alle gode. 892 00:50:40,480 --> 00:50:42,960 Spise det hele, så jeg ikke behøver at tage det tilbage, faktisk. 893 00:50:42,960 --> 00:50:46,022 894 00:50:46,022 --> 00:50:48,855 Int bare betyder, at du er kommer til at vende tilbage et heltal. 895 00:50:48,855 --> 00:50:55,350 896 00:50:55,350 --> 00:50:57,106 >> Hvad er det char stjerne s? 897 00:50:57,106 --> 00:50:58,640 Hvad betyder det? 898 00:50:58,640 --> 00:51:00,879 >> PUBLIKUM: Ligesom, hvad der bliver input i. 899 00:51:00,879 --> 00:51:01,670 PROFESSOR: Præcis. 900 00:51:01,670 --> 00:51:04,142 Og hvad er næsten den samme som char stjerne? 901 00:51:04,142 --> 00:51:04,850 PUBLIKUM: String? 902 00:51:04,850 --> 00:51:05,641 PROFESSOR: Præcis. 903 00:51:05,641 --> 00:51:09,080 Så alt vi gør er at give dette en pointer til en streng. 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 Afkøle. 907 00:51:13,360 --> 00:51:16,650 >> Også, glem ikke, hvis vi glemmer at give dig disse beslag, 908 00:51:16,650 --> 00:51:18,330 glem ikke at skrive dem selv. 909 00:51:18,330 --> 00:51:20,720 Fordi teoretisk, din kode er forkert, hvis du glemmer at skrive dem. 910 00:51:20,720 --> 00:51:21,803 Bare altid være opmærksom. 911 00:51:21,803 --> 00:51:23,750 Ligesom, små ting at du ikke mærke til 912 00:51:23,750 --> 00:51:26,917 når du programmerer på din bærbare computer, fordi din bærbare computer gør det for dig? 913 00:51:26,917 --> 00:51:28,624 Glem ikke, når du skriver i hånden. 914 00:51:28,624 --> 00:51:29,170 Ja? 915 00:51:29,170 --> 00:51:30,954 >> PUBLIKUM: Men hvordan forkert? 916 00:51:30,954 --> 00:51:33,190 Ligesom, får vi hele problemet forkert? 917 00:51:33,190 --> 00:51:34,190 >> PROFESSOR: Nej, nej. 918 00:51:34,190 --> 00:51:34,860 Må ikke bekymre dig. 919 00:51:34,860 --> 00:51:39,270 Det er faktisk teoretisk muligt for dig at få fuld point på et spørgsmål 920 00:51:39,270 --> 00:51:41,980 selv om din kode vil aldrig kørt i det virkelige liv. 921 00:51:41,980 --> 00:51:46,052 Jeg foreslår, at du ikke forsøger at gøre det ske. 922 00:51:46,052 --> 00:51:48,260 For eksempel, som hvis alt det er her er rigtigt, 923 00:51:48,260 --> 00:51:51,850 men du glemmer et kolon eller en konsol, din kode rent faktisk vil ikke køre. 924 00:51:51,850 --> 00:51:53,740 Men vi kan være barmhjertig. 925 00:51:53,740 --> 00:51:54,394 >> Ja? 926 00:51:54,394 --> 00:51:56,050 >> PUBLIKUM: Har du nødt til at kommentere på vores håndskrift? 927 00:51:56,050 --> 00:51:57,758 >> PROFESSOR: Nej, nej, nej bekymringer om der. 928 00:51:57,758 --> 00:51:58,440 Ingen kommentere. 929 00:51:58,440 --> 00:51:59,400 Stil skal være god. 930 00:51:59,400 --> 00:52:01,470 Ligesom, ikke smush alt på én linje. 931 00:52:01,470 --> 00:52:04,580 Vi vil ikke være glad med dig, hvis du gør det. 932 00:52:04,580 --> 00:52:07,250 >> Er der nogen ønsker at give mig den første linje? 933 00:52:07,250 --> 00:52:08,633 Tip, det er meget nemt. 934 00:52:08,633 --> 00:52:09,320 >> Ja? 935 00:52:09,320 --> 00:52:11,920 >> PUBLIKUM: Int, n er lig med nul. 936 00:52:11,920 --> 00:52:13,734 Netop oprettet tæller. 937 00:52:13,734 --> 00:52:15,900 PROFESSOR: Så vi ønsker nogle slags en tæller, ikke? 938 00:52:15,900 --> 00:52:19,780 Jeg bare for at nævne det "tæller" af hensyn til læsbarheden. 939 00:52:19,780 --> 00:52:21,265 Hvad ønsker vi at sætte det lig med? 940 00:52:21,265 --> 00:52:21,890 >> PUBLIKUM: Zero. 941 00:52:21,890 --> 00:52:23,840 PROFESSOR: Yep. 942 00:52:23,840 --> 00:52:24,340 Semikolon. 943 00:52:24,340 --> 00:52:26,250 Det er også meget mærkelige tegning semikoloner. 944 00:52:26,250 --> 00:52:28,870 Bare øve at gøre det. 945 00:52:28,870 --> 00:52:31,990 >> Så vi vil gerne først have en tæller af typen int. 946 00:52:31,990 --> 00:52:35,360 Fordi vi ønsker at tælle op, hvordan mange tegn eller bogstaver er 947 00:52:35,360 --> 00:52:36,780 i denne streng, ikke? 948 00:52:36,780 --> 00:52:38,330 Meget let første skridt. 949 00:52:38,330 --> 00:52:42,140 >> OK, måske en smule mere kompliceret nu, hvordan skal vi gøre det? 950 00:52:42,140 --> 00:52:45,400 Er der nogen ønsker at give mig linje kode 951 00:52:45,400 --> 00:52:48,450 der kan være i stand til at hjælpe løkke gennem hvad det er? 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 >> PUBLIKUM: OK, så mens punkt asterisker, den yeah, stjernen i s, 955 00:53:06,832 --> 00:53:09,465 er ikke lig med nul, så gør noget? 956 00:53:09,465 --> 00:53:11,090 PROFESSOR: Det er rigtig, rigtig tæt på. 957 00:53:11,090 --> 00:53:11,835 Virkelig tæt. 958 00:53:11,835 --> 00:53:13,710 Så jeg har tænkt mig at tage fat to ting med det. 959 00:53:13,710 --> 00:53:18,240 Først og fremmest, det er ikke ligefrem nul. 960 00:53:18,240 --> 00:53:20,110 Hvad er det? 961 00:53:20,110 --> 00:53:22,550 Det er null terminator, som er backslash nul. 962 00:53:22,550 --> 00:53:24,960 Så de er forskellige i forhold til, hvordan de er gemt. 963 00:53:24,960 --> 00:53:26,270 Så du er virkelig tæt. 964 00:53:26,270 --> 00:53:30,330 >> Og for det andet, ønsker vi ikke bare flytte markøren. 965 00:53:30,330 --> 00:53:32,320 Vi vil faktisk adgang til værdierne, ikke? 966 00:53:32,320 --> 00:53:34,050 Og så hvordan gør vi det? 967 00:53:34,050 --> 00:53:34,550 Meget let. 968 00:53:34,550 --> 00:53:36,841 Tænker ikke pointere, tænker ikke minder. 969 00:53:36,841 --> 00:53:38,525 Gå tilbage til uge to af dette kursus. 970 00:53:38,525 --> 00:53:39,555 >> PUBLIKUM: [uhørligt]. 971 00:53:39,555 --> 00:53:40,680 PROFESSOR: Som i, husker du? 972 00:53:40,680 --> 00:53:41,400 Hvad er strenge? 973 00:53:41,400 --> 00:53:42,650 Hvordan bliver de gemt i hukommelsen? 974 00:53:42,650 --> 00:53:43,300 >> PUBLIKUM: De er rejst. 975 00:53:43,300 --> 00:53:43,810 >> PROFESSOR: De er rejst. 976 00:53:43,810 --> 00:53:45,550 Så hvordan gør vi adgang hver karakter inde? 977 00:53:45,550 --> 00:53:46,466 >> PUBLIKUM: [uhørligt]. 978 00:53:46,466 --> 00:53:47,530 PROFESSOR: Præcis. 979 00:53:47,530 --> 00:53:53,195 Så while-- hvad der foregår inde her? 980 00:53:53,195 --> 00:53:54,940 S for - 981 00:53:54,940 --> 00:53:55,920 >> PUBLIKUM: I. 982 00:53:55,920 --> 00:53:58,216 >> PROFESSOR: Åh, er jeg ikke eksisterer, gør det? 983 00:53:58,216 --> 00:53:59,620 >> PUBLIKUM: Åh, tæller? 984 00:53:59,620 --> 00:54:01,640 >> PROFESSOR: Vi kan bare bruge optælling, kan vi ikke? 985 00:54:01,640 --> 00:54:03,050 >> PUBLIKUM: Undskyld, jeg kaldte det i. 986 00:54:03,050 --> 00:54:04,341 >> PROFESSOR: Ja, det er alle gode. 987 00:54:04,341 --> 00:54:06,710 988 00:54:06,710 --> 00:54:10,760 Vi har en variabel op her, det er allerede blevet erklæret som vores tæller. 989 00:54:10,760 --> 00:54:13,650 Så hvorfor vi ikke bare bruge det at bevæge sig gennem while-løkke? 990 00:54:13,650 --> 00:54:15,230 Giver det mening? 991 00:54:15,230 --> 00:54:20,864 >> Så mens s af count-- der nogen ønsker at give mig, hvad der sker efter her? 992 00:54:20,864 --> 00:54:22,030 PUBLIKUM: Det gør ikke lige. 993 00:54:22,030 --> 00:54:23,405 PROFESSOR: ikke lig, ikke? 994 00:54:23,405 --> 00:54:26,200 Det er det bang lig, udråbstegn lig, 995 00:54:26,200 --> 00:54:28,500 uanset hvad du fyre ønsker at kalder det ikke equal-- 996 00:54:28,500 --> 00:54:29,496 >> PUBLIKUM: [uhørligt]. 997 00:54:29,496 --> 00:54:30,990 >> PROFESSOR: Ja. 998 00:54:30,990 --> 00:54:37,110 Husk ét tilbud er for en char, dobbelte anførselstegn er for en streng. 999 00:54:37,110 --> 00:54:38,630 Vær forsigtig, når du bruger dem. 1000 00:54:38,630 --> 00:54:42,430 Så når vi kigger gennem arrayet, det sidste tegn, 1001 00:54:42,430 --> 00:54:46,420 vi ved, vi ikke ønsker at det er backslash nul. 1002 00:54:46,420 --> 00:54:47,340 >> Så mens. 1003 00:54:47,340 --> 00:54:48,840 Vi er ikke ved afslutningen af ​​strengen. 1004 00:54:48,840 --> 00:54:52,335 Hvad ønsker vi at gøre inde? 1005 00:54:52,335 --> 00:54:55,269 >> PUBLIKUM: Vi ønsker at føje til tæller så det tæller plus plus? 1006 00:54:55,269 --> 00:54:56,060 PROFESSOR: Præcis. 1007 00:54:56,060 --> 00:55:03,064 Så her vil vi gøre tælle, tælle plus plus. 1008 00:55:03,064 --> 00:55:03,980 Mangler en mere linje. 1009 00:55:03,980 --> 00:55:05,090 Vi er der næsten. 1010 00:55:05,090 --> 00:55:07,398 Hvad skal vi glemmer at gøre? 1011 00:55:07,398 --> 00:55:08,770 >> PUBLIKUM: Vender tilbage nul? 1012 00:55:08,770 --> 00:55:10,820 >> PROFESSOR: Du ønsker at returnere nul? 1013 00:55:10,820 --> 00:55:12,962 >> PUBLIKUM: Nej, vender tilbage til strlen. 1014 00:55:12,962 --> 00:55:13,511 Vente. 1015 00:55:13,511 --> 00:55:14,760 PROFESSOR: Hvilket er gemt i? 1016 00:55:14,760 --> 00:55:15,090 PUBLIKUM: Count. 1017 00:55:15,090 --> 00:55:15,589 Tælle. 1018 00:55:15,589 --> 00:55:17,150 PROFESSOR: Præcis. 1019 00:55:17,150 --> 00:55:20,760 Så her vil vi vende tilbage tæller. 1020 00:55:20,760 --> 00:55:23,450 1021 00:55:23,450 --> 00:55:25,380 >> Fordi hvad vi er gør her ultimately-- 1022 00:55:25,380 --> 00:55:29,780 vi har en tæller variabel, der er kommer til at inkrementere gennem vores streng. 1023 00:55:29,780 --> 00:55:33,050 Vi kommer til at holde ud, holde gå, rundt og rundt i denne sløjfe. 1024 00:55:33,050 --> 00:55:37,700 Og mens vi er ikke på slutningen af ​​denne streng, som er nul terminator. 1025 00:55:37,700 --> 00:55:40,410 >> Og hver gang vi går igennem det, vi tilføjer til vores tæller. 1026 00:55:40,410 --> 00:55:42,640 Og vi går videre sammen i dette array. 1027 00:55:42,640 --> 00:55:44,880 Og i slutningen, når vi ramte null terminator, 1028 00:55:44,880 --> 00:55:48,469 vi ved, åh, vi kan bryde, returnere optællingen. 1029 00:55:48,469 --> 00:55:49,260 Vi har vores strlen. 1030 00:55:49,260 --> 00:55:52,280 1031 00:55:52,280 --> 00:55:56,400 >> Er alle får, hvordan dette blev gennemført? 1032 00:55:56,400 --> 00:55:58,830 Mens loops-- jeg ved, at vi ikke har gjort for meget med dem, 1033 00:55:58,830 --> 00:56:01,240 men de er som regel meget, meget nyttigt, hvis du 1034 00:56:01,240 --> 00:56:05,390 ved ikke, hvad du stopper tilstand nødvendigvis må være. 1035 00:56:05,390 --> 00:56:06,220 >> Spørgsmål? 1036 00:56:06,220 --> 00:56:10,080 >> PUBLIKUM: Kan vi skriver null på mens tilstand? 1037 00:56:10,080 --> 00:56:10,940 >> PROFESSOR: Mens? 1038 00:56:10,940 --> 00:56:15,304 Ja, så i dette problem, jeg havde dig fyre antage, at s ikke vil være null. 1039 00:56:15,304 --> 00:56:17,220 Fordi husk, teoretisk, hvis jeg gav dig 1040 00:56:17,220 --> 00:56:21,180 en pointer, der var for stor hukommelse, det ville give dig den null, ikke? 1041 00:56:21,180 --> 00:56:23,770 Det er, hvad operativsystemet Systemet ville gøre. 1042 00:56:23,770 --> 00:56:26,960 >> Så hvis jeg ikke fortælle dig at påtage s ville være nul, er du nødt til at tjekke. 1043 00:56:26,960 --> 00:56:32,050 Så heroppe, ville du gøre, hvis s lig er lig nul, vende tilbage en. 1044 00:56:32,050 --> 00:56:33,028 Noget i den stil. 1045 00:56:33,028 --> 00:56:34,153 PUBLIKUM: [uhørligt] nul. 1046 00:56:34,153 --> 00:56:37,287 1047 00:56:37,287 --> 00:56:39,370 PROFESSOR: OK, jeg vil fortælle dig, hvorfor vi ikke kan gøre det. 1048 00:56:39,370 --> 00:56:43,357 Fordi husker i hukommelsen, højre, her. 1049 00:56:43,357 --> 00:56:43,940 Vi vil gå her. 1050 00:56:43,940 --> 00:56:49,940 1051 00:56:49,940 --> 00:56:54,090 >> Du har fået gigantiske blokke hukommelse alle med gitre 1052 00:56:54,090 --> 00:56:56,680 der lagrer forskellige værdier, ikke? 1053 00:56:56,680 --> 00:57:00,110 Og så alle en streng is-- for eksempel, hvis vi skal input hej, 1054 00:57:00,110 --> 00:57:05,490 det ville være H-E-L-L-O backslash nul, højre? 1055 00:57:05,490 --> 00:57:09,570 Og så hvem ved, ligesom tilfældig ting, der er i her efter det. 1056 00:57:09,570 --> 00:57:11,220 >> Vi ved faktisk ikke, hvad der er der. 1057 00:57:11,220 --> 00:57:13,350 Og så hvis du skulle gøre i stedet for omvendt skråstreg nul, 1058 00:57:13,350 --> 00:57:15,590 null, kan det ikke være null. 1059 00:57:15,590 --> 00:57:17,680 Fordi det bare kan betyde nogle tilfældige andre ting 1060 00:57:17,680 --> 00:57:19,270 som ikke hører hjemme i din streng. 1061 00:57:19,270 --> 00:57:23,219 Og så den måde, at vi altid ved, at en streng ender er med en omvendt skråstreg nul. 1062 00:57:23,219 --> 00:57:25,760 Og så der er altid, hvordan vi check for at se enden af ​​en snor. 1063 00:57:25,760 --> 00:57:30,820 >> Null, alt det betyder er, hvis du har en ikke-eksisterende pointer, først og fremmest, 1064 00:57:30,820 --> 00:57:36,160 eller hvis din hukommelse er lige så stor, at du kan ikke returnere det, så det ville være nul. 1065 00:57:36,160 --> 00:57:40,150 Så vær meget forsigtig, når differentiere forskellen mellem null 1066 00:57:40,150 --> 00:57:42,130 og backslash nul. 1067 00:57:42,130 --> 00:57:43,670 Ja. 1068 00:57:43,670 --> 00:57:46,886 >> Alle OK med dette? 1069 00:57:46,886 --> 00:57:48,150 OK. 1070 00:57:48,150 --> 00:57:50,440 >> Så havde jeg jer skrive strlen. 1071 00:57:50,440 --> 00:57:53,790 Indpasses kunne vi også bede dig skrive ud A til I, så husk at "Atwoa" 1072 00:57:53,790 --> 00:57:55,400 eller hvad du fyre vil kalde det? 1073 00:57:55,400 --> 00:57:58,010 Denne funktion i Vigenere og Cæsar, at 1074 00:57:58,010 --> 00:58:00,900 konverterer en ASCII værdi til et heltal? 1075 00:58:00,900 --> 00:58:04,360 Det også er kommet op på tidligere quizzer funktioner, vi har bedt dig om at skrive. 1076 00:58:04,360 --> 00:58:08,280 >> Stort set enhver funktion at du har brugt, og er 1077 00:58:08,280 --> 00:58:11,660 meget let at skrive dig selv, sensorer kan lide, er lavere, 1078 00:58:11,660 --> 00:58:14,620 er øverste, for at sænke, til øverste. 1079 00:58:14,620 --> 00:58:17,964 Funktioner, der ville konvertere en snor fra med små bogstaver til store bogstaver. 1080 00:58:17,964 --> 00:58:19,380 Vi ved alle, hvordan man gør det, ikke? 1081 00:58:19,380 --> 00:58:21,100 Det er temmelig let. 1082 00:58:21,100 --> 00:58:24,770 Blot ønsker at sikre, at du can-- det er den samme tankegang. 1083 00:58:24,770 --> 00:58:26,940 Du skal bare gentage gennem og du vende tingene. 1084 00:58:26,940 --> 00:58:30,190 Du enten tælle eller når du slå tingene anderledes. 1085 00:58:30,190 --> 00:58:32,280 >> Jeg ville suggest-- I ved ikke om vi skal 1086 00:58:32,280 --> 00:58:39,080 at bede dig om at huske, hvad kapital A eller kapital Z, eller små bogstaver A eller små bogstaver 1087 00:58:39,080 --> 00:58:42,640 z er i Ascii, men jeg vil foreslå måske skrive det ned i tilfælde 1088 00:58:42,640 --> 00:58:44,124 Det gør vi. 1089 00:58:44,124 --> 00:58:45,540 Bare så du fyre har en reference. 1090 00:58:45,540 --> 00:58:47,180 Ligesom store bogstaver A er, hvad, 197? 1091 00:58:47,180 --> 00:58:51,320 Og så små bogstaver er ligesom 50 noget. 1092 00:58:51,320 --> 00:58:52,492 65, ja, der du går. 1093 00:58:52,492 --> 00:58:54,950 Så bare temmelig meget kender Forskellen mellem dem er 32. 1094 00:58:54,950 --> 00:58:57,670 Det er temmelig vigtigt. 1095 00:58:57,670 --> 00:58:58,170 Ja. 1096 00:58:58,170 --> 00:59:01,445 Er jeg god på dette? 1097 00:59:01,445 --> 00:59:01,945 OK. 1098 00:59:01,945 --> 00:59:03,109 >> PUBLIKUM: Vi kunne teoretisk skrive nogle 1099 00:59:03,109 --> 00:59:04,410 af disse ned samt på vores little-- 1100 00:59:04,410 --> 00:59:07,035 >> PROFESSOR: Du teoretisk kunne bare kopiere funktionen ned. 1101 00:59:07,035 --> 00:59:08,482 Det er sandt. 1102 00:59:08,482 --> 00:59:11,080 >> PUBLIKUM: Ikke [uhørligt]. 1103 00:59:11,080 --> 00:59:12,720 >> Professor: Du fyre har et ark. 1104 00:59:12,720 --> 00:59:14,194 Du fyre har en note ark. 1105 00:59:14,194 --> 00:59:14,860 Du kan skrive det. 1106 00:59:14,860 --> 00:59:15,490 Du kan skrive det. 1107 00:59:15,490 --> 00:59:17,031 Du kan gøre hvad du vil med det. 1108 00:59:17,031 --> 00:59:18,530 Ja. 1109 00:59:18,530 --> 00:59:21,406 Så teoretisk, hvis du vil, gå til. 1110 00:59:21,406 --> 00:59:23,338 >> PUBLIKUM: [uhørligt] men vi kan ikke rigtig 1111 00:59:23,338 --> 00:59:25,994 nødvendigvis behøver at huske værdien, kan vi bare 1112 00:59:25,994 --> 00:59:28,914 bruge til øverste eller lavere funktion, ikke? 1113 00:59:28,914 --> 00:59:29,580 PROFESSOR: Ja. 1114 00:59:29,580 --> 00:59:32,740 Men hvis vi gav dig et spørgsmål der siger skriv til øverste, 1115 00:59:32,740 --> 00:59:34,350 så ville du nødt til at skrive det. 1116 00:59:34,350 --> 00:59:38,150 Så du fyre kan antage, at du fyre har adgang til alle funktioner, 1117 00:59:38,150 --> 00:59:41,523 men hvis du vil bruge til at øvre eller til lavere, hvad vil du også nødt til at gøre? 1118 00:59:41,523 --> 00:59:43,840 >> PUBLIKUM: [uhørligt] bruge CS50 [uhørligt] 1119 00:59:43,840 --> 00:59:44,840 >> PROFESSOR: Er det CS50.h? 1120 00:59:44,840 --> 00:59:47,320 1121 00:59:47,320 --> 00:59:48,310 Vær forsigtig der. 1122 00:59:48,310 --> 00:59:50,640 >> Så til øverste, for at sænke, er øverste, er lavere, 1123 00:59:50,640 --> 00:59:52,990 funktioner, der involverer strenghåndtering er 1124 00:59:52,990 --> 00:59:55,490 alle inden for enten den Ascii eller inden for matematik biblioteket 1125 00:59:55,490 --> 00:59:57,350 eller inden strengen biblioteket. 1126 00:59:57,350 --> 01:00:00,290 Så hvis du fyre bruger dem funktioner, være omhyggelig med at huske 1127 01:00:00,290 --> 01:00:01,451 at medtage denne header. 1128 01:00:01,451 --> 01:00:03,950 Så måske også noget, man vil medtage i dit ark, 1129 01:00:03,950 --> 01:00:04,892 hvad er header? 1130 01:00:04,892 --> 01:00:06,600 Hvad er de biblioteker du har brugt? 1131 01:00:06,600 --> 01:00:08,550 Hvilke funktioner er inden for disse biblioteker? 1132 01:00:08,550 --> 01:00:09,230 Det er vigtigt. 1133 01:00:09,230 --> 01:00:10,420 >> Ja? 1134 01:00:10,420 --> 01:00:12,570 >> PUBLIKUM: Kunne vi bare cop ud og gøre hashtag 1135 01:00:12,570 --> 01:00:14,955 gennem absolut hvert bogstav, vi nogensinde har 1136 01:00:14,955 --> 01:00:17,340 set ligesom på alle spørgsmålene? 1137 01:00:17,340 --> 01:00:18,320 >> PROFESSOR: Du kunne. 1138 01:00:18,320 --> 01:00:20,361 Jeg ved ikke, hvor glad vi vil være at lønklasse 1139 01:00:20,361 --> 01:00:25,090 at quizzen når hvert stykke kode er dobbelt så længe det skal være. 1140 01:00:25,090 --> 01:00:27,200 Jeg ved det ikke, vi måske tage et punkt for stil. 1141 01:00:27,200 --> 01:00:28,790 Men teoretisk din kode ville være rigtigt. 1142 01:00:28,790 --> 01:00:30,915 Du fyre kunne cop ud og bare omfatter alt. 1143 01:00:30,915 --> 01:00:32,044 Det er også fint, ja. 1144 01:00:32,044 --> 01:00:32,960 PUBLIKUM: [uhørligt]. 1145 01:00:32,960 --> 01:00:33,270 PROFESSOR: Ja. 1146 01:00:33,270 --> 01:00:34,900 Jeg vil foreslå ikke at gøre det selv. 1147 01:00:34,900 --> 01:00:35,505 Ja. 1148 01:00:35,505 --> 01:00:36,130 PUBLIKUM: Cool. 1149 01:00:36,130 --> 01:00:36,620 PROFESSOR: Godt spørgsmål. 1150 01:00:36,620 --> 01:00:37,480 PUBLIKUM: Så det værst tænkelige scenarie. 1151 01:00:37,480 --> 01:00:38,563 PROFESSOR: Den værste tilfælde. 1152 01:00:38,563 --> 01:00:40,350 Hvis du helt glemmer, du kunne gøre 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 >> Jep, koden er lige der. 1156 01:00:45,400 --> 01:00:49,176 Jeg brugte n i stedet for tæller, men, du vide, hvad flyder din båd. 1157 01:00:49,176 --> 01:00:51,092 PUBLIKUM: Vent, så vi ville ikke have at hashtag 1158 01:00:51,092 --> 01:00:53,460 omfatter fordi vi er starter ved int? 1159 01:00:53,460 --> 01:00:56,150 1160 01:00:56,150 --> 01:00:59,924 >> PROFESSOR: Ja, jeg bare ud fra, at Vi blev bedt om at skrive funktionen. 1161 01:00:59,924 --> 01:01:02,340 Hvis du ønskede at være sikker, du kunne sandsynligvis sætte det der. 1162 01:01:02,340 --> 01:01:05,650 Men jeg bare ikke gider, ja. 1163 01:01:05,650 --> 01:01:09,919 >> Jeg ved ikke engang, om du brug for bibliotek for dette. 1164 01:01:09,919 --> 01:01:12,710 Fordi du er ikke rigtig udskrivning ud af noget eller noget, ikke? 1165 01:01:12,710 --> 01:01:16,500 1166 01:01:16,500 --> 01:01:19,568 Ja, jeg ved ikke, om du har brug for et bibliotek. 1167 01:01:19,568 --> 01:01:22,400 >> OK. 1168 01:01:22,400 --> 01:01:26,020 Dette er også en smule mere sammen linjerne i hukommelsen manipulation. 1169 01:01:26,020 --> 01:01:27,400 Denne form for lidt tricky. 1170 01:01:27,400 --> 01:01:28,960 Tænk over dette. 1171 01:01:28,960 --> 01:01:30,580 Du har en funktion kaldet funk. 1172 01:01:30,580 --> 01:01:33,570 Jeg kunne have navngivet det uanset hvad, men jeg vælger at kalde det funk. 1173 01:01:33,570 --> 01:01:36,000 Jeg har det over min vigtigste. 1174 01:01:36,000 --> 01:01:39,790 Husk, du vil have en funktion efter din vigtigste, 1175 01:01:39,790 --> 01:01:42,370 du ønsker at sikre, at du omfatter prototypen på toppen. 1176 01:01:42,370 --> 01:01:45,750 >> Men i dette tilfælde var det så kort at jeg følte, at jeg kunne bare 1177 01:01:45,750 --> 01:01:47,260 omfatter det oven på vigtigste. 1178 01:01:47,260 --> 01:01:51,170 Jeg behøvede ikke at have prototypen, fordi det er allerede skrevet ovenfor. 1179 01:01:51,170 --> 01:01:55,430 Så alt jeg gør i min vigtigste funktion skaber heltal x er lig 10. 1180 01:01:55,430 --> 01:02:00,490 Jeg ringer min funk-funktion, og derefter udskrive op noget. 1181 01:02:00,490 --> 01:02:02,840 >> Og så er der faktisk hvad funk gør. 1182 01:02:02,840 --> 01:02:04,340 Du fyre ønsker at tænke igennem dette. 1183 01:02:04,340 --> 01:02:05,423 Fordi det er lidt tricky. 1184 01:02:05,423 --> 01:02:07,220 Det er meget, meget vanskeligt, faktisk. 1185 01:02:07,220 --> 01:02:09,549 Tænk igennem, hvad dette program ville være udlæsning. 1186 01:02:09,549 --> 01:02:10,840 Jeg vil give jer to minutter. 1187 01:02:10,840 --> 01:03:36,660 1188 01:03:36,660 --> 01:03:37,891 >> Gode ​​diskussioner? 1189 01:03:37,891 --> 01:03:38,853 >> Publikum: Ja. 1190 01:03:38,853 --> 01:03:39,815 >> PROFESSOR: Ja. 1191 01:03:39,815 --> 01:03:42,220 Okay, så dette er vanskelig for en grund. 1192 01:03:42,220 --> 01:03:44,845 Og det er derfor, jeg ønskede at bringe dette til alles opmærksomhed. 1193 01:03:44,845 --> 01:03:47,870 1194 01:03:47,870 --> 01:03:51,147 Er der nogen ønsker at give mig et forslag, et forsøg? 1195 01:03:51,147 --> 01:03:52,230 Hvad ville det udskrive? 1196 01:03:52,230 --> 01:03:53,930 Helt fint, hvis du tager fejl. 1197 01:03:53,930 --> 01:03:55,619 Ja? 1198 01:03:55,619 --> 01:03:59,483 >> PUBLIKUM: Jeg synes det er 100 og derefter 10 på to separate linjer. 1199 01:03:59,483 --> 01:04:00,940 >> PROFESSOR: Og en 10? 1200 01:04:00,940 --> 01:04:03,154 Er der nogen der har andre gæt? 1201 01:04:03,154 --> 01:04:04,150 Ja? 1202 01:04:04,150 --> 01:04:09,040 >> PUBLIKUM: Måske kun 10, fordi funk ikke returnere noget? 1203 01:04:09,040 --> 01:04:11,610 >> PROFESSOR: OK, så vi har gæt nummer et 1204 01:04:11,610 --> 01:04:14,990 er, at gætte nummer to er bare at udskrive 10. 1205 01:04:14,990 --> 01:04:17,623 Er der nogen der har andre gæt? 1206 01:04:17,623 --> 01:04:19,654 OK. 1207 01:04:19,654 --> 01:04:21,070 Så lad os gå gennem dette, ikke? 1208 01:04:21,070 --> 01:04:23,903 Når du får et stykke kode, ikke bare se på det og være ligesom, 1209 01:04:23,903 --> 01:04:25,060 ah, der er så mange ting! 1210 01:04:25,060 --> 01:04:26,460 Jeg er så forvirret! 1211 01:04:26,460 --> 01:04:28,220 Ligesom, berolige dig selv ned. 1212 01:04:28,220 --> 01:04:31,602 Bare vide, at du bare kunne se gennem koden linje for linje. 1213 01:04:31,602 --> 01:04:32,310 Det er alt det er. 1214 01:04:32,310 --> 01:04:33,840 Det er som at læse en bog. 1215 01:04:33,840 --> 01:04:38,000 >> Så med enhver funktion, vi starter altid ved main. 1216 01:04:38,000 --> 01:04:40,860 Så vi kommer til at starter ved int main tomrum, 1217 01:04:40,860 --> 01:04:43,010 selv programmets allerede kørt ned, ikke? 1218 01:04:43,010 --> 01:04:45,070 Start ved i main tomrum. 1219 01:04:45,070 --> 01:04:48,030 Int x er lig med 10. 1220 01:04:48,030 --> 01:04:50,400 >> Så jeg har tænkt mig at slette dette. 1221 01:04:50,400 --> 01:04:55,179 1222 01:04:55,179 --> 01:04:58,470 Jeg har tænkt mig at tegne hukommelsen lige så du fyre kan slags se, hvad der sker. 1223 01:04:58,470 --> 01:05:02,190 >> Husk hernede har vi vores stack? 1224 01:05:02,190 --> 01:05:05,810 Heroppe har vi vores dynge et sted heroppe. 1225 01:05:05,810 --> 01:05:07,470 Stak vokser op, ikke? 1226 01:05:07,470 --> 01:05:10,150 Og inden for stakken, har du lysnettet funktion samt 1227 01:05:10,150 --> 01:05:12,230 alle mains lokale variable. 1228 01:05:12,230 --> 01:05:14,310 >> Så her, int x svare til 10. 1229 01:05:14,310 --> 01:05:17,670 Inden for vores vigtigste funktion er vi at skabe en variabel kaldet x. 1230 01:05:17,670 --> 01:05:20,590 Vi indstilling at lige til 10. 1231 01:05:20,590 --> 01:05:24,200 Her har du nogle x, og du er indstilling, at lige til 10, til højre, 1232 01:05:24,200 --> 01:05:25,400 inden vigtigste. 1233 01:05:25,400 --> 01:05:27,430 Alle godt? 1234 01:05:27,430 --> 01:05:28,070 >> Fungere. 1235 01:05:28,070 --> 01:05:30,330 Så nu, inden vores vigtigste funktion, vi kalder 1236 01:05:30,330 --> 01:05:31,810 den funktion, vi har skrevet ovenfor. 1237 01:05:31,810 --> 01:05:34,550 Så vi nu indtaste den anden funktion. 1238 01:05:34,550 --> 01:05:40,120 Vi kommer til at oprette en anden variabel int x er lig med 100. 1239 01:05:40,120 --> 01:05:42,410 Hvad sker der her på stakken? 1240 01:05:42,410 --> 01:05:46,980 Hvad sker der, når du kalder en funktion, der skaber nye variabler? 1241 01:05:46,980 --> 01:05:50,038 Hvad sker der her på stakken? 1242 01:05:50,038 --> 01:05:52,134 >> PUBLIKUM: [uhørligt] bunker på toppen? 1243 01:05:52,134 --> 01:05:52,800 PROFESSOR: Ja. 1244 01:05:52,800 --> 01:05:54,050 Så det faktisk skaber en kopi. 1245 01:05:54,050 --> 01:05:56,560 1246 01:05:56,560 --> 01:05:57,740 Og den slags bunker på toppen. 1247 01:05:57,740 --> 01:06:00,700 Tænk på den stack-- en stak af bøger, en stak af noget. 1248 01:06:00,700 --> 01:06:06,520 Bunker på toppen, først i sidste ud, sidst ind, først ud. 1249 01:06:06,520 --> 01:06:08,471 >> Så det kommer til at skabe en x her. 1250 01:06:08,471 --> 01:06:12,080 1251 01:06:12,080 --> 01:06:14,450 >> Det kommer til at have alle funcs variabler. 1252 01:06:14,450 --> 01:06:14,950 Stor. 1253 01:06:14,950 --> 01:06:20,980 Så nu har vi to forskellige x'er at repræsenterer to meget forskellige ting. 1254 01:06:20,980 --> 01:06:24,470 Så vi kommer til at udskrive ud heltal af x. 1255 01:06:24,470 --> 01:06:26,430 Så lad os udskrive 100, ikke? 1256 01:06:26,430 --> 01:06:29,389 Fordi her er det 100. 1257 01:06:29,389 --> 01:06:31,680 Så det er det første, at det kommer til at udskrive. 1258 01:06:31,680 --> 01:06:35,710 Da denne funktion returnerer ingenting, nu, at funktion, den linie i main 1259 01:06:35,710 --> 01:06:37,070 gøres. 1260 01:06:37,070 --> 01:06:39,160 Alle godt med mig indtil videre? 1261 01:06:39,160 --> 01:06:43,034 >> Så er vi nu gennem to ud af tre linjer af vores vigtigste funktion. 1262 01:06:43,034 --> 01:06:44,450 Nu skal vi til den tredje linje. 1263 01:06:44,450 --> 01:06:46,350 Vi kommer til at printf. 1264 01:06:46,350 --> 01:06:48,222 Hvad er det x indenfor main? 1265 01:06:48,222 --> 01:06:49,263 Hvad betyder det repræsenterer? 1266 01:06:49,263 --> 01:06:52,720 1267 01:06:52,720 --> 01:06:54,280 >> Hvilken værdi er x nu? 1268 01:06:54,280 --> 01:06:55,220 >> PUBLIKUM: 100. 1269 01:06:55,220 --> 01:06:56,799 >> PROFESSOR: Det er 100? 1270 01:06:56,799 --> 01:06:57,590 PUBLIKUM: Stadig 10. 1271 01:06:57,590 --> 01:06:58,878 PROFESSOR: Stadig 10. 1272 01:06:58,878 --> 01:07:00,870 Ja. 1273 01:07:00,870 --> 01:07:06,810 Fordi husk, inden vores funk, x er lig med 100. 1274 01:07:06,810 --> 01:07:09,690 Men hvis vi vende tilbage til vores vigtigste funktion, 1275 01:07:09,690 --> 01:07:12,440 at variablen er lagret i en andet sted på vores stack. 1276 01:07:12,440 --> 01:07:16,250 >> Så nu er vi nødt til at gå tilbage til vigtigste stak, lysnettet lokale variable. 1277 01:07:16,250 --> 01:07:18,460 Og her x er lig med 10. 1278 01:07:18,460 --> 01:07:20,300 Og så vi kommer til at udskrive 10. 1279 01:07:20,300 --> 01:07:22,530 >> Så hun var fuldstændig ret. 1280 01:07:22,530 --> 01:07:25,053 Vi kommer til at have den produktion på 100 og 10. 1281 01:07:25,053 --> 01:07:25,553 Ja? 1282 01:07:25,553 --> 01:07:28,700 PUBLIKUM: Når du malloc, er det bunke eller stak, der er [uhørligt]? 1283 01:07:28,700 --> 01:07:31,950 PROFESSOR: Når du malloc, du tager hukommelse fra den bunke 1284 01:07:31,950 --> 01:07:32,830 og tildele det. 1285 01:07:32,830 --> 01:07:34,950 Så du ikke behøver at rode med noget af dette. 1286 01:07:34,950 --> 01:07:38,100 Så jeg gætter de større takeaway her er noget, der hedder rækkevidde. 1287 01:07:38,100 --> 01:07:39,650 >> For dem af jer, der var på revisionen session i aftes, 1288 01:07:39,650 --> 01:07:41,080 vi talte kort om dette. 1289 01:07:41,080 --> 01:07:45,380 Scope definerer hvordan og når dine variabler eksisterer. 1290 01:07:45,380 --> 01:07:48,050 Eller inden for, hvad der rammer eksisterer dine variabler. 1291 01:07:48,050 --> 01:07:51,690 >> Stort set den tommelfingerregel generelt er, din variables-- hvis du opretter dem 1292 01:07:51,690 --> 01:07:56,660 inde krøllet braces-- de findes kun inde disse krøllede parenteser. 1293 01:07:56,660 --> 01:08:00,312 >> Så for eksempel i vores funktion funk, kan du se disse to seler. 1294 01:08:00,312 --> 01:08:02,020 Hvis du opretter noget inde i det, 1295 01:08:02,020 --> 01:08:06,500 chancerne er alt du laver er skabe en stabel og lagring, at der. 1296 01:08:06,500 --> 01:08:07,430 Samme ting i main. 1297 01:08:07,430 --> 01:08:09,950 Det er bare gemt inde i main. 1298 01:08:09,950 --> 01:08:13,560 >> Også du ønsker at være meget, meget forsigtige her. 1299 01:08:13,560 --> 01:08:18,310 Fordi omfang også låner sig til forskellige eksempler. 1300 01:08:18,310 --> 01:08:25,950 Så for eksempel en for loop, for int i er lig med 0. 1301 01:08:25,950 --> 01:08:28,460 Jeg er mindre end, ved jeg ikke, 10. 1302 01:08:28,460 --> 01:08:32,111 Jeg plus plus. 1303 01:08:32,111 --> 01:08:34,560 Og du har fået koden inde i det, ikke? 1304 01:08:34,560 --> 01:08:38,830 >> Hvor gør denne variabel, Jeg, faktisk kun eksisterer? 1305 01:08:38,830 --> 01:08:40,510 Kun indersiden af ​​din for-løkke. 1306 01:08:40,510 --> 01:08:43,640 Så jeg vil vædde mange af jer har sandsynligvis stødt denne fejl, når 1307 01:08:43,640 --> 01:08:45,930 du laver programmer i din psets. 1308 01:08:45,930 --> 01:08:49,990 Hvor mange af jer har prøvet at bruge i uden for en for-løkke og havde en fejl? 1309 01:08:49,990 --> 01:08:53,310 Ligesom en objekt uden visning heltal eller sådan noget? 1310 01:08:53,310 --> 01:08:56,069 >> Grunden til, at der sker er fordi her er du 1311 01:08:56,069 --> 01:08:59,109 at skabe noget, som kun findes inden for din for-løkke. 1312 01:08:59,109 --> 01:09:01,972 Og hvis du forsøger at bruge det, jeg ikke faktisk eksisterer uden for det. 1313 01:09:01,972 --> 01:09:04,930 Så dybest set en computer siger, jeg ved ikke, hvad du taler om. 1314 01:09:04,930 --> 01:09:08,689 Alt jeg ved er, at en jeg var her, men nu ikke længere. 1315 01:09:08,689 --> 01:09:12,580 >> Så hvis jeg var at skabe et for-løkke indeni, ikke? 1316 01:09:12,580 --> 01:09:19,080 Og jeg har tænkt mig at oprette en anden, ligesom int j, og har det gøre hvad. 1317 01:09:19,080 --> 01:09:23,689 Og du har en kode inde på denne løkke, kun j findes her. 1318 01:09:23,689 --> 01:09:26,029 Men som også findes inden i. 1319 01:09:26,029 --> 01:09:29,310 Og så j kun eksisterer under denne for-løkke, 1320 01:09:29,310 --> 01:09:33,850 mens jeg eksisterer i det hele. 1321 01:09:33,850 --> 01:09:34,500 >> Alle klar? 1322 01:09:34,500 --> 01:09:37,416 Samme ting med betingede udsagn Hvis du ønsker at oprette noget. 1323 01:09:37,416 --> 01:09:40,390 Samme ting med, mens sløjfer, hvis du vil oprette noget. 1324 01:09:40,390 --> 01:09:42,390 Det er noget at være meget, meget forsigtige. 1325 01:09:42,390 --> 01:09:45,681 Så det var en rigtig god problem i fornemme, at det demonstrerede to ting. 1326 01:09:45,681 --> 01:09:47,160 Det demonstrerede første, omfang. 1327 01:09:47,160 --> 01:09:49,550 Og det påvist også allokering hukommelse. 1328 01:09:49,550 --> 01:09:54,130 Fordi du fyre skal vide, at funktioner vokser opad i stablen. 1329 01:09:54,130 --> 01:09:56,710 Og at når du ringer funktioner, du opretter 1330 01:09:56,710 --> 01:09:59,060 væsentlige en ny stak hukommelse. 1331 01:09:59,060 --> 01:10:02,100 Som er meget forskellig fra hvad din lysnettet hukommelse er. 1332 01:10:02,100 --> 01:10:03,300 Ja. 1333 01:10:03,300 --> 01:10:03,800 Puha! 1334 01:10:03,800 --> 01:10:05,470 Alle OK på det? 1335 01:10:05,470 --> 01:10:06,750 Det var forvirrende. 1336 01:10:06,750 --> 01:10:09,380 Meget gode emner til at gå over, fordi du sandsynligvis 1337 01:10:09,380 --> 01:10:12,255 kommer til at få nogle tricky ting som at der på quizzen. 1338 01:10:12,255 --> 01:10:13,350 Ja. 1339 01:10:13,350 --> 01:10:13,850 Afkøle. 1340 01:10:13,850 --> 01:10:16,014 1341 01:10:16,014 --> 01:10:18,430 Jeg vil sætte du får 100 på én linje og derefter 10 på den anden. 1342 01:10:18,430 --> 01:10:21,468 Ja, meget god. 1343 01:10:21,468 --> 01:10:26,350 >> OK, nu er du fyre får chancen for at være TAS. 1344 01:10:26,350 --> 01:10:30,600 Du kommer til at svare på alle de dejlige e-mails, at jeg nogle gange får. 1345 01:10:30,600 --> 01:10:34,290 >> Så Kære Andi, jeg ser jeg synes noget er går galt med min compiler. 1346 01:10:34,290 --> 01:10:37,910 Jeg er sikker på, at min kode er korrekt, men jeg får hele tiden en segmentering fejl 1347 01:10:37,910 --> 01:10:39,074 hver gang jeg kører. 1348 01:10:39,074 --> 01:10:39,740 Hvad sker der? 1349 01:10:39,740 --> 01:10:42,844 Please hjælp, masser af kærlighed. 1350 01:10:42,844 --> 01:10:45,740 1351 01:10:45,740 --> 01:10:49,410 >> Hvis du fyre fik noget lignende at hvordan ville du reagere? 1352 01:10:49,410 --> 01:10:51,860 Det er faktisk meget almindelig spørgsmål, vi vil bede dig. 1353 01:10:51,860 --> 01:10:54,090 Er, hvis vi vil give dig en scenarie, giver vi os 1354 01:10:54,090 --> 01:10:56,350 dit bedste gæt på, hvad der foregår. 1355 01:10:56,350 --> 01:11:00,710 Nogen der har en kniv på, hvad der foregår? 1356 01:11:00,710 --> 01:11:02,654 Ja? 1357 01:11:02,654 --> 01:11:06,056 >> PUBLIKUM: Måske derefererede den null, noget i retning af markøren 1358 01:11:06,056 --> 01:11:08,924 peger på noget null. 1359 01:11:08,924 --> 01:11:11,590 PROFESSOR: Ja, det ville være en eksempel på, hvornår der ville ske. 1360 01:11:11,590 --> 01:11:14,467 Men hvad er det større billede af, hvad der foregår her? 1361 01:11:14,467 --> 01:11:17,050 PUBLIKUM: Er det du prøver at få adgang til hukommelse, som du ikke er 1362 01:11:17,050 --> 01:11:18,175 formodes at have adgang til? 1363 01:11:18,175 --> 01:11:19,200 PROFESSOR: Præcis. 1364 01:11:19,200 --> 01:11:24,800 Så tænk på en seg fejl, en off grænser, begrænset område i hukommelsen 1365 01:11:24,800 --> 01:11:27,780 at du ikke skal være rørende. 1366 01:11:27,780 --> 01:11:31,670 >> Så temmelig meget, når du forsøger at index-- som for eksempel, 1367 01:11:31,670 --> 01:11:34,110 du har erklæret en vifte fra nul til ni. 1368 01:11:34,110 --> 01:11:37,360 Men du forsøger at røre den 10. værdi, behøver du ikke har adgang til det. 1369 01:11:37,360 --> 01:11:38,694 Fordi du ikke har erklæret den. 1370 01:11:38,694 --> 01:11:40,943 Og så din computer går at se på det være ligesom, 1371 01:11:40,943 --> 01:11:43,440 uh oh, du forsøger at gå uden for rammerne af et indeks. 1372 01:11:43,440 --> 01:11:45,270 Jeg har tænkt mig at give dig en segmentering fejl. 1373 01:11:45,270 --> 01:11:46,590 >> Tænk på som segment, ikke? 1374 01:11:46,590 --> 01:11:49,665 En ekstra segment, fejlen er når du forsøger at bryde noget 1375 01:11:49,665 --> 01:11:50,790 og du bør ikke være der. 1376 01:11:50,790 --> 01:11:53,660 Segmentering fejl er når som helst du forsøger at røre ved ting 1377 01:11:53,660 --> 01:11:54,970 at du ikke skal være rørende. 1378 01:11:54,970 --> 01:11:56,815 >> Så almindelige eksempler er et indeks. 1379 01:11:56,815 --> 01:11:58,940 Selvfølgelig, hvis du forsøger at røre ved, der var nul, 1380 01:11:58,940 --> 01:12:00,220 det ville også fungere så godt. 1381 01:12:00,220 --> 01:12:02,300 Hvis markøren forsøgte at røre ting, der ikke bør røre, 1382 01:12:02,300 --> 01:12:03,730 der kunne også arbejde så godt. 1383 01:12:03,730 --> 01:12:07,120 Mest typisk vil du se i et array. 1384 01:12:07,120 --> 01:12:07,740 Alle godt? 1385 01:12:07,740 --> 01:12:10,374 >> PUBLIKUM: Så hvis du ønsker at få adgang til det 10. punkt 1386 01:12:10,374 --> 01:12:12,290 og der er kun en grænse ni eller noget. 1387 01:12:12,290 --> 01:12:13,160 >> PROFESSOR: Ja, præcis. 1388 01:12:13,160 --> 01:12:13,660 Rimeligt meget. 1389 01:12:13,660 --> 01:12:15,930 1390 01:12:15,930 --> 01:12:16,430 Afkøle. 1391 01:12:16,430 --> 01:12:19,070 1392 01:12:19,070 --> 01:12:19,920 >> Kære Andi. 1393 01:12:19,920 --> 01:12:23,440 Så vi har fået disse vidunderlige ting kaldet slags. 1394 01:12:23,440 --> 01:12:25,472 Hvis Flet sort-- som vi saven i eksempel når 1395 01:12:25,472 --> 01:12:27,180 David gjorde det hele ting i class-- hvorfor, 1396 01:12:27,180 --> 01:12:29,760 hvis det er så meget hurtigere end nogen af ​​de andre former, 1397 01:12:29,760 --> 01:12:33,310 hvorfor vi selv gider at kende nogen af ​​de andre former? 1398 01:12:33,310 --> 01:12:35,100 >> Hvad er dette spørgsmål virkelig beder dig? 1399 01:12:35,100 --> 01:12:36,659 Hvad er de tre word-- 1400 01:12:36,659 --> 01:12:37,950 PUBLIKUM: Hvad er det trade-off? 1401 01:12:37,950 --> 01:12:38,530 PROFESSOR: Præcis. 1402 01:12:38,530 --> 01:12:39,946 Det er, hvad spørgsmålet beder. 1403 01:12:39,946 --> 01:12:43,682 Hvad er det trade-off mellem Mergesort vers andre former? 1404 01:12:43,682 --> 01:12:45,850 >> PUBLIKUM: Tager hukommelse, right? 1405 01:12:45,850 --> 01:12:47,720 >> PROFESSOR: Har du forklare, at lidt mere? 1406 01:12:47,720 --> 01:12:49,490 Først lad os forklare Merge butik. 1407 01:12:49,490 --> 01:12:50,970 Hvordan mergesort virker? 1408 01:12:50,970 --> 01:12:55,220 >> PUBLIKUM: Så det virker ved dividere alt i halve 1409 01:12:55,220 --> 01:13:00,660 og derefter sætte det sammen og omfordeling det i orden, 1410 01:13:00,660 --> 01:13:02,862 ligesom hver gang du flette sæt. 1411 01:13:02,862 --> 01:13:03,820 PROFESSOR: Temmelig meget. 1412 01:13:03,820 --> 01:13:06,861 Så jeg kan trække det ud, men det ville tage mig fem minutter til at trække det ud. 1413 01:13:06,861 --> 01:13:10,220 Se tilbage på til afsnittet dias hvor vi dækkede mergesort. 1414 01:13:10,220 --> 01:13:10,790 Nøjagtig. 1415 01:13:10,790 --> 01:13:13,406 >> Så den måde mergesort værker er det opdeler ting i halve, 1416 01:13:13,406 --> 01:13:15,780 og så er det bare ser på første værdier af dem alle 1417 01:13:15,780 --> 01:13:17,000 og sorterer kun det. 1418 01:13:17,000 --> 01:13:20,364 Løbende skaber nye arrays og sætter tingene mere og mere i orden. 1419 01:13:20,364 --> 01:13:23,030 Og så mens det er virkelig, virkelig hurtigt, fordi it's-- du ved, 1420 01:13:23,030 --> 01:13:25,380 en binær søgning er n log n. 1421 01:13:25,380 --> 01:13:27,880 Du skaber så mange forskellige arrays, som du er 1422 01:13:27,880 --> 01:13:29,700 ved anvendelse af en stor mængde hukommelse. 1423 01:13:29,700 --> 01:13:33,080 Og så mens det er hurtigere, afvejningen her er, at du bruger mere hukommelse. 1424 01:13:33,080 --> 01:13:38,490 >> Og så tip, sorterer og søgninger blev dækket meget mere i år 1425 01:13:38,490 --> 01:13:41,610 end de har været i år tidligere. 1426 01:13:41,610 --> 01:13:45,100 Du fyre bør se, at udslag på quizzen. 1427 01:13:45,100 --> 01:13:49,160 Jeg ville helt sikkert bruge tid går over, hvad alle de forskellige slags 1428 01:13:49,160 --> 01:13:52,320 er, hvor binær søgning, hvordan lineær søgning arbejde. 1429 01:13:52,320 --> 01:13:54,750 Sådan måske pseudokode kode dem ud. 1430 01:13:54,750 --> 01:13:55,950 Hvad er de kører tider? 1431 01:13:55,950 --> 01:13:59,210 Noget som kører tider er meget let at kopiere ned på en note ark, 1432 01:13:59,210 --> 01:13:59,710 højre? 1433 01:13:59,710 --> 01:14:01,420 >> Det er virkelig svært, når du er i midten testen 1434 01:14:01,420 --> 01:14:02,390 og du er nødt til at finde ud af. 1435 01:14:02,390 --> 01:14:03,160 Kopier den ned. 1436 01:14:03,160 --> 01:14:05,550 Jeg garanterer dig, du er vil få brug for at vide, at. 1437 01:14:05,550 --> 01:14:06,860 Hvad er de afvejninger? 1438 01:14:06,860 --> 01:14:10,064 Worst case, bedste case scenarier for dem alle, meget få at vide. 1439 01:14:10,064 --> 01:14:10,564 Ja? 1440 01:14:10,564 --> 01:14:12,730 >> PUBLIKUM: Har vi brug for at vide, hvordan man kode mergesort? 1441 01:14:12,730 --> 01:14:15,470 Ligesom, har vi brug for at husker den rekursive? 1442 01:14:15,470 --> 01:14:18,950 >> PROFESSOR: Jeg tvivler meget det, bare fordi det er ligesom temmelig kompliceret. 1443 01:14:18,950 --> 01:14:22,282 Men det kan ikke være umuligt, hvis vi bede dig om at bruge pseudokode det ud. 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 >> Jep, OK, en mere. 1447 01:14:29,170 --> 01:14:31,387 Dette kan være kommet op i du sidste brik i lidt. 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 Har alle høre det? 1451 01:14:44,930 --> 01:14:48,360 >> OK, så temmelig meget første af alt, hvilken type program 1452 01:14:48,360 --> 01:14:51,000 ville være at give dig et output som denne? 1453 01:14:51,000 --> 01:14:54,350 Husk vi bad dig om at lære om denne nye type debugging værktøj? 1454 01:14:54,350 --> 01:14:57,340 Hvad var navnet på den? 1455 01:14:57,340 --> 01:14:59,460 Valgrind, højre 1456 01:14:59,460 --> 01:15:02,600 >> Det var et program, hvor man kunne kalde det kunne 1457 01:15:02,600 --> 01:15:05,940 holde styr på alle den hukommelse, du er bruge i dit program, og foregik. 1458 01:15:05,940 --> 01:15:11,090 Så hvis du har noget, ligesom, helt tabt, 40 bytes i en blok. 1459 01:15:11,090 --> 01:15:14,870 Sandsynligvis du ikke huske at frigøre den. 1460 01:15:14,870 --> 01:15:18,710 For hvis du bruger bytes af hukommelse, det betyder at du har adgang til, at hukommelsen, 1461 01:15:18,710 --> 01:15:20,240 men du har ikke været i stand til at frigøre. 1462 01:15:20,240 --> 01:15:21,948 Så du ønsker at gøre sikker på, at du er også 1463 01:15:21,948 --> 01:15:31,420 hjælp free-- det er en function-- at befri alle 1464 01:15:31,420 --> 01:15:34,930 af hukommelsen omfordelt ved malloc. 1465 01:15:34,930 --> 01:15:35,500 >> Afkøle. 1466 01:15:35,500 --> 01:15:37,140 Så dette dias, vil jeg have det op. 1467 01:15:37,140 --> 01:15:41,050 Det er overalt i en masse foredrag, i en masse afsnit dias. 1468 01:15:41,050 --> 01:15:44,254 Du virkelig ønsker at sikre, du bare vide alt dette. 1469 01:15:44,254 --> 01:15:47,170 Enten i din note ark eller hvis du ønsker at huske det, er du velkommen til. 1470 01:15:47,170 --> 01:15:48,836 Det er virkelig, virkelig, virkelig vigtigt. 1471 01:15:48,836 --> 01:15:53,200 1472 01:15:53,200 --> 01:15:56,890 >> Også en meget god spørgsmål, vi kan stille. 1473 01:15:56,890 --> 01:16:00,320 Hvorfor er Udvælgelse sort-- se på Udvælgelse sort-- alle runtime 1474 01:16:00,320 --> 01:16:02,060 er n potens. 1475 01:16:02,060 --> 01:16:06,714 Uanset hvordan listen kommer til dig som, så hvorfor er Selection sort-- 1476 01:16:06,714 --> 01:16:08,630 Jeg vil give jer 30 anden mener om dette. 1477 01:16:08,630 --> 01:16:10,700 Fordi det er slags forvirrende. 1478 01:16:10,700 --> 01:16:12,710 Det indebærer en vis begrebsmæssig eftertanke. 1479 01:16:12,710 --> 01:16:16,470 Hvorfor skulle de køre tider være den samme i både de værste og bedste case scenarier? 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 >> PUBLIKUM: Fordi Selection sortere hver position eller plads i denne lille vifte 1483 01:16:38,084 --> 01:16:40,350 ting eller hvad. 1484 01:16:40,350 --> 01:16:44,430 Så selv i bedste fald, selv om det helt er sorteret, 1485 01:16:44,430 --> 01:16:47,380 det ville stadig være ligesom, OK, en. 1486 01:16:47,380 --> 01:16:49,000 I mit første sted jeg har en. 1487 01:16:49,000 --> 01:16:50,250 Og gå gennem dem alle. 1488 01:16:50,250 --> 01:16:51,249 OK, den ene er den mindste. 1489 01:16:51,249 --> 01:16:53,053 Og så går det igen og er ligesom, OK, to 1490 01:16:53,053 --> 01:16:54,594 er den mindste af alle de ting. 1491 01:16:54,594 --> 01:16:56,804 Men det har stadig til kontrollere hver og én. 1492 01:16:56,804 --> 01:16:57,470 PROFESSOR: Ja. 1493 01:16:57,470 --> 01:17:00,490 Altså for eksempel, lad os bare sige Vi har en liste, der allerede er sorteret, 1494 01:17:00,490 --> 01:17:03,390 et array 04:59. 1495 01:17:03,390 --> 01:17:07,100 Den måde, Selection slags er, at det går igennem, kontrollerer disse to. 1496 01:17:07,100 --> 01:17:08,234 Så kontrollerer det de to. 1497 01:17:08,234 --> 01:17:09,650 Og så tjekker det, og det kontrollerer. 1498 01:17:09,650 --> 01:17:13,285 Det holder kontrol dem alle, uanset om eller ej 1499 01:17:13,285 --> 01:17:14,160 Det er faktisk sorteres. 1500 01:17:14,160 --> 01:17:16,450 Fordi det er simpelthen den måde den slags virker. 1501 01:17:16,450 --> 01:17:19,530 >> Og så dette spørgsmål er lidt ligesom en konceptuel spørgsmål, vi vil bede. 1502 01:17:19,530 --> 01:17:21,430 Hvor første, du vide, hvad valg Sorter 1503 01:17:21,430 --> 01:17:23,304 er, højre, for at kunne at besvare spørgsmålet. 1504 01:17:23,304 --> 01:17:26,200 Du skal være i stand til at forstå begrebsmæssigt, hvad der foregår. 1505 01:17:26,200 --> 01:17:30,760 Og så kan du anvende det og tror, ​​OK lad os bare forestille os værst tænkelige scenarie. 1506 01:17:30,760 --> 01:17:32,230 De er alle i faldende rækkefølge. 1507 01:17:32,230 --> 01:17:33,290 Hvordan ville det påvirke det? 1508 01:17:33,290 --> 01:17:34,650 >> Hvad hvis det er stigende orden? 1509 01:17:34,650 --> 01:17:35,640 Hvis det allerede er ordnet? 1510 01:17:35,640 --> 01:17:37,240 Hvordan ville det påvirke runtime? 1511 01:17:37,240 --> 01:17:40,270 Og så valg Sorter, vil du bemærke at det faktisk ikke noget. 1512 01:17:40,270 --> 01:17:43,500 Fordi du tjekker alle de værdier uanset hvad der sker. 1513 01:17:43,500 --> 01:17:45,810 >> Og så gode ting at huske. 1514 01:17:45,810 --> 01:17:50,290 Hvorfor nogle slags adskiller sig fra andre og hvordan man bedst og værst tænkelige scenarier 1515 01:17:50,290 --> 01:17:52,740 ville påvirke dem alle. 1516 01:17:52,740 --> 01:17:56,700 >> Jeg har tænkt mig at virkelig ramt i sorterer fordi det vil være på quizzen. 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 Der er seks minutter tilbage. 1521 01:18:05,590 --> 01:18:09,880 Jeg kan tage tre minutter af spørgsmål. 1522 01:18:09,880 --> 01:18:12,290 Jeg kan også hænge ligesom 20 minutter efter sektion 1523 01:18:12,290 --> 01:18:13,850 Hvis du ønsker at stille spørgsmål så godt. 1524 01:18:13,850 --> 01:18:16,330 Er der nogen bare har virkelig kort spørgsmål eller konceptuelle spørgsmål 1525 01:18:16,330 --> 01:18:17,360 de er uklart, om lige nu? 1526 01:18:17,360 --> 01:18:17,832 Ja? 1527 01:18:17,832 --> 01:18:19,720 >> PUBLIKUM: Kan du tale lidt lidt om bitvis operatører? 1528 01:18:19,720 --> 01:18:20,280 >> PROFESSOR: Ja. 1529 01:18:20,280 --> 01:18:22,446 Så bitvise operatører er noget, som du sandsynligvis 1530 01:18:22,446 --> 01:18:24,170 måske bare ønsker at sætte på din plade. 1531 01:18:24,170 --> 01:18:27,540 Så quickly-- Jeg ønsker ikke at gå for meget i dybden 1532 01:18:27,540 --> 01:18:31,164 fordi Harvard, i deres bedømmelse session, dækket det temmelig godt. 1533 01:18:31,164 --> 01:18:33,080 Bitvis operatør, der er fem af dem, ikke? 1534 01:18:33,080 --> 01:18:41,370 >> Der er denne, som er x eller funktion, der er tegnet, som er og. 1535 01:18:41,370 --> 01:18:44,050 Pipe, som er eller. 1536 01:18:44,050 --> 01:18:46,790 Og så har du to forskellige typer af skift. 1537 01:18:46,790 --> 01:18:50,610 >> Hvis jeg giver dig to værdier, hvis Jeg giver dig, ligesom, en og en. 1538 01:18:50,610 --> 01:18:52,390 Hvad ville det evalueres til? 1539 01:18:52,390 --> 01:18:55,490 Hvis jeg giver dig ægte og sandt, sandt? 1540 01:18:55,490 --> 01:18:56,930 Hvad med sandt eller falsk? 1541 01:18:56,930 --> 01:18:57,830 Stadig sandt, ikke? 1542 01:18:57,830 --> 01:18:59,762 Fordi der er en eller. 1543 01:18:59,762 --> 01:19:01,220 Vi vil sandsynligvis give dig tal. 1544 01:19:01,220 --> 01:19:03,780 Så husk, en er lig sandt, nul lig falsk. 1545 01:19:03,780 --> 01:19:07,407 Og vi kan give dig disse ting og bede dig om at fortælle os, hvad der sker. 1546 01:19:07,407 --> 01:19:10,240 Harvard dækker det inden for den første 10 minutter af deres undersøgelse session 1547 01:19:10,240 --> 01:19:11,230 virkelig, virkelig godt. 1548 01:19:11,230 --> 01:19:14,260 Så du fyre ønsker at gøre sikker på at du ser tilbage på det. 1549 01:19:14,260 --> 01:19:16,387 >> PUBLIKUM: Er pisa5 vil være på quizzen? 1550 01:19:16,387 --> 01:19:16,970 PROFESSOR: Nej. 1551 01:19:16,970 --> 01:19:18,240 Må ikke engang se på pisa5 lige nu. 1552 01:19:18,240 --> 01:19:18,810 Det er svært. 1553 01:19:18,810 --> 01:19:22,830 Bare ikke engang gider kigge på pisa5. 1554 01:19:22,830 --> 01:19:25,665 >> Men som nogle hints og forslag, jeg 1555 01:19:25,665 --> 01:19:28,320 vil foreslå du starter pisa5 så snart quizzen er slut. 1556 01:19:28,320 --> 01:19:30,319 Dette vil være den sværeste uge, men så du fyre 1557 01:19:30,319 --> 01:19:34,590 vil blive bestået det på bakkerne af rullende grønne og hvalpe, 1558 01:19:34,590 --> 01:19:36,115 og det er fint. 1559 01:19:36,115 --> 01:19:39,810 >> Denne klasse får betydelig lettere efter det femte pset. 1560 01:19:39,810 --> 01:19:41,560 PUBLIKUM: Kontortid er søndag, mandag? 1561 01:19:41,560 --> 01:19:44,260 PROFESSOR: Ja, så kontortid vil søndag til mandag for pset. 1562 01:19:44,260 --> 01:19:47,009 Kontortid aften væsentlige vil bare være en anmeldelse af quizzen. 1563 01:19:47,009 --> 01:19:50,350 Hvis nogen ønsker at komme ind og spørge TAS et spørgsmål, vil vi være der. 1564 01:19:50,350 --> 01:19:53,220 >> Jeg tager måske endnu et spørgsmål hvis nogen har et spørgsmål? 1565 01:19:53,220 --> 01:19:53,809 Ja? 1566 01:19:53,809 --> 01:19:55,850 PUBLIKUM: Når du er definerer knuder, [uhørligt] 1567 01:19:55,850 --> 01:20:00,700 hvis du siger node stjerne og derefter næste, gør computeren automatisk 1568 01:20:00,700 --> 01:20:03,610 forstå, at du er henvise til en anden pointer? 1569 01:20:03,610 --> 01:20:04,580 >> PROFESSOR: Nej. 1570 01:20:04,580 --> 01:20:06,710 >> PUBLIKUM: Du skal sammenlænke det [uhørligt]? 1571 01:20:06,710 --> 01:20:09,270 >> PROFESSOR: Så dybest set den struct af en node er, huske, 1572 01:20:09,270 --> 01:20:12,620 det er ligesom du opretter noden og så har du en pegepind kaldes næste. 1573 01:20:12,620 --> 01:20:14,630 Alt du gør er at have strukturen er. 1574 01:20:14,630 --> 01:20:16,387 Du er nødt til at tildele at pointer eller andet sted. 1575 01:20:16,387 --> 01:20:18,470 Så computerne ikke ved, hvad det gør endnu. 1576 01:20:18,470 --> 01:20:20,250 Du er nødt til rent faktisk at tildele den, når du opretter din linkede liste. 1577 01:20:20,250 --> 01:20:22,170 Og det er, hvad hovedsageligt pset 5 vil være på. 1578 01:20:22,170 --> 01:20:24,106 Så ingen bekymringer om noget af det lige nu. 1579 01:20:24,106 --> 01:20:26,380 >> PUBLIKUM: Så vi behøver ikke at fokuserer for meget på linket liste, bare 1580 01:20:26,380 --> 01:20:27,440 den generelle opfattelse? 1581 01:20:27,440 --> 01:20:30,980 >> PROFESSOR: Bare temmelig meget stakke, køer, link lister, træer, hash tabeller. 1582 01:20:30,980 --> 01:20:33,639 Bare være i stand til at vide, hvad de er. 1583 01:20:33,639 --> 01:20:35,680 Vi kommer ikke til at spørge du kan lide noget konkret 1584 01:20:35,680 --> 01:20:39,300 fordi vi ikke har virkelig gjort et pset at dækker noget af det endnu. 1585 01:20:39,300 --> 01:20:45,540 >> Så i de sidste to minutter før Jeg sætte dig fri til at dræbe denne quiz. 1586 01:20:45,540 --> 01:20:49,370 Temmelig meget, ligesom, tænke over, hvordan langt du fyre er kommet i denne klasse. 1587 01:20:49,370 --> 01:20:52,820 >> Jeg husker, da uge to af denne klasse, nogle af jer 1588 01:20:52,820 --> 01:20:55,720 tilbringe tre timer at skrive vand. 1589 01:20:55,720 --> 01:20:57,970 Hvor lang tid vil det tage dig fyre til at skrive vand nu? 1590 01:20:57,970 --> 01:20:59,670 30 sekunder, måske? 1591 01:20:59,670 --> 01:21:01,810 Tænk på, hvor meget jer har lært. 1592 01:21:01,810 --> 01:21:04,320 CS er en virkelig, virkelig hårdt emne. 1593 01:21:04,320 --> 01:21:06,190 Der er ingen tvivl om det. 1594 01:21:06,190 --> 01:21:09,160 Det er svært, det er derfor ingen studerer det. 1595 01:21:09,160 --> 01:21:10,730 Det er bare svært. 1596 01:21:10,730 --> 01:21:11,650 Og det er helt fint. 1597 01:21:11,650 --> 01:21:14,150 >> Og jeg er virkelig stolt over, at alle har gjort det så langt. 1598 01:21:14,150 --> 01:21:16,380 Psets er ikke let. 1599 01:21:16,380 --> 01:21:17,790 De tager en masse tid. 1600 01:21:17,790 --> 01:21:22,580 Jer, vil jeg aldrig bede dig om at skrive spillet af 15 eller Vigenere på pset. 1601 01:21:22,580 --> 01:21:24,160 Ingen grund til at bare flipper ud over det. 1602 01:21:24,160 --> 01:21:28,080 Alt vi tester her er at vurdere din konceptuelle viden, samt 1603 01:21:28,080 --> 01:21:31,524 som nogle af dine grundlæggende færdigheder i kodning. 1604 01:21:31,524 --> 01:21:33,440 Testen er udviklet til være virkelig udfordrende. 1605 01:21:33,440 --> 01:21:36,180 Ligesom, er det designet for dig at ikke få 100. 1606 01:21:36,180 --> 01:21:39,880 Den er også designet for dig at sandsynligvis ikke være i stand til at slutte i 75 minutter. 1607 01:21:39,880 --> 01:21:41,995 Og det er helt fint. 1608 01:21:41,995 --> 01:21:42,870 Jeg er en studerende selv. 1609 01:21:42,870 --> 01:21:45,960 Jeg ved, jeg hader det, når jeg går ud af en quiz være ligesom, lort. 1610 01:21:45,960 --> 01:21:47,044 Det var virkelig hårdt. 1611 01:21:47,044 --> 01:21:49,460 Sandsynligvis hvad der kommer til happen-- og det er helt fint, 1612 01:21:49,460 --> 01:21:50,751 Jeg fortæller jer lige nu. 1613 01:21:50,751 --> 01:21:53,190 Midlerne på disse ting er ikke høje overhovedet. 1614 01:21:53,190 --> 01:21:55,360 >> Og for dem af jer, der har været at få, ligesom, 1615 01:21:55,360 --> 01:21:57,870 treere på dit problem sæt, det betyder ikke, du er 1616 01:21:57,870 --> 01:21:59,536 kommer til at få en 60 procent i denne klasse. 1617 01:21:59,536 --> 01:22:01,440 Hvis du får 60% på quiz, der ikke 1618 01:22:01,440 --> 01:22:03,330 betyde, at du kommer til at få en D i denne klasse. 1619 01:22:03,330 --> 01:22:05,740 Vi ser, især jeg, for dem af jer i min afdeling, 1620 01:22:05,740 --> 01:22:07,406 Jeg se, hvor hårdt du fyre alle arbejder. 1621 01:22:07,406 --> 01:22:09,190 Og jeg holde styr på det. 1622 01:22:09,190 --> 01:22:11,420 >> Du fyre vil være fint. 1623 01:22:11,420 --> 01:22:14,580 Der er ingen institutionelle hukommelse af lykke i slutningen af ​​semesteret. 1624 01:22:14,580 --> 01:22:16,840 Fordi alle Harvard børnene fortæller deres venner, åh, vil du være fint. 1625 01:22:16,840 --> 01:22:18,381 Ingen fortæller jer det her. 1626 01:22:18,381 --> 01:22:20,950 Så jeg er nødt til at fortælle jer det her. 1627 01:22:20,950 --> 01:22:22,280 >> Du fyre vil være fint. 1628 01:22:22,280 --> 01:22:24,080 Jeg er så stolt af alle jer. 1629 01:22:24,080 --> 01:22:25,680 Testen vil være svært. 1630 01:22:25,680 --> 01:22:28,140 Undersøgelse for det, og bagefter bare smide det væk. 1631 01:22:28,140 --> 01:22:31,280 Gør dig klar til at lære nye ting. 1632 01:22:31,280 --> 01:22:33,990 Og spiser slik. 1633 01:22:33,990 --> 01:22:35,940 Vi har har masser af slik. 1634 01:22:35,940 --> 01:22:37,760 >> Få en god nats søvn. 1635 01:22:37,760 --> 01:22:40,420 Må ikke ikke sove, fordi der ville være virkelig dårlig. 1636 01:22:40,420 --> 01:22:41,490 CS er en masse logik. 1637 01:22:41,490 --> 01:22:44,960 Hvis du ikke sove, kan du ikke fungere, og din hjerne kan ikke fungere. 1638 01:22:44,960 --> 01:22:48,780 Og jeg vil være her for den næste 20 minutter, hvis nogen ønsker at hænge. 1639 01:22:48,780 --> 01:22:51,150 Du fyre kommer til at dræbe den. 1640 01:22:51,150 --> 01:22:53,000 Held og lykke. 1641 01:22:53,000 --> 01:22:55,663