1 00:00:00,000 --> 00:00:05,530 2 00:00:05,530 --> 00:00:09,790 >> Hoogleraar: Dus de agenda voor deze week, niet zo veel spullen. 3 00:00:09,790 --> 00:00:12,801 Maar hopelijk zeer, zeer behulpzaam en relevant zijn voor jullie deze week. 4 00:00:12,801 --> 00:00:15,550 Maar we gaan besteden misschien 15, 20 minuten gewoon snel praten 5 00:00:15,550 --> 00:00:17,370 over de lijst met links. 6 00:00:17,370 --> 00:00:19,694 Link lijsten gaan worden gedekt op de quiz. 7 00:00:19,694 --> 00:00:22,610 Dus misschien zou het zeer nuttig zijn een beetje over wat dat is te leren. 8 00:00:22,610 --> 00:00:25,210 >> We gaan naar de grote besteden meerderheid van de afdeling van vandaag 9 00:00:25,210 --> 00:00:27,640 gaan over quiz nul praktijk problemen. 10 00:00:27,640 --> 00:00:30,970 En dan gaan we misschien 20, 30 minuten sparen aan het einde van alle resterende vragen 11 00:00:30,970 --> 00:00:32,850 iedereen heeft. 12 00:00:32,850 --> 00:00:34,610 >> En dan, de laatste vijf minuten, ik ga 13 00:00:34,610 --> 00:00:36,467 een pomp omhoog toespraak voor de quiz te geven. 14 00:00:36,467 --> 00:00:38,050 Jullie willen allemaal hier voor zijn. 15 00:00:38,050 --> 00:00:39,591 Omdat het gaat om een ​​goede tijd te zijn. 16 00:00:39,591 --> 00:00:42,650 17 00:00:42,650 --> 00:00:49,230 >> Oké, dus sommige materiaal op de link lijst. 18 00:00:49,230 --> 00:00:52,620 Hoe ze meestal gestructureerd is je hebt wat heet een node, toch? 19 00:00:52,620 --> 00:00:54,870 Je hebt deze dingen genoemd nodes, welke structuren zijn. 20 00:00:54,870 --> 00:00:57,360 Ik ga over de vraag hoe om te creëren een knooppunt in de volgende dia. 21 00:00:57,360 --> 00:01:00,680 Maar in wezen alle gekoppelde lijsten is bestaat uit gegevens die 22 00:01:00,680 --> 00:01:03,340 is aaneengeregen via pointers. 23 00:01:03,340 --> 00:01:09,110 >> En zo het voordeel dat we hebben het gebruiken van een gekoppelde lijst over, 24 00:01:09,110 --> 00:01:11,280 misschien als een matrix, is dat in een array 25 00:01:11,280 --> 00:01:15,000 je één aaneengesloten blok nodig geheugen allemaal in dezelfde plaats, een 26 00:01:15,000 --> 00:01:16,870 na de andere, kunnen die hebben. 27 00:01:16,870 --> 00:01:20,200 Terwijl een gelinkte lijst, je kon hebben willekeurige kleine stukjes van het geheugen 28 00:01:20,200 --> 00:01:23,020 over uw computer aaneengeregen door pointers. 29 00:01:23,020 --> 00:01:26,270 >> En op deze manier toegang tot informatie 30 00:01:26,270 --> 00:01:28,610 dat komt achter andere, na elkaar 31 00:01:28,610 --> 00:01:32,720 zonder alleen een enorme brok van geheugen in de computer ergens. 32 00:01:32,720 --> 00:01:35,910 En dus dit is een van de belangrijkste waarom gebruiken we lijst met links. 33 00:01:35,910 --> 00:01:40,300 >> Ten tweede, het is heel gemakkelijk om dynamisch verkleinen de link lijst want in array, 34 00:01:40,300 --> 00:01:44,720 wanneer u verklaren een array, je hebt een bepaalde ingestelde waarde. 35 00:01:44,720 --> 00:01:47,340 Laten we zeggen dat ik wilde maken een array van 10 integers. 36 00:01:47,340 --> 00:01:49,970 Ik maak een serie van 10 integers, en dat is het. 37 00:01:49,970 --> 00:01:50,580 Het is 10. 38 00:01:50,580 --> 00:01:52,038 Ik weet niet wat te doen na dat. 39 00:01:52,038 --> 00:01:53,680 Als ik wilde het 11 te maken, kan het niet doen. 40 00:01:53,680 --> 00:01:55,710 Als ik wil het 9 te maken, kan het niet doen. 41 00:01:55,710 --> 00:01:59,910 >> Terwijl in een lijst met links, kunt u toevoegen en verwijderen en plaats waar u wilt. 42 00:01:59,910 --> 00:02:04,940 Je kunt dynamisch formaat van uw structureren hier, uw datastructuur. 43 00:02:04,940 --> 00:02:08,370 En dat geeft ons veel meer toegevoegde flexibiliteit 44 00:02:08,370 --> 00:02:11,320 dat doen we niet typisch hebben arrays. 45 00:02:11,320 --> 00:02:15,210 >> Iedereen verward over de fundamentele structuur van hoe een link lijst 46 00:02:15,210 --> 00:02:17,930 of waarom moeten we een over een array gebruiken? 47 00:02:17,930 --> 00:02:20,330 Ja, we gaan over in detail hoe je nu eigenlijk een maken. 48 00:02:20,330 --> 00:02:24,121 Maar dit is gewoon een soort van algemene zin op dit moment. 49 00:02:24,121 --> 00:02:24,620 Koel. 50 00:02:24,620 --> 00:02:28,770 En zo arrays worden aaneengeregen van deze mooie kleine dingen 51 00:02:28,770 --> 00:02:29,960 zogenaamde knooppunten. 52 00:02:29,960 --> 00:02:32,210 Al een knooppunt is een type struct. 53 00:02:32,210 --> 00:02:36,090 Vergeet niet, een structuur is als je wilde een bepaald type variabele creëren 54 00:02:36,090 --> 00:02:39,850 in C die niet reeds bestaan, u, als programmeur, 55 00:02:39,850 --> 00:02:42,030 kan eigenlijk creëren dat zelf. 56 00:02:42,030 --> 00:02:46,540 >> En dus dit soort gegevens structuur van een node, 57 00:02:46,540 --> 00:02:50,770 daadwerkelijk zijn gemaakt door ons, dat niet voorkomt in C op zichzelf. 58 00:02:50,770 --> 00:02:53,150 En de manier waarop u maakt men u 59 00:02:53,150 --> 00:02:57,170 de kop van typedef struct, die de compiler ik ben vertelt 60 00:02:57,170 --> 00:02:59,640 punt een structuur te creëren. 61 00:02:59,640 --> 00:03:00,830 >> We gaan noem het "knooppunt." 62 00:03:00,830 --> 00:03:03,350 En de binnenkant we gaan een variabele verklaren, 63 00:03:03,350 --> 00:03:05,060 die gaat naar een waarde op te slaan. 64 00:03:05,060 --> 00:03:09,320 En dan gaan we ook naar hebben een pointer genaamd "volgende" 65 00:03:09,320 --> 00:03:12,090 die naar de volgende knooppunt in de lijst met links. 66 00:03:12,090 --> 00:03:14,730 En dan eindig je dat af door gewoon opnieuw herhalen knooppunt dus 67 00:03:14,730 --> 00:03:17,490 de compiler weet, OK Dat is het einde van mijn structuur. 68 00:03:17,490 --> 00:03:22,540 >> En dus op deze manier, we zijn soort het creëren van een schattige kleine serie 69 00:03:22,540 --> 00:03:25,450 soort dingen met een waarde en van een wijzer. 70 00:03:25,450 --> 00:03:27,757 En je kunt ze allemaal koppelen samen met die pointers. 71 00:03:27,757 --> 00:03:30,090 Zodat ze allerlei kunnen worden aaneengeregen in een keten. 72 00:03:30,090 --> 00:03:32,920 73 00:03:32,920 --> 00:03:34,162 >> Koel. 74 00:03:34,162 --> 00:03:35,453 Hoor je dat een beetje beter? 75 00:03:35,453 --> 00:03:36,140 >> Publiek: Ja. 76 00:03:36,140 --> 00:03:38,540 >> Hoogleraar: Oké. 77 00:03:38,540 --> 00:03:44,280 Dus de manier waarop, zoals jullie kunnen zien, een typisch koppeling lijst is gestructureerd 78 00:03:44,280 --> 00:03:45,500 is dat je een hoofd. 79 00:03:45,500 --> 00:03:49,460 Je hebt het hoofd waarde, die niet is wordt opgemerkt andere pointer. 80 00:03:49,460 --> 00:03:53,177 Maar het gaat om het punt op, of verwijzing, een ander knooppunt. 81 00:03:53,177 --> 00:03:56,510 Het knooppunt na het gaat om te verwijzen naar de knooppunt na dat, en zo verder en zo voort 82 00:03:56,510 --> 00:03:59,170 totdat je uiteindelijk hit het einde van uw link lijst. 83 00:03:59,170 --> 00:04:00,980 En je gewoon niet een pointer daar. 84 00:04:00,980 --> 00:04:04,659 >> En zo denken als, aan een ketting, of zelfs als iemand van jullie gemaakt, weet ik niet, 85 00:04:04,659 --> 00:04:06,450 zoals met Fruit Loops toen je klein was. 86 00:04:06,450 --> 00:04:08,590 Je zou string ze samen en draag ze rond je nek. 87 00:04:08,590 --> 00:04:09,840 Denk dat het precies hetzelfde. 88 00:04:09,840 --> 00:04:12,964 Je hebt deze kleine dingen die je kan achter elkaar dat punt één 89 00:04:12,964 --> 00:04:15,291 na, de een na het, enzovoort, enzovoort 90 00:04:15,291 --> 00:04:17,040 totdat je een keten van een datastructuur 91 00:04:17,040 --> 00:04:21,190 die u kunt gebruiken zoals u wilt. 92 00:04:21,190 --> 00:04:27,370 >> Zodat de manier waarop deze zouden we meestal voegen of te verwijderen 93 00:04:27,370 --> 00:04:30,020 elk knooppunt van een link lijst zeer verschillend 94 00:04:30,020 --> 00:04:31,970 afhankelijk van waar dat knooppunt. 95 00:04:31,970 --> 00:04:34,880 Dus, bijvoorbeeld omdat pointers zijn altijd 96 00:04:34,880 --> 00:04:38,645 die op een specifieke waarde, wanneer u verwijderen of plaats een knooppunt, 97 00:04:38,645 --> 00:04:41,770 wilt u ervoor zorgen dat de aanwijzer is al wijzend op de juiste dingen. 98 00:04:41,770 --> 00:04:46,200 >> Dus als je wilde potentieel voegen een nieuw knooppunt met de waarde van één 99 00:04:46,200 --> 00:04:48,379 in een gesorteerde koppeling lijst, wij allen hier weten 100 00:04:48,379 --> 00:04:51,170 uit het beeld dat gaat gaan tussen hoofd en twee, toch? 101 00:04:51,170 --> 00:04:52,620 Omdat men past daar. 102 00:04:52,620 --> 00:04:59,060 Maar de manier waarop we zouden doen is door eerst dereferentie de pointer 103 00:04:59,060 --> 00:05:02,160 van kop en verzenden die één. 104 00:05:02,160 --> 00:05:05,040 >> Maar we naar een probleem kom hier. 105 00:05:05,040 --> 00:05:08,280 Kan iedereen zien wat het probleem is als we eerst dereferentie 106 00:05:08,280 --> 00:05:10,090 de wijzer van kop tot één? 107 00:05:10,090 --> 00:05:14,202 Welk probleem kunnen we tegenkomen als we proberen om deze toe te voegen aan de voorkant van ons aanbod? 108 00:05:14,202 --> 00:05:15,409 >> PUBLIEK: [onverstaanbaar] 109 00:05:15,409 --> 00:05:16,200 Hoogleraar: Precies. 110 00:05:16,200 --> 00:05:20,000 Dus hier hebben we een pointer die was eenmaal gericht van de top tot twee. 111 00:05:20,000 --> 00:05:23,120 Maar als je te ontdoen van die krijgen wijzer, u wijzen op een, 112 00:05:23,120 --> 00:05:26,500 we hebben nu geen idee waar te gaan om twee te vinden. 113 00:05:26,500 --> 00:05:29,850 Want zoals ik al eerder zei, heb je een reusachtige brok van geheugen in de computer. 114 00:05:29,850 --> 00:05:31,860 Al deze knooppunten kunnen willekeurig worden afgewisseld 115 00:05:31,860 --> 00:05:33,350 in elke plaats in uw computer. 116 00:05:33,350 --> 00:05:36,140 En je weet niet hoe om te gaan over het vinden van dat. 117 00:05:36,140 --> 00:05:40,420 >> En dus moet je pointers hebben wijzend naar alle knooppunten eind. 118 00:05:40,420 --> 00:05:42,420 Of anders als je per ongeluk dereference een 119 00:05:42,420 --> 00:05:44,485 zonder eerst toewijzen een waarde eerste, je bent 120 00:05:44,485 --> 00:05:47,410 gewoon om te verliezen alles achteraf. 121 00:05:47,410 --> 00:05:49,720 >> Dus wat we gaan doen is, je zou eerst 122 00:05:49,720 --> 00:05:53,270 willen een pointer op te maken het knooppunt dat u wilt invoegen. 123 00:05:53,270 --> 00:05:55,270 Wijzen naar de plaats waar u willen voegen aan, 124 00:05:55,270 --> 00:05:59,410 en dan daarna je kon hoofd terug wijzen naar één. 125 00:05:59,410 --> 00:06:02,800 >> Heeft dat zin om iedereen hier? 126 00:06:02,800 --> 00:06:03,346 Grote. 127 00:06:03,346 --> 00:06:04,720 Zie het als net als een ketting. 128 00:06:04,720 --> 00:06:07,420 Als je een keten toe te voegen, het is een soort van intuïtieve 129 00:06:07,420 --> 00:06:10,742 hoe je het zou gaan over het plaatsen van dat. 130 00:06:10,742 --> 00:06:15,274 >> OK, dus dat is eigenlijk veel korter dan ik dacht dat het zou zijn, 131 00:06:15,274 --> 00:06:16,690 vijf minuten spiel op de link lijsten. 132 00:06:16,690 --> 00:06:19,960 Maar dat je jongens hebben de basisidee van wat dat is. 133 00:06:19,960 --> 00:06:23,580 >> Hier hebben we de agenda voor de quiz nul. 134 00:06:23,580 --> 00:06:24,895 Laat dit niet intimideren. 135 00:06:24,895 --> 00:06:26,270 Ik weet dat het een veel informatie. 136 00:06:26,270 --> 00:06:27,580 Het ziet er erg eng. 137 00:06:27,580 --> 00:06:33,130 Het is ook een veel, ik denk, CSC soort termen. 138 00:06:33,130 --> 00:06:37,440 Dingen als hexadecimale strings, pointers, dynamisch geheugen toewijzingen 139 00:06:37,440 --> 00:06:40,120 zijn heel eng klinkende termen. 140 00:06:40,120 --> 00:06:42,700 >> Maar we gaan om ze te breken naar beneden, doe wat oefening problemen 141 00:06:42,700 --> 00:06:44,980 zodat jullie allemaal zijn klaar voor deze test. 142 00:06:44,980 --> 00:06:47,104 Hoeveel van jullie hebben al begonnen met studeren? 143 00:06:47,104 --> 00:06:50,040 144 00:06:50,040 --> 00:06:53,670 >> Oké, jullie waarschijnlijk wilt om te beginnen aan de slag 145 00:06:53,670 --> 00:06:56,480 op dat, omdat de quiz is morgen. 146 00:06:56,480 --> 00:06:58,739 Of donderdag voor sommigen van jullie. 147 00:06:58,739 --> 00:07:01,030 Ja, dus we gaan om te gaan meer dan enige oefening problemen. 148 00:07:01,030 --> 00:07:04,600 Als jullie willen allemaal te nemen op een vel papier, een potlood. 149 00:07:04,600 --> 00:07:07,310 We gaan gewoon door te brengen van de overgrote meerderheid van de afdeling van vandaag 150 00:07:07,310 --> 00:07:11,590 gaat over enkele van die dus jullie hebben een idee van wat je kunt verwachten op de quiz. 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 Een paar van de logistieke Gegevens als goed, voor iedereen 154 00:07:19,730 --> 00:07:25,120 die niet naar die verwijzen is er, als ga je naar cs50.yale.edu, aan de voorzijde 155 00:07:25,120 --> 00:07:28,566 Deze pagina is er een link dat zegt: "Over Quiz Zero." 156 00:07:28,566 --> 00:07:29,440 Link brengt u daar. 157 00:07:29,440 --> 00:07:31,065 Als u nog niet gelezen, lees het. 158 00:07:31,065 --> 00:07:34,470 Want het vertelt je echt belangrijk informatie over de quiz. 159 00:07:34,470 --> 00:07:37,410 >> Ik ga dit te trekken uit dat alleen maar omdat, fysiek, 160 00:07:37,410 --> 00:07:40,200 als jullie weten niet waar om te gaan, zullen we problemen hebben. 161 00:07:40,200 --> 00:07:44,220 En dus als laatste in termen van A N, naar de wet school auditorium. 162 00:07:44,220 --> 00:07:47,500 En als laatste begint met P Z, naar Davies Auditorium. 163 00:07:47,500 --> 00:07:50,240 En dit geldt alleen voor mensen in de sectie woensdag. 164 00:07:50,240 --> 00:07:53,420 >> Als je met de quiz op Donderdag, ga je naar SSS 114 165 00:07:53,420 --> 00:07:55,078 waar uw college doorgaans is. 166 00:07:55,078 --> 00:07:55,953 PUBLIEK: [onverstaanbaar] 167 00:07:55,953 --> 00:07:59,316 168 00:07:59,316 --> 00:08:01,940 Hoogleraar: O tot Z, je gaat naar de Davies auditorium. 169 00:08:01,940 --> 00:08:03,273 Ik ga om dat te veranderen, toch? 170 00:08:03,273 --> 00:08:05,670 171 00:08:05,670 --> 00:08:09,698 >> Oh, ja, je automatisch mislukken. 172 00:08:09,698 --> 00:08:11,753 >> Oh ja, dat ben jij Christa. 173 00:08:11,753 --> 00:08:15,190 174 00:08:15,190 --> 00:08:16,030 Ja, mijn slechte. 175 00:08:16,030 --> 00:08:17,610 Yep, O tot Z, je gaat naar Davies Auditorim. 176 00:08:17,610 --> 00:08:19,140 Ik ga dit oplossen zodra ik uploaden. 177 00:08:19,140 --> 00:08:20,320 Ja. 178 00:08:20,320 --> 00:08:22,160 >> En dan ook nog iets belangrijk voor de geest 179 00:08:22,160 --> 00:08:25,290 is dat woensdag, als je officieel ingeschreven in de sectie woensdag, 180 00:08:25,290 --> 00:08:26,832 moet u uw quiz op woensdag. 181 00:08:26,832 --> 00:08:29,706 En als je bent ingeschreven in donderdag, moet u uw quiz donderdag nemen. 182 00:08:29,706 --> 00:08:31,000 En het is tijdens de les de tijd. 183 00:08:31,000 --> 00:08:35,970 Waar, ik denk dat het net om 01:00 02:15 op woensdag en 2:30-03:45 184 00:08:35,970 --> 00:08:37,220 op donderdag. 185 00:08:37,220 --> 00:08:41,710 >> Als u een onverzoenlijke conflicten, Dean's excuses zijn het enige, 186 00:08:41,710 --> 00:08:43,030 Helaas kunnen we nemen. 187 00:08:43,030 --> 00:08:45,560 Want we hebben een meeste verzoeken 188 00:08:45,560 --> 00:08:47,970 om over te schakelen van woensdag tot en met donderdag. 189 00:08:47,970 --> 00:08:51,265 Die we niet kunnen nakomen, tenzij We hebben een verzoek van een Dean's. 190 00:08:51,265 --> 00:08:52,650 >> OK. 191 00:08:52,650 --> 00:08:57,000 Dus voordat we aan de slag op een paar praktijk problemen, 192 00:08:57,000 --> 00:09:00,540 Ik ga gewoon om over te gaan Andy's handige tips voor succes. 193 00:09:00,540 --> 00:09:04,140 Jullie, als je studie, je echt wilt oefenen schrijven van code met de hand. 194 00:09:04,140 --> 00:09:07,050 De eerste keer dat ik ooit nam een ​​CS quiz, had ik niet 195 00:09:07,050 --> 00:09:09,960 de praktijk het schrijven van code met de hand voor en het was zeer 196 00:09:09,960 --> 00:09:11,890 schokkend hoe moeilijk het was. 197 00:09:11,890 --> 00:09:16,125 >> Als jullie niet te krijgen in de gewoonte van het typen van alles, 198 00:09:16,125 --> 00:09:20,260 het komt heel natuurlijk zijn kunnen hebben autocompleted 199 00:09:20,260 --> 00:09:22,015 beugels en puntkomma's daar. 200 00:09:22,015 --> 00:09:23,890 Als je het uitschrijven met de hand, soms is het 201 00:09:23,890 --> 00:09:27,100 heel, heel gemakkelijk om een ​​puntkomma te vergeten, of vergeten om een ​​beugel te sluiten, 202 00:09:27,100 --> 00:09:30,970 of vergeten om een ​​dubbele punt te sluiten, of zoiets. 203 00:09:30,970 --> 00:09:34,322 >> Dus als je code schrijft met de hand, het is een heel ander gevoel. 204 00:09:34,322 --> 00:09:37,280 Dus jullie, wanneer u werkt enkele van de praktijk problemen, 205 00:09:37,280 --> 00:09:38,904 Het zou goed zijn om echt te oefenen vandaag. 206 00:09:38,904 --> 00:09:41,770 Of morgen, denk ik, als je het nemen van de quiz op donderdag. 207 00:09:41,770 --> 00:09:45,280 >> Ten tweede hebben we de laatste, zoals, waarde van de praktijk van acht jaar 208 00:09:45,280 --> 00:09:47,070 quizzen online. 209 00:09:47,070 --> 00:09:50,759 Quiz van dit jaar zal waarschijnlijk zeer, zeer vergelijkbaar met elk van hen. 210 00:09:50,759 --> 00:09:51,800 Ze zijn allemaal zeer vergelijkbaar. 211 00:09:51,800 --> 00:09:54,220 Je soort van te krijgen in de stijl van het soort vragen 212 00:09:54,220 --> 00:09:57,250 dat wij vragen, het type functies die we zullen schrijven, 213 00:09:57,250 --> 00:09:58,580 et cetera, et cetera. 214 00:09:58,580 --> 00:10:01,980 >> Dus neem de praktijk quizzen, vooral onder tijdsdruk. 215 00:10:01,980 --> 00:10:05,390 75 minuten te doen de quiz is niet veel tijd. 216 00:10:05,390 --> 00:10:07,254 Het is heel, heel lang. 217 00:10:07,254 --> 00:10:09,670 En dus jullie echt wilt om ervoor te zorgen dat jullie zijn 218 00:10:09,670 --> 00:10:11,990 in de gewoonte van het schrijven code met de hand snel. 219 00:10:11,990 --> 00:10:15,070 Omdat je niet wilt dat de eerste tijd om een ​​quiz van die lengte te zien 220 00:10:15,070 --> 00:10:16,560 op uw quiz. 221 00:10:16,560 --> 00:10:20,540 Willen jullie echt om ervoor te zorgen dat u vooraf te oefenen. 222 00:10:20,540 --> 00:10:24,550 >> Ten vierde, wil je de recensie lezing en sectie glijbanen. 223 00:10:24,550 --> 00:10:25,980 Je hoeft niet om dingen te onthouden. 224 00:10:25,980 --> 00:10:30,430 Eigenlijk is iedereen toegestaan ​​een een vel wit papier notities, 225 00:10:30,430 --> 00:10:31,090 voor en achter. 226 00:10:31,090 --> 00:10:32,920 Jullie kunt typen of schrijven. 227 00:10:32,920 --> 00:10:37,070 Als je merkt dat je hoeft te onthouden iets, zet het neer op dat blad. 228 00:10:37,070 --> 00:10:40,810 >> Ik garandeer je, je niet wilt vast te zitten in het midden van die quiz 229 00:10:40,810 --> 00:10:43,890 het zijn als, oh ja, wat is het runtime van dit soort ten opzichte van dat soort. 230 00:10:43,890 --> 00:10:46,490 Zet ze gewoon neer en kopiëren rechtstreeks uit de notitie vel. 231 00:10:46,490 --> 00:10:50,420 Dan kun je eigenlijk alleen maar gebruik maken van uw hersenen om na te denken over de problemen 232 00:10:50,420 --> 00:10:52,190 in plaats van om de feiten te herinneren. 233 00:10:52,190 --> 00:10:55,250 En dus echt profiteren van elke niche gegevens 234 00:10:55,250 --> 00:11:00,140 dat je denkt dat je nodig hebt om te onthouden, plop het neer over de herziening vel. 235 00:11:00,140 --> 00:11:02,680 >> OK, vragen logistiek ten aanzien van de quiz 236 00:11:02,680 --> 00:11:05,510 voordat we beginnen met een aantal quiz problemen oefenen? 237 00:11:05,510 --> 00:11:06,416 Ja? 238 00:11:06,416 --> 00:11:10,040 >> Publiek: Ik heb niet de kans gehad om te kijken naar de quiz [onverstaanbaar] 239 00:11:10,040 --> 00:11:11,757 maar gaat het om toepassing meestal, 240 00:11:11,757 --> 00:11:14,090 of wordt er ook gaat worden, als, kennisvragen? 241 00:11:14,090 --> 00:11:14,940 >> Hoogleraar: Het is een stuk. 242 00:11:14,940 --> 00:11:16,731 Dus, de manier waarop ik zou de quiz beschreven 243 00:11:16,731 --> 00:11:18,810 is-- ik samen enige oefening problemen 244 00:11:18,810 --> 00:11:20,960 dat ik getrokken uit alle quizzen. 245 00:11:20,960 --> 00:11:25,210 Maar je zult zien dat er twee belangrijke soorten vragen we je vragen. 246 00:11:25,210 --> 00:11:28,750 >> Een daarvan is een zeer laag niveau detail van de spullen. 247 00:11:28,750 --> 00:11:31,720 We geven u een klein stuk van de code geven en zeggen, is er een fout hier? 248 00:11:31,720 --> 00:11:33,110 Wat zou worden afdrukken van hier? 249 00:11:33,110 --> 00:11:35,980 Wat zal deze code te produceren, et cetera. 250 00:11:35,980 --> 00:11:38,710 Dus zeer laag niveau informatie details. 251 00:11:38,710 --> 00:11:42,700 >> En aan de andere kant, we hebben erg hoog niveau kennis gebaseerde vragen. 252 00:11:42,700 --> 00:11:45,190 Kunt u uitleggen wat de verschil tussen een binaire zoekopdracht 253 00:11:45,190 --> 00:11:46,148 en een lineaire zoektocht is? 254 00:11:46,148 --> 00:11:48,500 Waarom zouden we willen gebruik maken van een over de ander? 255 00:11:48,500 --> 00:11:49,960 Misschien, wat is GDB? 256 00:11:49,960 --> 00:11:51,560 Daarom willen we GDB gebruiken? 257 00:11:51,560 --> 00:11:54,590 Hoger niveau, meer fundamentele begrip vragen. 258 00:11:54,590 --> 00:11:58,240 Dus je zult een mengsel van te zien de twee van hen op uw quiz. 259 00:11:58,240 --> 00:12:01,462 >> Iets anders voordat we hoofd recht in het? 260 00:12:01,462 --> 00:12:02,879 OK. 261 00:12:02,879 --> 00:12:03,670 Publiek: Een meer. 262 00:12:03,670 --> 00:12:04,030 Hoogleraar: Oh, nog een. 263 00:12:04,030 --> 00:12:04,340 Sorry. 264 00:12:04,340 --> 00:12:05,631 >> Publiek: Ja, het is al goed. 265 00:12:05,631 --> 00:12:10,140 Dus je zegt 75 minuten is te kort, als het onwaarschijnlijk 266 00:12:10,140 --> 00:12:11,640 dat we zullen eindigen? 267 00:12:11,640 --> 00:12:13,571 Of, zoals, 75 minuten is precies zoveel tijd 268 00:12:13,571 --> 00:12:15,700 als we zouden nodig hebben als we waren adequaat voorbereid? 269 00:12:15,700 --> 00:12:17,450 Hoogleraar: OK, dus het quiz is uitdagend. 270 00:12:17,450 --> 00:12:19,550 Het is zeker een uitdaging. 271 00:12:19,550 --> 00:12:21,092 Vind je jezelf kort op tijd. 272 00:12:21,092 --> 00:12:24,341 Je bent waarschijnlijk gaat raken, zoals 10, 15 minuten te gaan, en het zijn als, shit. 273 00:12:24,341 --> 00:12:25,520 Ik heb zo veel meer te doen. 274 00:12:25,520 --> 00:12:26,520 En dat is helemaal prima. 275 00:12:26,520 --> 00:12:28,740 Iedereen gaat op dezelfde manier voelen. 276 00:12:28,740 --> 00:12:31,074 >> Gewoon zeer bewust van hoeveel tijd heb je. 277 00:12:31,074 --> 00:12:33,490 En dat is waarom ik u vertellen jongens doen de praktijk quizzen. 278 00:12:33,490 --> 00:12:36,672 Omdat het echt geeft een groot gevoel van wat de quiz zal zijn als. 279 00:12:36,672 --> 00:12:39,130 Dus als je jezelf zijn kunnen de praktijk afgewerkte 280 00:12:39,130 --> 00:12:41,671 quizzen in een goede hoeveelheid tijd, kun je jezelf goed tempo, 281 00:12:41,671 --> 00:12:45,695 dan zul je niet een probleem op woensdag of donderdag. 282 00:12:45,695 --> 00:12:46,575 >> Koel. 283 00:12:46,575 --> 00:12:49,200 Dus als iedereen wants-- denk ik de meeste mensen hebben vellen papier 284 00:12:49,200 --> 00:12:49,810 al uit. 285 00:12:49,810 --> 00:12:52,604 Ik ga in wezen gewoon geven u voorbeelden van vragen, 286 00:12:52,604 --> 00:12:54,520 geven jullie, zoals een paar minuten om ze te doen. 287 00:12:54,520 --> 00:12:59,610 En we zullen gaan over als een klasse wat de antwoorden op hen. 288 00:12:59,610 --> 00:13:02,860 >> Dus dit is een typische vroeg vraag we zullen 289 00:13:02,860 --> 00:13:06,720 vraag u, alleen het omzetten getallen tussen verschillende bases. 290 00:13:06,720 --> 00:13:09,070 Binair, zoals jullie kunnen recall, is basis twee. 291 00:13:09,070 --> 00:13:12,470 Decimaal basis 10, of wat we als mensen meestal te interpreteren. 292 00:13:12,470 --> 00:13:17,120 Hexadecimaal is basis 16, welke nul door middel van negen evenals A tot en met F. 293 00:13:17,120 --> 00:13:19,990 >> Dus er is vier nummers ben ik vragen jullie om hier te zetten. 294 00:13:19,990 --> 00:13:23,909 Ik geef je drie tot vier minuten na te denken over hoe 295 00:13:23,909 --> 00:13:25,200 we zouden gaan over het oplossen van dit. 296 00:13:25,200 --> 00:13:32,832 297 00:13:32,832 --> 00:13:35,710 >> Publiek: Mogen we rekenmachines? 298 00:13:35,710 --> 00:13:37,630 >> Hoogleraar: U zult niet nodig rekenmachines, ja. 299 00:13:37,630 --> 00:13:42,420 Ik denk elementaire Daarnaast denk ik, is jullie allemaal zal worden gevraagd om te doen. 300 00:13:42,420 --> 00:14:41,700 301 00:14:41,700 --> 00:14:45,070 >> En net dus ik heb een soort van een gevoel wanneer iedereen klaar is, kijk omhoog, 302 00:14:45,070 --> 00:14:47,429 golf, ik weet het niet, glimlach, kijk blij zijn als je klaar bent. 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 Misschien een paar minuten. 306 00:17:23,945 --> 00:18:28,080 307 00:18:28,080 --> 00:18:29,600 >> Oké, laten we brengen in. 308 00:18:29,600 --> 00:18:31,580 Ik heb met opzet gaan geven jullie minder tijd 309 00:18:31,580 --> 00:18:33,760 dan heb je waarschijnlijk nodig hebt om sommige van deze problemen, 310 00:18:33,760 --> 00:18:37,124 gewoon omdat ik wil ervoor zorgen dat de krijgen we door een bos van problemen. 311 00:18:37,124 --> 00:18:39,290 Dus geen zorgen als je dat niet deden hebben een kans om te voltooien. 312 00:18:39,290 --> 00:18:43,770 Helemaal OK, zolang je hebt een idee van hoe om te gaan over dit. 313 00:18:43,770 --> 00:18:45,850 Dus laten we verder gaan en doen de eerste. 314 00:18:45,850 --> 00:18:52,690 315 00:18:52,690 --> 00:18:57,870 >> Dus eerst, wil iemand me vertellen in binaire, wat elk van deze cijfers doen 316 00:18:57,870 --> 00:19:00,484 vertegenwoordigen in termen van hun waarden? 317 00:19:00,484 --> 00:19:01,250 Ja? 318 00:19:01,250 --> 00:19:03,349 >> Publiek: Twee tot de stroom nul, 2-1. 319 00:19:03,349 --> 00:19:04,140 Hoogleraar: Precies. 320 00:19:04,140 --> 00:19:04,640 Zo. 321 00:19:04,640 --> 00:19:13,430 322 00:19:13,430 --> 00:19:16,430 >> Juist, zo typisch als we in de basis 10 323 00:19:16,430 --> 00:19:20,580 al deze vertegenwoordigen zijn, zoals, 10 naar de basis van nul, toch? 324 00:19:20,580 --> 00:19:21,810 Dat is uw één plaats. 325 00:19:21,810 --> 00:19:24,520 Al uw 10's plaats is 10 tot de macht van één. 326 00:19:24,520 --> 00:19:26,600 U 100's plaats 10 de macht van twee. 327 00:19:26,600 --> 00:19:29,570 >> Wat base je in gaat te maken met precies hetzelfde, 328 00:19:29,570 --> 00:19:31,480 gewoon met een andere basis. 329 00:19:31,480 --> 00:19:34,130 Dus binaire, alles wat is basis twee. 330 00:19:34,130 --> 00:19:37,110 Je gaat om te zetten alle cijfers in twee naar wat de macht 331 00:19:37,110 --> 00:19:38,190 van dat cijfer. 332 00:19:38,190 --> 00:19:41,450 Dus in deze zin zijn we kan een gemakkelijkere manier hebben 333 00:19:41,450 --> 00:19:43,800 te kunnen optellen of Kortom alle nummers in orde 334 00:19:43,800 --> 00:19:46,010 om te zetten in de basis 10. 335 00:19:46,010 --> 00:19:50,362 >> Dus doet iedereen wil me vertellen wat de antwoord op de eerste is in basis tien? 336 00:19:50,362 --> 00:19:51,674 >> PUBLIEK: Twee, [onverstaanbaar] 337 00:19:51,674 --> 00:19:52,340 Hoogleraar: Yeah. 338 00:19:52,340 --> 00:19:53,230 Publiek: 42. 339 00:19:53,230 --> 00:19:56,560 Hoogleraar: 42, daar ga je. 340 00:19:56,560 --> 00:20:00,660 Dus de manier waarop we dit antwoord was doet twee de eerste, dat is twee. 341 00:20:00,660 --> 00:20:02,760 Plus twee derde, die acht. 342 00:20:02,760 --> 00:20:07,590 En twee aan de vijfde, die is wat er overblijft. 343 00:20:07,590 --> 00:20:09,390 Je vatten ze op en het is 42. 344 00:20:09,390 --> 00:20:12,000 >> Is er iemand in de war over hoe we dat gekregen? 345 00:20:12,000 --> 00:20:15,630 Zo fundamenteel naast, net als Ik zei, je moet wel ok. 346 00:20:15,630 --> 00:20:17,410 Zo niet, nou ja, we kunnen ook de praktijk dat. 347 00:20:17,410 --> 00:20:18,720 Maar dat is in orde. 348 00:20:18,720 --> 00:20:20,560 Koel. 349 00:20:20,560 --> 00:20:25,570 >> Wil iemand mij geven antwoord op de tweede ook? 350 00:20:25,570 --> 00:20:26,860 >> 50? 351 00:20:26,860 --> 00:20:27,600 Goed. 352 00:20:27,600 --> 00:20:30,044 Iedereen in de war over hoe we dat ofwel? 353 00:20:30,044 --> 00:20:31,960 Cool, ik heb het antwoorden op de volgende dia. 354 00:20:31,960 --> 00:20:34,440 Dus geen zorgen als je nodig om het te kopiëren. 355 00:20:34,440 --> 00:20:38,860 >> OK, dus hexadecimaal is een beetje lastiger. 356 00:20:38,860 --> 00:20:41,840 maar ik ga je laten zien jongens een snelkoppeling voor hoe het te doen. 357 00:20:41,840 --> 00:20:44,800 Dus hexadecimale, zoals u vergeet niet, al is zijn 16. 358 00:20:44,800 --> 00:20:48,920 En omdat wij als mensen niet echt hebben 16 nummers te vertegenwoordigen dat, 359 00:20:48,920 --> 00:20:56,940 we gaan van nul tot negen, dat onze eerste 10 waarden, en dan A doen we door F, 360 00:20:56,940 --> 00:20:58,630 die de volgende zes waarden. 361 00:20:58,630 --> 00:21:03,040 >> En dus is de makkelijkste manier om te gaan van elk binair getal naar hexadecimaal 362 00:21:03,040 --> 00:21:05,350 om te breken in twee helften. 363 00:21:05,350 --> 00:21:10,042 En dus elke binaire getal we geven zul je waarschijnlijk acht cijfers. 364 00:21:10,042 --> 00:21:11,750 Je kunt gewoon breken ze in het midden. 365 00:21:11,750 --> 00:21:17,460 >> Dus de eerste een-- een één, een een, een, een, een één. 366 00:21:17,460 --> 00:21:21,340 Soort denken dat het op, je weet wel, tekenen een schuine streep of een komma tussen hen. 367 00:21:21,340 --> 00:21:23,800 En je kunt gewoon omzetten direct wat 368 00:21:23,800 --> 00:21:26,670 Dit is de eerste aantal hexadecimale, 369 00:21:26,670 --> 00:21:29,880 en wat hier is de tweede hexadecimale. 370 00:21:29,880 --> 00:21:37,584 >> Dus onthoud uit gewone notatie, wat hexadecimale waarden beginnen? 371 00:21:37,584 --> 00:21:38,460 >> Publiek: Zero. 372 00:21:38,460 --> 00:21:39,270 >> Hoogleraar: 0X. 373 00:21:39,270 --> 00:21:45,210 Dus we weten dat elke keer vragen wij u willekeurig aantal zetten naar hexadecimaal, 374 00:21:45,210 --> 00:21:48,230 of wanneer u elke zien nummer dat begint met 0X, 375 00:21:48,230 --> 00:21:50,230 je weet dat het een hexadecimale waarde. 376 00:21:50,230 --> 00:21:54,160 >> En dan zul je worden gevraagd om bepalen wat deze twee cijfers zijn. 377 00:21:54,160 --> 00:21:59,690 En de manier waarop je dat doet, tellen omhoog dat de helft en tellen tot de helft. 378 00:21:59,690 --> 00:22:02,870 In dit voorbeeld, wat zou een, een, een, een? 379 00:22:02,870 --> 00:22:04,890 Welke waarde zou dat zijn? 380 00:22:04,890 --> 00:22:06,040 Dat zou F, toch? 381 00:22:06,040 --> 00:22:08,050 Dat zou 15. 382 00:22:08,050 --> 00:22:11,780 >> Dus dit F. Eén zou zijn, een, een, een hier ook 383 00:22:11,780 --> 00:22:21,270 F. Dus een, een, een, een, een, een, een, één in hexadecimaal, al is het is 0xFF. 384 00:22:21,270 --> 00:22:25,350 Omdat dit de helft vertegenwoordigd F de waarde van 15, 385 00:22:25,350 --> 00:22:27,331 en dit de helft vertegenwoordigde F, de waarde 15. 386 00:22:27,331 --> 00:22:29,456 Want vergeet niet, we zijn tellen van nul tot negen. 387 00:22:29,456 --> 00:22:35,290 Een is net 10, B is net 11, F-15. 388 00:22:35,290 --> 00:22:41,690 >> Is dat zinvol voor iedereen hoe we kregen van binair naar hexadecimaal? 389 00:22:41,690 --> 00:22:44,595 >> Publiek: En hoe hebben we krijgen 15 van een, een, een, een? 390 00:22:44,595 --> 00:22:46,220 Hoogleraar: Ja, dit is binair, toch? 391 00:22:46,220 --> 00:22:48,090 Voorstellen dat dit is gewoon een binair getal. 392 00:22:48,090 --> 00:22:50,792 Dus je hebt twee om de nulde, één. 393 00:22:50,792 --> 00:22:51,500 PUBLIEK: Oh, OK. 394 00:22:51,500 --> 00:22:51,670 Dus je gewoon totaal het uit. 395 00:22:51,670 --> 00:22:52,670 >> Hoogleraar: Ja, en dan je gewoon totaal dat uit. 396 00:22:52,670 --> 00:22:53,380 Dat is alles wat het is. 397 00:22:53,380 --> 00:22:54,890 >> Publiek: OK. 398 00:22:54,890 --> 00:22:55,830 >> Hoogleraar: OK. 399 00:22:55,830 --> 00:23:00,740 >> Publiek: Dus ga je van binaire naar decimaal naar hexadecimaal? 400 00:23:00,740 --> 00:23:04,590 >> Hoogleraar: Dat is de makkelijkste manier om dat te doen, ja. 401 00:23:04,590 --> 00:23:11,390 Je gaat niet naar decimaal omdat decimaal alleen nul tot negen. 402 00:23:11,390 --> 00:23:13,410 We zijn gewoon een soort van Dit splitsen in twee. 403 00:23:13,410 --> 00:23:15,201 >> PUBLIEK: [onverstaanbaar] gebruik decimaal te vinden 404 00:23:15,201 --> 00:23:17,809 wat overeenkomt met maximaal hexadecimaal. 405 00:23:17,809 --> 00:23:20,100 Hoogleraar: Ik bedoel, je bent tellen met behulp van elementaire wiskunde. 406 00:23:20,100 --> 00:23:20,725 Publiek: Ja. 407 00:23:20,725 --> 00:23:22,300 Hoogleraar: Ja, vrij veel. 408 00:23:22,300 --> 00:23:23,630 Het is een beetje verwarrend. 409 00:23:23,630 --> 00:23:26,410 Maar weet dat je kan verdelen, ongeacht 410 00:23:26,410 --> 00:23:28,160 Deze waarde is in slechts helften. 411 00:23:28,160 --> 00:23:29,570 Kijk, wat is dit in binaire? 412 00:23:29,570 --> 00:23:30,610 Welk nummer is dat? 413 00:23:30,610 --> 00:23:33,270 Het gaat zijn iets van nul tot F. 414 00:23:33,270 --> 00:23:35,722 >> Hier wordt ook gaat worden iets van nul tot F. 415 00:23:35,722 --> 00:23:37,722 En dan kun je gewoon die twee daar. 416 00:23:37,722 --> 00:23:38,263 >> Publiek: OK. 417 00:23:38,263 --> 00:23:38,910 Hoogleraar: Yep. 418 00:23:38,910 --> 00:23:39,410 OK. 419 00:23:39,410 --> 00:23:42,320 Dus jullie willen Probeer de volgende men dan? 420 00:23:42,320 --> 00:23:49,601 Nul, een, een nul, een, nul, een nul. 421 00:23:49,601 --> 00:23:52,350 Ik zal jullie geven als 30 seconden, omdat je waarschijnlijk niet wist 422 00:23:52,350 --> 00:23:53,850 de truc om hoe dit eerder te doen. 423 00:23:53,850 --> 00:24:24,950 424 00:24:24,950 --> 00:24:27,381 >> OK, iedereen wil dit een te krijgen een schot? 425 00:24:27,381 --> 00:24:28,774 >> 0X5A. 426 00:24:28,774 --> 00:24:29,440 Hoogleraar: 0X5A. 427 00:24:29,440 --> 00:24:30,470 5a. 428 00:24:30,470 --> 00:24:31,340 Goed. 429 00:24:31,340 --> 00:24:37,050 Dus dit zou hier be-- je wilt om ons te vertellen hoe heb je dat? 430 00:24:37,050 --> 00:24:38,920 Ten eerste, hoe heb je de vijf? 431 00:24:38,920 --> 00:24:42,030 >> Publiek: Omdat nul, een, nul, een vijf. 432 00:24:42,030 --> 00:24:45,170 >> Hoogleraar: Heeft iedereen te begrijpen Daarom nul, één, nul, een vijf? 433 00:24:45,170 --> 00:24:46,260 Je hebt één hier kwam. 434 00:24:46,260 --> 00:24:48,010 Je hebt niets in twee tot de eerste. 435 00:24:48,010 --> 00:24:50,300 In twee van de tweede, je hebben één, die vier. 436 00:24:50,300 --> 00:24:52,600 Zodat je de vier plus toevoegen de een, je hebt vijf. 437 00:24:52,600 --> 00:24:53,600 Iedereen goed? 438 00:24:53,600 --> 00:24:54,100 OK. 439 00:24:54,100 --> 00:24:56,570 En wat deze zijn en waarom? 440 00:24:56,570 --> 00:24:58,350 Welk getal komt overeen met A? 441 00:24:58,350 --> 00:24:59,350 >> Publiek: 10. 442 00:24:59,350 --> 00:25:00,976 >> Hoogleraar: En wat dit in de basis twee? 443 00:25:00,976 --> 00:25:01,850 PUBLIEK: [onverstaanbaar] 444 00:25:01,850 --> 00:25:03,010 Hoogleraar: Precies. 445 00:25:03,010 --> 00:25:06,370 Dus dit tweede waarde zou hier 0X5A. 446 00:25:06,370 --> 00:25:08,410 >> Iedereen goed over hoe om te zetten? 447 00:25:08,410 --> 00:25:10,770 Het is een stuk eenvoudiger dan je denkt dat het is. 448 00:25:10,770 --> 00:25:13,330 Ik wil alleen maar om ervoor te zorgen weet je handige tips 449 00:25:13,330 --> 00:25:14,950 en trucs voor hoe dat te doen. 450 00:25:14,950 --> 00:25:18,432 >> PUBLIEK: Waarom kan je gewoon splitsen het in het midden als dat? 451 00:25:18,432 --> 00:25:21,390 Net als, OK, ik ga alleen naar zorg over deze eerste [onverstaanbaar]? 452 00:25:21,390 --> 00:25:24,240 >> Hoogleraar: Want dat is eigenlijk de manier hexadecimale waarden worden vertegenwoordigd. 453 00:25:24,240 --> 00:25:26,890 0X, dat eigenlijk betekent niets anders dan je te vertellen 454 00:25:26,890 --> 00:25:28,710 dat het een hexadecimaal getal. 455 00:25:28,710 --> 00:25:31,580 En dit altijd vertegenwoordigt de eerste vier cijfers. 456 00:25:31,580 --> 00:25:34,330 En dit altijd vertegenwoordigt de laatste vier cijfers. 457 00:25:34,330 --> 00:25:37,835 En dus deze twee cijfers net corresponderen met verschillende bits. 458 00:25:37,835 --> 00:25:39,200 >> Publiek: Dus we zullen always-- 459 00:25:39,200 --> 00:25:41,830 >> Hoogleraar: Je bent altijd gaat acht waarde stukjes te krijgen. 460 00:25:41,830 --> 00:25:44,580 >> PUBLIEK: Is dat net als een ding hier of die iets over? 461 00:25:44,580 --> 00:25:46,883 Hoogleraar: Dat is gewoon een ding in computers, yep. 462 00:25:46,883 --> 00:25:47,424 Publiek: OK. 463 00:25:47,424 --> 00:25:48,240 Geweldig. 464 00:25:48,240 --> 00:25:51,290 >> PROFESSOR: Ook, dus in dit voorbeeld we omgezet van binair naar decimaal, 465 00:25:51,290 --> 00:25:53,290 en van binair naar hexadecimaal. 466 00:25:53,290 --> 00:25:56,610 Jullie willen ook ervoor zorgen dat u de praktijk gaat het andersom. 467 00:25:56,610 --> 00:26:03,370 Dus als ik 0xFF gaf je, je kon trekken die in binaire, toch? 468 00:26:03,370 --> 00:26:06,820 >> Je zet F in binaire, die één, één, één, één, 469 00:26:06,820 --> 00:26:09,380 omzetten F naar binair, die is een, een, een, een. 470 00:26:09,380 --> 00:26:11,310 >> Dus kunnen wij u vragen om te doen andersom. 471 00:26:11,310 --> 00:26:14,817 Dus decimaal naar binair, of hexadecimaal naar binair. 472 00:26:14,817 --> 00:26:16,650 Dus je wilt maken dat u weet in beide richtingen. 473 00:26:16,650 --> 00:26:19,371 Wij zullen u waarschijnlijk vragen een combinatie van beide. 474 00:26:19,371 --> 00:26:20,660 >> Ja, heb je een vraag? 475 00:26:20,660 --> 00:26:22,724 Ik kan see-- je goed bent? 476 00:26:22,724 --> 00:26:23,348 Publiek: Ja. 477 00:26:23,348 --> 00:26:24,560 Hoogleraar: OK. 478 00:26:24,560 --> 00:26:26,101 Ben ik goed om dit te wissen? 479 00:26:26,101 --> 00:26:26,600 Grote. 480 00:26:26,600 --> 00:26:33,965 481 00:26:33,965 --> 00:26:40,437 >> Oké, dus antwoorden zijn hier als iedereen is nieuwsgierig later op en in de war raken. 482 00:26:40,437 --> 00:26:41,844 OK. 483 00:26:41,844 --> 00:26:46,070 >> Publiek: Maakt het uit of we zetten onze brieven in de hoofdstad of kleine letters? 484 00:26:46,070 --> 00:26:50,360 >> Hoogleraar: Het doet, omdat hexadecimaal, volgens afspraak, 485 00:26:50,360 --> 00:26:52,840 alle personages worden hoofdletters. 486 00:26:52,840 --> 00:26:54,650 Dus A tot F zijn gaan hoofdletters zijn. 487 00:26:54,650 --> 00:26:58,660 Als je een kleine letter a, ik weet het niet als we noodzakelijkerwijs markeren het verkeerd. 488 00:26:58,660 --> 00:27:00,679 Maar theoretisch, dat is technisch niet 489 00:27:00,679 --> 00:27:01,970 hoe je zou moeten hebben. 490 00:27:01,970 --> 00:27:03,303 Dus ze moeten allemaal hoofdletters. 491 00:27:03,303 --> 00:27:05,910 Ja, goede vraag. 492 00:27:05,910 --> 00:27:07,780 >> OK. 493 00:27:07,780 --> 00:27:08,790 De tweede vraag. 494 00:27:08,790 --> 00:27:12,750 Overwegen om hier dit mooie programma. 495 00:27:12,750 --> 00:27:15,180 Ik zal de vraag te stellen, Ik kom terug dit. 496 00:27:15,180 --> 00:27:23,170 >> Dus, ten eerste, wat is de binnenkant van standaard io.h dat is van belang voor het programma? 497 00:27:23,170 --> 00:27:26,640 Ten tweede, wat leegte doet betekenen in de regel drie? 498 00:27:26,640 --> 00:27:30,572 En ten derde, wat betekent terugkeren nul vanaf belangrijkste, zoals lijn zes, in het algemeen betekenen? 499 00:27:30,572 --> 00:27:33,280 Als jullie willen om die te schrijven naar beneden, want ik heb om terug te schakelen 500 00:27:33,280 --> 00:27:36,810 naar de dia gewoon zo kun je de code te zien. 501 00:27:36,810 --> 00:27:40,400 Dit is een voorbeeld van, net als, misschien een hogere vraag, waar wij u vragen 502 00:27:40,400 --> 00:27:42,435 wat dingen betekenen in een programma. 503 00:27:42,435 --> 00:27:47,290 504 00:27:47,290 --> 00:27:49,215 >> Iedereen goed voor mij om te ga terug naar de schuif? 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 Dus ik zal je jongens als misschien drie geven minuten om te kijken naar dit echt snel. 508 00:27:57,610 --> 00:28:41,330 509 00:28:41,330 --> 00:28:44,140 >> OK, dus dit is net als vrij eenvoudig, conceptueel. 510 00:28:44,140 --> 00:28:49,280 Wil iemand mij vertellen wat is eerst binnen door hash met inbegrip 511 00:28:49,280 --> 00:28:52,630 onze standaard io.h bibliotheek bestand? 512 00:28:52,630 --> 00:28:55,510 Waarom hebben we die bibliotheek nodig opgenomen voor dit programma? 513 00:28:55,510 --> 00:28:56,930 Wat hier doen we het voor nodig? 514 00:28:56,930 --> 00:28:56,980 >> Ja? 515 00:28:56,980 --> 00:28:58,340 >> PUBLIEK: Is dat wanneer je dat printf? 516 00:28:58,340 --> 00:28:59,131 >> Hoogleraar: Precies. 517 00:28:59,131 --> 00:29:01,780 Dus printf, wanneer u neem een ​​input van de gebruiker 518 00:29:01,780 --> 00:29:04,140 en afdrukken iets op het scherm, dat is 519 00:29:04,140 --> 00:29:05,600 de standaard input, output bibliotheek. 520 00:29:05,600 --> 00:29:07,170 Denk aan het op die ingang way--, output. 521 00:29:07,170 --> 00:29:08,430 >> Heb ik een uitgang? 522 00:29:08,430 --> 00:29:09,207 Ja, ik wil. 523 00:29:09,207 --> 00:29:12,040 Dus ik weet dat ik altijd zal moet het standaardiseren i.o bibliotheek. 524 00:29:12,040 --> 00:29:16,400 >> Dus printf is de functie waarbij we moeten openen 525 00:29:16,400 --> 00:29:19,370 en hashtag de standaard i.o bibliotheek. 526 00:29:19,370 --> 00:29:20,280 OK. 527 00:29:20,280 --> 00:29:22,660 >> Ten tweede is het wat doet leegte betekenen? 528 00:29:22,660 --> 00:29:26,970 We hebben de int main (void), wat doet vervalt hier bedoel hier op lijn drie? 529 00:29:26,970 --> 00:29:28,080 Ja, in de rug. 530 00:29:28,080 --> 00:29:29,020 >> PUBLIEK: [onverstaanbaar] 531 00:29:29,020 --> 00:29:29,920 >> Hoogleraar: Precies. 532 00:29:29,920 --> 00:29:33,320 Dus vergeet niet, we hebben geleerd te beginnen met onze PSET 533 00:29:33,320 --> 00:29:35,360 dat kun je eigenlijk specificeren opdrachtregel 534 00:29:35,360 --> 00:29:39,010 argumenten dat het programma, dat u belangrijkste functie, neemt als u, de gebruiker, 535 00:29:39,010 --> 00:29:39,650 noem het. 536 00:29:39,650 --> 00:29:42,650 Als we leegte, dat betekent dat je kon gewoon direct uit te voeren van het programma 537 00:29:42,650 --> 00:29:44,680 zonder enige command line argumenten. 538 00:29:44,680 --> 00:29:46,160 Iedereen duidelijk over? 539 00:29:46,160 --> 00:29:46,660 OK. 540 00:29:46,660 --> 00:29:52,850 >> En tenslotte waarom hebben we moeite doen deze terugkeer nul ding hier? 541 00:29:52,850 --> 00:29:54,740 Waarom hebben we zelfs een int main? 542 00:29:54,740 --> 00:29:57,330 Waarom kunnen we niet gewoon void main leegte? 543 00:29:57,330 --> 00:29:59,216 Ja? 544 00:29:59,216 --> 00:30:01,590 PUBLIEK: Net zo dat we kunnen er zeker van zijn dat het programma 545 00:30:01,590 --> 00:30:04,247 succesvol verlaten, zoals tegen wanneer het werd geteld. 546 00:30:04,247 --> 00:30:06,580 En we zouden weten dat dit een ander soort fout. 547 00:30:06,580 --> 00:30:07,621 >> Hoogleraar: Ja, precies. 548 00:30:07,621 --> 00:30:10,670 Dit is slechts een zeer conventionele ding dat we doen, 549 00:30:10,670 --> 00:30:13,840 dat net aan het einde van je programma, gewoon om er zeker 550 00:30:13,840 --> 00:30:15,830 dat uw belangrijkste functie correct loopt, 551 00:30:15,830 --> 00:30:17,940 we willen altijd terug op nul te doen. 552 00:30:17,940 --> 00:30:21,160 Hoewel we kunnen se niet zien overal dat gedrukt. 553 00:30:21,160 --> 00:30:25,092 >> Want zoals programmeurs, weet je, als heb je veel verschillende regels code 554 00:30:25,092 --> 00:30:27,050 en je weet niet waar deze zijn fout gaat, 555 00:30:27,050 --> 00:30:30,240 en als er een fout gebeurt dat u wilt zorg ervoor dat je die fout te krijgen. 556 00:30:30,240 --> 00:30:33,240 En zo typisch als er iets gaat verkeerde we zullen een terugkeer van een zojuist 557 00:30:33,240 --> 00:30:34,669 om ervoor te zorgen dat we weten dat het is. 558 00:30:34,669 --> 00:30:36,460 Dus als je ziet een terugkeer nul, die typisch 559 00:30:36,460 --> 00:30:38,293 betekent dat uw programma is succesvol uitgevoerd. 560 00:30:38,293 --> 00:30:40,490 561 00:30:40,490 --> 00:30:40,990 Goed? 562 00:30:40,990 --> 00:30:45,180 563 00:30:45,180 --> 00:30:45,680 Koel. 564 00:30:45,680 --> 00:30:48,710 565 00:30:48,710 --> 00:30:52,680 >> OK, tweede programma hier. 566 00:30:52,680 --> 00:30:54,827 Bedenk dat. 567 00:30:54,827 --> 00:30:56,910 En als jullie zien een zweven, kan jullie waarschijnlijk 568 00:30:56,910 --> 00:31:00,810 hebben een goed idee van wat Ik sta op het punt om u te vragen. 569 00:31:00,810 --> 00:31:05,200 >> Dus als dit programma uitvoert, zoals u kunt zien, 570 00:31:05,200 --> 00:31:09,330 Ik ben waarbij een drijver in mijn belangrijkste functie. 571 00:31:09,330 --> 00:31:13,470 Ik noem het "antwoord", en ik ben het instellen die gelijk is aan één gedeeld door 10. 572 00:31:13,470 --> 00:31:17,860 Ik ben het afdrukken van, één decimaal, dat vlotter. 573 00:31:17,860 --> 00:31:19,880 En dan ben ik terug op nul. 574 00:31:19,880 --> 00:31:24,470 >> Dus wanneer het programma uitvoert, denk nu terug naar hebzuchtig, 575 00:31:24,470 --> 00:31:26,550 Dit programma drukt 0.0. 576 00:31:26,550 --> 00:31:29,993 Zoals we allemaal weten, hopelijk alles wat we weet, een gedeeld door 10 is geen 0.00, 577 00:31:29,993 --> 00:31:32,350 Het is 0,1. 578 00:31:32,350 --> 00:31:37,810 Maar uitleggen waarom dit programma denkt die 1 gedeeld door 10 drukken tot 0,1 andere 579 00:31:37,810 --> 00:31:39,504 dan 0,1? 580 00:31:39,504 --> 00:31:42,545 Ik zal jullie misschien geven als 30 seconden om gewoon snel te denken over dat 581 00:31:42,545 --> 00:31:43,878 en ik kom terug om het programma te gaan. 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 Iedereen wil het een schot? 585 00:32:22,205 --> 00:32:24,330 In drie zinnen of minder, want meestal zijn we 586 00:32:24,330 --> 00:32:27,650 gaan alle antwoorden te beperken drie zinnen of minder 587 00:32:27,650 --> 00:32:31,130 zodat je niet alleen uitbraken willekeurige dingen op uw quiz. 588 00:32:31,130 --> 00:32:32,740 >> Ja, neem een ​​schot. 589 00:32:32,740 --> 00:32:36,390 >> Publiek: Dus ik denk dat er dit ding genaamd, zoals, [onverstaanbaar] 590 00:32:36,390 --> 00:32:42,320 Zo kunnen er bijvoorbeeld er zou kunnen zijn, als, 0,09, 591 00:32:42,320 --> 00:32:47,250 dat, wanneer u afdrukt de eerste cijferige, zou het zijn om 0.0? 592 00:32:47,250 --> 00:32:49,100 >> Hoogleraar: Close, niet helemaal. 593 00:32:49,100 --> 00:32:49,810 Christabell? 594 00:32:49,810 --> 00:32:51,770 >> Publiek: Je bent te delen één en 10, en ze zijn allebei gehele getallen. 595 00:32:51,770 --> 00:32:54,610 En dus is de manier waarop het gaat te slaan als een geheel. 596 00:32:54,610 --> 00:32:56,480 En dus is de dichtstbijzijnde integer zou zijn 0.0. 597 00:32:56,480 --> 00:32:57,471 En dus dat is 0,1. 598 00:32:57,471 --> 00:32:58,970 Hoogleraar: Ja, dat is echt goed. 599 00:32:58,970 --> 00:33:00,040 Dat is het juiste antwoord. 600 00:33:00,040 --> 00:33:03,597 Dus dit is een zeer verwarrend concept voor veel kinderen. 601 00:33:03,597 --> 00:33:06,680 En ik wil echt om ervoor te zorgen dat Dit wordt versterkt in ieders hoofd. 602 00:33:06,680 --> 00:33:10,090 >> Dus wat wij noemen drijvende punt onnauwkeurigheid, 603 00:33:10,090 --> 00:33:12,800 wanneer de reden waarom veel van uw programma's in gulzige 604 00:33:12,800 --> 00:33:17,010 aanvankelijk niet werken was omdat je vergeten bent om uw variabele werpen. 605 00:33:17,010 --> 00:33:19,370 Dus wat Christabell gezegd was helemaal correct. 606 00:33:19,370 --> 00:33:21,990 >> Een float is inherent onnauwkeurig. 607 00:33:21,990 --> 00:33:26,400 Want in een computer, recht, hebben we een eindige hoeveelheid bits geheugen 608 00:33:26,400 --> 00:33:28,480 we kunnen gebruiken om nummers te vertegenwoordigen. 609 00:33:28,480 --> 00:33:33,480 Dus, bijvoorbeeld, deze CS50 ID is-- Ik denk dat het een 64-bits computer. 610 00:33:33,480 --> 00:33:37,520 >> Een vlotter kan alleen worden weergegeven met een eindige hoeveelheid die bits. 611 00:33:37,520 --> 00:33:42,260 En zo 0,1 met oneindige nullen, dat was 0,1 is, toch? 612 00:33:42,260 --> 00:33:45,450 Maar we kunnen niet echt op te slaan dat nummer in onze computer. 613 00:33:45,450 --> 00:33:47,810 We hebben gewoon niet voldoende geheugen om dat te doen. 614 00:33:47,810 --> 00:33:52,340 >> En zo de dichtste benadering van wat er in het geheugen opgeslagen is eigenlijk 615 00:33:52,340 --> 00:33:55,390 zoiets 0.000 iets, iets, iets, iets. 616 00:33:55,390 --> 00:34:01,240 Die, als je eenmaal afkappen het, rondt af tot 0,0. 617 00:34:01,240 --> 00:34:05,640 >> En dus dit voorbeeld is slechts één die een goede illustratie veel problemen 618 00:34:05,640 --> 00:34:08,469 we hebben wanneer we proberen om wiskunde verkeerd doen 619 00:34:08,469 --> 00:34:11,000 zonder met een ander geheel getal. 620 00:34:11,000 --> 00:34:14,870 Dus gewoon op zijn hoede voor deze happening. 621 00:34:14,870 --> 00:34:18,239 >> Op quizzen, als wij geven u een blok van de code en het is alsof, 622 00:34:18,239 --> 00:34:19,510 wat drukt op het einde? 623 00:34:19,510 --> 00:34:24,096 En als het aantal willekeurige waarde die u jongens moeten weten waarom dat gebeurt. 624 00:34:24,096 --> 00:34:24,909 Ja? 625 00:34:24,909 --> 00:34:27,926 >> PUBLIEK: Truncate is zich te ontdoen van alles na een bepaald punt? 626 00:34:27,926 --> 00:34:28,513 [ONHOORBAAR] 627 00:34:28,513 --> 00:34:30,929 Hoogleraar: Ja, dus eigenlijk dit is echt een slecht voorbeeld, 628 00:34:30,929 --> 00:34:37,870 want 0.100 wat eigenlijk beneden zou inkorten tot 0,1. 629 00:34:37,870 --> 00:34:41,389 Maar als je naar het-- lopen doe ik niet vergeet niet, want vorig jaar hebben ze 630 00:34:41,389 --> 00:34:42,830 liep het op een ander programma. 631 00:34:42,830 --> 00:34:45,300 Ze liep het in iets genaamd de CS50 Appliance, die 632 00:34:45,300 --> 00:34:46,389 verschilt van de ID. 633 00:34:46,389 --> 00:34:48,520 Dat was een 32-bits systeem, denk ik. 634 00:34:48,520 --> 00:34:50,290 En zo waren er verschillende nummers. 635 00:34:50,290 --> 00:34:53,330 >> Maar in wezen, weet alleen dat het hele concept van afknotting 636 00:34:53,330 --> 00:34:54,815 en hoe het net snijdt dingen uit. 637 00:34:54,815 --> 00:34:55,690 En dus als het rounds-- 638 00:34:55,690 --> 00:34:56,300 >> Publiek: Zonder afronding. 639 00:34:56,300 --> 00:34:57,370 >> Hoogleraar: Precies. 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 Koel. 643 00:35:04,380 --> 00:35:05,250 >> Hallo, in de rug. 644 00:35:05,250 --> 00:35:07,634 We gaan gewoon over een aantal quiz beoordeling vragen. 645 00:35:07,634 --> 00:35:08,430 >> Prima. 646 00:35:08,430 --> 00:35:10,150 Dus overwegen om hier een ander programma. 647 00:35:10,150 --> 00:35:12,797 648 00:35:12,797 --> 00:35:15,380 Ik ga jullie geven paar minuten om te lezen dan dit. 649 00:35:15,380 --> 00:35:18,588 Dit is iets dat voor een zeer onlangs dat ik denk dat blies veel van jullie 650 00:35:18,588 --> 00:35:19,142 kerels's gedachten. 651 00:35:19,142 --> 00:35:21,100 Maar we gaan praten door dit weer gewoon 652 00:35:21,100 --> 00:35:24,152 om ervoor te zorgen dat u begrijp het helemaal. 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 Iedereen die meer tijd nodig te hebben Lees deze code? 657 00:35:44,342 --> 00:35:45,650 OK. 658 00:35:45,650 --> 00:35:50,630 >> Dus het lijkt me dat in dit programma ben ik 659 00:35:50,630 --> 00:35:53,460 creëren van twee strings met behulp GetString. 660 00:35:53,460 --> 00:35:55,180 Een zogenaamde s en een zogenaamde t. 661 00:35:55,180 --> 00:35:58,680 En als ze gelijk gelijk aan elkaar, 662 00:35:58,680 --> 00:36:00,880 het moet "Je afdrukken Typ hetzelfde. " 663 00:36:00,880 --> 00:36:04,170 >> Maar elsewise, zou het afdrukken " getypt verschillende dingen, "right? 664 00:36:04,170 --> 00:36:05,990 Lijkt zeer, zeer eenvoudig. 665 00:36:05,990 --> 00:36:08,720 Maar, maar als ik eigenlijk proberen om dit programma te schrijven, 666 00:36:08,720 --> 00:36:12,230 het lijkt erop dat zelfs wanneer ik ingang exact dezelfde strings, 667 00:36:12,230 --> 00:36:15,490 het nog steeds afgedrukt, "Je getypt verschillende dingen! " 668 00:36:15,490 --> 00:36:18,020 Wil iemand een te nemen schot op waarom dit programma altijd 669 00:36:18,020 --> 00:36:20,370 antwoordt de ingangen verschillend zijn, zelfs 670 00:36:20,370 --> 00:36:22,090 wanneer de woorden zelf hetzelfde? 671 00:36:22,090 --> 00:36:24,870 672 00:36:24,870 --> 00:36:29,170 >> Dus als ik David liefde input-- om een ​​voorbeeld te gebruiken als moeder, toch? 673 00:36:29,170 --> 00:36:37,890 Kleine letters M-O-M S, T evenaart kleine letters M-O-M. 674 00:36:37,890 --> 00:36:40,340 Als ik liep dit door middel van die code, waarom zou het 675 00:36:40,340 --> 00:36:44,180 uitprinten "je verschillende dingen typte?" 676 00:36:44,180 --> 00:36:46,336 >> Heeft iemand meer nodig tijd om na te denken over dit? 677 00:36:46,336 --> 00:36:47,294 OK, ik denk dat we goed. 678 00:36:47,294 --> 00:36:48,716 Ja? 679 00:36:48,716 --> 00:36:53,930 >> Publiek: OK, dus het is iets over waar het in het geheugen opgeslagen, toch? 680 00:36:53,930 --> 00:36:54,890 >> Hoogleraar: Yep. 681 00:36:54,890 --> 00:37:00,400 >> Publiek: Waar is het als, als dit touwtje s wordt opgeslagen bij het geheugen spot-- 682 00:37:00,400 --> 00:37:01,689 Ik uitvinden dit-- nul. 683 00:37:01,689 --> 00:37:02,355 Hoogleraar: Zeker. 684 00:37:02,355 --> 00:37:05,290 Publiek: En koord t wordt opgeslagen in het geheugen plaats, 685 00:37:05,290 --> 00:37:11,000 als, 167, en dan nul is niet gelijk aan 167. 686 00:37:11,000 --> 00:37:12,610 >> Hoogleraar: Precies. 687 00:37:12,610 --> 00:37:18,350 OK, dus vergeet niet deze ongelooflijke openbaring we uitgelegd aan jullie 688 00:37:18,350 --> 00:37:21,530 deze afgelopen week, dat snaren niet echt bestaan? 689 00:37:21,530 --> 00:37:25,380 Wanneer we iets te creëren genaamd touwtje we, in werkelijkheid, 690 00:37:25,380 --> 00:37:29,330 het creëren van iets genaamd char ster. 691 00:37:29,330 --> 00:37:34,470 Die al is het is een pointer naar een string of een array van karakters. 692 00:37:34,470 --> 00:37:39,480 >> Dus in dit voorbeeld als ik zouden ingang M-O-M weg 693 00:37:39,480 --> 00:37:49,350 dat mijn computer zou slaan is binnen geheugen backslash nul, toch? 694 00:37:49,350 --> 00:37:53,180 Deze vier karakters, tekens, zou ergens opgeslagen. 695 00:37:53,180 --> 00:37:59,290 >> En dan deze vier karakters, backslash nul, 696 00:37:59,290 --> 00:38:01,275 zijn ergens anders opgeslagen, toch? 697 00:38:01,275 --> 00:38:04,685 Ik heb geen idee waar de adressen zijn, ze zijn ergens in mijn computer. 698 00:38:04,685 --> 00:38:07,080 Maar ik weet niet precies waar ze zijn. 699 00:38:07,080 --> 00:38:10,170 >> Wanneer ik een string s, dat alles echt is 700 00:38:10,170 --> 00:38:15,550 is een aanwijzer naar de begin van deze string. 701 00:38:15,550 --> 00:38:21,130 En wanneer ik deze t-waarde, alles is een pointer naar hier. 702 00:38:21,130 --> 00:38:23,980 En dus wanneer je probeert gelijk te stellen en te controleren 703 00:38:23,980 --> 00:38:27,710 om te zien of s gelijken gelijk aan t, de computer 704 00:38:27,710 --> 00:38:31,635 is eigenlijk gewoon terug te keren naar u het adres van deze m 705 00:38:31,635 --> 00:38:33,390 en het adres van die meter. 706 00:38:33,390 --> 00:38:36,230 En omdat ze twee afzonderlijke stukken data 707 00:38:36,230 --> 00:38:38,750 die zijn opgeslagen in twee verschillende adressen in uw computer, 708 00:38:38,750 --> 00:38:41,750 uw computer gaat nooit ze herkennen als hetzelfde. 709 00:38:41,750 --> 00:38:43,500 Wil iemand een schot op wat we 710 00:38:43,500 --> 00:38:46,900 zou moeten doen als we wilden te corrigeren Hierdoor en een correcte lopend programma 711 00:38:46,900 --> 00:38:49,360 in plaats daarvan? 712 00:38:49,360 --> 00:38:52,070 Denk daar eens over voor een paar seconden. 713 00:38:52,070 --> 00:38:54,929 Wat hebben we nodig om te veranderen naar dit programma krijgen functioneren 714 00:38:54,929 --> 00:38:56,220 de manier waarop we willen dat het functioneren? 715 00:38:56,220 --> 00:39:17,260 716 00:39:17,260 --> 00:39:18,918 >> Ja, willen een steek te nemen op het? 717 00:39:18,918 --> 00:39:24,082 >> Publiek: Kunnen we proberen om dereferentie de pointer en controleren door middel van de serie? 718 00:39:24,082 --> 00:39:25,540 Hoogleraar: Dat is een manier om het te doen. 719 00:39:25,540 --> 00:39:27,880 Dus, wat is opnieuw uw naam? 720 00:39:27,880 --> 00:39:29,010 Het spijt me, herinneren me. 721 00:39:29,010 --> 00:39:29,589 >> Zee: Zee. 722 00:39:29,589 --> 00:39:32,130 Hoogleraar: Ja, dus wat Zee gesuggereerd zou absoluut werken. 723 00:39:32,130 --> 00:39:32,629 Rechts? 724 00:39:32,629 --> 00:39:35,730 We konden dereferentie de pointer en daadwerkelijk te gaan en de toegang 725 00:39:35,730 --> 00:39:38,460 de fysieke data binnenkant van hier. 726 00:39:38,460 --> 00:39:40,300 En we kunnen alleen maar vergelijken het hele scherm. 727 00:39:40,300 --> 00:39:43,670 >> We kunnen zeggen, OK, wijzer, geef me wat er binnen hier. 728 00:39:43,670 --> 00:39:44,960 Het zou m terugkeren. 729 00:39:44,960 --> 00:39:47,168 En ik zou zeggen, wijzer, geef me wat er binnen hier. 730 00:39:47,168 --> 00:39:47,750 Terug een m. 731 00:39:47,750 --> 00:39:48,410 Doe die wedstrijd? 732 00:39:48,410 --> 00:39:49,410 Ja. 733 00:39:49,410 --> 00:39:50,340 Dan gaan we verder. 734 00:39:50,340 --> 00:39:54,240 >> We blijven controleren van de gehele twee snaren helemaal tot het einde 735 00:39:54,240 --> 00:39:56,635 en kijk of die gelijk zijn, Als de waarden gelijk zijn. 736 00:39:56,635 --> 00:39:59,680 Als de waarden gelijk zijn, dan weten we de snaren waar zijn. 737 00:39:59,680 --> 00:40:01,600 Absoluut, dat is hoe we het zou doen? 738 00:40:01,600 --> 00:40:03,930 >> Is er iemand die verward op een van deze? 739 00:40:03,930 --> 00:40:06,970 Het hele concept van hoe strings zijn echt gewoon pointers, 740 00:40:06,970 --> 00:40:08,440 en hoe ze niet echt bestaan? 741 00:40:08,440 --> 00:40:10,480 En waarom krijgen we fouten zoals de manier waarop we het? 742 00:40:10,480 --> 00:40:15,070 Omdat ik garandeer jullie, wijzers en strijkorkest toewijzing en het geheugen 743 00:40:15,070 --> 00:40:16,470 zullen komen. 744 00:40:16,470 --> 00:40:17,410 >> Ja? 745 00:40:17,410 --> 00:40:21,072 >> PUBLIEK: [onverstaanbaar] dereferentie het, zet je gewoon een ster [onverstaanbaar] 746 00:40:21,072 --> 00:40:21,780 Hoogleraar: Recht. 747 00:40:21,780 --> 00:40:28,430 Dus om een ​​pointer middel derererence naar dat adres van de aanwijzer 748 00:40:28,430 --> 00:40:30,390 en er verkrijgen van de data, de waarde. 749 00:40:30,390 --> 00:40:32,700 En de manier om dat te doen is ster pointer. 750 00:40:32,700 --> 00:40:34,262 Niet te verwarren dat. 751 00:40:34,262 --> 00:40:35,186 >> PUBLIEK: [onverstaanbaar]. 752 00:40:35,186 --> 00:40:35,852 >> Hoogleraar: Yeah. 753 00:40:35,852 --> 00:40:39,750 Publiek: Dus u kunt gewoon schrijven als ster s gelijke gelijken ster t. 754 00:40:39,750 --> 00:40:40,630 >> Hoogleraar: Nou, nee. 755 00:40:40,630 --> 00:40:40,960 Nee. 756 00:40:40,960 --> 00:40:41,640 >> Publiek: Dat is niet goed genoeg, toch? 757 00:40:41,640 --> 00:40:43,760 >> Hoogleraar: Het is niet, omdat je alleen het controleren van de eerste letter. 758 00:40:43,760 --> 00:40:46,010 Je bent waarschijnlijk gaan moet een soort van een lus die 759 00:40:46,010 --> 00:40:49,055 doorloopt elke teken in beide reeksen. 760 00:40:49,055 --> 00:40:49,837 Ja. 761 00:40:49,837 --> 00:40:52,920 Dus als je wilde gewoon controleren om te zien als ze begonnen met het zelfde ding, 762 00:40:52,920 --> 00:40:58,220 u kunt doen als, ster s is gelijk aan ster t. 763 00:40:58,220 --> 00:41:01,300 Dan weet je dat tenminste ze begon met hetzelfde karakter. 764 00:41:01,300 --> 00:41:01,952 >> Ja? 765 00:41:01,952 --> 00:41:04,056 >> Publiek: Dus de manier je dat zou 766 00:41:04,056 --> 00:41:06,064 als een ingesloten voor loop of pointer? 767 00:41:06,064 --> 00:41:06,730 Hoogleraar: Yeah. 768 00:41:06,730 --> 00:41:08,170 Vrijwel alleen een lus. 769 00:41:08,170 --> 00:41:12,430 Vergeet niet, David in de klas genoemd de vrije syntactische suiker? 770 00:41:12,430 --> 00:41:17,690 En hij dit erg had verwarrende ding van de ster t 771 00:41:17,690 --> 00:41:22,030 plus één, waar het zou integreren door en hij de aanwijzer? 772 00:41:22,030 --> 00:41:29,910 De eenvoudiger manier van doen dit is gewoon t i. 773 00:41:29,910 --> 00:41:31,090 >> Dus het is gewoon een array. 774 00:41:31,090 --> 00:41:34,630 De manier waarop je zou hebben voor lus die liep van nul tot i, waarbij 775 00:41:34,630 --> 00:41:36,580 i de lengte van het touwtje, kon je gewoon 776 00:41:36,580 --> 00:41:39,510 schrijven dat in plaats van het doen van de hele wijzer, referentie ding. 777 00:41:39,510 --> 00:41:43,510 Dus deze dingen zijn precies equivalent in uw computer. 778 00:41:43,510 --> 00:41:45,905 >> Jullie waarschijnlijk niet moeten weten dat, 779 00:41:45,905 --> 00:41:48,280 maar het is goed om gewoon een soort van hebben in de rug je geest. 780 00:41:48,280 --> 00:41:52,630 Weet gewoon dat de computer herkent verschillende blokken code 781 00:41:52,630 --> 00:41:53,890 als hetzelfde. 782 00:41:53,890 --> 00:41:57,510 Want dit is gewoon veel gebruiksvriendelijker vriendelijk voor ons om het te presenteren zoals het is 783 00:41:57,510 --> 00:41:58,150 een array. 784 00:41:58,150 --> 00:42:00,990 Het is gewoon makkelijker. 785 00:42:00,990 --> 00:42:02,719 >> Publiek: Dus gebruik strlen leuk te vinden, get-- 786 00:42:02,719 --> 00:42:03,385 Hoogleraar: Yeah. 787 00:42:03,385 --> 00:42:03,926 Publiek: OK. 788 00:42:03,926 --> 00:42:05,940 Hoogleraar: Je zou strlen gebruiken of, als u 789 00:42:05,940 --> 00:42:10,420 had niet strlen je gewoon kunt doen up totdat je hit backslash nul voor beide. 790 00:42:10,420 --> 00:42:11,568 Ofwel zou werken. 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 Publiek: Dus het is om dereferentie elke enkel karakter als we eigenlijk waren 794 00:42:17,996 --> 00:42:21,044 het schrijven van deze code, we kon gewoon doen t beugels i 795 00:42:21,044 --> 00:42:22,460 graag met de ster in de voorkant van het? 796 00:42:22,460 --> 00:42:27,700 >> Hoogleraar: Ja, evenaart gelijken s beugel i, en dan blijven bewegen i 797 00:42:27,700 --> 00:42:29,790 down up totdat je het einde te raken. 798 00:42:29,790 --> 00:42:31,286 Ja, dat is wat je zou doen. 799 00:42:31,286 --> 00:42:33,660 En ik eigenlijk een volgende Bijvoorbeeld wanneer we eigenlijk 800 00:42:33,660 --> 00:42:36,740 schrijf strlen dus je jongens zullen soort te krijgen om te spelen met het een beetje. 801 00:42:36,740 --> 00:42:43,567 >> Dus is iedereen duidelijk gewoon geheugen, strijkers, wijzers, kwaliteit adressen? 802 00:42:43,567 --> 00:42:46,650 Sommige hoger niveau concepten die u zal zeker behoefte om te weten over de quiz 803 00:42:46,650 --> 00:42:48,928 morgen. 804 00:42:48,928 --> 00:42:49,904 >> Prima. 805 00:42:49,904 --> 00:42:50,404 Goed. 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, dus een ding dat we ook vragen je, zoals we elk jaar doen op een quiz, is, 810 00:43:04,180 --> 00:43:08,340 Stel dat u bent vergeten (die we lijken te vergeten om jaarlijks te doen) 811 00:43:08,340 --> 00:43:10,810 waarin header bestand strlen wordt verklaard. 812 00:43:10,810 --> 00:43:13,860 En dus moeten we het zelf te herschrijven. 813 00:43:13,860 --> 00:43:16,350 >> Hier zijn een lijst van richtsnoeren wij u presenteren 814 00:43:16,350 --> 00:43:20,660 kerels waar je om te veronderstellen dat s van de reeks zal niet nul. 815 00:43:20,660 --> 00:43:23,830 U kunt aannemen dat s zal afgesloten met een backslash nul. 816 00:43:23,830 --> 00:43:26,670 Zodat je weet dat is wat het gaat eindigen. 817 00:43:26,670 --> 00:43:29,500 >> En, bijvoorbeeld dat de lengte van hello zou vijf. 818 00:43:29,500 --> 00:43:32,890 Dus je kunt ervan uitgaan dat hello zullen vijf, H-E-L-L-O zijn. 819 00:43:32,890 --> 00:43:35,890 Je hoeft niet aan te nemen dat de achtereind nul is goed voor de lengte. 820 00:43:35,890 --> 00:43:39,720 821 00:43:39,720 --> 00:43:42,300 >> Dit laatste wat hier niet zorgen te maken over integer overflow. 822 00:43:42,300 --> 00:43:45,270 Heeft iemand herinneren wat integer overflow is? 823 00:43:45,270 --> 00:43:48,041 >> Publiek: gaat verder dan de lengte van de [onverstaanbaar]. 824 00:43:48,041 --> 00:43:50,740 >> Hoogleraar: Ja, kunt u uitleggen een beetje, wat betekent dat? 825 00:43:50,740 --> 00:43:55,330 >> Publiek: Dus, ik denk dat het gaat terug het afknotten eerdere voorbeeld. 826 00:43:55,330 --> 00:43:58,380 Maar als je net zo veel nummers die verder gaan dan het aantal bits 827 00:43:58,380 --> 00:44:01,409 dat je daadwerkelijk kunt toewijzen dat het gewoon een soort zal afgesneden. 828 00:44:01,409 --> 00:44:04,242 Hoogleraar: Ja, dus op een typische computer, hoeveel bits hebben we? 829 00:44:04,242 --> 00:44:05,306 Publiek: 32? 830 00:44:05,306 --> 00:44:06,430 Hoogleraar: Ja, 32, rechts. 831 00:44:06,430 --> 00:44:10,030 En dus dat is, wat, vier miljard twee miljard? 832 00:44:10,030 --> 00:44:13,579 Vier miljard, tot vier miljard positieve gehele getallen, toch? 833 00:44:13,579 --> 00:44:15,370 Twee miljard negatief, twee miljard positief, 834 00:44:15,370 --> 00:44:16,900 hangt af van hoe je het wilt doen. 835 00:44:16,900 --> 00:44:21,470 >> En dus in principe kunnen we genoeg integers die kan gaan 836 00:44:21,470 --> 00:44:25,800 twee tot de 31 min 1, toch? 837 00:44:25,800 --> 00:44:27,980 Want zodra we raakte twee naar de 32, wij niet 838 00:44:27,980 --> 00:44:30,040 dat veel geheugen in onze computer. 839 00:44:30,040 --> 00:44:32,310 >> En dus, in theorie, ik kon komen met een aantal 840 00:44:32,310 --> 00:44:34,560 dat is, net als twee van de 46. 841 00:44:34,560 --> 00:44:38,040 Het is een enorme-ass nummer, maar in theorie je kon. 842 00:44:38,040 --> 00:44:42,730 En zo integer overflow is als u probeert om zorgen voor een geheel getal dat verder gaat dan 843 00:44:42,730 --> 00:44:44,790 de computer kan bewaren. 844 00:44:44,790 --> 00:44:46,590 >> En dus jullie voor dit voorbeeld hebben geen 845 00:44:46,590 --> 00:44:51,330 zorgen te maken over ons geven je een gigantische tekenreeks die twee om de 32 tekens 846 00:44:51,330 --> 00:44:51,830 lang. 847 00:44:51,830 --> 00:44:54,010 Dat zou echt betekenen. 848 00:44:54,010 --> 00:44:59,430 >> Oké, dus ik ga gewoon op te geven jullie de basisstructuur van dit. 849 00:44:59,430 --> 00:45:02,020 Je gaat om het creëren van een functie genaamd int strlen, waar 850 00:45:02,020 --> 00:45:08,436 een passeren, een char ster, of touw, pointer naar de string genaamd s. 851 00:45:08,436 --> 00:45:10,820 >> Oké, iedereen kopieert die naar beneden. 852 00:45:10,820 --> 00:45:13,550 853 00:45:13,550 --> 00:45:14,850 Koel. 854 00:45:14,850 --> 00:45:17,020 Oops-- andersom. 855 00:45:17,020 --> 00:45:21,360 >> Dus dit is een soort van als een harder stukje van het probleem, 856 00:45:21,360 --> 00:45:25,320 dus ik zal jullie misschien vijf te geven zes minuten voor soort brainstorm 857 00:45:25,320 --> 00:45:27,478 en schrijf deze functie uit. 858 00:45:27,478 --> 00:45:29,710 >> PUBLIEK: We doen niet goed voor [onhoorbaar] 859 00:45:29,710 --> 00:45:30,200 we hoeven niet te integer gebruiken? 860 00:45:30,200 --> 00:45:31,241 >> Hoogleraar: Nee, dat hoeft niet. 861 00:45:31,241 --> 00:48:05,847 862 00:48:05,847 --> 00:48:06,930 Ik geef je jongens een hint. 863 00:48:06,930 --> 00:48:12,325 Een tijdje lus kan hier zeer nuttig zijn. 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 Hier is 867 00:48:45,495 --> 00:48:45,995 snoep. 868 00:48:45,995 --> 00:48:49,980 869 00:48:49,980 --> 00:48:53,410 Snoep zal ook beschikbaar zijn voor de quiz, denk ik. 870 00:48:53,410 --> 00:48:55,315 Dus jullie zullen allemaal gesuikerde morgen. 871 00:48:55,315 --> 00:49:01,110 872 00:49:01,110 --> 00:49:02,962 Kan Ik-- je het hebt. 873 00:49:02,962 --> 00:49:03,718 >> Publiek: OK. 874 00:49:03,718 --> 00:49:04,384 Hoogleraar: Yeah. 875 00:49:04,384 --> 00:49:10,550 876 00:49:10,550 --> 00:49:11,870 >> Misschien 30 seconden of zo. 877 00:49:11,870 --> 00:50:02,220 878 00:50:02,220 --> 00:50:07,340 >> Oké, als je niet gedaan, geen zorgen. 879 00:50:07,340 --> 00:50:08,810 We zullen samen door deze te verplaatsen. 880 00:50:08,810 --> 00:50:09,310 OK. 881 00:50:09,310 --> 00:50:13,800 Dus ik ga gewoon de lay-out van de basisstructuur voor deze functie in. 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 Eerste, doet iedereen wil vertellen me wat dat betekent int? 885 00:50:23,460 --> 00:50:25,160 We nodig hebben in deze functie. 886 00:50:25,160 --> 00:50:26,709 >> PUBLIEK: strlen [onverstaanbaar]. 887 00:50:26,709 --> 00:50:27,500 Hoogleraar: Precies. 888 00:50:27,500 --> 00:50:31,140 Dus wat er ook gebeurt hier, moeten we een integer terug. 889 00:50:31,140 --> 00:50:36,367 En zoals aangegeven in het spec, willen we return-- 890 00:50:36,367 --> 00:50:37,700 Go for it guys, gewoon doorgaan. 891 00:50:37,700 --> 00:50:40,480 Het is al goed. 892 00:50:40,480 --> 00:50:42,960 Eten het allemaal, dus ik heb geen om het terug te nemen, eigenlijk. 893 00:50:42,960 --> 00:50:46,022 894 00:50:46,022 --> 00:50:48,855 De int gewoon betekent dat je zal terugkeren een integer. 895 00:50:48,855 --> 00:50:55,350 896 00:50:55,350 --> 00:50:57,106 >> Wat is dit char ster s? 897 00:50:57,106 --> 00:50:58,640 Wat betekent dat? 898 00:50:58,640 --> 00:51:00,879 >> PUBLIEK: Zoals, wat wordt ingevoerd in. 899 00:51:00,879 --> 00:51:01,670 Hoogleraar: Precies. 900 00:51:01,670 --> 00:51:04,142 En wat is bijna de hetzelfde als char ster? 901 00:51:04,142 --> 00:51:04,850 PUBLIEK: String? 902 00:51:04,850 --> 00:51:05,641 Hoogleraar: Precies. 903 00:51:05,641 --> 00:51:09,080 Dus alles wat we doen is het geven Dit een pointer naar een string. 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 Koel. 907 00:51:13,360 --> 00:51:16,650 >> Ook, vergeet niet, als wij vergeten u deze beugels geven, 908 00:51:16,650 --> 00:51:18,330 vergeet niet om ze zelf te schrijven. 909 00:51:18,330 --> 00:51:20,720 Omdat theoretisch, de code is onjuist als je vergeet om ze te schrijven. 910 00:51:20,720 --> 00:51:21,803 Gewoon altijd opletten. 911 00:51:21,803 --> 00:51:23,750 Zoals, kleine dingen dat je niet in de gaten 912 00:51:23,750 --> 00:51:26,917 als je het programmeren op uw laptop, omdat uw laptop doet het voor je? 913 00:51:26,917 --> 00:51:28,624 Vergeet niet bij je bent het schrijven met de hand. 914 00:51:28,624 --> 00:51:29,170 Ja? 915 00:51:29,170 --> 00:51:30,954 >> Publiek: Maar hoe verkeerd? 916 00:51:30,954 --> 00:51:33,190 Zoals, krijgen we het hele probleem verkeerd? 917 00:51:33,190 --> 00:51:34,190 >> Hoogleraar: Nee, nee. 918 00:51:34,190 --> 00:51:34,860 Maak je geen zorgen. 919 00:51:34,860 --> 00:51:39,270 Het is eigenlijk theoretisch mogelijk voor u om de volledige punten te krijgen op een vraag 920 00:51:39,270 --> 00:51:41,980 zelfs als uw code zal nooit lopen in het echte leven. 921 00:51:41,980 --> 00:51:46,052 Ik stel voor dat je niet proberen om dat te realiseren. 922 00:51:46,052 --> 00:51:48,260 Bijvoorbeeld, alsof alles dat is hier juist is, 923 00:51:48,260 --> 00:51:51,850 maar je moet een dubbele punt of een beugel te vergeten, de code zal niet daadwerkelijk uitgevoerd. 924 00:51:51,850 --> 00:51:53,740 Maar we kunnen barmhartig zijn. 925 00:51:53,740 --> 00:51:54,394 >> Ja? 926 00:51:54,394 --> 00:51:56,050 >> Publiek: Moet je commentaar op onze handschrift? 927 00:51:56,050 --> 00:51:57,758 >> Hoogleraar: Nee, nee, nee zorgen over dat. 928 00:51:57,758 --> 00:51:58,440 Geen commentaar. 929 00:51:58,440 --> 00:51:59,400 Stijl moet goed zijn. 930 00:51:59,400 --> 00:52:01,470 Zoals, niet smush alles op één lijn. 931 00:52:01,470 --> 00:52:04,580 We zullen niet blij zijn met u als u dat doet. 932 00:52:04,580 --> 00:52:07,250 >> Wil iemand geef mij de eerste lijn? 933 00:52:07,250 --> 00:52:08,633 Hint, het is heel gemakkelijk. 934 00:52:08,633 --> 00:52:09,320 >> Ja? 935 00:52:09,320 --> 00:52:11,920 >> PUBLIEK: Int, n gelijk is aan nul. 936 00:52:11,920 --> 00:52:13,734 Gewoon opzetten teller. 937 00:52:13,734 --> 00:52:15,900 Hoogleraar: Dus willen we een aantal soort van een teller, toch? 938 00:52:15,900 --> 00:52:19,780 Ik ga gewoon om het te noemen "count" omwille van de leesbaarheid. 939 00:52:19,780 --> 00:52:21,265 Wat willen we in te stellen dat gelijk is aan? 940 00:52:21,265 --> 00:52:21,890 >> Publiek: Zero. 941 00:52:21,890 --> 00:52:23,840 Hoogleraar: Yep. 942 00:52:23,840 --> 00:52:24,340 Puntkomma. 943 00:52:24,340 --> 00:52:26,250 Het is ook heel raar tekening puntkomma. 944 00:52:26,250 --> 00:52:28,870 Gewoon de praktijk dat te doen. 945 00:52:28,870 --> 00:52:31,990 >> Dus we willen eerst een teller van het type int. 946 00:52:31,990 --> 00:52:35,360 Omdat we willen tellen hoe veel tekens of letters zijn 947 00:52:35,360 --> 00:52:36,780 in deze reeks, toch? 948 00:52:36,780 --> 00:52:38,330 Zeer eenvoudig eerste stap. 949 00:52:38,330 --> 00:52:42,140 >> OK, misschien een beetje meer complexe nu, hoe gaan we dat doen? 950 00:52:42,140 --> 00:52:45,400 Wil iemand geef me de regel code 951 00:52:45,400 --> 00:52:48,450 die in staat lus te door middel van wat dit is? 952 00:52:48,450 --> 00:52:54,540 953 00:52:54,540 --> 00:52:56,900 >> Ja, dappere ziel in de rug? 954 00:52:56,900 --> 00:53:06,832 >> Publiek: OK, dus terwijl punt sterretjes, de ja, ster van s, 955 00:53:06,832 --> 00:53:09,465 is niet gelijk aan nul, dan is er iets te doen? 956 00:53:09,465 --> 00:53:11,090 Hoogleraar: Dat is heel, heel dichtbij. 957 00:53:11,090 --> 00:53:11,835 Echt dicht. 958 00:53:11,835 --> 00:53:13,710 Dus ik ga aan te pakken twee dingen mee. 959 00:53:13,710 --> 00:53:18,240 Allereerst, het is niet precies nul. 960 00:53:18,240 --> 00:53:20,110 Wat is het? 961 00:53:20,110 --> 00:53:22,550 Het is de null-terminator, die backslash nul. 962 00:53:22,550 --> 00:53:24,960 Zodat ze anders in termen van hoe ze zijn opgeslagen. 963 00:53:24,960 --> 00:53:26,270 Dus je bent echt dicht. 964 00:53:26,270 --> 00:53:30,330 >> En ten tweede, we willen niet gewoon verplaatst u de aanwijzer. 965 00:53:30,330 --> 00:53:32,320 We willen eigenlijk toegang tot de waarden, toch? 966 00:53:32,320 --> 00:53:34,050 En dus hoe doen we dat? 967 00:53:34,050 --> 00:53:34,550 Zeer eenvoudig. 968 00:53:34,550 --> 00:53:36,841 Denk niet over pointers, denk niet over herinneringen. 969 00:53:36,841 --> 00:53:38,525 Ga terug naar week twee van deze cursus. 970 00:53:38,525 --> 00:53:39,555 >> PUBLIEK: [onverstaanbaar]. 971 00:53:39,555 --> 00:53:40,680 Hoogleraar: Met ingang van, weet je nog? 972 00:53:40,680 --> 00:53:41,400 Wat zijn strings? 973 00:53:41,400 --> 00:53:42,650 Hoe worden ze opgeslagen in het geheugen? 974 00:53:42,650 --> 00:53:43,300 >> Publiek: Ze zijn opgevoed. 975 00:53:43,300 --> 00:53:43,810 >> Hoogleraar: Ze worden opgevoed. 976 00:53:43,810 --> 00:53:45,550 Dus hoe kunnen we toegang elk karakter binnen? 977 00:53:45,550 --> 00:53:46,466 >> PUBLIEK: [onverstaanbaar]. 978 00:53:46,466 --> 00:53:47,530 Hoogleraar: Precies. 979 00:53:47,530 --> 00:53:53,195 Dus while-- wat er hier binnen? 980 00:53:53,195 --> 00:53:54,940 Van S - 981 00:53:54,940 --> 00:53:55,920 >> Publiek: I. 982 00:53:55,920 --> 00:53:58,216 >> Hoogleraar: Oh, ik niet bestaat, doet het? 983 00:53:58,216 --> 00:53:59,620 >> PUBLIEK: Oh, tellen? 984 00:53:59,620 --> 00:54:01,640 >> Hoogleraar: We kunnen gewoon gebruiken tellen, kunnen we niet? 985 00:54:01,640 --> 00:54:03,050 >> Publiek: Sorry, ik noemde het i. 986 00:54:03,050 --> 00:54:04,341 >> Hoogleraar: Ja, het is allemaal goed. 987 00:54:04,341 --> 00:54:06,710 988 00:54:06,710 --> 00:54:10,760 We hebben een variabele hier dat is al uitgeroepen als onze teller. 989 00:54:10,760 --> 00:54:13,650 Dus waarom niet gebruiken we alleen dat om door de while loop? 990 00:54:13,650 --> 00:54:15,230 Slaat dat ergens op? 991 00:54:15,230 --> 00:54:20,864 >> Dus terwijl s van count-- doet iedereen wil geef me wat er gebeurt na hier? 992 00:54:20,864 --> 00:54:22,030 Publiek: Het is niet gelijk. 993 00:54:22,030 --> 00:54:23,405 Hoogleraar: Maakt niet gelijk zijn, toch? 994 00:54:23,405 --> 00:54:26,200 Het is de knal gelijk, uitroepteken gelijk, 995 00:54:26,200 --> 00:54:28,500 wat jullie willen noem het niet equal-- 996 00:54:28,500 --> 00:54:29,496 >> PUBLIEK: [onverstaanbaar]. 997 00:54:29,496 --> 00:54:30,990 >> Hoogleraar: Yeah. 998 00:54:30,990 --> 00:54:37,110 Vergeet niet enkel citaat is voor een char, dubbele aanhalingstekens zijn voor een string. 999 00:54:37,110 --> 00:54:38,630 Wees voorzichtig bij het gebruik ervan. 1000 00:54:38,630 --> 00:54:42,430 Dus als we kijken door de reeks, het laatste teken, 1001 00:54:42,430 --> 00:54:46,420 we weten dat we niet willen aan backslash nul. 1002 00:54:46,420 --> 00:54:47,340 >> Dus terwijl. 1003 00:54:47,340 --> 00:54:48,840 Wij zijn niet aan het einde van de string. 1004 00:54:48,840 --> 00:54:52,335 Wat willen we binnen doen? 1005 00:54:52,335 --> 00:54:55,269 >> PUBLIEK: We willen toevoegen aan de teller dus het telt plus plus? 1006 00:54:55,269 --> 00:54:56,060 Hoogleraar: Precies. 1007 00:54:56,060 --> 00:55:03,064 We dus hier gaan doen tellen, tel plus plus. 1008 00:55:03,064 --> 00:55:03,980 Ontbreekt nog een lijn. 1009 00:55:03,980 --> 00:55:05,090 We zijn er bijna. 1010 00:55:05,090 --> 00:55:07,398 Wat zijn we vergeten te doen? 1011 00:55:07,398 --> 00:55:08,770 >> PUBLIEK: Terugkerende nul? 1012 00:55:08,770 --> 00:55:10,820 >> Hoogleraar: U wilt naar nul terug te keren? 1013 00:55:10,820 --> 00:55:12,962 >> PUBLIEK: Nee, terug te keren naar strlen. 1014 00:55:12,962 --> 00:55:13,511 Wacht. 1015 00:55:13,511 --> 00:55:14,760 Hoogleraar: die wordt opgeslagen in? 1016 00:55:14,760 --> 00:55:15,090 Publiek: Tel. 1017 00:55:15,090 --> 00:55:15,589 Tellen. 1018 00:55:15,589 --> 00:55:17,150 Hoogleraar: Precies. 1019 00:55:17,150 --> 00:55:20,760 We dus hier gaan tellen terug. 1020 00:55:20,760 --> 00:55:23,450 1021 00:55:23,450 --> 00:55:25,380 >> Want wat we hier doen ultimately-- 1022 00:55:25,380 --> 00:55:29,780 hebben we een teller variabele die is gaat verhogen door middel van onze string. 1023 00:55:29,780 --> 00:55:33,050 We gaan om door te gaan, houden gaan, rond en rond in deze lus. 1024 00:55:33,050 --> 00:55:37,700 En terwijl we niet op het einde van deze koord, hetgeen de nul terminator. 1025 00:55:37,700 --> 00:55:40,410 >> En elke keer als we gaan door het, zijn we toe te voegen aan onze balie. 1026 00:55:40,410 --> 00:55:42,640 En we verder gaan mee in deze array. 1027 00:55:42,640 --> 00:55:44,880 En aan het eind, als we eenmaal raakte de null-terminator, 1028 00:55:44,880 --> 00:55:48,469 we weten, oh, we kunnen te breken, de terugkeer van de telling. 1029 00:55:48,469 --> 00:55:49,260 We hebben onze strlen. 1030 00:55:49,260 --> 00:55:52,280 1031 00:55:52,280 --> 00:55:56,400 >> Krijgt iedereen hoe dit is geïmplementeerd? 1032 00:55:56,400 --> 00:55:58,830 Terwijl loops-- Ik weet dat we niet gedaan te veel met hen, 1033 00:55:58,830 --> 00:56:01,240 maar ze zijn meestal heel, heel handig als je 1034 00:56:01,240 --> 00:56:05,390 weet niet wat je te stoppen voorwaarde noodzakelijkerwijs te zijn. 1035 00:56:05,390 --> 00:56:06,220 >> Vraag? 1036 00:56:06,220 --> 00:56:10,080 >> Publiek: Kunnen we schrijven null op terwijl conditie? 1037 00:56:10,080 --> 00:56:10,940 >> Hoogleraar: Terwijl? 1038 00:56:10,940 --> 00:56:15,304 Ja, dus in dit probleem dat u had ik kerels veronderstellen dat is niet nul zal zijn. 1039 00:56:15,304 --> 00:56:17,220 Want vergeet niet, theoretisch, als ik je gaf 1040 00:56:17,220 --> 00:56:21,180 een pointer te grote geheugen was, het zou geven u de null, toch? 1041 00:56:21,180 --> 00:56:23,770 Dat is wat de operationele systeem zou doen. 1042 00:56:23,770 --> 00:56:26,960 >> Dus als ik je niet vertellen om te veronderstellen s zou nul zijn, moet u controleren. 1043 00:56:26,960 --> 00:56:32,050 Dus hier, zou jij doen, als s gelijk aan evenaart null, terug een. 1044 00:56:32,050 --> 00:56:33,028 Zoiets. 1045 00:56:33,028 --> 00:56:34,153 PUBLIEK: [onverstaanbaar] nul. 1046 00:56:34,153 --> 00:56:37,287 1047 00:56:37,287 --> 00:56:39,370 Hoogleraar: OK, zal ik vertellen waarom kunnen we dat niet doen. 1048 00:56:39,370 --> 00:56:43,357 Want vergeet niet in het geheugen, rechts, hier. 1049 00:56:43,357 --> 00:56:43,940 We zullen hier te gaan. 1050 00:56:43,940 --> 00:56:49,940 1051 00:56:49,940 --> 00:56:54,090 >> Je hebt gigantische blokken gekregen van geheugens met roosters 1052 00:56:54,090 --> 00:56:56,680 die winkel verschillende waarden, toch? 1053 00:56:56,680 --> 00:57:00,110 En zo al een string is-- voor Bijvoorbeeld, als we zijn om input hello, 1054 00:57:00,110 --> 00:57:05,490 zou H-E-L-L-O zijn backslash nul, toch? 1055 00:57:05,490 --> 00:57:09,570 En dan wie weet, willekeurige dingen die hier na het. 1056 00:57:09,570 --> 00:57:11,220 >> We eigenlijk niet weten wat er is. 1057 00:57:11,220 --> 00:57:13,350 En dus als je om te doen in plaats van backslash nul, 1058 00:57:13,350 --> 00:57:15,590 null, kan het niet null. 1059 00:57:15,590 --> 00:57:17,680 Omdat het gewoon kan betekenen enkele willekeurige andere dingen 1060 00:57:17,680 --> 00:57:19,270 die niet thuishoren in je string. 1061 00:57:19,270 --> 00:57:23,219 En dus is de manier waarop we altijd weten dat een string eindigt is met een backslash nul. 1062 00:57:23,219 --> 00:57:25,760 En dus dat is altijd hoe we ga naar het einde van een string zien. 1063 00:57:25,760 --> 00:57:30,820 >> Null, dat allemaal betekent is als u een non-existent pointer, allereerst, 1064 00:57:30,820 --> 00:57:36,160 of als je geheugen is gewoon zo groot dat je kunt niet terug, dan is het nul zou zijn. 1065 00:57:36,160 --> 00:57:40,150 Dus heel voorzichtig zijn bij het differentiëren het verschil tussen null 1066 00:57:40,150 --> 00:57:42,130 en de backslash nul. 1067 00:57:42,130 --> 00:57:43,670 Ja. 1068 00:57:43,670 --> 00:57:46,886 >> Iedereen OK met dit? 1069 00:57:46,886 --> 00:57:48,150 OK. 1070 00:57:48,150 --> 00:57:50,440 >> Dus ik had jullie uitschrijven strlen. 1071 00:57:50,440 --> 00:57:53,790 Haalbare kunnen we ook vragen u schrijft uit A tot en met I, bedenk dan dat "Atwoa" 1072 00:57:53,790 --> 00:57:55,400 of wat jullie ook wilt noemen? 1073 00:57:55,400 --> 00:57:58,010 Die functie in Vigenere en Caesar, die 1074 00:57:58,010 --> 00:58:00,900 Zet een ASCII-waarde aan een integer? 1075 00:58:00,900 --> 00:58:04,360 Dat heeft ook komen op eerdere quizzen van de functies die we hebben u gevraagd om te schrijven. 1076 00:58:04,360 --> 00:58:08,280 >> Vrijwel elke functie dat je hebt gebruikt en is 1077 00:58:08,280 --> 00:58:11,660 heel gemakkelijk om jezelf te schrijven, sensoren willen is lager, 1078 00:58:11,660 --> 00:58:14,620 is hoger, te verlagen, de bovenste. 1079 00:58:14,620 --> 00:58:17,964 Functies die een zou zetten snaar van kleine letters naar hoofdletters. 1080 00:58:17,964 --> 00:58:19,380 We weten allemaal hoe dat te doen, toch? 1081 00:58:19,380 --> 00:58:21,100 Het is vrij eenvoudig. 1082 00:58:21,100 --> 00:58:24,770 Gewoon willen ervoor zorgen dat u can-- het is hetzelfde denkproces. 1083 00:58:24,770 --> 00:58:26,940 Je herhalen alleen door en slaat u dingen. 1084 00:58:26,940 --> 00:58:30,190 Of je tellen of wanneer je dingen draaien anders. 1085 00:58:30,190 --> 00:58:32,280 >> Ik zou suggest-- I weet niet of we gaan 1086 00:58:32,280 --> 00:58:39,080 om u te vragen om te onthouden wat hoofdletter A of hoofdstad Z, of kleine letters A of kleine letters 1087 00:58:39,080 --> 00:58:42,640 z in Ascii, maar ik stel misschien schrijven dat in geval 1088 00:58:42,640 --> 00:58:44,124 wij doen. 1089 00:58:44,124 --> 00:58:45,540 Maar dat je jongens hebben een referentie. 1090 00:58:45,540 --> 00:58:47,180 Net als hoofdletter A is, wat, 197? 1091 00:58:47,180 --> 00:58:51,320 En dan kleine letters is als 50 iets. 1092 00:58:51,320 --> 00:58:52,492 65, ja, daar ga je. 1093 00:58:52,492 --> 00:58:54,950 Dus gewoon vrij veel weten de verschil tussen hen is 32. 1094 00:58:54,950 --> 00:58:57,670 Dat is erg belangrijk. 1095 00:58:57,670 --> 00:58:58,170 Ja. 1096 00:58:58,170 --> 00:59:01,445 Ben ik goed op deze? 1097 00:59:01,445 --> 00:59:01,945 OK. 1098 00:59:01,945 --> 00:59:03,109 >> PUBLIEK: We konden theoretisch schrijven een aantal 1099 00:59:03,109 --> 00:59:04,410 van deze beneden ook op onze little-- 1100 00:59:04,410 --> 00:59:07,035 >> Hoogleraar: U theoretisch kon gewoon kopiëren van de functie neer. 1101 00:59:07,035 --> 00:59:08,482 Dat is waar. 1102 00:59:08,482 --> 00:59:11,080 >> PUBLIEK: Niet [onverstaanbaar]. 1103 00:59:11,080 --> 00:59:12,720 >> Hoogleraar: Jullie hebben een blad. 1104 00:59:12,720 --> 00:59:14,194 Jullie hebben een notitie blad. 1105 00:59:14,194 --> 00:59:14,860 U kunt het typen. 1106 00:59:14,860 --> 00:59:15,490 U kunt schrijven. 1107 00:59:15,490 --> 00:59:17,031 Je kunt doen wat je wilt met het. 1108 00:59:17,031 --> 00:59:18,530 Ja. 1109 00:59:18,530 --> 00:59:21,406 Dus theoretisch, als je wilt, ga dan voor. 1110 00:59:21,406 --> 00:59:23,338 >> PUBLIEK: [onverstaanbaar] maar we doen niet echt 1111 00:59:23,338 --> 00:59:25,994 per se hoeft te onthouden de waarde, kunnen we net 1112 00:59:25,994 --> 00:59:28,914 Gebruik de bovenste of lagere functie, toch? 1113 00:59:28,914 --> 00:59:29,580 Hoogleraar: Yeah. 1114 00:59:29,580 --> 00:59:32,740 Maar als we gaf je een vraag die zegt dat schrijven naar de bovenste, 1115 00:59:32,740 --> 00:59:34,350 dan zou je nodig hebt om het te schrijven. 1116 00:59:34,350 --> 00:59:38,150 Dus jullie kunnen aannemen dat u jongens hebben toegang tot alle functies, 1117 00:59:38,150 --> 00:59:41,523 maar als je wilt gebruiken om de bovenste of lager, wat heb je ook te maken? 1118 00:59:41,523 --> 00:59:43,840 >> PUBLIEK: [onverstaanbaar] Gebruik CS50 [onverstaanbaar] 1119 00:59:43,840 --> 00:59:44,840 >> Hoogleraar: Is het CS50.h? 1120 00:59:44,840 --> 00:59:47,320 1121 00:59:47,320 --> 00:59:48,310 Wees er voorzichtig. 1122 00:59:48,310 --> 00:59:50,640 >> Dus de bovenste, naar lagere, is hoger, lager, 1123 00:59:50,640 --> 00:59:52,990 functies die impliceren string manipulatie zijn 1124 00:59:52,990 --> 00:59:55,490 allemaal binnen ofwel de Ascii of binnen de wiskunde bibliotheek 1125 00:59:55,490 --> 00:59:57,350 of binnen de string library. 1126 00:59:57,350 --> 01:00:00,290 Dus als jullie die te gebruiken functies, wees voorzichtig om te onthouden 1127 01:00:00,290 --> 01:00:01,451 die header. 1128 01:00:01,451 --> 01:00:03,950 Dus misschien ook iets wat je wilt in je vel te nemen, 1129 01:00:03,950 --> 01:00:04,892 wat zijn de header? 1130 01:00:04,892 --> 01:00:06,600 Wat zijn de bibliotheken je hebt gebruikt? 1131 01:00:06,600 --> 01:00:08,550 Welke functies zijn binnen die bibliotheken? 1132 01:00:08,550 --> 01:00:09,230 Het is belangrijk. 1133 01:00:09,230 --> 01:00:10,420 >> Ja? 1134 01:00:10,420 --> 01:00:12,570 >> Publiek: Kunnen we net cop uit en doe hashtag 1135 01:00:12,570 --> 01:00:14,955 door het absoluut elke brief die we ooit 1136 01:00:14,955 --> 01:00:17,340 gezien zoals op alle vragen? 1137 01:00:17,340 --> 01:00:18,320 >> Hoogleraar: Je kon. 1138 01:00:18,320 --> 01:00:20,361 Ik weet niet hoe blij we gaan naar de rang 1139 01:00:20,361 --> 01:00:25,090 dat quiz bij elk stukje code is twee keer zo lang als het moet zijn. 1140 01:00:25,090 --> 01:00:27,200 Ik weet het niet, we misschien take off een punt voor stijl. 1141 01:00:27,200 --> 01:00:28,790 Maar theoretisch uw code zou goed zijn. 1142 01:00:28,790 --> 01:00:30,915 Jullie konden cop out en net omvatten alles. 1143 01:00:30,915 --> 01:00:32,044 Dat is ook goed, ja. 1144 01:00:32,044 --> 01:00:32,960 PUBLIEK: [onverstaanbaar]. 1145 01:00:32,960 --> 01:00:33,270 Hoogleraar: Yeah. 1146 01:00:33,270 --> 01:00:34,900 Ik stel voor dat niet al te doen. 1147 01:00:34,900 --> 01:00:35,505 Ja. 1148 01:00:35,505 --> 01:00:36,130 Publiek: Cool. 1149 01:00:36,130 --> 01:00:36,620 Hoogleraar: Goede vraag. 1150 01:00:36,620 --> 01:00:37,480 Publiek: Dus, het worst case scenario. 1151 01:00:37,480 --> 01:00:38,563 Hoogleraar: De ergste geval. 1152 01:00:38,563 --> 01:00:40,350 Als je helemaal vergeten, je dat zou kunnen doen. 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 >> Yep, code is daar. 1156 01:00:45,400 --> 01:00:49,176 Ik gebruikte n plaats van de graaf, maar u weet, ongeacht uw boot drijft. 1157 01:00:49,176 --> 01:00:51,092 PUBLIEK: Wacht, dus we niet zou hebben om hashtag 1158 01:00:51,092 --> 01:00:53,460 onder meer omdat we vanaf de int? 1159 01:00:53,460 --> 01:00:56,150 1160 01:00:56,150 --> 01:00:59,924 >> Hoogleraar: Ja, maar ik veronderstelde dat we werden gevraagd om de functie te schrijven. 1161 01:00:59,924 --> 01:01:02,340 Als je wilde om veilig te zijn, je kan waarschijnlijk zet het daar. 1162 01:01:02,340 --> 01:01:05,650 Maar ik gewoon niet de moeite, ja. 1163 01:01:05,650 --> 01:01:09,919 >> Ik weet niet eens als je behoefte aan een bibliotheek voor dit. 1164 01:01:09,919 --> 01:01:12,710 Omdat je niet echt afdrukt uit iets of wat dan ook, toch? 1165 01:01:12,710 --> 01:01:16,500 1166 01:01:16,500 --> 01:01:19,568 Ja, ik weet niet of u een bibliotheek nodig. 1167 01:01:19,568 --> 01:01:22,400 >> OK. 1168 01:01:22,400 --> 01:01:26,020 Dit is ook een beetje samen de lijnen van het geheugen manipulatie. 1169 01:01:26,020 --> 01:01:27,400 Dit soort beetje lastig. 1170 01:01:27,400 --> 01:01:28,960 Denk hier over na. 1171 01:01:28,960 --> 01:01:30,580 U heeft een functie genaamd func. 1172 01:01:30,580 --> 01:01:33,570 Ik kon het genoemd hebben wat dan ook, maar ik kies om het func noemen. 1173 01:01:33,570 --> 01:01:36,000 Ik heb het boven mijn hoofd. 1174 01:01:36,000 --> 01:01:39,790 Vergeet niet, je wilt hebben een functie na uw belangrijkste, 1175 01:01:39,790 --> 01:01:42,370 wilt u ervoor zorgen dat u omvatten het prototype van de top. 1176 01:01:42,370 --> 01:01:45,750 >> Maar in dit geval zo kort dat ik voelde dat ik kon gewoon 1177 01:01:45,750 --> 01:01:47,260 opnemen bovenop de belangrijkste. 1178 01:01:47,260 --> 01:01:51,170 Ik hoefde niet het prototype hebben, want het is al hierboven geschreven. 1179 01:01:51,170 --> 01:01:55,430 Dus alles wat ik doe in mijn belangrijkste functie is het creëren van integer x is gelijk aan 10. 1180 01:01:55,430 --> 01:02:00,490 Ik bel mijn func-functie, en vervolgens afdrukken tot iets. 1181 01:02:00,490 --> 01:02:02,840 >> En dan is dat eigenlijk wat func doet. 1182 01:02:02,840 --> 01:02:04,340 Jullie willen denken over dit. 1183 01:02:04,340 --> 01:02:05,423 Want het is een beetje lastig. 1184 01:02:05,423 --> 01:02:07,220 Het is heel, heel lastig, eigenlijk. 1185 01:02:07,220 --> 01:02:09,549 Denk na over wat dit programma zou outputting zijn. 1186 01:02:09,549 --> 01:02:10,840 Ik zal jullie geven twee minuten. 1187 01:02:10,840 --> 01:03:36,660 1188 01:03:36,660 --> 01:03:37,891 >> Goede discussies? 1189 01:03:37,891 --> 01:03:38,853 >> Publiek: Ja. 1190 01:03:38,853 --> 01:03:39,815 >> Hoogleraar: Yeah. 1191 01:03:39,815 --> 01:03:42,220 Oké, dus dit is lastig voor een reden. 1192 01:03:42,220 --> 01:03:44,845 En dit is waarom ik wilde brengen dit om de aandacht van iedereen. 1193 01:03:44,845 --> 01:03:47,870 1194 01:03:47,870 --> 01:03:51,147 Wil iemand me een suggestie, een poging? 1195 01:03:51,147 --> 01:03:52,230 Wat zou dit uit te printen? 1196 01:03:52,230 --> 01:03:53,930 Helemaal prima als je het mis. 1197 01:03:53,930 --> 01:03:55,619 Ja? 1198 01:03:55,619 --> 01:03:59,483 >> Publiek: Ik denk dat het 100 en dan 10 op twee verschillende lijnen. 1199 01:03:59,483 --> 01:04:00,940 >> Hoogleraar: En een 10? 1200 01:04:00,940 --> 01:04:03,154 Heeft iemand nog andere gissingen? 1201 01:04:03,154 --> 01:04:04,150 Ja? 1202 01:04:04,150 --> 01:04:09,040 >> PUBLIEK: Misschien gewoon omdat 10 func is niets terug te keren? 1203 01:04:09,040 --> 01:04:11,610 >> Hoogleraar: OK, dus we hebben gok nummer één 1204 01:04:11,610 --> 01:04:14,990 is dat gok nummer twee is gewoon uit te printen 10. 1205 01:04:14,990 --> 01:04:17,623 Heeft iemand nog andere gissingen? 1206 01:04:17,623 --> 01:04:19,654 OK. 1207 01:04:19,654 --> 01:04:21,070 Dus laten we lopen door dit, toch? 1208 01:04:21,070 --> 01:04:23,903 Wanneer u een stuk code te krijgen, niet alleen kijken naar het en zijn als, 1209 01:04:23,903 --> 01:04:25,060 ah, dat is zo veel dingen! 1210 01:04:25,060 --> 01:04:26,460 Ik ben zo verward! 1211 01:04:26,460 --> 01:04:28,220 Zoals, zelf kalm naar beneden. 1212 01:04:28,220 --> 01:04:31,602 Weet gewoon dat je kon gewoon kijk door de code lijn per lijn. 1213 01:04:31,602 --> 01:04:32,310 Dat is alles wat het is. 1214 01:04:32,310 --> 01:04:33,840 Het is als het lezen van een boek. 1215 01:04:33,840 --> 01:04:38,000 >> Dus met een functie, We beginnen altijd bij de belangrijkste. 1216 01:04:38,000 --> 01:04:40,860 Dus we gaan beginnen bij int main leegte, 1217 01:04:40,860 --> 01:04:43,010 zelfs het programma al run down, toch? 1218 01:04:43,010 --> 01:04:45,070 Beginnen om in de belangrijkste leegte. 1219 01:04:45,070 --> 01:04:48,030 Int x is gelijk aan 10. 1220 01:04:48,030 --> 01:04:50,400 >> Dus ik ga dit te wissen. 1221 01:04:50,400 --> 01:04:55,179 1222 01:04:55,179 --> 01:04:58,470 Ik ga naar het geheugen te trekken zodat je jongens kunnen soort zien wat er gebeurt. 1223 01:04:58,470 --> 01:05:02,190 >> Vergeet niet hier beneden hebben we onze stapel? 1224 01:05:02,190 --> 01:05:05,810 Hier hebben we onze hoop ergens hier. 1225 01:05:05,810 --> 01:05:07,470 Stack groeit, toch? 1226 01:05:07,470 --> 01:05:10,150 En binnen de stack, je hebt het net fungeren als 1227 01:05:10,150 --> 01:05:12,230 Alle leidingwater lokale variabelen. 1228 01:05:12,230 --> 01:05:14,310 >> Dus hier, int x gelijk zijn aan 10. 1229 01:05:14,310 --> 01:05:17,670 Binnen onze belangrijkste functie zijn we het creëren van een variabele genaamd x. 1230 01:05:17,670 --> 01:05:20,590 We instelling die gelijk is aan 10. 1231 01:05:20,590 --> 01:05:24,200 Hier heb je een aantal x, en je bent instellen dat gelijk is aan 10, rechts, 1232 01:05:24,200 --> 01:05:25,400 binnen de belangrijkste. 1233 01:05:25,400 --> 01:05:27,430 Iedereen goed? 1234 01:05:27,430 --> 01:05:28,070 >> Functie. 1235 01:05:28,070 --> 01:05:30,330 Dus nu, in onze functie, we bellen 1236 01:05:30,330 --> 01:05:31,810 de functie we hierboven hebben geschreven. 1237 01:05:31,810 --> 01:05:34,550 Dus we nu de tweede functie. 1238 01:05:34,550 --> 01:05:40,120 We gaan naar een andere te maken variabele int x gelijk is aan 100. 1239 01:05:40,120 --> 01:05:42,410 Wat gebeurt hier op de stapel? 1240 01:05:42,410 --> 01:05:46,980 Wat gebeurt er als u een oproep functie nieuwe variabelen creëert? 1241 01:05:46,980 --> 01:05:50,038 Wat gebeurt hier op de stapel? 1242 01:05:50,038 --> 01:05:52,134 >> PUBLIEK: [onverstaanbaar] stapels op de top? 1243 01:05:52,134 --> 01:05:52,800 Hoogleraar: Yeah. 1244 01:05:52,800 --> 01:05:54,050 Dus het eigenlijk een kopie. 1245 01:05:54,050 --> 01:05:56,560 1246 01:05:56,560 --> 01:05:57,740 En het soort palen bovenop. 1247 01:05:57,740 --> 01:06:00,700 Denk aan de stack-- een stapel boeken, een stapel van alles. 1248 01:06:00,700 --> 01:06:06,520 Stapels op de top, de eerste in de laatste out, last in, first out. 1249 01:06:06,520 --> 01:06:08,471 >> Dus het gaat om een ​​x hier te creëren. 1250 01:06:08,471 --> 01:06:12,080 1251 01:06:12,080 --> 01:06:14,450 >> Dat gaat te hebben Alle funcs variabelen. 1252 01:06:14,450 --> 01:06:14,950 Grote. 1253 01:06:14,950 --> 01:06:20,980 Dus nu hebben we twee verschillende x's die vertegenwoordigen twee heel verschillende dingen. 1254 01:06:20,980 --> 01:06:24,470 Dan gaan we om af te drukken het geheel getal van x. 1255 01:06:24,470 --> 01:06:26,430 Dus laten afdrukken 100, toch? 1256 01:06:26,430 --> 01:06:29,389 Want hier is het 100. 1257 01:06:29,389 --> 01:06:31,680 Dus dat is het eerste wat dat het gaat om uit te printen. 1258 01:06:31,680 --> 01:06:35,710 Aangezien deze functie terugkeert niets, nu die functie, die lijn in de belangrijkste 1259 01:06:35,710 --> 01:06:37,070 is klaar. 1260 01:06:37,070 --> 01:06:39,160 Iedereen goed met mij tot nu toe? 1261 01:06:39,160 --> 01:06:43,034 >> Dus we zijn nu door middel van twee van de drie lijnen van onze functie. 1262 01:06:43,034 --> 01:06:44,450 Nu gaan we naar de derde regel. 1263 01:06:44,450 --> 01:06:46,350 We gaan printf. 1264 01:06:46,350 --> 01:06:48,222 Wat is dit x binnen belangrijkste? 1265 01:06:48,222 --> 01:06:49,263 Wat betekent dat voor? 1266 01:06:49,263 --> 01:06:52,720 1267 01:06:52,720 --> 01:06:54,280 >> Welke waarde is x nu? 1268 01:06:54,280 --> 01:06:55,220 >> Publiek: 100. 1269 01:06:55,220 --> 01:06:56,799 >> Hoogleraar: Het is 100? 1270 01:06:56,799 --> 01:06:57,590 PUBLIEK: Nog 10. 1271 01:06:57,590 --> 01:06:58,878 PROFESSOR: Nog 10. 1272 01:06:58,878 --> 01:07:00,870 Ja. 1273 01:07:00,870 --> 01:07:06,810 Want vergeet niet, binnen onze func, x gelijk is aan 100. 1274 01:07:06,810 --> 01:07:09,690 Maar als we terugkeren onze belangrijkste functie, 1275 01:07:09,690 --> 01:07:12,440 die variabele wordt opgeslagen in een andere plaats op onze stack. 1276 01:07:12,440 --> 01:07:16,250 >> Dus nu moeten we terug naar de main stack, lichtnet lokale variabelen. 1277 01:07:16,250 --> 01:07:18,460 En hier x is gelijk aan 10. 1278 01:07:18,460 --> 01:07:20,300 En dus we gaan uit te printen 10. 1279 01:07:20,300 --> 01:07:22,530 >> Dus ze was volkomen gelijk. 1280 01:07:22,530 --> 01:07:25,053 We gaan het hebben output van 100 en 10. 1281 01:07:25,053 --> 01:07:25,553 Ja? 1282 01:07:25,553 --> 01:07:28,700 Publiek: Als je malloc, is dit de heap of de stack, dat is [onverstaanbaar]? 1283 01:07:28,700 --> 01:07:31,950 Hoogleraar: Wanneer u malloc, je geheugen te nemen van de hoop 1284 01:07:31,950 --> 01:07:32,830 en verdelen. 1285 01:07:32,830 --> 01:07:34,950 Zodat u niet hoeft te knoeien met een van deze. 1286 01:07:34,950 --> 01:07:38,100 Dus ik denk dat de grotere afhaalrestaurant hier is iets genaamd scope. 1287 01:07:38,100 --> 01:07:39,650 >> Voor degenen onder u die op waren de beoordeling sessie gisteravond, 1288 01:07:39,650 --> 01:07:41,080 spraken we kort over dit. 1289 01:07:41,080 --> 01:07:45,380 Reikwijdte bepaalt hoe en wanneer uw variabelen bestaan. 1290 01:07:45,380 --> 01:07:48,050 Of binnen welke kaders doe je variabelen bestaan. 1291 01:07:48,050 --> 01:07:51,690 >> Vrij veel de vuistregel algemeen is, je variables-- als je ze te maken 1292 01:07:51,690 --> 01:07:56,660 binnen krullende braces-- ze bestaan alleen binnen de accolades. 1293 01:07:56,660 --> 01:08:00,312 >> Dus bijvoorbeeld in functie van onze func, zie je die twee beugels. 1294 01:08:00,312 --> 01:08:02,020 Als je het creëren iets binnenkant van het, 1295 01:08:02,020 --> 01:08:06,500 de kans groot dat alles wat je doet is het creëren en opslaan van een stapel er. 1296 01:08:06,500 --> 01:08:07,430 Hetzelfde in de belangrijkste. 1297 01:08:07,430 --> 01:08:09,950 Dat is gewoon opgeslagen binnenkant van de belangrijkste. 1298 01:08:09,950 --> 01:08:13,560 >> Ook u wilt worden heel, heel voorzichtig hier. 1299 01:08:13,560 --> 01:08:18,310 Omdat scope leent ook zich aan verschillende voorbeelden. 1300 01:08:18,310 --> 01:08:25,950 Dus bijvoorbeeld voor een lus, voor int i gelijk is aan 0. 1301 01:08:25,950 --> 01:08:28,460 I is minder dan, ik weet het niet, 10. 1302 01:08:28,460 --> 01:08:32,111 Ik plus plus. 1303 01:08:32,111 --> 01:08:34,560 En je hebt de code binnenkant van het, toch? 1304 01:08:34,560 --> 01:08:38,830 >> Waar komt deze variabele, ik eigenlijk alleen maar bestaan? 1305 01:08:38,830 --> 01:08:40,510 Alleen binnenkant van uw lus. 1306 01:08:40,510 --> 01:08:43,640 Dus ik wed dat velen van jullie hebben waarschijnlijk ondervonden deze fout wanneer 1307 01:08:43,640 --> 01:08:45,930 je doet programma's in uw psets. 1308 01:08:45,930 --> 01:08:49,990 Hoeveel van jullie hebben geprobeerd ik gebruik buitenkant van een lus en had een fout? 1309 01:08:49,990 --> 01:08:53,310 Zoals een unreferenced integers of zoiets? 1310 01:08:53,310 --> 01:08:56,069 >> De reden waarom dat gebeurt is omdat hier je 1311 01:08:56,069 --> 01:08:59,109 het creëren van iets dat alleen bestaat binnen uw lus. 1312 01:08:59,109 --> 01:09:01,972 En als je probeert om het te gebruiken, ik niet werkelijk bestaan ​​daarbuiten. 1313 01:09:01,972 --> 01:09:04,930 Dus eigenlijk een computer zeggen, ik weet niet waar je het over hebt. 1314 01:09:04,930 --> 01:09:08,689 Alles wat ik weet is dat een i was Hier, maar nu niet meer. 1315 01:09:08,689 --> 01:09:12,580 >> Dus als ik een te creëren lus binnen, toch? 1316 01:09:12,580 --> 01:09:19,080 En ik ga naar een ander te maken, zoals int j, en hebben het wat te doen. 1317 01:09:19,080 --> 01:09:23,689 En heb je een code in van dat lus, j bestaat hier alleen. 1318 01:09:23,689 --> 01:09:26,029 Maar die ook bestaat binnen i. 1319 01:09:26,029 --> 01:09:29,310 En dus j bestaat alleen binnen deze lus, 1320 01:09:29,310 --> 01:09:33,850 terwijl ik er in de hele zaak. 1321 01:09:33,850 --> 01:09:34,500 >> Iedereen duidelijk? 1322 01:09:34,500 --> 01:09:37,416 Hetzelfde met voorwaardelijke verklaringen Als je iets wilt creëren. 1323 01:09:37,416 --> 01:09:40,390 Hetzelfde met while loops als je iets wilt creëren. 1324 01:09:40,390 --> 01:09:42,390 Dat is iets om heel, heel voorzichtig. 1325 01:09:42,390 --> 01:09:45,681 Dus dit was echt een goede probleem in de voelen dat aangetoond twee dingen. 1326 01:09:45,681 --> 01:09:47,160 Het toonde de eerste, de reikwijdte. 1327 01:09:47,160 --> 01:09:49,550 En aangetoond Ook het toewijzen van geheugen. 1328 01:09:49,550 --> 01:09:54,130 Want jullie moeten weten dat functies omhoog groeien in de stapel. 1329 01:09:54,130 --> 01:09:56,710 En dat wanneer je belt functies, bent u het creëren 1330 01:09:56,710 --> 01:09:59,060 wezenlijk een nieuwe stapel geheugen. 1331 01:09:59,060 --> 01:10:02,100 Dat is heel anders wat uw lichtnet geheugen. 1332 01:10:02,100 --> 01:10:03,300 Ja. 1333 01:10:03,300 --> 01:10:03,800 Oef! 1334 01:10:03,800 --> 01:10:05,470 Iedereen OK op dat? 1335 01:10:05,470 --> 01:10:06,750 Dat was verwarrend. 1336 01:10:06,750 --> 01:10:09,380 Zeer goede onderwerpen om over te gaan, omdat je waarschijnlijk bent 1337 01:10:09,380 --> 01:10:12,255 ga wat lastig te krijgen dat soort dingen op de quiz. 1338 01:10:12,255 --> 01:10:13,350 Ja. 1339 01:10:13,350 --> 01:10:13,850 Koel. 1340 01:10:13,850 --> 01:10:16,014 1341 01:10:16,014 --> 01:10:18,430 Ik zet je 100 op een lijn en vervolgens 10 aan de andere kant. 1342 01:10:18,430 --> 01:10:21,468 Ja, zeer goed. 1343 01:10:21,468 --> 01:10:26,350 >> OK, nu jullie krijgen de kans om de TA. 1344 01:10:26,350 --> 01:10:30,600 U krijgt om te beantwoorden alle mooie e-mails die ik soms. 1345 01:10:30,600 --> 01:10:34,290 >> Dus, lieve Andi, ik zie denk ik dat er iets fout gaat met mijn compiler. 1346 01:10:34,290 --> 01:10:37,910 Ik ben er zeker van dat mijn code correct is, maar ik krijg steeds een segmentation fault 1347 01:10:37,910 --> 01:10:39,074 elke keer als ik lopen. 1348 01:10:39,074 --> 01:10:39,740 Wat is er aan de hand? 1349 01:10:39,740 --> 01:10:42,844 Gelieve te helpen, veel liefde. 1350 01:10:42,844 --> 01:10:45,740 1351 01:10:45,740 --> 01:10:49,410 >> Als jullie iets als dat hoe zou je reageren? 1352 01:10:49,410 --> 01:10:51,860 Dit zijn eigenlijk heel gewoon vragen we je vragen. 1353 01:10:51,860 --> 01:10:54,090 Is als we je een geven scenario, zullen we ons 1354 01:10:54,090 --> 01:10:56,350 uw beste gok op wat er gaande is. 1355 01:10:56,350 --> 01:11:00,710 Iemand een gooi naar wat er aan de hand? 1356 01:11:00,710 --> 01:11:02,654 Ja? 1357 01:11:02,654 --> 01:11:06,056 >> PUBLIEK: Misschien dereferentie de null, zoiets als de wijzer 1358 01:11:06,056 --> 01:11:08,924 wijst op iets null. 1359 01:11:08,924 --> 01:11:11,590 Hoogleraar: Ja, dat zou een te zijn Bijvoorbeeld wanneer dat zou gebeuren. 1360 01:11:11,590 --> 01:11:14,467 Maar wat is het grotere beeld van wat er hier aan de hand? 1361 01:11:14,467 --> 01:11:17,050 Publiek: Is het je probeert toegang tot het geheugen dat je niet 1362 01:11:17,050 --> 01:11:18,175 verondersteld om toegang te hebben? 1363 01:11:18,175 --> 01:11:19,200 Hoogleraar: Precies. 1364 01:11:19,200 --> 01:11:24,800 Dus denk aan een seg fout, een off grenzen, beperkt gebied in het geheugen 1365 01:11:24,800 --> 01:11:27,780 dat je niet moet aanraken. 1366 01:11:27,780 --> 01:11:31,670 >> Dus vrij veel als je probeert om index-- zoals bijvoorbeeld, 1367 01:11:31,670 --> 01:11:34,110 je hebt uitgeroepen tot een matrix van nul tot negen. 1368 01:11:34,110 --> 01:11:37,360 Maar je probeert om die 10 raken waarde, hoeft u geen toegang tot die te hebben. 1369 01:11:37,360 --> 01:11:38,694 Omdat je niet hebt verklaard. 1370 01:11:38,694 --> 01:11:40,943 En zo uw computer gaat om naar te kijken, dat zijn als, 1371 01:11:40,943 --> 01:11:43,440 uh oh, je probeert om te gaan buiten de grenzen van een index. 1372 01:11:43,440 --> 01:11:45,270 Ik ga u een segmentation fault. 1373 01:11:45,270 --> 01:11:46,590 >> Denken als segment, toch? 1374 01:11:46,590 --> 01:11:49,665 Een extra segment, de fout wanneer u probeert om iets te schenden 1375 01:11:49,665 --> 01:11:50,790 en je moet er niet zijn. 1376 01:11:50,790 --> 01:11:53,660 Segmentatie fout is altijd je probeert om dingen aan te raken 1377 01:11:53,660 --> 01:11:54,970 dat je niet moet aanraken. 1378 01:11:54,970 --> 01:11:56,815 >> Zo vaak voorbeelden zijn een index. 1379 01:11:56,815 --> 01:11:58,940 Natuurlijk, als je probeert aan te raken, dat was null, 1380 01:11:58,940 --> 01:12:00,220 dat ook zo goed werkt. 1381 01:12:00,220 --> 01:12:02,300 Als je wijzer probeerde te aanraken dingen die niet mogen aanraken, 1382 01:12:02,300 --> 01:12:03,730 dat zou ook zo goed werkt. 1383 01:12:03,730 --> 01:12:07,120 Meest typisch u zult zie dit in een array. 1384 01:12:07,120 --> 01:12:07,740 Iedereen goed? 1385 01:12:07,740 --> 01:12:10,374 >> Publiek: Dus als je wilt om de 10 point 1386 01:12:10,374 --> 01:12:12,290 en er is slechts een limiet van negen of zoiets. 1387 01:12:12,290 --> 01:12:13,160 >> Hoogleraar: Ja, precies. 1388 01:12:13,160 --> 01:12:13,660 Ongeveer. 1389 01:12:13,660 --> 01:12:15,930 1390 01:12:15,930 --> 01:12:16,430 Koel. 1391 01:12:16,430 --> 01:12:19,070 1392 01:12:19,070 --> 01:12:19,920 >> Lieve Andi. 1393 01:12:19,920 --> 01:12:23,440 Daarom hebben we deze prachtige kregen dingen geroepen soorten. 1394 01:12:23,440 --> 01:12:25,472 Als samenvoegen sort-- als we zaag bijvoorbeeld wanneer 1395 01:12:25,472 --> 01:12:27,180 David deed de hele ding class-- waarom, 1396 01:12:27,180 --> 01:12:29,760 als het zo veel sneller dan elk van de andere soort, 1397 01:12:29,760 --> 01:12:33,310 waarom doen we eens de moeite weten alle andere soorten? 1398 01:12:33,310 --> 01:12:35,100 >> Wat is deze vraag die je echt te vragen? 1399 01:12:35,100 --> 01:12:36,659 Wat is de drie word-- 1400 01:12:36,659 --> 01:12:37,950 Publiek: Wat is de trade-off? 1401 01:12:37,950 --> 01:12:38,530 Hoogleraar: Precies. 1402 01:12:38,530 --> 01:12:39,946 Dat is wat de vraag vraagt. 1403 01:12:39,946 --> 01:12:43,682 Wat is de trade-off tussen Samenvoegen soort verzen alle andere soorten? 1404 01:12:43,682 --> 01:12:45,850 >> PUBLIEK: Neemt geheugen, toch? 1405 01:12:45,850 --> 01:12:47,720 >> Hoogleraar: Heeft u uitleggen dat een beetje meer? 1406 01:12:47,720 --> 01:12:49,490 Laten we eerst uitleggen Merge winkel. 1407 01:12:49,490 --> 01:12:50,970 Hoe werkt Merge soort werk? 1408 01:12:50,970 --> 01:12:55,220 >> Publiek: Dus het werkt door verdelen alles in de helft 1409 01:12:55,220 --> 01:13:00,660 en dan zetten het samen en herschikking van het in orde, 1410 01:13:00,660 --> 01:13:02,862 zoals elke keer dat u samenvoegen de sets. 1411 01:13:02,862 --> 01:13:03,820 Hoogleraar: Vrij veel. 1412 01:13:03,820 --> 01:13:06,861 Dus ik kan deze trekken, maar het zou neem me vijf minuten om het uit te trekken. 1413 01:13:06,861 --> 01:13:10,220 Kijken terug op de sectie slides waar we bedekt Merge soort. 1414 01:13:10,220 --> 01:13:10,790 Precies. 1415 01:13:10,790 --> 01:13:13,406 >> Dus de manier samenvoegen soort werken is deze dingen verdeelt in de helft, 1416 01:13:13,406 --> 01:13:15,780 en dan ziet het er net op het Eerst waarden van allemaal 1417 01:13:15,780 --> 01:13:17,000 en sorteert alleen dat. 1418 01:13:17,000 --> 01:13:20,364 Continu creëert nieuwe arrays en zet de dingen meer en meer in orde. 1419 01:13:20,364 --> 01:13:23,030 En dus terwijl dat is echt, echt snel omdat it's-- u weet, 1420 01:13:23,030 --> 01:13:25,380 een binaire zoektocht is n log n. 1421 01:13:25,380 --> 01:13:27,880 Je bent het creëren van zoveel verschillende arrays dat je 1422 01:13:27,880 --> 01:13:29,700 met behulp van een enorme hoeveelheid geheugen. 1423 01:13:29,700 --> 01:13:33,080 En dus terwijl het is sneller, de afweging hier is dat u gebruikt meer geheugen. 1424 01:13:33,080 --> 01:13:38,490 >> En dus, hint, sorteert en zoekopdrachten bedekt waren veel meer dit jaar 1425 01:13:38,490 --> 01:13:41,610 dan in voorgaande jaren zijn. 1426 01:13:41,610 --> 01:13:45,100 Jullie moeten zien dat dienovereenkomstig op de quiz gereflecteerd. 1427 01:13:45,100 --> 01:13:49,160 Ik zou zeker tijd doorbrengen gaan via welke alle verschillende soorten 1428 01:13:49,160 --> 01:13:52,320 zijn, hoe binary search, hoe lineair zoeken werk. 1429 01:13:52,320 --> 01:13:54,750 Hoe je misschien pseudocode code die uit. 1430 01:13:54,750 --> 01:13:55,950 Wat zijn de looptijden? 1431 01:13:55,950 --> 01:13:59,210 Zoiets looptijden is zeer gemakkelijk naar beneden te kopiëren op een notitie blad, 1432 01:13:59,210 --> 01:13:59,710 rechts? 1433 01:13:59,710 --> 01:14:01,420 >> Het is echt moeilijk als je in het midden van de proef 1434 01:14:01,420 --> 01:14:02,390 en je hebt om dat uit. 1435 01:14:02,390 --> 01:14:03,160 Kopiëren naar beneden. 1436 01:14:03,160 --> 01:14:05,550 Ik garandeer je dat je bent gaat nodig hebben om te weten dat. 1437 01:14:05,550 --> 01:14:06,860 Wat zijn de trade-offs? 1438 01:14:06,860 --> 01:14:10,064 Ergste geval best case scenario's voor elk van hen zeer leren kennen. 1439 01:14:10,064 --> 01:14:10,564 Ja? 1440 01:14:10,564 --> 01:14:12,730 >> Publiek: Moeten we weten hoe ze samenvoegen soort code? 1441 01:14:12,730 --> 01:14:15,470 Zoals, moeten we herinner me de recursieve? 1442 01:14:15,470 --> 01:14:18,950 >> Hoogleraar: Ik betwijfel het ten zeerste, net want het is net vrij ingewikkeld. 1443 01:14:18,950 --> 01:14:22,282 Maar het kan niet onhaalbaar als we vragen u om pseudocode het uit te gebruiken. 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 >> Yep, OK, nog één. 1447 01:14:29,170 --> 01:14:31,387 Dit kan in gekomen je laatste stuk een beetje. 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 Heeft iedereen gehoord dat? 1451 01:14:44,930 --> 01:14:48,360 >> OK, dus vrij veel in de eerste plaats Alles, wat voor soort programma 1452 01:14:48,360 --> 01:14:51,000 zou geven u een output als dit? 1453 01:14:51,000 --> 01:14:54,350 Vergeet niet wij u gevraagd om te leren over dit nieuwe type debuggen tool? 1454 01:14:54,350 --> 01:14:57,340 Wat was de naam van het? 1455 01:14:57,340 --> 01:14:59,460 Valgrind, rechts 1456 01:14:59,460 --> 01:15:02,600 >> Het is een programma waarin je zou kunnen noemen, dat kon 1457 01:15:02,600 --> 01:15:05,940 bijhouden van al het geheugen dat je het gebruiken in uw programma en aan de hand was. 1458 01:15:05,940 --> 01:15:11,090 Dus als je hebt iets, als, zeker verloren, 40 bytes in één blok. 1459 01:15:11,090 --> 01:15:14,870 Waarschijnlijk ben je niet herinneren om het te bevrijden. 1460 01:15:14,870 --> 01:15:18,710 Want als je gebruik bytes van het geheugen, dat betekent dat je hebt geopend dat het geheugen, 1461 01:15:18,710 --> 01:15:20,240 maar je hebt niet in staat om vrij geweest. 1462 01:15:20,240 --> 01:15:21,948 Dus je wilt maken ervoor dat u ook bent 1463 01:15:21,948 --> 01:15:31,420 gebruik free-- dat is een function-- al vrij 1464 01:15:31,420 --> 01:15:34,930 van het geheugen toegewezen door malloc. 1465 01:15:34,930 --> 01:15:35,500 >> Koel. 1466 01:15:35,500 --> 01:15:37,140 Dus deze dia, zal ik het moeten omhoog. 1467 01:15:37,140 --> 01:15:41,050 Het is overal in een heleboel lezingen, in een veel sectie glijbanen. 1468 01:15:41,050 --> 01:15:44,254 Wil je echt om ervoor te zorgen je weet dit alles. 1469 01:15:44,254 --> 01:15:47,170 Hetzij in uw notitie blad of als u willen onthouden, voel je vrij om. 1470 01:15:47,170 --> 01:15:48,836 Dat is echt, echt, echt belangrijk. 1471 01:15:48,836 --> 01:15:53,200 1472 01:15:53,200 --> 01:15:56,890 >> Ook een zeer goede vraag die we kunnen vragen. 1473 01:15:56,890 --> 01:16:00,320 Waarom is Selection sort-- blik op Selectie sort-- alle runtimes 1474 01:16:00,320 --> 01:16:02,060 zijn n kwadraat. 1475 01:16:02,060 --> 01:16:06,714 Ongeacht hoe de lijst komt te je net zo, dus waarom is Selection sort-- 1476 01:16:06,714 --> 01:16:08,630 Ik zal jullie geven 30 tweede na te denken over dit. 1477 01:16:08,630 --> 01:16:10,700 Omdat het soort verwarrend. 1478 01:16:10,700 --> 01:16:12,710 Het gaat om een ​​aantal conceptuele denken. 1479 01:16:12,710 --> 01:16:16,470 Waarom zou de run keer hetzelfde zijn in zowel het slechtste en beste scenario? 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 >> Publiek: Omdat Selection sort elke positie of ruimte in deze kleine serie 1483 01:16:38,084 --> 01:16:40,350 ding of wat dan ook. 1484 01:16:40,350 --> 01:16:44,430 Dus zelfs in het beste geval zelfs als het perfect is gesorteerd, 1485 01:16:44,430 --> 01:16:47,380 zou het nog steeds zo te zijn, OK, één. 1486 01:16:47,380 --> 01:16:49,000 In mijn eerste plaats heb ik een. 1487 01:16:49,000 --> 01:16:50,250 En gaan door alle van hen. 1488 01:16:50,250 --> 01:16:51,249 OK, men het kleinst is. 1489 01:16:51,249 --> 01:16:53,053 En dan weer gaat hij en is net als, OK, twee 1490 01:16:53,053 --> 01:16:54,594 is de kleinste van alle dingen. 1491 01:16:54,594 --> 01:16:56,804 Maar het moet nog Controleer ieder. 1492 01:16:56,804 --> 01:16:57,470 Hoogleraar: Yeah. 1493 01:16:57,470 --> 01:17:00,490 Dus bijvoorbeeld, laten we maar zeggen hebben we een lijst, al naargelang, 1494 01:17:00,490 --> 01:17:03,390 een array 1-5. 1495 01:17:03,390 --> 01:17:07,100 De manier waarop Selection soorten is dat het gaat door, het controleert deze twee. 1496 01:17:07,100 --> 01:17:08,234 Vervolgens controleert zij deze twee. 1497 01:17:08,234 --> 01:17:09,650 En dan controleert en controleert. 1498 01:17:09,650 --> 01:17:13,285 Het houdt controle op alle van hen, ongeacht of niet 1499 01:17:13,285 --> 01:17:14,160 het is eigenlijk opgelost. 1500 01:17:14,160 --> 01:17:16,450 Want dat is gewoon de manier waarop het soort werkt. 1501 01:17:16,450 --> 01:17:19,530 >> En dus deze vraag is een soort een conceptuele vraag die we zullen stellen. 1502 01:17:19,530 --> 01:17:21,430 Waar de eerste, kunt u weet wat Selection sort 1503 01:17:21,430 --> 01:17:23,304 is, recht te kunnen om de vraag te beantwoorden. 1504 01:17:23,304 --> 01:17:26,200 Je moet in staat zijn om te begrijpen conceptueel wat er gaande is. 1505 01:17:26,200 --> 01:17:30,760 En dan kun je het toepassen en denken, OK laten we stel gewoon worst case scenario. 1506 01:17:30,760 --> 01:17:32,230 Ze zijn allemaal in aflopende volgorde. 1507 01:17:32,230 --> 01:17:33,290 Hoe zou dat beïnvloeden? 1508 01:17:33,290 --> 01:17:34,650 >> Wat als het oplopende volgorde? 1509 01:17:34,650 --> 01:17:35,640 Als deze al is naargelang? 1510 01:17:35,640 --> 01:17:37,240 Hoe zou dat invloed hebben op de runtimes? 1511 01:17:37,240 --> 01:17:40,270 En dan Selection soort, zult u merken dat het niet echt belangrijk. 1512 01:17:40,270 --> 01:17:43,500 Omdat je het controleren bent alle waarden ongeacht wat er gebeurt. 1513 01:17:43,500 --> 01:17:45,810 >> En zo goede dingen te onthouden. 1514 01:17:45,810 --> 01:17:50,290 Waarom sommige soorten verschillen van anderen en hoe het best en worst case scenario's 1515 01:17:50,290 --> 01:17:52,740 zou ze allemaal te beïnvloeden. 1516 01:17:52,740 --> 01:17:56,700 >> Ik ga echt hit in allerlei want dat zal zijn op de quiz. 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 Er is zes minuten verlaten. 1521 01:18:05,590 --> 01:18:09,880 Ik kan drie minuten vragen te nemen. 1522 01:18:09,880 --> 01:18:12,290 Ik kan ook rond te hangen voor zoals 20 minuten na sectie 1523 01:18:12,290 --> 01:18:13,850 als je wilt om vragen te stellen als goed. 1524 01:18:13,850 --> 01:18:16,330 Heeft iemand gewoon echt korte vragen of conceptuele kwesties 1525 01:18:16,330 --> 01:18:17,360 ze zijn onduidelijk op dit moment? 1526 01:18:17,360 --> 01:18:17,832 Ja? 1527 01:18:17,832 --> 01:18:19,720 >> Publiek: Kun je een beetje praten beetje over bitsgewijs operatoren? 1528 01:18:19,720 --> 01:18:20,280 >> Hoogleraar: Yeah. 1529 01:18:20,280 --> 01:18:22,446 Dus bitwise exploitanten iets dat je waarschijnlijk 1530 01:18:22,446 --> 01:18:24,170 misschien wil gewoon op je vel te zetten. 1531 01:18:24,170 --> 01:18:27,540 Dus quickly-- Ik wil niet te veel in de diepte te gaan 1532 01:18:27,540 --> 01:18:31,164 omdat Harvard, in hun beoordeling sessie, overdekt het vrij goed. 1533 01:18:31,164 --> 01:18:33,080 Bitsgewijze operator, er is vijf van hen, toch? 1534 01:18:33,080 --> 01:18:41,370 >> Er is dit, dat is x of functie, er teken, de en. 1535 01:18:41,370 --> 01:18:44,050 Buis, die de of. 1536 01:18:44,050 --> 01:18:46,790 En dan heb je de twee verschillende ploegen. 1537 01:18:46,790 --> 01:18:50,610 >> Als ik geef u twee waarden, indien Ik geef u, als, één en één. 1538 01:18:50,610 --> 01:18:52,390 Wat zou dat te evalueren? 1539 01:18:52,390 --> 01:18:55,490 Als ik je echte en ware, waar? 1540 01:18:55,490 --> 01:18:56,930 Hoe zit het waar of onwaar? 1541 01:18:56,930 --> 01:18:57,830 Nog steeds zo, toch? 1542 01:18:57,830 --> 01:18:59,762 Omdat er een of. 1543 01:18:59,762 --> 01:19:01,220 We zullen waarschijnlijk geef je nummers. 1544 01:19:01,220 --> 01:19:03,780 Dus onthoud, één gelijk waar is, is gelijk aan nul vals. 1545 01:19:03,780 --> 01:19:07,407 En we kunnen u deze dingen en vragen u om ons te vertellen wat er gebeurt. 1546 01:19:07,407 --> 01:19:10,240 Harvard dekt het binnen de eerste 10 minuten van hun studie sessie 1547 01:19:10,240 --> 01:19:11,230 echt, echt goed. 1548 01:19:11,230 --> 01:19:14,260 Dus jullie willen maken ervoor dat u kijken terug op dat. 1549 01:19:14,260 --> 01:19:16,387 >> PUBLIEK: Is pisa5 gaat worden op de quiz? 1550 01:19:16,387 --> 01:19:16,970 Hoogleraar: No. 1551 01:19:16,970 --> 01:19:18,240 Niet eens kijken naar pisa5 nu. 1552 01:19:18,240 --> 01:19:18,810 Het is moeilijk. 1553 01:19:18,810 --> 01:19:22,830 Gewoon niet eens de moeite te kijken naar pisa5. 1554 01:19:22,830 --> 01:19:25,665 >> Echter, zoals sommige hints en suggesties, ik 1555 01:19:25,665 --> 01:19:28,320 zou je aanraden pisa5 start Zodra de quiz voorbij. 1556 01:19:28,320 --> 01:19:30,319 Dit zal het moeilijkste zijn week, maar dan jullie 1557 01:19:30,319 --> 01:19:34,590 zal worden doorgegeven het op de heuvels glooiende groene en puppies, 1558 01:19:34,590 --> 01:19:36,115 en het is prima. 1559 01:19:36,115 --> 01:19:39,810 >> Deze klasse krijgt aanzienlijke makkelijker na de vijfde PSET. 1560 01:19:39,810 --> 01:19:41,560 PUBLIEK: Spreekuur zijn zondag, maandag? 1561 01:19:41,560 --> 01:19:44,260 Hoogleraar: Ja, dus kantooruren de zondag op maandag voor de PSET. 1562 01:19:44,260 --> 01:19:47,009 Kantooruren vanavond wezen zal enkel verslag voor de quiz zijn. 1563 01:19:47,009 --> 01:19:50,350 Als iemand wil om binnen te komen en vragen de TAS een vraag, zullen we er zijn. 1564 01:19:50,350 --> 01:19:53,220 >> Ik zal misschien nog een vraag te nemen als iemand een vraag? 1565 01:19:53,220 --> 01:19:53,809 Ja? 1566 01:19:53,809 --> 01:19:55,850 Publiek: Als je definiëren knooppunten [onhoorbaar] 1567 01:19:55,850 --> 01:20:00,700 als je zegt knooppunt ster en dan de volgende, doet de computer automatisch 1568 01:20:00,700 --> 01:20:03,610 begrijpen dat je bent verwijzing naar andere pointer? 1569 01:20:03,610 --> 01:20:04,580 >> Hoogleraar: No. 1570 01:20:04,580 --> 01:20:06,710 >> PUBLIEK: Je moet Het opnieuw koppelen [onverstaanbaar]? 1571 01:20:06,710 --> 01:20:09,270 >> Hoogleraar: Dus in principe de structuur van een knooppunt is, vergeet niet, 1572 01:20:09,270 --> 01:20:12,620 het is alsof je het knooppunt te maken en dan heb je een pointer genaamd volgende. 1573 01:20:12,620 --> 01:20:14,630 Alles wat je doet is het hebben de structuur daar. 1574 01:20:14,630 --> 01:20:16,387 Je moet toewijzen dat ergens pointer. 1575 01:20:16,387 --> 01:20:18,470 Dus de computers niet weet wat het nog doet. 1576 01:20:18,470 --> 01:20:20,250 Je moet eigenlijk toewijzen wanneer je bent het maken van uw gelinkte lijst. 1577 01:20:20,250 --> 01:20:22,170 En dat is wat vooral PSET 5 zal op zijn. 1578 01:20:22,170 --> 01:20:24,106 Dus geen zorgen over elk van dat recht nu. 1579 01:20:24,106 --> 01:20:26,380 >> Publiek: Dus we hoeven niet te richten zich te veel op de link lijst, net 1580 01:20:26,380 --> 01:20:27,440 de algemene opvatting? 1581 01:20:27,440 --> 01:20:30,980 >> Hoogleraar: Gewoon vrij veel stapels, wachtrijen, koppeling lijsten, bomen, hash tabellen. 1582 01:20:30,980 --> 01:20:33,639 Gewoon in staat zijn om te weten wat ze zijn. 1583 01:20:33,639 --> 01:20:35,680 We gaan niet om te vragen je iets specifieks wilt 1584 01:20:35,680 --> 01:20:39,300 want we hebben niet echt gedaan PSET dat het betrekking heeft op een van die nog. 1585 01:20:39,300 --> 01:20:45,540 >> Dus in de laatste twee minuten voor Ik je vrij om deze quiz te vermoorden. 1586 01:20:45,540 --> 01:20:49,370 Vrij veel, als, na te denken over hoe ver jullie zijn gekomen in deze klasse. 1587 01:20:49,370 --> 01:20:52,820 >> Ik herinner me dat twee weken van deze klasse, sommigen van jullie 1588 01:20:52,820 --> 01:20:55,720 spenderen drie uur schrijven water. 1589 01:20:55,720 --> 01:20:57,970 Hoe lang zou het duren jongens te water nu schrijven? 1590 01:20:57,970 --> 01:20:59,670 30 seconden, misschien? 1591 01:20:59,670 --> 01:21:01,810 Denk na over hoeveel jullie hebben geleerd. 1592 01:21:01,810 --> 01:21:04,320 CS is een heel, heel moeilijk onderwerp. 1593 01:21:04,320 --> 01:21:06,190 Er is geen twijfel dat. 1594 01:21:06,190 --> 01:21:09,160 Het is moeilijk, dat is waarom niemand bestudeert het. 1595 01:21:09,160 --> 01:21:10,730 Het is gewoon moeilijk. 1596 01:21:10,730 --> 01:21:11,650 En het is helemaal prima. 1597 01:21:11,650 --> 01:21:14,150 >> En ik ben echt trots op dat iedereen heeft het zo ver gemaakt. 1598 01:21:14,150 --> 01:21:16,380 Psets zijn niet gemakkelijk. 1599 01:21:16,380 --> 01:21:17,790 Ze nemen veel tijd. 1600 01:21:17,790 --> 01:21:22,580 Jongens, ik zal u nooit vragen om te schrijven het spel van 15 of Vigenere op het PSET. 1601 01:21:22,580 --> 01:21:24,160 Geen behoefte om gewoon flippen over. 1602 01:21:24,160 --> 01:21:28,080 Alles wat we hier testen is om te evalueren uw conceptuele kennis, alsook 1603 01:21:28,080 --> 01:21:31,524 zoals sommige van uw basisvaardigheden van codering. 1604 01:21:31,524 --> 01:21:33,440 De test is bedoeld om echt uitdagend. 1605 01:21:33,440 --> 01:21:36,180 Zoals, is het ontworpen voor u om te krijgen 100. 1606 01:21:36,180 --> 01:21:39,880 Het is ook ontworpen voor u om waarschijnlijk niet kunnen eindigen in 75 minuten. 1607 01:21:39,880 --> 01:21:41,995 En dat is helemaal prima. 1608 01:21:41,995 --> 01:21:42,870 Ik ben een student zelf. 1609 01:21:42,870 --> 01:21:45,960 Ik weet het, ik haat het wanneer ik loop uit een quiz zijn als, shit. 1610 01:21:45,960 --> 01:21:47,044 Dat was echt moeilijk. 1611 01:21:47,044 --> 01:21:49,460 Waarschijnlijk wat er gaat happen-- en dat is helemaal prima, 1612 01:21:49,460 --> 01:21:50,751 Ik zeg jullie nu. 1613 01:21:50,751 --> 01:21:53,190 De middelen op deze dingen zijn niet hoog op alle. 1614 01:21:53,190 --> 01:21:55,360 >> En voor degenen onder u die hebben gekregen, zoals, 1615 01:21:55,360 --> 01:21:57,870 drieën op uw probleem sets, dat betekent niet dat je bent 1616 01:21:57,870 --> 01:21:59,536 naar een 60 procent krijgen in deze klasse. 1617 01:21:59,536 --> 01:22:01,440 Als je 60% van de quiz, dat niet doet 1618 01:22:01,440 --> 01:22:03,330 bedoel je gaat krijgen een D in deze klasse. 1619 01:22:03,330 --> 01:22:05,740 We zien, vooral ik, voor die van u in mijn afdeling, 1620 01:22:05,740 --> 01:22:07,406 Ik zie hoe hard jullie werken allemaal. 1621 01:22:07,406 --> 01:22:09,190 En ik houden van dat. 1622 01:22:09,190 --> 01:22:11,420 >> Jullie zullen wel goed. 1623 01:22:11,420 --> 01:22:14,580 Er is geen institutioneel geheugen van geluk op het einde van het semester. 1624 01:22:14,580 --> 01:22:16,840 Omdat alle Harvard kinderen vertellen hun vrienden, oh, kunt u prima. 1625 01:22:16,840 --> 01:22:18,381 Niemand vertelt jullie dat hier. 1626 01:22:18,381 --> 01:22:20,950 Dus ik moet u dat hier jongens vertellen. 1627 01:22:20,950 --> 01:22:22,280 >> Jullie zullen wel goed. 1628 01:22:22,280 --> 01:22:24,080 Ik ben zo trots op jullie allemaal. 1629 01:22:24,080 --> 01:22:25,680 De test zal moeilijk zijn. 1630 01:22:25,680 --> 01:22:28,140 Studie voor het, en daarna gooi het weg. 1631 01:22:28,140 --> 01:22:31,280 Maak je klaar om nieuwe dingen te leren. 1632 01:22:31,280 --> 01:22:33,990 En eet snoep. 1633 01:22:33,990 --> 01:22:35,940 We hebben hebben veel snoep. 1634 01:22:35,940 --> 01:22:37,760 >> Krijg een goede nachtrust's. 1635 01:22:37,760 --> 01:22:40,420 Niet niet slapen, omdat dat echt slecht zou zijn. 1636 01:22:40,420 --> 01:22:41,490 CS is een stuk van de logica. 1637 01:22:41,490 --> 01:22:44,960 Als je niet slaapt, kun je niet functioneren, en je hersenen kan niet functioneren. 1638 01:22:44,960 --> 01:22:48,780 En ik zal hier voor de komende 20 minuten als iemand wil om rond te hangen. 1639 01:22:48,780 --> 01:22:51,150 Jullie gaan om het te doden. 1640 01:22:51,150 --> 01:22:53,000 Veel geluk. 1641 01:22:53,000 --> 01:22:55,663