1 00:00:00,000 --> 00:00:02,880 >> [Muziek] 2 00:00:02,880 --> 00:00:10,580 3 00:00:10,580 --> 00:00:13,500 >> SPEAKER 1: Dit is CS50 en Dit is het begin van week twee. 4 00:00:13,500 --> 00:00:18,400 Dus, laten we duiken in iets dat is buggy, om zo te zeggen. 5 00:00:18,400 --> 00:00:24,015 Dus, hier is CS50 IDE en ik heb trok op voorhand dit Screen-- verdomde 6 00:00:24,015 --> 00:00:25,070 het. 7 00:00:25,070 --> 00:00:25,760 Spoiler alert. 8 00:00:25,760 --> 00:00:26,260 Prima. 9 00:00:26,260 --> 00:00:29,060 Ik heb dit scherm trok hier, die een zeer eenvoudig programma. 10 00:00:29,060 --> 00:00:32,659 Als we scroll naar beneden, de meeste dit is gewoon commentaar, 11 00:00:32,659 --> 00:00:36,730 maar hier in lijnen 13 tot 17 hebben we een programma. 12 00:00:36,730 --> 00:00:40,580 >> Het syntactisch geldig is, wat betekent dat als Ik compileren, zal het compileren en uitvoeren, 13 00:00:40,580 --> 00:00:41,920 maar het is buggy. 14 00:00:41,920 --> 00:00:47,330 Dit programma beweert dat in de commentaren up top dat het moet afdrukken 10 sterren, 15 00:00:47,330 --> 00:00:48,870 maar het niet. 16 00:00:48,870 --> 00:00:53,290 En op basis van uw ervaring, of binnenkort ervaring met C, 17 00:00:53,290 --> 00:00:56,820 kunt u logisch onderscheiden waarom dit is, in feite, buggy? 18 00:00:56,820 --> 00:00:57,804 Ja? 19 00:00:57,804 --> 00:00:59,220 Publiek: Het gaat van nul tot 10. 20 00:00:59,220 --> 00:01:01,884 Dat is 11 iteraties. 21 00:01:01,884 --> 00:01:02,550 SPEAKER 1: Ja. 22 00:01:02,550 --> 00:01:06,030 Dus, het gaat van nul omhoog door en gelijk aan 10, 23 00:01:06,030 --> 00:01:08,140 wat natuurlijk 11 iteraties. 24 00:01:08,140 --> 00:01:10,020 Dus, het gaat om print, inderdaad, 11 sterren. 25 00:01:10,020 --> 00:01:13,040 Dus, de informatica conventie In de meeste programmeertalen 26 00:01:13,040 --> 00:01:15,270 is inderdaad gewoon om beginnen te tellen bij nul, 27 00:01:15,270 --> 00:01:18,800 maar tellen tot, maar niet door de waarde die u eigenlijk schelen. 28 00:01:18,800 --> 00:01:21,216 >> Nu, dit is een ding dat neemt een beetje wennen 29 00:01:21,216 --> 00:01:25,350 en zelfs Kras, uitgevoerd als het voor niet-programmeurs of niet computer 30 00:01:25,350 --> 00:01:28,070 wetenschappers en voor kinderen grotendeels is ontworpen om 31 00:01:28,070 --> 00:01:29,570 je begint over het algemeen tellen op één. 32 00:01:29,570 --> 00:01:30,277 En dat is prima. 33 00:01:30,277 --> 00:01:33,110 Je kan absoluut beginnen te tellen op een als dat comfortabeler. 34 00:01:33,110 --> 00:01:37,210 En tel tot en met 10, maar zult u in het bijzonder deze week te realiseren 35 00:01:37,210 --> 00:01:39,950 en buiten dat net zo veel dingen in de programmering 36 00:01:39,950 --> 00:01:42,465 0 aannemen dat de eerste digit waarmee u rekenen, 37 00:01:42,465 --> 00:01:45,590 dat je gaat om het gemakkelijker te vinden gewoon om in deze gewoonte van start 38 00:01:45,590 --> 00:01:49,490 van nul en tellen de waarde u de zorg over nu uit de 39 00:01:49,490 --> 00:01:49,990 krijgen te gaan. 40 00:01:49,990 --> 00:01:50,990 >> Zo, dat is bevestigd dat. 41 00:01:50,990 --> 00:01:53,670 We veranderde de kleiner of gelijk aan iets minder dan. 42 00:01:53,670 --> 00:01:56,050 Laten we eens een kijkje nemen op een tweede voorbeeld hier. 43 00:01:56,050 --> 00:01:59,585 >> Dus, dit programma stelt ook in zijn merkt up top dat het moet worden afgedrukt 44 00:01:59,585 --> 00:02:02,260 tien sterren, maar het niet. 45 00:02:02,260 --> 00:02:05,540 Wat is de bug hier? 46 00:02:05,540 --> 00:02:07,930 >> Dus, what-- en sorry, laten we duidelijk zijn. 47 00:02:07,930 --> 00:02:08,610 10 sterren. 48 00:02:08,610 --> 00:02:11,644 Één per regel, maar het niet. 49 00:02:11,644 --> 00:02:14,810 Dus, in feite, laat me gaan en compileren dit omdat het een beetje minder 50 00:02:14,810 --> 00:02:16,900 duidelijk gebaseerd op deze beschrijving. 51 00:02:16,900 --> 00:02:18,720 Laat me gaan naar onze bron directory. 52 00:02:18,720 --> 00:02:25,110 Maak buggy één punt slash, een buggy. 53 00:02:25,110 --> 00:02:28,680 Oké, ik zie 11 sterren, die is nog steeds problematisch, 54 00:02:28,680 --> 00:02:30,090 maar ze zijn ook allemaal in één lijn. 55 00:02:30,090 --> 00:02:31,500 Wat is het probleem hier? 56 00:02:31,500 --> 00:02:32,339 Ja. 57 00:02:32,339 --> 00:02:33,255 PUBLIEK: [onverstaanbaar]. 58 00:02:33,255 --> 00:02:36,194 59 00:02:36,194 --> 00:02:36,860 SPEAKER 1: Ja. 60 00:02:36,860 --> 00:02:40,210 Dus dit is een subtiliteit die u mag herinner me het maken van korte vermelding van. 61 00:02:40,210 --> 00:02:42,793 Hoewel alles ziet mooi, en het is goed ingesprongen, 62 00:02:42,793 --> 00:02:45,850 en het soort ziet Scratch-like in die lijn 16 en 17 zijn, 63 00:02:45,850 --> 00:02:47,600 inderdaad, ingesprongen onder die lus. 64 00:02:47,600 --> 00:02:48,400 Dat is niet van belang. 65 00:02:48,400 --> 00:02:50,460 De computer niet weten of zie witte ruimte. 66 00:02:50,460 --> 00:02:52,910 Witte ruimte is alleen voor ons mensen, stilistisch. 67 00:02:52,910 --> 00:02:57,010 De computer weet wanneer u accolades, dat zou inderdaad 68 00:02:57,010 --> 00:02:58,280 Dit probleem oplossen. 69 00:02:58,280 --> 00:03:02,350 >> Dus, als we daadwerkelijk gingen en expliciet zet in deze accolades 70 00:03:02,350 --> 00:03:05,220 dat zou dit probleem op te lossen door duidelijk te maken aan de compiler 71 00:03:05,220 --> 00:03:07,930 dat ik eigenlijk wilt uitvoeren twee regels code weer 72 00:03:07,930 --> 00:03:09,220 en opnieuw, en opnieuw. 73 00:03:09,220 --> 00:03:11,680 Maar wat is de fundamentele verklaring? 74 00:03:11,680 --> 00:03:12,180 Rechts? 75 00:03:12,180 --> 00:03:15,260 We niet strikt nodig accolades de hele tijd, 76 00:03:15,260 --> 00:03:18,210 ook al is het waarschijnlijk het beste de praktijk toch te krijgen in die gewoonte 77 00:03:18,210 --> 00:03:20,878 ook al voegt twee tekens om uw code. waarom? 78 00:03:20,878 --> 00:03:22,380 >> PUBLIEK: [onverstaanbaar]? 79 00:03:22,380 --> 00:03:24,630 SPEAKER 1: Ja, dus dat is andere oplossing geheel. 80 00:03:24,630 --> 00:03:25,130 Rechts? 81 00:03:25,130 --> 00:03:28,250 Vooral als op het eerste gezicht je niet echt waarderen wat er gaande is. 82 00:03:28,250 --> 00:03:31,070 Goed, zeker we konden gewoon doen twee dingen tegelijk 83 00:03:31,070 --> 00:03:32,710 en net voorkomen dat het probleem helemaal. 84 00:03:32,710 --> 00:03:36,080 En dat is prima, maar nu, voor de huidige doeleinden, wat 85 00:03:36,080 --> 00:03:38,200 is de verklaring voor de bug? 86 00:03:38,200 --> 00:03:39,810 Waarom waren al die sterren op één lijn? 87 00:03:39,810 --> 00:03:40,806 Ja? 88 00:03:40,806 --> 00:03:43,296 >> Publiek: Het lijkt erop dat als je hebt een regel code, 89 00:03:43,296 --> 00:03:46,649 je kunt het doen zonder die. 90 00:03:46,649 --> 00:03:47,440 SPEAKER 1: Precies. 91 00:03:47,440 --> 00:03:48,750 Dit is gewoon een menselijke conventie. 92 00:03:48,750 --> 00:03:50,750 Mensen beseffen dat het een beetje vervelend of saai 93 00:03:50,750 --> 00:03:53,470 moeten accolades alle zetten van de tijd als alles wat je wilt doen 94 00:03:53,470 --> 00:03:55,090 is uit te voeren een regel code. 95 00:03:55,090 --> 00:03:57,660 Dus besloot de mens een aantal tijd geleden dat dat is prima. 96 00:03:57,660 --> 00:04:01,180 Als u al uw loop te zetten op net die ene regel als deze, 97 00:04:01,180 --> 00:04:04,030 dat is prima met de single puntkomma aan het einde. 98 00:04:04,030 --> 00:04:07,210 Maar je kunt alleen een dergelijk lijn zonder de accolades. 99 00:04:07,210 --> 00:04:09,900 >> Dus, als CS50 stijlgids als u wijzen op, 100 00:04:09,900 --> 00:04:11,980 je zult zien dat het algemeen Het is een goede gewoonte 101 00:04:11,980 --> 00:04:14,920 om in deze tot je heel comfortabel dwaling 102 00:04:14,920 --> 00:04:17,404 van dit soort overeenkomsten en het doen van uw eigen ding. 103 00:04:17,404 --> 00:04:18,820 Zolang je zelf consistent. 104 00:04:18,820 --> 00:04:21,540 En we zullen meer over praten stijl een beetje later vandaag. 105 00:04:21,540 --> 00:04:23,200 >> Dus, laat me open te stellen een ander programma. 106 00:04:23,200 --> 00:04:24,930 Natuurlijk moeten we vast te stellen dat 10 ook. 107 00:04:24,930 --> 00:04:32,470 Laat me ga je gang en schrijf een echte snel programma dat ik bel, 108 00:04:32,470 --> 00:04:38,140 laten we zeggen, loop punt C. Dus, loop punt C. En in de loop dot C Ik ga hebben, 109 00:04:38,140 --> 00:04:41,970 zijn standaard I / O dot H int belangrijkste leegte. 110 00:04:41,970 --> 00:04:44,020 En laten we nu gewoon doen, inderdaad, een lus. 111 00:04:44,020 --> 00:04:46,020 Dus, 4 int ik krijgt nul. 112 00:04:46,020 --> 00:04:48,660 I is minder dan, zeg, 50. 113 00:04:48,660 --> 00:04:49,950 Ik plus, plus. 114 00:04:49,950 --> 00:04:53,350 En dan hier laten ga je gang en doen afdrukken F. 115 00:04:53,350 --> 00:04:56,400 En dan wil ik ik printen en een nieuwe lijn, puntkomma. 116 00:04:56,400 --> 00:05:00,015 >> En dit moet al het printen getallen van nul tot 50? 117 00:05:00,015 --> 00:05:02,900 118 00:05:02,900 --> 00:05:03,680 Een paar hoofd knikt. 119 00:05:03,680 --> 00:05:04,270 Enkele nos. 120 00:05:04,270 --> 00:05:05,339 Wat is de bug al? 121 00:05:05,339 --> 00:05:06,630 Wat is het gemakkelijk fout die ik maakte? 122 00:05:06,630 --> 00:05:07,170 Ja. 123 00:05:07,170 --> 00:05:08,544 >> PUBLIEK: [onverstaanbaar]. 124 00:05:08,544 --> 00:05:09,210 SPEAKER 1: Ja. 125 00:05:09,210 --> 00:05:11,520 Dus zelfs al ziet het er als dit is wat ik van plan, 126 00:05:11,520 --> 00:05:13,920 herinneren dat ik ook gewoon een ASCII karakter. 127 00:05:13,920 --> 00:05:14,955 >> Dus, als ik zeg, print "I." 128 00:05:14,955 --> 00:05:16,670 Het is letterlijk gaan I. Dus af te drukken, als ik 129 00:05:16,670 --> 00:05:20,030 willen plug-in een placeholder waarde ik echt nodig om dit te doen 130 00:05:20,030 --> 00:05:22,630 en vervolgens plug-in waarde van I dynamisch. 131 00:05:22,630 --> 00:05:25,200 Anders Ik ga gewoon Ik krijg 50's op het scherm. 132 00:05:25,200 --> 00:05:28,140 >> Dus, laat me gaan en maakt deze lus, voer het uit, 133 00:05:28,140 --> 00:05:30,650 en, inderdaad, we hebben alle de weg omhoog door 49. 134 00:05:30,650 --> 00:05:34,140 En als ik blader terug in de tijd zie ik het getal nul aan het begin. 135 00:05:34,140 --> 00:05:36,050 >> Nou, wat als ik soort verpesten? 136 00:05:36,050 --> 00:05:37,800 Wat als ik dit doe? 137 00:05:37,800 --> 00:05:40,120 Gewoon omdat ik niet denken. 138 00:05:40,120 --> 00:05:40,970 Wat is dit programma. 139 00:05:40,970 --> 00:05:43,970 Eens opnieuw gecompileerd en draaien, ga logisch doen? 140 00:05:43,970 --> 00:05:44,870 >> Publiek: Niets. 141 00:05:44,870 --> 00:05:45,661 >> SPEAKER 1: Niets. 142 00:05:45,661 --> 00:05:47,156 Waarom is dat? 143 00:05:47,156 --> 00:05:49,124 >> Publiek: I is ontworpen voor nul. 144 00:05:49,124 --> 00:05:51,899 Dus de voorwaarde onwaar is. 145 00:05:51,899 --> 00:05:52,940 SPEAKER 1: Ja, precies. 146 00:05:52,940 --> 00:05:55,110 Alle code correct is, syntactisch. 147 00:05:55,110 --> 00:05:57,310 Dit zal compileren, dit code zal draaien, maar het is niet 148 00:05:57,310 --> 00:06:00,110 van plan om iets nuttigs te doen omdat ik initialiseren ik op nul. 149 00:06:00,110 --> 00:06:02,240 Vervolgens hebben we controleren, is dat ik meer dan 50? 150 00:06:02,240 --> 00:06:03,810 Natuurlijk, nee, het is niet. 151 00:06:03,810 --> 00:06:05,760 Zodat de lus voert nooit helemaal. 152 00:06:05,760 --> 00:06:09,580 >> Wat als we iets doen een beetje meer roekeloos? 153 00:06:09,580 --> 00:06:12,890 Dus, wat als we doen, zoals int ik krijgt nul. 154 00:06:12,890 --> 00:06:15,640 En nu laat ik gebruik maken van de tijdens het lus, die nog een voorwaarde was. 155 00:06:15,640 --> 00:06:21,810 En terwijl ik zeg, terwijl ik groter dan of gelijk aan nul en vervolgens in hier 156 00:06:21,810 --> 00:06:26,070 ga je gang en sla het bestand op, maken lus. 157 00:06:26,070 --> 00:06:27,070 En ik ben op het punt om het uit te voeren. 158 00:06:27,070 --> 00:06:30,230 Wat ga ik om dit te zien tijd met een while loop? 159 00:06:30,230 --> 00:06:30,852 Ja. 160 00:06:30,852 --> 00:06:32,120 >> Publiek: Een oneindige lus? 161 00:06:32,120 --> 00:06:35,360 >> SPEAKER 1: Een oneindige lus? 162 00:06:35,360 --> 00:06:36,662 Ja, en waarom? 163 00:06:36,662 --> 00:06:38,120 Publiek: Omdat het altijd nul. 164 00:06:38,120 --> 00:06:38,786 SPEAKER 1: Ja. 165 00:06:38,786 --> 00:06:40,100 Zo wordt ik geïnitialiseerd als nul. 166 00:06:40,100 --> 00:06:44,470 Natuurlijk heb ik altijd groter dan of gelijk aan 0 als gevolg. 167 00:06:44,470 --> 00:06:46,460 Dus, ik ben gewoon gaan zie deze oneindig. 168 00:06:46,460 --> 00:06:49,850 En nu, dit is een keer komen of twee keer aan de hoofden van de cursus. 169 00:06:49,850 --> 00:06:52,417 Wat gebeurt er als je hebben een oneindige lus? 170 00:06:52,417 --> 00:06:53,314 >> PUBLIEK: Controle C. 171 00:06:53,314 --> 00:06:53,980 SPEAKER 1: Ja. 172 00:06:53,980 --> 00:06:56,250 Dus Controle C zal uiteindelijk reageren. 173 00:06:56,250 --> 00:06:59,520 Helaas, we hebben uitgeprint miljoenen en miljoenen nullen al 174 00:06:59,520 --> 00:07:01,520 en zo de computer soort kreeg voor me. 175 00:07:01,520 --> 00:07:03,394 Dus, het gaat om te negeren me voor een klein beetje. 176 00:07:03,394 --> 00:07:06,560 Maar als je gewoon op Controle C een paar tijden op je Mac of pc-toetsenbord, 177 00:07:06,560 --> 00:07:08,790 uiteindelijk moet, inderdaad, te beëindigen. 178 00:07:08,790 --> 00:07:11,770 En zo niet, laten we u zien wat technieken voordat lang waar u 179 00:07:11,770 --> 00:07:14,850 kan eigenlijk geweld programma's te doden, net als in Windows en Mac OS, 180 00:07:14,850 --> 00:07:15,562 indien nodig. 181 00:07:15,562 --> 00:07:16,770 Maar laten we iets anders proberen. 182 00:07:16,770 --> 00:07:19,895 Laten we eigenlijk verhogen I. Is dit nog steeds oneindig te zijn? 183 00:07:19,895 --> 00:07:22,870 184 00:07:22,870 --> 00:07:25,140 Laat me dit uit te voeren. 185 00:07:25,140 --> 00:07:27,090 En nu kunt u soort zien wat er gebeurt. 186 00:07:27,090 --> 00:07:30,140 Ook dit is een oneindige lus. 187 00:07:30,140 --> 00:07:33,080 Maar dit is een beetje een strikvraag. 188 00:07:33,080 --> 00:07:35,460 Gaat dit om nummers voor altijd af te drukken? 189 00:07:35,460 --> 00:07:36,647 >> PUBLIEK: No. 190 00:07:36,647 --> 00:07:37,230 SPEAKER 1: No. 191 00:07:37,230 --> 00:07:37,620 Waarom? 192 00:07:37,620 --> 00:07:38,820 Ik hoorde dat sommige nos hier. 193 00:07:38,820 --> 00:07:41,859 Someone-- Yeah. 194 00:07:41,859 --> 00:07:44,275 PUBLIEK: U hoeft niet genoeg beetjes om echt door te gaan. 195 00:07:44,275 --> 00:07:44,730 SPEAKER 1: Oké. 196 00:07:44,730 --> 00:07:46,000 Dus ik heb niet genoeg beetjes om door te gaan. 197 00:07:46,000 --> 00:07:47,124 Dus, wat er gaat gebeuren? 198 00:07:47,124 --> 00:07:49,320 Het gaat gewoon om te stoppen? 199 00:07:49,320 --> 00:07:52,542 >> Doelgroep: Op een gegeven moment het zal sluiten the-- 200 00:07:52,542 --> 00:07:54,500 SPEAKER 1: Het zal sluiten de lus naar beneden, maar waarom? 201 00:07:54,500 --> 00:07:57,950 Wat er gaat gebeuren op de einde van zijn grenzen? 202 00:07:57,950 --> 00:07:58,479 Ja? 203 00:07:58,479 --> 00:08:00,520 Publiek: Het fietst terug naar negatieve getallen. 204 00:08:00,520 --> 00:08:02,900 SPEAKER 1: negatieve getallen, of als we waren net behandelen positief, 205 00:08:02,900 --> 00:08:03,570 nul minimaal. 206 00:08:03,570 --> 00:08:04,550 Dus ja, absoluut. 207 00:08:04,550 --> 00:08:08,059 Bedenk dat we de laatste keer dat zag, als je verhogen uw stukjes een te veel tijd, 208 00:08:08,059 --> 00:08:10,225 en je bent er voorgrond overflow de capaciteit van uw int 209 00:08:10,225 --> 00:08:13,058 of wat dan ook het type data is, je bent gaan om rond, waarschijnlijk, 210 00:08:13,058 --> 00:08:14,020 twee negatieve getallen. 211 00:08:14,020 --> 00:08:16,644 Of als je hebt aangeven dat range mag alleen positief zijn, 212 00:08:16,644 --> 00:08:18,560 die je kunt doen, maar we hebben nog niet gezien dat, 213 00:08:18,560 --> 00:08:21,420 je zou kunnen eindigen ten minste terug op nul. 214 00:08:21,420 --> 00:08:22,410 Hoewel, eigenlijk wel. 215 00:08:22,410 --> 00:08:24,320 In dit geval negatief getallen, waarbij 216 00:08:24,320 --> 00:08:26,870 de lus gaat beëindigen omdat ik niet, in feite, 217 00:08:26,870 --> 00:08:29,220 groter dan of gelijk aan nul als het negatief is. 218 00:08:29,220 --> 00:08:31,780 >> Dus, helaas, hoe lang zouden we wachten? 219 00:08:31,780 --> 00:08:35,490 Op dit moment zijn we aan wat, 2.000.000-ish? 220 00:08:35,490 --> 00:08:37,705 We zijn net 2 miljard, we zullen moeten wachten 221 00:08:37,705 --> 00:08:39,330 totdat we eigenlijk zien dit symptoom. 222 00:08:39,330 --> 00:08:46,200 Maar we kunnen het zien van een beetje sneller, maybe-- laten we eens kijken of we kunnen onderbreken. 223 00:08:46,200 --> 00:08:46,700 Kom op. 224 00:08:46,700 --> 00:08:49,500 225 00:08:49,500 --> 00:08:51,331 Zelfs de menu's langzaam verschijnen. 226 00:08:51,331 --> 00:08:51,830 Prima. 227 00:08:51,830 --> 00:08:54,270 Dus, zullen we terug naar die vóór lang. 228 00:08:54,270 --> 00:08:56,320 Het is een goed tijd-- te verdoemen, puppies. 229 00:08:56,320 --> 00:08:58,280 >> Het is een goed moment voor een aantal aankondigingen. 230 00:08:58,280 --> 00:09:01,225 Dus, als je misschien leuk om deel te nemen in YHack, 231 00:09:01,225 --> 00:09:03,600 die een evenement wordt gesponsord door onze vrienden aan de Yale. 232 00:09:03,600 --> 00:09:05,990 En, inderdaad, een deel van de cursus TFs aan de Yale zijn betrokken bij dit. 233 00:09:05,990 --> 00:09:08,610 YHack is een internationale hack-a-thon georganiseerd door en hield 234 00:09:08,610 --> 00:09:12,395 aan de Yale, het samenbrengen van 1500 gelijkgestemde hackers en creatieven alle 235 00:09:12,395 --> 00:09:13,120 over de hele wereld. 236 00:09:13,120 --> 00:09:14,610 Als dit van belang is, neem hier een kijkje. 237 00:09:14,610 --> 00:09:17,401 Als dit te kort op de scherm, een kijkje nemen op dia's van vandaag 238 00:09:17,401 --> 00:09:19,622 voor de URL voor yhack.org. 239 00:09:19,622 --> 00:09:21,080 Dus, ook een paar aankondigingen. 240 00:09:21,080 --> 00:09:24,410 Dus, officieel secties start volgende week hier en New Haven. 241 00:09:24,410 --> 00:09:27,660 Houd in gedachten dat je zult krijgen een e-mail later dit weekend waarschijnlijk. 242 00:09:27,660 --> 00:09:29,390 Het duurt lang voor CS50 sectie, 243 00:09:29,390 --> 00:09:32,080 gezien alle mensen in de klasse en iedereen bewegen. 244 00:09:32,080 --> 00:09:34,871 En alle Teaching Fellows ' schema's worden ook nog stollen, 245 00:09:34,871 --> 00:09:38,110 maar stay tuned voor een e-mail en indien nodig worden, kunt u re-sectie daar na. 246 00:09:38,110 --> 00:09:39,580 >> Study.cs50.net. 247 00:09:39,580 --> 00:09:43,280 Dus zelfs als je een constante deelnemer in secties, te beseffen dat bijna alle 248 00:09:43,280 --> 00:09:46,786 van de middelen die we gebruiken in secties publiek beschikbaar op CS50 249 00:09:46,786 --> 00:09:48,460 Studeren aan deze URL hier. 250 00:09:48,460 --> 00:09:51,630 Dus, als je ooit zou willen bekijken opnieuw materiaal uit sectie, of gelezen vooruit, 251 00:09:51,630 --> 00:09:54,170 of u kunt het niet maken sommige week, beseffen dat monster dia's, 252 00:09:54,170 --> 00:09:58,210 en problemen, en definities, en nog veel meer zijn daar ook. 253 00:09:58,210 --> 00:10:00,645 >> Kantooruren te hervatten vandaag de dag, en morgen en woensdag, 254 00:10:00,645 --> 00:10:03,020 en donderdag controleer de cursus website voor het schema. 255 00:10:03,020 --> 00:10:05,690 >> En ook nu lanceren vandaag CS50 bespreken. 256 00:10:05,690 --> 00:10:09,230 Dus, als en wanneer u vragen hebt elkaar of voor het personeel van de cursus, 257 00:10:09,230 --> 00:10:12,099 en zijn over het algemeen werken op sommige probleem set, 258 00:10:12,099 --> 00:10:15,015 beseffen dat je per se niet moeten wenden tot de mens naast jou. 259 00:10:15,015 --> 00:10:17,810 Als er niemand daar, kunt u reiken aan ons en klasgenoten 260 00:10:17,810 --> 00:10:19,890 online via CS50 bespreken. 261 00:10:19,890 --> 00:10:22,600 Dit is dus een gesprek board voor de cursus, 262 00:10:22,600 --> 00:10:24,550 en beseffen dat dit is misschien wel de beste 263 00:10:24,550 --> 00:10:28,480 plaats om te beginnen als je vragen wanneer buiten kantooruren 264 00:10:28,480 --> 00:10:29,470 in het bijzonder. 265 00:10:29,470 --> 00:10:31,070 >> Lunches zal het te starten deze week. 266 00:10:31,070 --> 00:10:33,170 Bij Fire and Ice [Onhoorbaar] in New Haven. 267 00:10:33,170 --> 00:10:35,379 Neem een ​​kijkje op de cursus website om RSVP. 268 00:10:35,379 --> 00:10:36,753 Wie het eerst komt, het eerst maalt voor. 269 00:10:36,753 --> 00:10:39,380 Als je niet in deze week krijg we zullen deze de meeste elke vrijdag te doen 270 00:10:39,380 --> 00:10:40,400 gedurende de looptijd. 271 00:10:40,400 --> 00:10:41,830 >> OK, en nu een woord over het sorteren. 272 00:10:41,830 --> 00:10:44,690 Vooral omdat we probleem in te voeren set één, dat is deze week, 273 00:10:44,690 --> 00:10:46,670 en probleem set twee en daarna. 274 00:10:46,670 --> 00:10:51,680 Hoe kunnen we gaan over het evalueren van P sets en het evalueren van de kwaliteit daarvan? 275 00:10:51,680 --> 00:10:55,560 Dus, het is vier assen die we gebruiken in CS50, en ze zijn deze vier hier. 276 00:10:55,560 --> 00:10:59,200 >> Reikwijdte, die vastlegt op een numerieke basis van hoeveel van de P set 277 00:10:59,200 --> 00:10:59,860 heb je te pakken. 278 00:10:59,860 --> 00:11:02,890 Het is ruwweg overeen met inspanning, en het is onze manier van vastleggen 279 00:11:02,890 --> 00:11:05,190 heb je proberen de helft van de P set, alle van de P-serie. 280 00:11:05,190 --> 00:11:08,860 Dit is een gemakkelijke te perfect te krijgen scores op als je dat doet, inderdaad, 281 00:11:08,860 --> 00:11:11,020 probeer elk aspect van de P-reeks. 282 00:11:11,020 --> 00:11:12,010 Dus, hou dat in gedachten. 283 00:11:12,010 --> 00:11:13,420 >> Correctheid is precies dat. 284 00:11:13,420 --> 00:11:17,760 Is uw code werk als de specificatie en als het personeel 'monsteroplossing 285 00:11:17,760 --> 00:11:19,730 suggereren dat de code moet in feite werken. 286 00:11:19,730 --> 00:11:23,260 Controleer 50, als je het niet hebben voldaan Toch is in P set een specificatie 287 00:11:23,260 --> 00:11:25,060 en zal in het algemeen geef je ja / nee antwoorden 288 00:11:25,060 --> 00:11:26,518 over de vraag of de code juist is. 289 00:11:26,518 --> 00:11:30,680 Althans voor zover we gaan te evalueren op basis van de tests 290 00:11:30,680 --> 00:11:32,430 wij gelegenheid binnen dat programma. 291 00:11:32,430 --> 00:11:33,850 >> Ontwerp is veel meer subjectief. 292 00:11:33,850 --> 00:11:35,994 Dit is hoe goed geschreven is uw code. 293 00:11:35,994 --> 00:11:38,410 En dit is iets dat je beter in de tijd te krijgen, 294 00:11:38,410 --> 00:11:41,201 en het is iets dat we bieden meer kwalitatieve feedback op. 295 00:11:41,201 --> 00:11:43,350 En door het ontwerp ik misschien bedoel voordat lang je 296 00:11:43,350 --> 00:11:47,650 misschien geneigd in sommige P ingesteld op loopingly iets te doen, 297 00:11:47,650 --> 00:11:51,590 maar misschien drie of vier, of vijf geneste voren lussen of geneste terwijl 298 00:11:51,590 --> 00:11:52,090 loops. 299 00:11:52,090 --> 00:11:54,130 Die in het algemeen moeten beginnen om je ineenkrimpen 300 00:11:54,130 --> 00:11:56,070 en zou algemeen beschouwd slecht ontwerp. 301 00:11:56,070 --> 00:11:59,490 En je zult beginnen te zien in de klas en uit de klas goede manieren om dingen te doen, 302 00:11:59,490 --> 00:12:02,920 slechte manieren om dingen te doen die allemaal correct zou zijn, maar niet 303 00:12:02,920 --> 00:12:04,304 se goed ontworpen. 304 00:12:04,304 --> 00:12:05,220 Zoals het schrijven van een essay. 305 00:12:05,220 --> 00:12:08,100 Je zou in staat zijn om woorden op te zetten pagina die grammaticaal correct zijn, 306 00:12:08,100 --> 00:12:10,016 maar het essay of de thesis ze in net 307 00:12:10,016 --> 00:12:11,810 volledig onsamenhangend of overtuigend. 308 00:12:11,810 --> 00:12:15,930 En dus dat zou de analoge in zijn geschreven wereld van slecht of goed ontwerp. 309 00:12:15,930 --> 00:12:18,490 >> En stijl, ook, is vrij subjectief. 310 00:12:18,490 --> 00:12:20,060 Maar in ieder geval verwachten we consistentie. 311 00:12:20,060 --> 00:12:21,480 Dit is hoe mooi is uw code. 312 00:12:21,480 --> 00:12:22,840 Zijn dingen mooi ingesprongen? 313 00:12:22,840 --> 00:12:26,600 Zijn uw variabelen en de naam / Zijn alle je haakjes en accolades 314 00:12:26,600 --> 00:12:27,920 uitgelijnd zoals ze moeten zijn? 315 00:12:27,920 --> 00:12:31,490 We hebben een CS50 stijlgids als het probleem set zal u wijzen op. 316 00:12:31,490 --> 00:12:33,730 Die comfortabeler zijn van harte welkom om afwijken van die 317 00:12:33,730 --> 00:12:35,771 zolang je bent zelf consistent. 318 00:12:35,771 --> 00:12:38,020 En ook dit is een les we zullen versterken in paragraaf. 319 00:12:38,020 --> 00:12:40,990 Dus, als dit alles was een beetje snel, realiseren van de P set en secties 320 00:12:40,990 --> 00:12:42,900 zal in meer diepte gaan voor lang. 321 00:12:42,900 --> 00:12:45,490 >> Maar over het algemeen hebben we zeer weinig emmers voor CS50. 322 00:12:45,490 --> 00:12:48,170 Scores zijn over het algemeen op een schaal van 2:59 of 4:59. 323 00:12:48,170 --> 00:12:50,836 We zijn literally-- en ik kan niet zeggen Dit genoeg in de eerste week. 324 00:12:50,836 --> 00:12:51,582 Drie is goed. 325 00:12:51,582 --> 00:12:54,290 Dus, ook al, ja, drie vijf normaal, wiskundig, 326 00:12:54,290 --> 00:12:57,240 kan een 60 procent of als een D minpunt. 327 00:12:57,240 --> 00:12:58,840 Drie is in feite goed. 328 00:12:58,840 --> 00:13:01,050 En, in feite, we verwachten de meeste studenten in de klas 329 00:13:01,050 --> 00:13:04,280 om rond te beginnen met de term tweeën en drieën, en fours. 330 00:13:04,280 --> 00:13:05,510 Waarschijnlijk niet zo veel vijven. 331 00:13:05,510 --> 00:13:06,661 Niet te veel degenen. 332 00:13:06,661 --> 00:13:08,910 Maar algemeen beginnen dat sweet spot in de bocht 333 00:13:08,910 --> 00:13:11,694 zodat naarmate de tijd vordert, er eigenlijk ruimte voor, 334 00:13:11,694 --> 00:13:13,360 en de mogelijkheden voor de bovenste progressie. 335 00:13:13,360 --> 00:13:15,810 Dus, neem dan drie niet gelijk met 60%. 336 00:13:15,810 --> 00:13:17,410 Het is veel abstracter dan dat. 337 00:13:17,410 --> 00:13:20,160 De formule waarmee we berekenen cijfers als volgt gewogen. 338 00:13:20,160 --> 00:13:21,610 Correctheid is de moeite waard het meest. 339 00:13:21,610 --> 00:13:23,010 Design is een beetje minder waard. 340 00:13:23,010 --> 00:13:24,490 Stijl is een beetje minder waard. 341 00:13:24,490 --> 00:13:26,950 En dit meestal vangt de tijd 342 00:13:26,950 --> 00:13:29,800 dat gaat in het krijgen van elk van deze assen precies goed. 343 00:13:29,800 --> 00:13:31,810 Stijl is super eenvoudig, moet super snel zijn, 344 00:13:31,810 --> 00:13:33,657 maar het is een gemakkelijke gewoonte te lui over. 345 00:13:33,657 --> 00:13:35,490 Juistheid zou kunnen nemen u het meest van de tijd. 346 00:13:35,490 --> 00:13:38,990 Jagen enkele bug macht neem dat extra uur of meer, 347 00:13:38,990 --> 00:13:41,737 en zo de scoring uiteindelijk vangt dat. 348 00:13:41,737 --> 00:13:43,070 En dus, nu een ernstiger woord. 349 00:13:43,070 --> 00:13:45,240 Omdat CS50 heeft onderscheid betere 350 00:13:45,240 --> 00:13:47,440 of nog erger, dat ze misschien beter kennen 351 00:13:47,440 --> 00:13:50,065 met de problemen van de academische eerlijkheid dan de meeste een andere koers. 352 00:13:50,065 --> 00:13:53,720 En inderdaad, het is naar mijn weten dat sturen we meer studenten, helaas, 353 00:13:53,720 --> 00:13:56,690 voor disciplinaire doeleinden elk jaar als gevolg. Dus, 354 00:13:56,690 --> 00:13:59,040 in het belang van volledige openbaarmaking, laten we praten in het kort 355 00:13:59,040 --> 00:14:02,820 over wat er in CS50, en wat je kan doen, en wat u kunt zich bewust van zijn. 356 00:14:02,820 --> 00:14:05,530 >> Dus, hier sinds 2007, toen Ik erfde de cursus, 357 00:14:05,530 --> 00:14:07,870 is het aantal Ad Board gevallen. 358 00:14:07,870 --> 00:14:10,690 Ad van Commissarissen is Harvard disciplinaire lichaam, of het nu Honor Counsel, 359 00:14:10,690 --> 00:14:13,790 om welke gevallen worden aangeduid als studenten iets doen dat de cursus 360 00:14:13,790 --> 00:14:15,470 syllabus beschouwt onredelijk. 361 00:14:15,470 --> 00:14:17,220 Er is geen echte patroon hier, zou ik zeggen. 362 00:14:17,220 --> 00:14:19,530 Het schommelt over de jaar, maar over het algemeen 363 00:14:19,530 --> 00:14:22,262 Dit is het aantal de gevallen die worden genoemd. 364 00:14:22,262 --> 00:14:23,970 Het aantal studenten die betrokken zijn? 365 00:14:23,970 --> 00:14:25,290 Het varieert ook. 366 00:14:25,290 --> 00:14:27,930 Typisch, vorig jaar Bijvoorbeeld, 29 studenten aan Harvard 367 00:14:27,930 --> 00:14:29,740 waren Ad Boarded, om zo te zeggen. 368 00:14:29,740 --> 00:14:32,670 29 van hen de huidige studenten, twee van hen voor studenten, 369 00:14:32,670 --> 00:14:35,610 die waren samenwerken in sommige ongewenste manier. 370 00:14:35,610 --> 00:14:38,400 En vervolgens in termen van de percentage is het meestal ongeveer 3% 371 00:14:38,400 --> 00:14:41,360 van de klasse die helaas maakt dit soort beslissingen. 372 00:14:41,360 --> 00:14:44,470 >> Dus, vorig jaar was 3,5% van CS50's studentenpopulatie 373 00:14:44,470 --> 00:14:46,820 dat was Ad Boarded, om zo te zeggen. 374 00:14:46,820 --> 00:14:48,490 >> Dus, wat betekent dit alles betekenen? 375 00:14:48,490 --> 00:14:49,660 En wat doen we eigenlijk doen? 376 00:14:49,660 --> 00:14:52,930 >> Dus, voor volledige openheid, we absoluut, zoals computer wetenschappers, 377 00:14:52,930 --> 00:14:57,620 hebben software tools tot onze beschikking en het is erg makkelijk voor ons, in alle eerlijkheid, 378 00:14:57,620 --> 00:15:00,980 klasgenoten dat andere die niet kruisen deze lijnen te steken vergelijken 379 00:15:00,980 --> 00:15:04,570 elke inzending dit jaar tegen elke inzending voor de afgelopen acht jaar. 380 00:15:04,570 --> 00:15:05,445 Software doet dit. 381 00:15:05,445 --> 00:15:07,440 En uiteindelijk is het menselijke ogen die besluiten 382 00:15:07,440 --> 00:15:11,410 al dan niet om wat te verwijzen zaak voor verdere berechting, 383 00:15:11,410 --> 00:15:12,737 maar software helpt zeker. 384 00:15:12,737 --> 00:15:15,820 En, eerlijk gezegd, is de reden waarom dat ik denk we zulke grote aantallen in CS50. 385 00:15:15,820 --> 00:15:18,540 Het is niet omdat CS50 studenten of CS studenten meer 386 00:15:18,540 --> 00:15:20,840 over het algemeen zijn minder eerlijk dan andere studenten, 387 00:15:20,840 --> 00:15:22,340 het is gewoon dat we de hulpmiddelen en technieken 388 00:15:22,340 --> 00:15:24,095 waarmee deze eerste doorgang nemen. 389 00:15:24,095 --> 00:15:25,960 >> Maar we houden in de gaten Op al deze zaken 390 00:15:25,960 --> 00:15:30,340 ook, opnieuw, in het belang van de erkenning van het werk dat wordt gezet 391 00:15:30,340 --> 00:15:32,397 in door een super meerderheid van de klas. 392 00:15:32,397 --> 00:15:34,230 En het beleid van de cursus op academische eerlijkheid, 393 00:15:34,230 --> 00:15:37,021 ook al is het een bos van de leden lang met een bos van kogels 394 00:15:37,021 --> 00:15:40,490 die hopelijk zijn goed leesbaar, is het echt neer redelijk. 395 00:15:40,490 --> 00:15:44,000 En de beste vuistregel dat wij bieden binnen de syllabus 396 00:15:44,000 --> 00:15:46,020 Dit is de essentie van al het werk dat u 397 00:15:46,020 --> 00:15:47,850 voorleggen aan deze cursus moet je eigen. 398 00:15:47,850 --> 00:15:51,510 Inderdaad, in bijna alle van die bedoelde gevallen voor disciplinaire maatregelen 399 00:15:51,510 --> 00:15:55,640 het was vanwege een student laat één nacht draaide meestal zijn of haar code 400 00:15:55,640 --> 00:15:58,130 dan regelrechte een klasgenoot, die vervolgens aangenomen, 401 00:15:58,130 --> 00:16:00,840 in zijn geheel of aanzienlijk daarvan. 402 00:16:00,840 --> 00:16:02,680 >> Maar echt, dit is OK. 403 00:16:02,680 --> 00:16:04,684 En inderdaad, op het kantoor van uur, de stukjes papier 404 00:16:04,684 --> 00:16:07,850 je hebt gegeven wanneer je kwam door het kantoor uur vorige week stimuleert zoveel. 405 00:16:07,850 --> 00:16:09,710 Je hebt helemaal verwelkomd en aangemoedigd 406 00:16:09,710 --> 00:16:12,340 om probleem sets te bespreken met klasgenoten. 407 00:16:12,340 --> 00:16:14,461 Om elkaar te helpen bij het struikelen. 408 00:16:14,461 --> 00:16:17,710 Maar over het algemeen de vuistregel moet zijn deze, "wanneer u om hulp vraagt, 409 00:16:17,710 --> 00:16:20,412 u mag uw code te laten zien aan anderen, maar u kunt hen niet zien. " 410 00:16:20,412 --> 00:16:22,620 Dus, in andere woorden, als ik worstelen met een aantal P set 411 00:16:22,620 --> 00:16:25,290 en ik zit daar in de eetzaal, of in de bibliotheek, 412 00:16:25,290 --> 00:16:28,470 of in de klas proberen om een ​​aantal fouten te vinden, 413 00:16:28,470 --> 00:16:30,340 Ik kan zeker zien mijn code op mijn scherm 414 00:16:30,340 --> 00:16:32,590 aan de persoon die naast voor mij, zeker het personeel, 415 00:16:32,590 --> 00:16:33,600 maar ook een klasgenoot. 416 00:16:33,600 --> 00:16:36,580 Maar als de oplossing mijn klasgenoot biedt is, oh, 417 00:16:36,580 --> 00:16:39,200 hier gewoon een kijkje nemen op wat Ik deed, dat de lijn kruist. 418 00:16:39,200 --> 00:16:43,120 >> En ik zou durven zeggen dat is over het algemeen een redelijke ding voor de meeste mensen 419 00:16:43,120 --> 00:16:45,030 zeer gemakkelijk ter plaatse de lijn van. 420 00:16:45,030 --> 00:16:47,195 En dus zie de syllabus voor meer detail. 421 00:16:47,195 --> 00:16:49,070 En nu een van de meer controversiële aspecten 422 00:16:49,070 --> 00:16:52,529 van CS50 syllabus, dat ik dacht dat ik zou tot slot spreken hier 423 00:16:52,529 --> 00:16:53,820 is de zogenaamde betreuren clausule. 424 00:16:53,820 --> 00:16:55,340 Dus, hier is al de kleine lettertjes. 425 00:16:55,340 --> 00:16:58,090 Maar over het algemeen hebben we gezien de afgelopen 8 jaar plus 426 00:16:58,090 --> 00:17:01,510 dat inderdaad bijna alle CS50's gevallen van academische oneerlijkheid 427 00:17:01,510 --> 00:17:04,390 het resultaat van alleen slecht geweest besluitvorming laat in de nacht. 428 00:17:04,390 --> 00:17:07,144 Het gevolg van stress, het resultaat gebrek aan eten, gebrek aan slaap, 429 00:17:07,144 --> 00:17:09,560 teveel P sets, te veel deadlines, te veel verplichtingen. 430 00:17:09,560 --> 00:17:13,520 Stress opbouwen in een 2:00, 3:00 AM, 04:00, met een deadline opdoemen. 431 00:17:13,520 --> 00:17:17,020 De meeste studenten in deze gevallen hebt net slechte beslissingen 432 00:17:17,020 --> 00:17:20,619 dat ze heel goed misschien spijt van de volgende ochtend zoniet minuten later, 433 00:17:20,619 --> 00:17:25,490 maar tot vorig jaar was er geen ventiel dat deze studenten kunnen 434 00:17:25,490 --> 00:17:29,140 eigenlijk open om daadwerkelijk het adres van de probleem hoofd op, zonder angst om 435 00:17:29,140 --> 00:17:30,850 geboot college helemaal. 436 00:17:30,850 --> 00:17:33,260 >> En inderdaad, introduceerden we Dit spijt clausule vorig jaar, 437 00:17:33,260 --> 00:17:35,970 die zegt dat als binnen 72 uur, drie dagen, 438 00:17:35,970 --> 00:17:37,970 overschrijding van enkele lijn in de syllabus voorgeschreven 439 00:17:37,970 --> 00:17:41,178 kom je uit naar een van de cursus hoofden en we zullen een praatje over. 440 00:17:41,178 --> 00:17:43,720 Er zijn nog steeds enkele uitkomst, anders dan wat 441 00:17:43,720 --> 00:17:44,990 gemeld het tegendeel. 442 00:17:44,990 --> 00:17:49,190 Er is nog enige uitkomst die is actiegericht door de cursus, 443 00:17:49,190 --> 00:17:51,611 meestal zeroing een P set of het nemen van een andere actie, 444 00:17:51,611 --> 00:17:53,610 maar we zullen inderdaad omgaan onszelf en niet 445 00:17:53,610 --> 00:17:58,460 verwijzen deze hoger waren het resultaat zouden veel ernstiger zijn. 446 00:17:58,460 --> 00:18:01,810 En, inderdaad, om te delen wat er gebeurd vorig jaar, in de acht jaar, en nu 447 00:18:01,810 --> 00:18:04,950 negen jaar, van het onderwijzen van deze cursus en na het knutselen met verschillende knoppen, 448 00:18:04,950 --> 00:18:07,866 draaien verschillende wijzerplaten van de afgelopen een aantal jaren op de academische eerlijkheid, 449 00:18:07,866 --> 00:18:11,920 en het zien van de gegevens per zonder aanwijsbare invloed, zelfs toespraken als deze, 450 00:18:11,920 --> 00:18:15,490 Dit was zonder twijfel de beste we hebben pedagogisch geïntroduceerd 451 00:18:15,490 --> 00:18:18,090 in acht jaar samen deze lijnen in CS50. 452 00:18:18,090 --> 00:18:21,010 >> 19 studenten kwamen naar voren onder deze clausule vorig jaar. 453 00:18:21,010 --> 00:18:23,389 We namen geen actie voor zeven van die studenten, 454 00:18:23,389 --> 00:18:25,430 het bepalen dat zij onnodig ongerust. 455 00:18:25,430 --> 00:18:27,304 Ze hadden in feite niet, kruiste een lijn, maar het 456 00:18:27,304 --> 00:18:28,960 was een goed gesprek om toch te hebben. 457 00:18:28,960 --> 00:18:31,190 We nulpunt 11 van de scores die werden ingediend. 458 00:18:31,190 --> 00:18:33,840 En in één geval vroegen we een student een probleem stellen doen. 459 00:18:33,840 --> 00:18:36,370 Maar meer dwingende, eerlijk, met deze 19 chats, 460 00:18:36,370 --> 00:18:39,020 dat was veel meer dan ik verwacht hebben, elk van hen 461 00:18:39,020 --> 00:18:41,370 10 minuten tot misschien een uur lang, bracht ook 462 00:18:41,370 --> 00:18:44,920 een aantal kwesties met betrekking tot licht familiale problemen, vriend kwesties, 463 00:18:44,920 --> 00:18:46,940 geestelijke gezondheid dat we dan bezig, 464 00:18:46,940 --> 00:18:50,200 met de student zegen, resident decaan of vrienden, of een ander nummer 465 00:18:50,200 --> 00:18:51,450 ondersteunende middelen. 466 00:18:51,450 --> 00:18:54,454 Dus dat dit was veruit een van de beste gebruik van onze tijd 467 00:18:54,454 --> 00:18:55,870 en een van de beste interventies. 468 00:18:55,870 --> 00:18:58,870 >> Met dat gezegd, nee het was ingang op de snelheid van de detectie 469 00:18:58,870 --> 00:19:00,909 academische oneerlijkheid meer in het algemeen. 470 00:19:00,909 --> 00:19:02,950 En ik durf te zeggen, deze subgroep studenten vorig jaar 471 00:19:02,950 --> 00:19:06,350 een demografische dat we voorheen nooit eerder geïdentificeerd 472 00:19:06,350 --> 00:19:08,140 en had nog nooit verbonden met vroeger. 473 00:19:08,140 --> 00:19:10,020 En ja, deze waren prachtige succesverhalen 474 00:19:10,020 --> 00:19:13,390 hoewel ze aan het licht werden gebracht in minder dan optimale omstandigheden. 475 00:19:13,390 --> 00:19:15,640 Dus, hou dit in het achterhoofd als u, misschien, 476 00:19:15,640 --> 00:19:17,390 sommige arme beslissing je 's avonds laat, 477 00:19:17,390 --> 00:19:20,151 dat er een beroep zo lang als de student in die situatie 478 00:19:20,151 --> 00:19:23,400 bezitten en naar voren komen, zodat we kunnen dat soort chatten en omgaan met het 479 00:19:23,400 --> 00:19:27,310 op een manier die educatieve en vervolgens kunnen we het te zetten achter ons de volgende dag. 480 00:19:27,310 --> 00:19:30,335 >> Dus zonder verder oponthoud, neem de edge off van dit gesprek, 481 00:19:30,335 --> 00:19:35,080 de reden waarom de pups zijn up is alleen het ijs even break. 482 00:19:35,080 --> 00:19:39,560 En helaas, ze zijn allemaal slapen, maar wat moest gebeuren hier 483 00:19:39,560 --> 00:19:41,760 was iedereen werd verondersteld om ontzag en soort van ontspanning 484 00:19:41,760 --> 00:19:43,910 na die erg zwaar gesprek. 485 00:19:43,910 --> 00:19:46,930 Maar blijkbaar heb ik de pups om te slapen. 486 00:19:46,930 --> 00:19:50,070 Maar als je naar CS50's website slash puppies, 487 00:19:50,070 --> 00:19:51,610 je kunt ze de hele dag te kijken. 488 00:19:51,610 --> 00:19:55,280 Vooral misschien 02:00, of 03:00 of 04:00 's nachts 489 00:19:55,280 --> 00:19:57,480 een beetje stress is er te zien. 490 00:19:57,480 --> 00:19:58,805 Dus dat is slash puppies. 491 00:19:58,805 --> 00:20:01,700 492 00:20:01,700 --> 00:20:02,200 Prima. 493 00:20:02,200 --> 00:20:03,020 Was dat niet leuk? 494 00:20:03,020 --> 00:20:04,200 OK. 495 00:20:04,200 --> 00:20:07,140 Dus, terug naar enkele computer wetenschap, als ik mag. 496 00:20:07,140 --> 00:20:10,600 >> Dus, herinneren dat de laatste keer dat we begonnen kijken niet alleen op de belangrijkste, die 497 00:20:10,600 --> 00:20:13,930 was de standaard functie, de bij groene vlag klikte gelijk, 498 00:20:13,930 --> 00:20:16,999 maar we ook begonnen met het kort het schrijven van een aantal van onze eigen functies. 499 00:20:16,999 --> 00:20:20,040 En tot nu toe geen van deze functies zijn bijzonder groot of vlezige geweest. 500 00:20:20,040 --> 00:20:24,570 Je krijgt in die grotere functies waarschijnlijk P set 2, P set 3, 501 00:20:24,570 --> 00:20:26,410 zeker P set 4 en verder. 502 00:20:26,410 --> 00:20:29,340 Op dit moment is het grootste deel van uw programma's, zoniet allemaal, zeker voor P 503 00:20:29,340 --> 00:20:31,550 set 1 kan volledig worden gedaan in de belangrijkste. 504 00:20:31,550 --> 00:20:33,810 Als je programma is slechts vijf lijnen, 10 lijnen, 505 00:20:33,810 --> 00:20:37,070 zelfs 20 regels lang, perfect redelijk te schrijven 506 00:20:37,070 --> 00:20:40,930 allemaal in de belangrijkste en niet te compliceren OVER uw code, maar wat we nu aan het doen zijn 507 00:20:40,930 --> 00:20:44,360 en verder probeert ook introduceren een aantal goede ontwerptechnieken 508 00:20:44,360 --> 00:20:48,660 zodat als uw code krijgt meer gecompliceerd en de problemen 509 00:20:48,660 --> 00:20:51,690 u wilt oplossen krijgen harder en interessanter je hebt, soort van, 510 00:20:51,690 --> 00:20:55,850 de gereedschappen in je gereedschapskist waarmee goede oplossingen voor deze ontwerpen. 511 00:20:55,850 --> 00:21:01,210 >> Dus, laten we eens een snelle blik terug op dit programma van mijn laatste week, die 512 00:21:01,210 --> 00:21:06,550 was functies nul punt C. En opmerken dat, heel eenvoudig, 513 00:21:06,550 --> 00:21:10,310 het lijkt erop dat deze met twee functies, de belangrijkste en de naam afdrukken. 514 00:21:10,310 --> 00:21:13,160 En denken terug of misschien reverse engineering van vandaag, 515 00:21:13,160 --> 00:21:16,880 wat was de motivatie voor de invoering een functie in de lijn 28 genoemd, 516 00:21:16,880 --> 00:21:18,180 print naam? 517 00:21:18,180 --> 00:21:21,745 Of wat dit een voorbeeld van was termen van een beginsel of, eten 518 00:21:21,745 --> 00:21:22,605 als je wilt. 519 00:21:22,605 --> 00:21:26,560 520 00:21:26,560 --> 00:21:27,300 Sommige mompelt. 521 00:21:27,300 --> 00:21:28,830 Wat? 522 00:21:28,830 --> 00:21:32,210 >> Ja zo functionele decompositie is een soort van het chique manier om te zeggen, 523 00:21:32,210 --> 00:21:34,690 ontleden programma in zijn samenstellende delen 524 00:21:34,690 --> 00:21:37,530 en dan die delen een geheel monteren. 525 00:21:37,530 --> 00:21:39,620 Ja, dat is ook gewoon een soort van een mondvol al, 526 00:21:39,620 --> 00:21:42,050 maar dit is misschien zelfs een beter voorbeeld van iets 527 00:21:42,050 --> 00:21:43,081 belde net abstractie. 528 00:21:43,081 --> 00:21:43,580 Rechts? 529 00:21:43,580 --> 00:21:46,950 Abstractie gaat om één te zijn van de terugkerende thema's in CS50 530 00:21:46,950 --> 00:21:49,085 en ook informatica meer algemeen omdat het 531 00:21:49,085 --> 00:21:53,060 een techniek waarmee je kunt oplossen problemen effectiever, omdat je 532 00:21:53,060 --> 00:21:56,807 kan oplossingen meer schrijven intuïtief en op een manier die schalen 533 00:21:56,807 --> 00:21:58,390 en het is begrijpelijk door andere mensen. 534 00:21:58,390 --> 00:21:59,860 Wat moet ik daarmee? 535 00:21:59,860 --> 00:22:04,340 >> Dus, misschien wel het is veel leesbaarder om te kijken naar een programma als dit, 536 00:22:04,340 --> 00:22:05,990 super korte al is. 537 00:22:05,990 --> 00:22:10,050 Als je ziet op lijn 22 dat er een functie genaamd, de naam te drukken. 538 00:22:10,050 --> 00:22:12,620 Die naam alleen zegt wat het doet. 539 00:22:12,620 --> 00:22:15,780 Die functie neemt blijkbaar ingang tussen de haakjes, 540 00:22:15,780 --> 00:22:18,600 en blijkbaar doet iets, vermoedelijk drukt de naam. 541 00:22:18,600 --> 00:22:20,880 En dus, hoewel we absoluut konden 542 00:22:20,880 --> 00:22:25,280 gedaan wat we deden een week geleden, dat was neem deze werkelijke regel code, 543 00:22:25,280 --> 00:22:28,710 zich te ontdoen van deze, en krijg ontdoen van dit alles samen, 544 00:22:28,710 --> 00:22:31,436 We soort van geabstraheerd weg het begrip afdrukken van een naam. 545 00:22:31,436 --> 00:22:33,060 Kan me niet schelen als je met druk def. 546 00:22:33,060 --> 00:22:35,601 Kan me niet schelen als je een procent S en een backslash N. Deze 547 00:22:35,601 --> 00:22:37,270 zijn ongelooflijk mysterieuze details. 548 00:22:37,270 --> 00:22:40,090 Wat ik wel schelen als een programmeur is het afdrukken van een naam. 549 00:22:40,090 --> 00:22:43,414 En dus, wat een betere manier om dat te doen dan door een functie, naam druk belt? 550 00:22:43,414 --> 00:22:46,330 En zo, dat was een van de motivaties voor iets als dit te doen. 551 00:22:46,330 --> 00:22:50,370 Het maken van de code beter leesbaar, meer herbruikbaar, en ook zelf beschrijvend. 552 00:22:50,370 --> 00:22:52,120 Laten we nu eens een kijkje nemen een ander voorbeeld, 553 00:22:52,120 --> 00:22:56,220 die functies een, die we hadden hier. 554 00:22:56,220 --> 00:23:00,367 >> Dus, dit is misschien nog meer dwingende omdat in dit geval, 555 00:23:00,367 --> 00:23:01,700 Ik wil niet gewoon een int. 556 00:23:01,700 --> 00:23:03,320 Ik wil een positieve int te krijgen. 557 00:23:03,320 --> 00:23:06,470 En het blijkt een positieve te krijgen int moet je een bos van informatieverzameling. 558 00:23:06,470 --> 00:23:06,969 Rechts? 559 00:23:06,969 --> 00:23:09,600 Het is niet een eenvoudige één regel roepen zoals naam druk was, 560 00:23:09,600 --> 00:23:11,480 die weliswaar minder overtuigend. 561 00:23:11,480 --> 00:23:16,000 >> Om een ​​positieve int krijgen, logically-- laat me terug naar beneden scrollen om dit te verbergen. 562 00:23:16,000 --> 00:23:18,887 Wat moet je doen? 563 00:23:18,887 --> 00:23:20,720 Net als alle tools die we hebben op het moment worden 564 00:23:20,720 --> 00:23:24,440 dingen zoals print def van Standard Bibliotheek en ook van CS50 bibliotheek 565 00:23:24,440 --> 00:23:26,990 hebben we Get Int en Get Float, Get Long Long, krijgen String, 566 00:23:26,990 --> 00:23:29,260 maar de enige, Germane, nu is Get Int. 567 00:23:29,260 --> 00:23:32,970 Dus, als het enige instrument je hebt in uw gereedschapskist is Get Int, 568 00:23:32,970 --> 00:23:35,505 hoe kunnen we gaan over het implementeren Het positieve int te krijgen? 569 00:23:35,505 --> 00:23:35,929 >> PUBLIEK: Maak een log en te controleren Op de vraag of de input die zij gaven 570 00:23:35,929 --> 00:23:36,762 positief of niet. 571 00:23:36,762 --> 00:23:39,390 572 00:23:39,390 --> 00:23:40,640 >> SPEAKER 1: Perfect. 573 00:23:40,640 --> 00:23:41,200 Precies. 574 00:23:41,200 --> 00:23:43,950 Een ander instrument hebben we in onze gereedschapskist van een week of twee geleden 575 00:23:43,950 --> 00:23:45,419 is gewoon de looping constructie. 576 00:23:45,419 --> 00:23:48,210 En zo ja, als we een tijdje lus, of een do while loop, of een voorgrond 577 00:23:48,210 --> 00:23:50,850 lus we kan waarschijnlijk wegkomen bij een van de in een bepaalde vorm. 578 00:23:50,850 --> 00:23:55,140 We kunnen het begrip get implementeren positieve int door gewoon met behulp van Get Int, 579 00:23:55,140 --> 00:23:57,830 en dan gewoon blijven noemde het opnieuw en houdt pesten de gebruiker 580 00:23:57,830 --> 00:24:00,320 totdat hij of zij eigenlijk geeft ons wat we willen. 581 00:24:00,320 --> 00:24:03,260 >> En nu, dit abstractie van de werkwijze 582 00:24:03,260 --> 00:24:05,680 het krijgen van een positieve int in een functie genaamd 583 00:24:05,680 --> 00:24:08,930 Get Positieve Int is een beetje meer dwingende omdat kijken. 584 00:24:08,930 --> 00:24:10,990 Deze zijn net als 10 plus regels code die 585 00:24:10,990 --> 00:24:15,090 zijn betrokken bij het verkrijgen van een positieve int, en ik heb niet echt schelen hoe je het doet. 586 00:24:15,090 --> 00:24:17,850 Alles wat ik zorg is dat je kan het doen, en dus ik heb 587 00:24:17,850 --> 00:24:21,660 verborgen al deze gegevens achter een functie genaamd Get Positive int dat, 588 00:24:21,660 --> 00:24:23,430 inderdaad, heeft dit te doen terwijl lus. 589 00:24:23,430 --> 00:24:27,660 >> En zie de laatste week voor de syntax daar, maar het is gewoon verklaart N, 590 00:24:27,660 --> 00:24:29,800 en het drukt de instructie aan de gebruiker. 591 00:24:29,800 --> 00:24:33,330 Het roept Krijg Int en vervolgens controleert deze toestand opnieuw, en opnieuw, 592 00:24:33,330 --> 00:24:35,230 en weer totdat de gebruiker werkt. 593 00:24:35,230 --> 00:24:38,000 >> Dus nu, een paar gezond verstand controles. 594 00:24:38,000 --> 00:24:40,370 Voor degenen die misschien wel bekend met enkele programmering, 595 00:24:40,370 --> 00:24:46,410 waarom is N verklaard, waarom maak ik N buiten de do while loop? 596 00:24:46,410 --> 00:24:50,370 Waarom is het op lijn 29 en niet on zoals 33 bijvoorbeeld. 597 00:24:50,370 --> 00:24:53,529 >> Publiek: Want als je verklaren buiten, het soort 598 00:24:53,529 --> 00:24:56,688 meer de grotere scope-- 599 00:24:56,688 --> 00:24:58,146 >> SPEAKER 1: Good. 600 00:24:58,146 --> 00:24:59,604 >> Publiek: --en als je verklaren het binnen de lus, [onverstaanbaar] 601 00:24:59,604 --> 00:25:00,979 omdat het niet weten. 602 00:25:00,979 --> 00:25:02,819 603 00:25:02,819 --> 00:25:03,610 SPEAKER 1: Precies. 604 00:25:03,610 --> 00:25:06,330 Als ik kan simplify-- het is een kwestie van de scope. 605 00:25:06,330 --> 00:25:11,530 En omvang verwijst naar de context met een wisselend bestaat of bruikbaar. 606 00:25:11,530 --> 00:25:15,050 En het mooie vuistregel hierbij is dat algemeen wanneer u verklaren of te creëren 607 00:25:15,050 --> 00:25:21,642 een variabele kunt u alleen gebruik maken van het binnen van de dichtstbijzijnde omarmen accolades. 608 00:25:21,642 --> 00:25:22,600 Dus wat betekent dat? 609 00:25:22,600 --> 00:25:26,551 Als ik, in plaats daarvan, ongedaan te maken en deze te gaan met iets dat een beetje eenvoudiger voelt. 610 00:25:26,551 --> 00:25:27,050 Rechts? 611 00:25:27,050 --> 00:25:29,360 >> Lijn 32 ziet er gewoon schoner me nu. 612 00:25:29,360 --> 00:25:31,500 Ik doe beide dingen een keer en dan toewijzen 613 00:25:31,500 --> 00:25:33,070 de rechterhand naar de linkerhand. 614 00:25:33,070 --> 00:25:35,180 Het probleem nu gebaseerd op dat de definitie van de reikwijdte 615 00:25:35,180 --> 00:25:41,130 is dat N kan worden gebruikt in lijnen 31 en 32 binnenkant van deze lijn, 616 00:25:41,130 --> 00:25:45,100 maar waar door die definitie kan het niet worden gebruikt? 617 00:25:45,100 --> 00:25:45,660 In de lijn wat? 618 00:25:45,660 --> 00:25:46,160 Ja. 619 00:25:46,160 --> 00:25:47,490 >> Publiek: 35. 620 00:25:47,490 --> 00:25:49,180 >> SPEAKER 1: 35. 621 00:25:49,180 --> 00:25:50,480 Zeker niet 35. 622 00:25:50,480 --> 00:25:52,349 En ook waar anders? 623 00:25:52,349 --> 00:25:52,890 Publiek: 34. 624 00:25:52,890 --> 00:25:55,040 SPEAKER 1: Zelfs 34 is problematisch omdat het 625 00:25:55,040 --> 00:25:56,450 buiten de accolades. 626 00:25:56,450 --> 00:25:58,200 En zo in feite, laten we zien wat er gebeurt. 627 00:25:58,200 --> 00:25:58,700 Rechts? 628 00:25:58,700 --> 00:26:00,722 Dit is misschien een beetje lijken intuïtieve of misschien niet, 629 00:26:00,722 --> 00:26:02,680 maar laten we zien wat de compiler te zeggen wanneer 630 00:26:02,680 --> 00:26:04,730 We gaan in de huidige bron directory. 631 00:26:04,730 --> 00:26:08,950 Maak een functie. 632 00:26:08,950 --> 00:26:11,231 O mijn God. 633 00:26:11,231 --> 00:26:12,980 Nou, ik eindelijk klaar die, door de manier waarop. 634 00:26:12,980 --> 00:26:14,030 Prima. 635 00:26:14,030 --> 00:26:15,510 En wat is het probleem hier? 636 00:26:15,510 --> 00:26:17,430 Zeer geheimzinnige om naar te kijken. 637 00:26:17,430 --> 00:26:19,570 Maar hier is wat ik typed-- maken functie één. 638 00:26:19,570 --> 00:26:21,640 Hier is wat te maken veroorzaakte, die eigenlijk 639 00:26:21,640 --> 00:26:23,705 met behulp van de compiler clang enkele van deze vlaggen 640 00:26:23,705 --> 00:26:25,080 dat we weer zullen zien het duurde niet lang. 641 00:26:25,080 --> 00:26:26,829 En nogmaals, altijd op zoek in de eerste fout, 642 00:26:26,829 --> 00:26:30,540 omdat het misschien gewoon een trapsgewijze betekenisloze effect op andere lijnen. 643 00:26:30,540 --> 00:26:34,410 >> Dus wat dit betekent is dat de probleem is in functie 1.c. 644 00:26:34,410 --> 00:26:36,890 Het is op lijn 32. 645 00:26:36,890 --> 00:26:39,712 En het is in kolom of karakter 13. 646 00:26:39,712 --> 00:26:42,670 Dus als je tekst editor die kan u helpen bepalen waar het probleem is. 647 00:26:42,670 --> 00:26:47,079 Dus als ik u omhoog, wat is lijn 32? 648 00:26:47,079 --> 00:26:49,120 Dat is inderdaad deze dat is al gemarkeerd 649 00:26:49,120 --> 00:26:50,607 rechts hier-- ongebruikte variabele n. 650 00:26:50,607 --> 00:26:51,440 Maar het is niet ongebruikt. 651 00:26:51,440 --> 00:26:52,320 Ik gebruik het. 652 00:26:52,320 --> 00:26:56,110 Maar de compiler verwarde, omdat het bestaat alleen binnen van deze omvang. 653 00:26:56,110 --> 00:26:57,727 En zo kan ik hier niet gebruiken. 654 00:26:57,727 --> 00:26:58,560 Ik kan hier niet gebruiken. 655 00:26:58,560 --> 00:27:01,320 De compiler derhalve zelfs niet schelen dat ik probeer. 656 00:27:01,320 --> 00:27:03,940 Het schijnt ongebruikt te zijn binnen haar werkelijke omvang. 657 00:27:03,940 --> 00:27:08,854 >> Dus we kunnen de mogelijkheden verruimen door te doen precies wat we begonnen met-- int n. 658 00:27:08,854 --> 00:27:11,020 En hoewel het niet kijk zo elegant, misschien, 659 00:27:11,020 --> 00:27:15,110 en we nemen een extra regel hier, nu is het in omvang overal. 660 00:27:15,110 --> 00:27:15,970 Dus laten we het opnieuw proberen. 661 00:27:15,970 --> 00:27:19,040 Dus zorg functie één. 662 00:27:19,040 --> 00:27:19,610 Nice. 663 00:27:19,610 --> 00:27:23,370 En nu, als ik als ik zonder functie een, laten we het negatieve 10, 664 00:27:23,370 --> 00:27:27,170 negatieve 1, 0, 1, en inderdaad werkt. 665 00:27:27,170 --> 00:27:28,610 >> Dus er is een andere oplossing. 666 00:27:28,610 --> 00:27:29,280 Weet je wat? 667 00:27:29,280 --> 00:27:31,230 Wat als ik ben echt worstelen met dit? 668 00:27:31,230 --> 00:27:33,140 Ik weet niet waar de n hoort te gaan. 669 00:27:33,140 --> 00:27:33,723 Weet je wat? 670 00:27:33,723 --> 00:27:39,220 Ik ga gewoon om het te zetten alle manier aan de top van mijn dossier hier. 671 00:27:39,220 --> 00:27:42,835 Wat zou dit doen, denk je? 672 00:27:42,835 --> 00:27:43,335 Ja? 673 00:27:43,335 --> 00:27:44,251 >> PUBLIEK: [onverstaanbaar]. 674 00:27:44,251 --> 00:27:47,964 675 00:27:47,964 --> 00:27:48,630 SPEAKER 1: Ja. 676 00:27:48,630 --> 00:27:50,560 Dus ik heb het wereldwijde gemaakt, om zo te zeggen. 677 00:27:50,560 --> 00:27:54,430 Als u een variabele die is buiten al uw functies die is toegestaan, 678 00:27:54,430 --> 00:27:58,780 en de code moet compileren, en n zal nu toegankelijk zijn, niet alleen in get 679 00:27:58,780 --> 00:28:02,490 positieve int, maar ook in main-- waarin is een beetje zorgwekkend omdat er 680 00:28:02,490 --> 00:28:04,864 al een n in de belangrijkste, zodat meer op dat in slechts een moment-- 681 00:28:04,864 --> 00:28:06,530 maar dit zou worden beschouwd als slecht ontwerp. 682 00:28:06,530 --> 00:28:06,910 Prima. 683 00:28:06,910 --> 00:28:08,570 Als je toevlucht nemen tot iets als, oh, zal ik 684 00:28:08,570 --> 00:28:10,125 zet ze gewoon hier omdat de code lijkt te compileren 685 00:28:10,125 --> 00:28:12,180 is over het algemeen niet de best practice. 686 00:28:12,180 --> 00:28:14,590 Liever dat je wilt kiezen de kleinst mogelijke scope 687 00:28:14,590 --> 00:28:18,720 voor uw variabelen, wat zou betekenen gaan met onze eerste ontwerp, dat 688 00:28:18,720 --> 00:28:19,920 is hier. 689 00:28:19,920 --> 00:28:24,400 >> Nu als een terzijde, als je had een identieke naam variabele hier 690 00:28:24,400 --> 00:28:27,750 de manier waarop c zou behandelen dit-- hoewel dit niet zal gebeuren te often-- 691 00:28:27,750 --> 00:28:30,150 is dat nog prima hier. 692 00:28:30,150 --> 00:28:35,000 Maar deze definitie van n in lijn 22 zal de wereldwijde een schaduw. 693 00:28:35,000 --> 00:28:38,190 Dus dit zal binnen werken main, en de Global One 694 00:28:38,190 --> 00:28:41,670 daadwerkelijk toe te passen wanneer je in krijgen positieve int Maar meer daarover 695 00:28:41,670 --> 00:28:43,890 een andere tijd, maar gewoon voor degenen die nieuwsgierig. 696 00:28:43,890 --> 00:28:45,970 >> Dus in het kort, we dit op te lossen hier. 697 00:28:45,970 --> 00:28:49,220 Laten we nu plagen elkaar twee andere stukken voordat we kijken naar een laatste regel code 698 00:28:49,220 --> 00:28:50,170 in dit programma. 699 00:28:50,170 --> 00:28:52,170 Krijg positieve int. 700 00:28:52,170 --> 00:28:54,450 Aan de linkerkant van het woord is het woord int. 701 00:28:54,450 --> 00:28:56,860 Wat heeft dat te betekenen denk je? 702 00:28:56,860 --> 00:28:58,900 Tot nu toe hebben we meestal gezien leegte. 703 00:28:58,900 --> 00:28:59,400 Ja? 704 00:28:59,400 --> 00:29:01,810 >> Publiek: Het is de aard van de variabele die je vraagt ​​over. 705 00:29:01,810 --> 00:29:04,550 >> SPEAKER 1: Ja, het is het type, laat me niet zeggen variabel, maar de aard van de waarde 706 00:29:04,550 --> 00:29:05,990 dat vraag ik terug voor. 707 00:29:05,990 --> 00:29:08,070 En inderdaad, dat is intuïtieve hier, hopelijk. 708 00:29:08,070 --> 00:29:08,200 Rechts? 709 00:29:08,200 --> 00:29:10,250 Als u wilt een te krijgen positieve int, wat is het u 710 00:29:10,250 --> 00:29:12,920 wil de function-- zoals onze vrijwilligers van de afgelopen week 711 00:29:12,920 --> 00:29:15,720 om je hand terug een stuk papier met een int op het? 712 00:29:15,720 --> 00:29:19,190 En dus hebben we aangegeven dat de zogenaamde return type van deze functie 713 00:29:19,190 --> 00:29:20,450 is krijgen positieve int. 714 00:29:20,450 --> 00:29:22,990 Als we niet willen dat het terug iets, je leegte zeggen. 715 00:29:22,990 --> 00:29:25,270 Als je wilt dat het terugkeren een string, zeg je string. 716 00:29:25,270 --> 00:29:27,310 Als je wilt dat het terugkeren een vlotter, zeg je zweven. 717 00:29:27,310 --> 00:29:30,440 Maar de enige die hier geldt logisch, want ik ben met behulp get int, 718 00:29:30,440 --> 00:29:34,130 hoewel ik beperken tot positieve waarden, is een int retourneren. 719 00:29:34,130 --> 00:29:38,380 >> Dus omgekeerd, wat betekent het dat er een leegte tussen haakjes? 720 00:29:38,380 --> 00:29:40,130 Wat betekenen de haakjes over het algemeen te definiëren? 721 00:29:40,130 --> 00:29:40,588 Ja? 722 00:29:40,588 --> 00:29:42,880 >> Publiek: Het betekent dat de functie eigenlijk niet krijgen van het. 723 00:29:42,880 --> 00:29:44,650 >> SPEAKER 1: Het betekent dat de functie eigenlijk niet krijgen wat? 724 00:29:44,650 --> 00:29:45,430 >> Publiek: Een input. 725 00:29:45,430 --> 00:29:46,763 >> SPEAKER 1: Een input, dan ook. 726 00:29:46,763 --> 00:29:49,870 Dus inderdaad, als haakjes hier kunt leegte opgeeft, 727 00:29:49,870 --> 00:29:51,650 dat betekent gewoon Ik wil geen ingang. 728 00:29:51,650 --> 00:29:53,269 Ik zal omgaan met het probleem zelf. 729 00:29:53,269 --> 00:29:55,810 En inderdaad, je hoeft niet te vertel krijgen positieve int iets. 730 00:29:55,810 --> 00:29:59,630 Je zegt gewoon, krijgt positieve int, en dat functie gaat uit en doet zijn ding. 731 00:29:59,630 --> 00:30:02,970 >> Maar er is een kleine truc ik heb speelt hier de hele tijd 732 00:30:02,970 --> 00:30:04,970 om ervoor te zorgen dat deze code compileert. 733 00:30:04,970 --> 00:30:09,620 Merk op dat int-- positieve krijgen int void-- is op lijn 27. 734 00:30:09,620 --> 00:30:14,530 Maar voor sommige schijnbaar vreemde reden het is ook hier op lijn 16. 735 00:30:14,530 --> 00:30:18,530 En net voor een goede maatregel zal ik herhaal dit dus het is volkomen identiek. 736 00:30:18,530 --> 00:30:21,640 En ik heb gezegd prototype met een kleintje-lijn commentaar. 737 00:30:21,640 --> 00:30:28,850 Wat gebeurt er als ik dat te verwijderen, en nu opnieuw uit te maken functie 1, in te voeren. 738 00:30:28,850 --> 00:30:29,350 Whoops. 739 00:30:29,350 --> 00:30:32,527 740 00:30:32,527 --> 00:30:33,110 Even wachten. 741 00:30:33,110 --> 00:30:34,764 Waar is mijn tab? 742 00:30:34,764 --> 00:30:35,263 Huh? 743 00:30:35,263 --> 00:30:37,969 744 00:30:37,969 --> 00:30:39,620 Standby. 745 00:30:39,620 --> 00:30:41,570 Maak de functie 1. 746 00:30:41,570 --> 00:30:42,150 Daar gaan we. 747 00:30:42,150 --> 00:30:42,310 OK. 748 00:30:42,310 --> 00:30:43,400 Had het niet goed opgeslagen. 749 00:30:43,400 --> 00:30:45,220 Dus, ik denk dat er een beetje bug hier waar ik ben niet 750 00:30:45,220 --> 00:30:46,636 het zien van het tabblad naam op dit moment. 751 00:30:46,636 --> 00:30:47,940 Dus wat is hier aan de hand? 752 00:30:47,940 --> 00:30:52,210 Impliciete verklaring van de functie krijgen positieve int ongeldig is C99. 753 00:30:52,210 --> 00:30:53,940 Dus nogmaals verwarrend. 754 00:30:53,940 --> 00:30:55,200 Dus wat is dit een indicatie van? 755 00:30:55,200 --> 00:30:57,287 Nou, het blijkt dat C is vrij dom. 756 00:30:57,287 --> 00:30:59,912 Nou, het is de programmering taal, of liever de compiler. 757 00:30:59,912 --> 00:31:02,940 Het weet alleen wat je hebt geleerd, en het is slechts 758 00:31:02,940 --> 00:31:05,640 gaat om iets te weten als je het al eerder geleerd. 759 00:31:05,640 --> 00:31:07,960 Met andere woorden, in belangrijkste op dit moment, ik ben 760 00:31:07,960 --> 00:31:10,900 proberen om een ​​functie aan te roepen genaamd krijgt positieve int. 761 00:31:10,900 --> 00:31:14,120 Maar de compiler is niet van plan op te merken dat krijgen positieve int 762 00:31:14,120 --> 00:31:16,500 Er bestaat tot lijn 26. 763 00:31:16,500 --> 00:31:21,360 En dus wat de compiler doet is gewoon fouten zodra het wordt op lijn 17, 764 00:31:21,360 --> 00:31:23,700 zeggen impliciete verklaring van krijgen positieve int, die 765 00:31:23,700 --> 00:31:27,740 is gewoon een mooie manier om te zeggen, ik niet weten wat krijgt positieve int nog. 766 00:31:27,740 --> 00:31:31,240 >> Andere talen zoals Java en Python en Ruby zou vooruit te kijken. 767 00:31:31,240 --> 00:31:32,240 C niet. 768 00:31:32,240 --> 00:31:35,110 En dus is de manier waarop we op te lossen Dit is een van twee manieren. 769 00:31:35,110 --> 00:31:40,160 Ofwel, als het probleem is dat te krijgen positieve int is nog niet eerder gezien, 770 00:31:40,160 --> 00:31:42,150 Nou, laat me verplaatsen alleen maar om de top. 771 00:31:42,150 --> 00:31:43,650 Dat zou dit probleem op te lossen. 772 00:31:43,650 --> 00:31:46,790 Maar in het algemeen, is het beschouwd betere techniek 773 00:31:46,790 --> 00:31:50,220 uw belangrijkste functie gezet bij de zeer top, zodat een mens het lezen van uw code 774 00:31:50,220 --> 00:31:52,710 weet wat het programma doet, omdat de belangrijkste is niet allemaal begraven 775 00:31:52,710 --> 00:31:53,960 de manier waarop aan de onderkant of in het midden. 776 00:31:53,960 --> 00:31:55,130 Het is aan de top. 777 00:31:55,130 --> 00:31:56,410 Dus dat voelt niet ideaal. 778 00:31:56,410 --> 00:31:58,326 En je kunt eigenlijk krijgen in situaties waarin 779 00:31:58,326 --> 00:32:00,820 Als één functie oproepen andere, die een ander noemt, 780 00:32:00,820 --> 00:32:04,630 je kunt krijgen in een probleem waar noch kan gaan boven de ander logisch. 781 00:32:04,630 --> 00:32:05,920 Het is gewoon niet mogelijk. 782 00:32:05,920 --> 00:32:09,290 >> En zo de weg naar het werk rond dit is om gewoon te nemen 783 00:32:09,290 --> 00:32:13,200 handtekening van de functie, om zo te speak-- de eerste lijn waar het declared-- 784 00:32:13,200 --> 00:32:16,850 en gewoon kopiëren, plakken op de top, maar niet met krullend braces-- 785 00:32:16,850 --> 00:32:17,980 alleen met een puntkomma. 786 00:32:17,980 --> 00:32:20,840 Het is als een kleine hint van wat komen gaat. 787 00:32:20,840 --> 00:32:26,630 En inderdaad, al die tijd toen we hebben dingen als standaard io.h gezien 788 00:32:26,630 --> 00:32:33,040 en cs50.h evenzo in die dot h-bestanden zijn er andere prototypes. 789 00:32:33,040 --> 00:32:35,250 En we zullen zien dat duurde niet lang. 790 00:32:35,250 --> 00:32:39,340 >> Dus in het kort, als je een programma in een bestand met meerdere functies 791 00:32:39,340 --> 00:32:42,300 Naast de belangrijkste, je bijna altijd wil ze verklaren 792 00:32:42,300 --> 00:32:45,360 alleen door middel van de eerste lijn, gevolgd door een puntkomma, 793 00:32:45,360 --> 00:32:48,410 aan de top van het bestand. 794 00:32:48,410 --> 00:32:50,460 Dat was een veel in een keer. 795 00:32:50,460 --> 00:32:53,130 Nog vragen? 796 00:32:53,130 --> 00:32:53,920 Nog vragen? 797 00:32:53,920 --> 00:32:54,530 Prima. 798 00:32:54,530 --> 00:32:59,760 >> Dus laten we verder gaan dan om zoiets hoest. 799 00:32:59,760 --> 00:33:00,260 Oh. 800 00:33:00,260 --> 00:33:00,570 Hoe passend. 801 00:33:00,570 --> 00:33:01,220 Prima. 802 00:33:01,220 --> 00:33:02,260 Hoesten. 803 00:33:02,260 --> 00:33:05,080 Dus hier is een c uitvoering van een programma 804 00:33:05,080 --> 00:33:07,560 we hebben de andere dag in Kras dat heel gewoon 805 00:33:07,560 --> 00:33:08,691 zegt hoesten, hoest, hoest. 806 00:33:08,691 --> 00:33:09,190 Prima. 807 00:33:09,190 --> 00:33:11,136 En iemand zei een paar dagen geleden dat er 808 00:33:11,136 --> 00:33:12,760 een manier van schoonmaken van deze code up reeds. 809 00:33:12,760 --> 00:33:12,880 Prima? 810 00:33:12,880 --> 00:33:15,440 Zodra je het kopiëren en plakken waarschijnlijk slecht ontwerp. 811 00:33:15,440 --> 00:33:18,725 Minstens één keer krijgen we vier of vijf of 20 hoesten, voelt het slechte praktijken. 812 00:33:18,725 --> 00:33:19,850 We gewoon blijven kopiëren, plakken. 813 00:33:19,850 --> 00:33:22,213 Wat is de voor de hand liggende oplossing het schoonmaken dit programma op? 814 00:33:22,213 --> 00:33:23,120 >> Publiek: Loop. 815 00:33:23,120 --> 00:33:23,350 >> SPEAKER 1: Ja. 816 00:33:23,350 --> 00:33:24,070 Dus gebruik een lus. 817 00:33:24,070 --> 00:33:27,697 En we kunnen een for-lus, een tijdje lus, een aantal benaderingen. 818 00:33:27,697 --> 00:33:29,780 En inderdaad, dat is wat we doen in versie hier. 819 00:33:29,780 --> 00:33:32,250 Ik heb in plaats daarvan is herschreven in één versie van cough.c 820 00:33:32,250 --> 00:33:35,170 gewoon hoesten binnen een for-lus. 821 00:33:35,170 --> 00:33:38,240 Oké, maar er is een kans nu soort van start 822 00:33:38,240 --> 00:33:41,630 om dit een beetje meer als ontwerpen de les die we geleerd een moment geleden, 823 00:33:41,630 --> 00:33:46,190 dat is dit-- veronderstellen dat ik wilde een functie genaamd hoest maken, 824 00:33:46,190 --> 00:33:49,730 laten we eens kijken voor slechts een moment wat het gaat te lijken. 825 00:33:49,730 --> 00:33:51,900 Dus als ik iets wil te hoesten, ik moet gewoon 826 00:33:51,900 --> 00:33:53,800 om af te drukken f gebruiken binnen de functie. 827 00:33:53,800 --> 00:33:55,030 En inderdaad, ik ben. 828 00:33:55,030 --> 00:33:56,990 En inderdaad, dit alles tijd, elke keer dat je bent 829 00:33:56,990 --> 00:33:59,000 afdrukken iets te het scherm, een programmeur 830 00:33:59,000 --> 00:34:00,610 zou noemen dat een neveneffect. 831 00:34:00,610 --> 00:34:02,990 Het is me niet overhandigen weer iemand een waarde. 832 00:34:02,990 --> 00:34:06,170 Het is me het nemen van enkele maatregelen die kunnen visueel duidelijk. 833 00:34:06,170 --> 00:34:10,672 Maar deze functie hoesten, doet terugkeren alles gebaseerd op de eerste lijn? 834 00:34:10,672 --> 00:34:12,880 Nee, want de return type vervalt, wat betekent gewoon 835 00:34:12,880 --> 00:34:14,250 het is niet het uitdelen me iets terug. 836 00:34:14,250 --> 00:34:16,791 Het zou iets moeten doen visueel, maar het is me niet overhandigen 837 00:34:16,791 --> 00:34:18,639 achter een stuk papier als vorige week. 838 00:34:18,639 --> 00:34:21,310 >> Is het een input nodig? 839 00:34:21,310 --> 00:34:21,810 Nee. 840 00:34:21,810 --> 00:34:23,134 En zo is het hier leegte ook. 841 00:34:23,134 --> 00:34:25,600 Dus ook dit is een soort van over-engineering van dit probleem. 842 00:34:25,600 --> 00:34:26,099 Rechts? 843 00:34:26,099 --> 00:34:28,820 Ik heb het programma gemaakt complex, meer regels code, 844 00:34:28,820 --> 00:34:31,889 Ik heb het niet gedaan functioneler, maar dit 845 00:34:31,889 --> 00:34:34,210 zou een opstap zijn, misschien voor een bredere 846 00:34:34,210 --> 00:34:36,830 context met meer ingewikkelde code. 847 00:34:36,830 --> 00:34:38,150 Maar hoe zit dit? 848 00:34:38,150 --> 00:34:42,050 Wat heb ik done-- net blik op Dit zonder te kijken naar de reactie 849 00:34:42,050 --> 00:34:46,076 op de top van de file-- wat heb Ik hier fundamenteel gedaan met mijn hoest 850 00:34:46,076 --> 00:34:47,409 implementatie is dat anders? 851 00:34:47,409 --> 00:34:48,327 Ja, in de rug? 852 00:34:48,327 --> 00:34:51,384 >> Publiek: Maak het dus je kunt een karakter uit te schakelen. 853 00:34:51,384 --> 00:34:52,050 SPEAKER 1: Ja. 854 00:34:52,050 --> 00:34:53,270 Dus dit voelt wel leuk. 855 00:34:53,270 --> 00:34:53,389 Rechts? 856 00:34:53,389 --> 00:34:56,600 Het is als het toevoegen van een functie om uw programma of de functie, in dit geval. 857 00:34:56,600 --> 00:34:57,830 Het geeft nog steeds niets. 858 00:34:57,830 --> 00:35:00,538 Het kan een visueel bijwerking hebben, want het roept afdruk f. 859 00:35:00,538 --> 00:35:02,800 Maar nu heb ik geparametriseerd de functie die 860 00:35:02,800 --> 00:35:06,470 betekent dat ik heb opgegeven genomen ingang van het type int en noemen het n, 861 00:35:06,470 --> 00:35:08,510 maar ik kon het wat ik wil bellen. 862 00:35:08,510 --> 00:35:11,550 In feite zou het gewoon keer nog meer expliciet zijn. 863 00:35:11,550 --> 00:35:13,310 En toen kon ik dit veranderen hier. 864 00:35:13,310 --> 00:35:16,450 Maar het punt is dat dit is hoe ik maak een functie die input neemt. 865 00:35:16,450 --> 00:35:19,530 En als je herinneren flipping door middel misschien online in een 866 00:35:19,530 --> 00:35:23,000 van de walk-throughs, de vierde en laatste hoest bijvoorbeeld, 867 00:35:23,000 --> 00:35:27,150 je zult hier opmerken ik gegeneraliseerd mijn code further-- soort geabstraheerde 868 00:35:27,150 --> 00:35:27,690 verder. 869 00:35:27,690 --> 00:35:31,390 Zoals hoesten en niezen, beide zijn ongeveer net iets te zeggen of het maken van 870 00:35:31,390 --> 00:35:32,330 een soort van geluid. 871 00:35:32,330 --> 00:35:34,725 Save zou de overeenkomstige Scratch blok. 872 00:35:34,725 --> 00:35:37,350 En dus wat ik deed in deze versie, die we kunnen alleen maar een blik werpen op, 873 00:35:37,350 --> 00:35:43,170 is hoest is net als zeggen, [HOEST] hoesten, en ondertussen, niezen is 874 00:35:43,170 --> 00:35:44,570 als zeggen, [ACHOO]. 875 00:35:44,570 --> 00:35:46,900 En dus heb ik gegeneraliseerd de uitvoering van die 876 00:35:46,900 --> 00:35:48,970 nu implementeren deze generieke functie, 877 00:35:48,970 --> 00:35:51,490 zeggen, wat interessant voor doeleinden van vandaag 878 00:35:51,490 --> 00:35:54,300 alleen omdat het nog heeft geen return type. 879 00:35:54,300 --> 00:35:56,398 Maar hoeveel ingangen heeft het? 880 00:35:56,398 --> 00:35:56,981 Publiek: Two. 881 00:35:56,981 --> 00:35:57,430 SPEAKER 1: Two. 882 00:35:57,430 --> 00:35:59,263 En dus als je wilt in twee argumenten, 883 00:35:59,263 --> 00:36:00,710 gewoon ze te scheiden met een komma. 884 00:36:00,710 --> 00:36:03,110 En als je wilt dan noemen die functie, 885 00:36:03,110 --> 00:36:05,800 merken dat je gewoon roepen we zeggen, citaat, unquote, 886 00:36:05,800 --> 00:36:09,090 voor het eerste argument, gemeenschappelijke n, voor het tweede argument. 887 00:36:09,090 --> 00:36:12,130 Dus nogmaals, we hebben nu net de bouwstenen, zodat we kunnen eigenlijk 888 00:36:12,130 --> 00:36:15,686 uitvoering van een aantal van onze eigen functies. 889 00:36:15,686 --> 00:36:16,570 Prima. 890 00:36:16,570 --> 00:36:19,690 Heeft u vragen over deze? 891 00:36:19,690 --> 00:36:22,400 >> Dus laten we nu schil terug een laag zo. 892 00:36:22,400 --> 00:36:24,840 En het doel, uiteindelijk, is het probleem set volgende week 893 00:36:24,840 --> 00:36:27,710 gaat worden op cryptogrophy-- de kunst van het klauteren informatie. 894 00:36:27,710 --> 00:36:30,640 En in het bijzonder de informatie zal u coderen of decoderen 895 00:36:30,640 --> 00:36:31,605 gaat tekst. 896 00:36:31,605 --> 00:36:33,980 En zo dat soort uitnodigt de vraag van vandaag, zoals goed, 897 00:36:33,980 --> 00:36:38,480 wat er gaande is onder de motorkap met tekst verder ASCII van week nul, 898 00:36:38,480 --> 00:36:40,730 En hoe kunnen we eigenlijk beginnen te manipuleren? 899 00:36:40,730 --> 00:36:43,070 Dus hier is de naam Zamyla's. 900 00:36:43,070 --> 00:36:47,380 En in tekst, kan dat worden ingevoerd in als de get snaar functie. 901 00:36:47,380 --> 00:36:52,540 En het starten van nu, wanneer u een string als dit-- Z-A-M-Y-L-A-- 902 00:36:52,540 --> 00:36:56,550 beginnen te denken aan het als hoewel elk van de tekens in een doos zijn 903 00:36:56,550 --> 00:36:57,050 eigen. 904 00:36:57,050 --> 00:36:59,460 En inderdaad, in een week of zo is tijd, elk van deze dozen 905 00:36:59,460 --> 00:37:04,280 gaat heel specifiek te vertegenwoordigen een blok van memory-- een beet van het geheugen. 906 00:37:04,280 --> 00:37:07,050 Dus elk van deze brieven, Uiteindelijk zal 8 bits representeren. 907 00:37:07,050 --> 00:37:10,560 En we zullen echt zien wat er gaande op onder de motorkap in mijn computer. 908 00:37:10,560 --> 00:37:13,440 >> Maar niet volstaat gewoon om te kijken naar Zamyla 909 00:37:13,440 --> 00:37:17,520 door deze lens, waarbij elk van deze brieven is in zijn eigen doos. 910 00:37:17,520 --> 00:37:22,697 En mooi genoeg in C kunnen we toegang tot elk van deze dozen direct. 911 00:37:22,697 --> 00:37:25,530 Dus als je wilt het eerst letter van haar naam, super makkelijk in C. 912 00:37:25,530 --> 00:37:28,410 Wilt u de laatste krijgen brief, super eenvoudig en 913 00:37:28,410 --> 00:37:30,240 met een stuk van de nieuwe syntaxis. 914 00:37:30,240 --> 00:37:36,250 >> Dus ik ga om verder te gaan in CS50 IDE en het openstellen van de snaar nul punt C. 915 00:37:36,250 --> 00:37:40,270 En in dit voorbeeld hier zijn er een paar nieuwe dingen aan de hand. 916 00:37:40,270 --> 00:37:44,360 Dus eerst in de lijn 19, we hebben gezien deze before-- get string. 917 00:37:44,360 --> 00:37:49,840 Dus gewoon als een snelle sanity check, als iemand verbaal kon bieden tot 918 00:37:49,840 --> 00:37:52,662 uitleg van een leek wat er gaande is in de lijn 19. 919 00:37:52,662 --> 00:37:55,370 Als dit gewoon vertalen in Engels dat een huisgenoot niet in CS50 920 00:37:55,370 --> 00:37:56,416 misschien begrijpen. 921 00:37:56,416 --> 00:37:56,916 Ja. 922 00:37:56,916 --> 00:37:59,749 >> Publiek: Laat de input van de gebruiker een string en op te slaan in een variabele s. 923 00:37:59,749 --> 00:38:01,934 924 00:38:01,934 --> 00:38:02,600 SPEAKER 1: Good. 925 00:38:02,600 --> 00:38:05,579 Laat de input van de gebruiker een string en op te slaan in een variabele s. 926 00:38:05,579 --> 00:38:06,120 Dat is geweldig. 927 00:38:06,120 --> 00:38:08,090 Dus aan de rechter kant, noemen we get string. 928 00:38:08,090 --> 00:38:10,340 Dat geeft een waarde dat werd niet toegewezen 929 00:38:10,340 --> 00:38:14,230 van rechts naar links kant in een variabele genaamd s dat is 930 00:38:14,230 --> 00:38:15,950 ontworpen om een ​​string te slaan. 931 00:38:15,950 --> 00:38:16,800 Precies. 932 00:38:16,800 --> 00:38:20,000 >> Dus nu lijn 22, per het commentaar in de lijn 21, 933 00:38:20,000 --> 00:38:22,780 uiteraard drukt die string één teken per regel. 934 00:38:22,780 --> 00:38:23,740 Maar hoe? 935 00:38:23,740 --> 00:38:27,040 Dus allereerst initialiseren we I 0. 936 00:38:27,040 --> 00:38:31,061 En hoe komen we aan het einde van de naam Zamyla's? 937 00:38:31,061 --> 00:38:32,810 Nou, aan het einde van Naam Zamyla's, ik kon 938 00:38:32,810 --> 00:38:38,151 handmatig in het laatste teken van haar naam of andere manier, of het aantal ervan. 939 00:38:38,151 --> 00:38:38,650 Rechts? 940 00:38:38,650 --> 00:38:43,500 Als we terug gaan hier-- Z-A-M-L-- Y-L-A-- dus ik kon typen in. 941 00:38:43,500 --> 00:38:47,340 Wat is de index van Laatste brief Zamyla's? 942 00:38:47,340 --> 00:38:52,517 Als dit 0-- spreken als een programmer-- 0, 1, 2, 3, 4, 5, 943 00:38:52,517 --> 00:38:56,570 Ik heard-- zo inderdaad, de laatste letter in naam Zamyla is de zesde, 944 00:38:56,570 --> 00:38:58,890 maar als we tellen van 0, het gaat om nummer 5 te zijn. 945 00:38:58,890 --> 00:39:01,320 Dus hou dat in gedachten hier. 946 00:39:01,320 --> 00:39:04,929 >> Het blijkt dat er een functie in C genaamd strlen, en terug in de dag 947 00:39:04,929 --> 00:39:06,720 en tot op de dag nog steeds, veel programmeurs 948 00:39:06,720 --> 00:39:09,524 kiezen om namen te synchroniseren van hun functies die klinken als de woorden 949 00:39:09,524 --> 00:39:10,440 ze proberen te zeggen. 950 00:39:10,440 --> 00:39:12,590 Dus strlen is tekenreekslengte. 951 00:39:12,590 --> 00:39:18,168 En wat zou tekenreekslengte van S terugkeren wanneer Zamyla is de input? 952 00:39:18,168 --> 00:39:19,569 >> Publiek: Five. 953 00:39:19,569 --> 00:39:22,090 >> SPEAKER 1: Z-A-M-Y-L. Zes. 954 00:39:22,090 --> 00:39:22,590 Rechts? 955 00:39:22,590 --> 00:39:23,940 Wat is de lengte van de naam Zamyla's? 956 00:39:23,940 --> 00:39:24,440 Rechts? 957 00:39:24,440 --> 00:39:26,240 En net in werkelijkheid zes letters. 958 00:39:26,240 --> 00:39:26,740 Rechts? 959 00:39:26,740 --> 00:39:28,940 En wat betekent dat voor onze loop? 960 00:39:28,940 --> 00:39:32,130 We gaan om te gaan van 0 tot zes, waarbij 961 00:39:32,130 --> 00:39:33,650 gaat ons vijf iteraties geven. 962 00:39:33,650 --> 00:39:34,890 Wat doen we op elke iteratie? 963 00:39:34,890 --> 00:39:36,870 Nou, procent C, iemand geraden de andere dag, 964 00:39:36,870 --> 00:39:38,710 betekent een tijdelijke aanduiding voor wat? 965 00:39:38,710 --> 00:39:39,335 >> Publiek: Char. 966 00:39:39,335 --> 00:39:40,293 SPEAKER 1: Gewoon een char. 967 00:39:40,293 --> 00:39:42,877 Dus een enkele character-- niet meerdere personages als een string. 968 00:39:42,877 --> 00:39:45,251 En dan is hier de nieuwe lijn dat we hebben uit te printen. 969 00:39:45,251 --> 00:39:46,580 En dan is hier de nieuwe syntaxis. 970 00:39:46,580 --> 00:39:51,130 Als u wilt afdrukken uit de i-de teken in de reeks S, zogezegd, 971 00:39:51,130 --> 00:39:54,060 kun je gewoon zeggen dat de Naam van de string S, 972 00:39:54,060 --> 00:39:58,230 en open vervolgens vierkante haken, en dan gesloten vierkante haken, met een i 973 00:39:58,230 --> 00:39:58,780 het midden. 974 00:39:58,780 --> 00:40:01,430 En het is wel leuk in die Het soort ziet eruit als een plein 975 00:40:01,430 --> 00:40:06,210 net als de pleinen waar Zamyla's tekens bestaan ​​op die foto daar. 976 00:40:06,210 --> 00:40:09,970 >> Dus als ik dit eigenlijk run Nu, laten we eens kijken wat er gebeurt. 977 00:40:09,970 --> 00:40:15,190 Maak touwtje 0 dot slash touwtje 0, en dan ben ik 978 00:40:15,190 --> 00:40:16,720 gaan type in naam van Zamyla's. 979 00:40:16,720 --> 00:40:19,428 Er is geen prompt, omdat ik niet Gebruik afdruk f, maar dat is prima. 980 00:40:19,428 --> 00:40:20,660 Ik weet precies wat te doen. 981 00:40:20,660 --> 00:40:23,240 En inderdaad, het afgedrukt Zamyla naam, één per regel. 982 00:40:23,240 --> 00:40:25,760 >> Laten we nu eens een beetje roekeloos. 983 00:40:25,760 --> 00:40:28,461 Stel dat ik niet wist over strlen en ik dacht, 984 00:40:28,461 --> 00:40:31,460 oke, niemand gaat om een ​​hebben noem groter dan als 50 tekens. 985 00:40:31,460 --> 00:40:36,360 Laten we verder gaan en opnieuw te compileren dit en opnieuw uitvoeren, en typ in Zamyla 986 00:40:36,360 --> 00:40:37,160 weer. 987 00:40:37,160 --> 00:40:40,850 Logisch, wat is de programma gaat proberen af ​​te drukken? 988 00:40:40,850 --> 00:40:49,545 Z-A-M-Y-L-A dan als 45 onbekend bytes van het geheugen. 989 00:40:49,545 --> 00:40:51,670 En inderdaad, we zullen terugkomen dit idee geheugen. 990 00:40:51,670 --> 00:40:54,180 Maar gewoon logisch, als Naam Zamyla is deze lange, 991 00:40:54,180 --> 00:40:56,450 zoals in de foto hier, wat we zeggen 992 00:40:56,450 --> 00:40:59,810 is blijven drukken, blijven drukken, houden printen, houd printen, houd printen, 993 00:40:59,810 --> 00:41:03,781 tot aan de 50 karakter, die wie weet wat er gaat gebeuren. 994 00:41:03,781 --> 00:41:05,030 Dus laten we eigenlijk een kijkje nemen. 995 00:41:05,030 --> 00:41:06,720 Laten we type in Zamyla. 996 00:41:06,720 --> 00:41:07,250 Interessant. 997 00:41:07,250 --> 00:41:08,190 We hadden geluk. 998 00:41:08,190 --> 00:41:09,700 Gewoon een hele hoop van witte ruimte. 999 00:41:09,700 --> 00:41:09,930 Oh. 1000 00:41:09,930 --> 00:41:11,120 Er is een funky karakter. 1001 00:41:11,120 --> 00:41:14,577 Het ziet eruit als een soort van rare vraag markeren daar, maar er is de naam Zamyla's. 1002 00:41:14,577 --> 00:41:15,660 Laten we heel roekeloos. 1003 00:41:15,660 --> 00:41:20,000 Zullen we uitprinten 500 blokken in het onbekende? 1004 00:41:20,000 --> 00:41:24,380 Laten we verder gaan en maken deze zo goed en vervolgens opnieuw run. 1005 00:41:24,380 --> 00:41:27,980 En het volledige scherm, want laten we we nodig hebben om meer ruimte te zien. 1006 00:41:27,980 --> 00:41:30,460 Zamyla. 1007 00:41:30,460 --> 00:41:31,830 Kreeg weer geluk. 1008 00:41:31,830 --> 00:41:33,070 >> Durven we meer roekeloos? 1009 00:41:33,070 --> 00:41:36,070 Laten we meer roekeloos. 1010 00:41:36,070 --> 00:41:39,350 50.000 karakters. 1011 00:41:39,350 --> 00:41:41,390 Dit is zeer zeker geen goed idee. 1012 00:41:41,390 --> 00:41:41,890 Prima. 1013 00:41:41,890 --> 00:41:42,990 Maak touwtje 0. 1014 00:41:42,990 --> 00:41:44,720 Dit zal onze laatste demo. 1015 00:41:44,720 --> 00:41:47,261 Zamyla. 1016 00:41:47,261 --> 00:41:48,632 Ugh. 1017 00:41:48,632 --> 00:41:50,010 Ugh. 1018 00:41:50,010 --> 00:41:50,680 OK. 1019 00:41:50,680 --> 00:41:54,407 Dus mijn geheugen is echt leeg is nu, dat is eigenlijk wel handig. 1020 00:41:54,407 --> 00:41:55,990 Wat ik probeer te to-- krijgt alle recht. 1021 00:41:55,990 --> 00:41:57,614 En nu ben ik gewoon gaan om roekeloos te krijgen. 1022 00:41:57,614 --> 00:41:58,570 500.000. 1023 00:41:58,570 --> 00:42:03,860 Make-- full-screen laten we het. 1024 00:42:03,860 --> 00:42:04,990 Enter. 1025 00:42:04,990 --> 00:42:05,490 Zamyla. 1026 00:42:05,490 --> 00:42:12,050 1027 00:42:12,050 --> 00:42:13,390 Daar gaan we. 1028 00:42:13,390 --> 00:42:15,610 Ik heb geen idee wat dat is, maar het klinkt slecht. 1029 00:42:15,610 --> 00:42:16,110 Prima. 1030 00:42:16,110 --> 00:42:20,322 En in feite, snel, als je onder de gelukkige paar in de kantooruren 1031 00:42:20,322 --> 00:42:22,780 en in probleem te stellen één, u heel goed zou kunnen tegenkomen dit. 1032 00:42:22,780 --> 00:42:25,490 Segmentatie fout eigenlijk doet een goed gedefinieerde betekenis. 1033 00:42:25,490 --> 00:42:28,450 Het betekent een vergissing betreffende een segment van het geheugen. 1034 00:42:28,450 --> 00:42:30,490 En in termen van de leek, het betekent dat we aangeraakt 1035 00:42:30,490 --> 00:42:34,780 memory-- gebruikten we RAM in mijn computer dat ik geen toegang tot zou hebben gehad. 1036 00:42:34,780 --> 00:42:37,050 En dat is wat zowel krachtig en gevaarlijk 1037 00:42:37,050 --> 00:42:39,910 over C is dat je eigenlijk hebben vrije toegang 1038 00:42:39,910 --> 00:42:45,910 om het geheel van het geheugen van uw programma of bytes of RAM, specifieker. 1039 00:42:45,910 --> 00:42:49,510 >> Dus hoewel de naam Zamyla's is slechts zes tekens lang, 1040 00:42:49,510 --> 00:42:51,450 Ik kan nog steeds overal in het geheugen ik wil. 1041 00:42:51,450 --> 00:42:53,491 En als een terzijde, als je hebt ooit enige artikel te lezen 1042 00:42:53,491 --> 00:42:55,610 via over enkele jaren server of een programma 1043 00:42:55,610 --> 00:42:58,654 krijgen gekraakt of gehackt dat is gebruik gemaakt van iets 1044 00:42:58,654 --> 00:43:00,820 heet een buffer overflow exploiteren dat we eigenlijk 1045 00:43:00,820 --> 00:43:04,970 praten over een paar weken, dat is over het algemeen te verwijzen naar een of andere manier tricking 1046 00:43:04,970 --> 00:43:09,090 een computer in goed gaat voorbij de grenzen van het geheugen 1047 00:43:09,090 --> 00:43:11,410 die het zou moeten hebben, en het vinden van iets sappige 1048 00:43:11,410 --> 00:43:13,530 doordat een memory-- wachtwoord, misschien, een manier 1049 00:43:13,530 --> 00:43:16,990 omzeilen enkele serienummer controleren, of gewoon in het algemeen in staat 1050 00:43:16,990 --> 00:43:20,360 truc de computer uitvoert code die niet bedoeld was. 1051 00:43:20,360 --> 00:43:22,360 Maar laten we terugkomen op realiteit voor een moment 1052 00:43:22,360 --> 00:43:24,550 wanneer dit programma was geïmplementeerd strlen, 1053 00:43:24,550 --> 00:43:26,110 en de invoering van één ding hier. 1054 00:43:26,110 --> 00:43:30,030 Wat is nieuw bij deze top drie lijnen? 1055 00:43:30,030 --> 00:43:30,910 >> Dus reeks dot h. 1056 00:43:30,910 --> 00:43:35,490 Het blijkt dat er deze bibliotheek genoemd String Dot H, of de String Library, 1057 00:43:35,490 --> 00:43:38,490 waarvan de header-bestand, om zo te zeggen, is touwtje dot h, dat geeft me 1058 00:43:38,490 --> 00:43:40,860 de toegang tot deze strlen functie. 1059 00:43:40,860 --> 00:43:43,841 Als ik dat achterwege te laten, de compiler is gaat schreeuwen tegen me in een bepaalde vorm. 1060 00:43:43,841 --> 00:43:44,590 Maar weet je wat? 1061 00:43:44,590 --> 00:43:46,090 Laten we nu echt genuanceerd. 1062 00:43:46,090 --> 00:43:50,820 In lijn 22, er is iets soort van inefficient-- slecht ontworpen, 1063 00:43:50,820 --> 00:43:53,990 arguably-- over deze lijn van code. 1064 00:43:53,990 --> 00:43:56,280 Denk terug aan hoe for-lus worden uitgevoerd 1065 00:43:56,280 --> 00:44:00,140 en welke stappen weer gebeuren en opnieuw en again-- de initialisatie, 1066 00:44:00,140 --> 00:44:04,110 de conditie, de code die wordt uitgevoerd, dan is de toename 1067 00:44:04,110 --> 00:44:07,880 of de verandering, zou de conditie, dan is de code, dan is de verandering, dan 1068 00:44:07,880 --> 00:44:11,280 de aandoening, dan is de code, wordt deze verandering, enzovoort. 1069 00:44:11,280 --> 00:44:15,320 Dus wat is misschien een beetje zorgwekkend of slecht hier gedaan? 1070 00:44:15,320 --> 00:44:16,387 Ja, in het blauw. 1071 00:44:16,387 --> 00:44:18,220 Publiek: strlen is genoemd vele malen. 1072 00:44:18,220 --> 00:44:20,654 1073 00:44:20,654 --> 00:44:21,320 SPEAKER 1: Ja. 1074 00:44:21,320 --> 00:44:23,700 Dus strlen heet vele malen, maar wat is 1075 00:44:23,700 --> 00:44:27,113 de lengte van de naam van de Zamyla eerste keer dat de lus wordt uitgevoerd? 1076 00:44:27,113 --> 00:44:27,860 >> Publiek: Zes. 1077 00:44:27,860 --> 00:44:28,110 >> SPEAKER 1: Zes. 1078 00:44:28,110 --> 00:44:30,976 Nou, wat is de lengte van haar naam de tweede keer dat de code wordt uitgevoerd? 1079 00:44:30,976 --> 00:44:31,432 >> Publiek: Zes. 1080 00:44:31,432 --> 00:44:31,890 >> SPEAKER 1: Oké. 1081 00:44:31,890 --> 00:44:32,720 Het is nog steeds zes. 1082 00:44:32,720 --> 00:44:33,220 Rechts? 1083 00:44:33,220 --> 00:44:35,260 Naam Zarla's heeft niet veranderd, zelfs als ik ben op zoek 1084 00:44:35,260 --> 00:44:38,240 op slechts een deel van de brieven in haar naam. 1085 00:44:38,240 --> 00:44:41,349 En dus het feit dat ik effectief deze vraag, wat is 1086 00:44:41,349 --> 00:44:44,640 de lengte van Zamyla, wat is de lengte van Zamyla, wat is de lengte van Zamyla, 1087 00:44:44,640 --> 00:44:47,990 zes verschillende tijden, of zeven ook, is gewoon dom, 1088 00:44:47,990 --> 00:44:50,390 want dat is onveranderlijk dat antwoord. 1089 00:44:50,390 --> 00:44:53,550 En dus wat ik kon eigenlijk doen is dit-- in string één 1090 00:44:53,550 --> 00:44:55,680 Ik heb een iets betere versie hier. 1091 00:44:55,680 --> 00:45:00,110 Er-- whoops-- touwtje twee Ik heb een marginaal betere versie, waarin 1092 00:45:00,110 --> 00:45:05,010 Ik doe dit-- in plaats van enkel initialiseren i op 0, heb ik ook met een komma 1093 00:45:05,010 --> 00:45:07,990 verklaren een tweede variabele genaamd N-- Ik hoef niet te int nogmaals zeggen. 1094 00:45:07,990 --> 00:45:09,220 Ik mag niet, in feite. 1095 00:45:09,220 --> 00:45:10,380 Maar ik zeg n. 1096 00:45:10,380 --> 00:45:13,610 En dan initialiseren I n om de strlen van n, zodat nu 1097 00:45:13,610 --> 00:45:17,110 hoe vaak komt strlen word uitgevoerd in totaal? 1098 00:45:17,110 --> 00:45:17,610 Maar een keer. 1099 00:45:17,610 --> 00:45:20,257 En dus dit is wat we bedoelen eerder over een beter ontwerp. 1100 00:45:20,257 --> 00:45:23,090 Eigenlijk een keer uw code correct is, terug te gaan en doordenken, 1101 00:45:23,090 --> 00:45:26,820 ben ik met zo weinig memory of enkele seconden 1102 00:45:26,820 --> 00:45:30,409 of milliseconden van de computer van de tijd als mogelijk om een ​​probleem uit te voeren? 1103 00:45:30,409 --> 00:45:32,200 En ik ga om te scrollen en noem 1104 00:45:32,200 --> 00:45:34,283 dat er deze melding van null in deze versie, 1105 00:45:34,283 --> 00:45:36,390 maar we zullen terug te komen dat duurde niet lang. 1106 00:45:36,390 --> 00:45:41,010 Want voor nu, laten we een kijkje nemen naar waar dit gaat om ons te leiden. 1107 00:45:41,010 --> 00:45:44,110 Dus een, blijkt dat nu dat we de mogelijkheid hebben 1108 00:45:44,110 --> 00:45:46,860 om te kijken naar de individuele personages, kunnen we iets benutten 1109 00:45:46,860 --> 00:45:50,807 van week 0, dat zeer mysterieuze was en soort oninteressant op het moment. 1110 00:45:50,807 --> 00:45:53,390 Maar nu, en vooral wanneer we krijgen om cryptografie in een week, 1111 00:45:53,390 --> 00:45:54,820 het gaat behoorlijk krachtig. 1112 00:45:54,820 --> 00:45:57,450 Het blijkt dat met een aantal data types-- ints en praalwagens 1113 00:45:57,450 --> 00:46:00,300 en tekens en strijkers en andere things-- een aantal van hen 1114 00:46:00,300 --> 00:46:02,800 kan heel eenvoudig worden omgezet naar een andere. 1115 00:46:02,800 --> 00:46:05,840 >> Bijvoorbeeld, wanneer we praatten over ASCII enige tijd ago-- hier 1116 00:46:05,840 --> 00:46:07,796 de hoofdletters A door middel van M, puntje, puntje, 1117 00:46:07,796 --> 00:46:12,530 dot-- wij zeiden dat er een mapping tussen deze letters en cijfers. 1118 00:46:12,530 --> 00:46:14,970 En in feite, het waar houdt voor kleine letters als goed. 1119 00:46:14,970 --> 00:46:17,470 Kleine een is 97, de hoofdstad van een 65. 1120 00:46:17,470 --> 00:46:20,860 En er is een aantal in ASCII, dat is gewoon dit in kaart brengen 1121 00:46:20,860 --> 00:46:23,240 voor al die andere letters. 1122 00:46:23,240 --> 00:46:25,030 Dus wat betekent dat? 1123 00:46:25,030 --> 00:46:28,390 Nou, ik ga verder open gaan up echt snel iets geroepen 1124 00:46:28,390 --> 00:46:31,240 ASCII 0, waarvan de meeste reacties. 1125 00:46:31,240 --> 00:46:33,860 En weer online kunt u altijd blik door de commentaren. 1126 00:46:33,860 --> 00:46:36,180 >> En neem een ​​kijkje wat dit gaat doen. 1127 00:46:36,180 --> 00:46:38,410 Dus het heeft een belangrijke functie. 1128 00:46:38,410 --> 00:46:41,490 Ik heb hard-coded de nummers alleen voor nu, omdat ik weet wat ik doe. 1129 00:46:41,490 --> 00:46:42,950 Ik weet wat ik wil hier te zien. 1130 00:46:42,950 --> 00:46:45,220 En ik heb ik geïnitialiseerd op 65. 1131 00:46:45,220 --> 00:46:48,490 En ik ben tellen door middel van 26 letters in totaal. 1132 00:46:48,490 --> 00:46:52,990 En wat ga ik afdrukken van een regel in een tijd 1133 00:46:52,990 --> 00:46:54,930 als je kunt interpreteren Dit benadrukt lijn? 1134 00:46:54,930 --> 00:46:55,970 Wat wordt er afgedrukt? 1135 00:46:55,970 --> 00:46:56,797 Ja. 1136 00:46:56,797 --> 00:46:57,264 >> Publiek: Gaat u de brief af te drukken dat 1137 00:46:57,264 --> 00:46:59,805 komt overeen met de kaart van de letter waarde en integer waarde? 1138 00:46:59,805 --> 00:47:01,199 1139 00:47:01,199 --> 00:47:01,990 SPEAKER 1: Precies. 1140 00:47:01,990 --> 00:47:04,740 Ik ga de brief af te drukken overeenkomend met de gehele waarde, 1141 00:47:04,740 --> 00:47:06,131 en vice versa, als volgt. 1142 00:47:06,131 --> 00:47:08,880 Nou, dit, iemand al eerder zei, is slechts een tijdelijke aanduiding voor een char. 1143 00:47:08,880 --> 00:47:09,490 Het blijft. 1144 00:47:09,490 --> 00:47:12,280 Dit, natuurlijk, is een placeholder voor een int-- niet een nieuwe regel. 1145 00:47:12,280 --> 00:47:18,140 En nu ziet, mijn eerste waarde Ik ben het aansluiten van voor die placeholder 1146 00:47:18,140 --> 00:47:22,320 is niet alleen I. ben ik zeggen, haakjes, char I, 1147 00:47:22,320 --> 00:47:26,700 waarbij de haakjes char is vertelt de compiler, behandel ik 1148 00:47:26,700 --> 00:47:28,490 niet wat het is dat een getal. 1149 00:47:28,490 --> 00:47:30,490 Behandelen als een echte karakter. 1150 00:47:30,490 --> 00:47:34,490 Terwijl de tweede waarde Ik inpluggen in-- Ik-- moet gewoon een getal zijn. 1151 00:47:34,490 --> 00:47:38,140 >> Dus als ik dit program-- compileren dus dit is het maken van ASCII 0, 1152 00:47:38,140 --> 00:47:41,720 dot slash ASCII 0-- ik krijg net Deze handige kleine grafiek die 1153 00:47:41,720 --> 00:47:44,950 laat me alle mogelijke mappings zonder erover na te denken 1154 00:47:44,950 --> 00:47:46,450 via of het uit op mijn eigen. 1155 00:47:46,450 --> 00:47:48,783 En ik ben ook uit te printen, let op de kleine letters, 1156 00:47:48,783 --> 00:47:51,410 omdat een paar regels later, I ook uitprinten dit mapping 1157 00:47:51,410 --> 00:47:53,737 als goed, dat is gewoon te zeggen dat als je eenmaal begrijpt 1158 00:47:53,737 --> 00:47:55,570 wat er onder de kap, kunt u 1159 00:47:55,570 --> 00:47:57,111 automatisch om te zetten heen en weer. 1160 00:47:57,111 --> 00:48:00,160 En in feite, als iemand van u dit ooit op de lagere school deed 1161 00:48:00,160 --> 00:48:03,490 of gehoord over iemand mythisch nemen van een nota 1162 00:48:03,490 --> 00:48:05,620 en deze aan zijn of haar vriend in de klas, 1163 00:48:05,620 --> 00:48:08,300 maar u roerei het letters door zoals A wordt B, 1164 00:48:08,300 --> 00:48:11,240 B en C wordt, of iets ingewikkelder dan dat, nou ja, 1165 00:48:11,240 --> 00:48:13,410 hoe zou je gaan over het uitvoering van dat als een kind? 1166 00:48:13,410 --> 00:48:16,340 Nou, je gewoon een soort van weten A wordt B, B wordt C, 1167 00:48:16,340 --> 00:48:19,700 maar mathematisch, wat was dat kind aan het doen? 1168 00:48:19,700 --> 00:48:22,050 Wat was je toe te voegen aan elke letter? 1169 00:48:22,050 --> 00:48:23,340 Effectief, 1. 1170 00:48:23,340 --> 00:48:27,740 >> Dus als u een wijziging naar B, dat is net zoiets als het veranderen van 65-66, 1171 00:48:27,740 --> 00:48:29,590 die mathematisch betekent gewoon voeg 1. 1172 00:48:29,590 --> 00:48:33,300 En dus als je uit te voeren dat beetje misleidend techniek 1173 00:48:33,300 --> 00:48:36,380 voor je leraar in de code, u misschien dat precies doen 1174 00:48:36,380 --> 00:48:38,552 door het toevoegen van een enkele letter samen. 1175 00:48:38,552 --> 00:48:40,260 Dus voordat lang, we zijn gaan hoe we zien 1176 00:48:40,260 --> 00:48:43,300 kunnen profiteren van die daadwerkelijk oprecht scramble en decoderen 1177 00:48:43,300 --> 00:48:43,991 informatie. 1178 00:48:43,991 --> 00:48:47,240 In de tussentijd, weten dat we zijn begonnen om een ​​paar andere bibliotheken te introduceren 1179 00:48:47,240 --> 00:48:48,990 hier-- de string een vandaag. 1180 00:48:48,990 --> 00:48:51,180 En een zeer behulpzame website Hopelijk vindt u 1181 00:48:51,180 --> 00:48:55,010 heet reference.cs50.net, die het onderwijzend personeel hebben in elkaar gezet, 1182 00:48:55,010 --> 00:48:57,510 zodat als je wilt opzoeken hoe strlen werken, 1183 00:48:57,510 --> 00:48:59,300 u kunt beginnen met typen naam van de functie, 1184 00:48:59,300 --> 00:49:02,890 klik er strlen, en vervolgens een minder comfortabel uitleg 1185 00:49:02,890 --> 00:49:03,700 zal verschijnen. 1186 00:49:03,700 --> 00:49:06,880 Of als u wilt dat de officiële Linux-gebaseerde verklaring, 1187 00:49:06,880 --> 00:49:08,945 kunt u meer comfortabele klik rechtsboven, en het 1188 00:49:08,945 --> 00:49:12,070 Dezelfde informatie presenteren maar in meer complexe voorwaarden. 1189 00:49:12,070 --> 00:49:15,070 Dat is een nuttig middel om eigenlijk weten wat alles doet. 1190 00:49:15,070 --> 00:49:17,320 >> Volgende keer gaan we een kijkje nemen op Ovaltine 1191 00:49:17,320 --> 00:49:20,070 en meer, en onszelf te introduceren in de wereld van cryptografie. 1192 00:49:20,070 --> 00:49:21,930 Voor die tijd, we zullen zien je later deze week. 1193 00:49:21,930 --> 00:49:23,390 En nu, Colton Ogden. 1194 00:49:23,390 --> 00:49:26,730 Zie je op woensdag. 1195 00:49:26,730 --> 00:49:30,216 >> [Muziek] 1196 00:49:30,216 --> 00:49:33,702 >> [Muziek] 1197 00:49:33,702 --> 00:49:38,682 1198 00:49:38,682 --> 00:49:42,200 >> SPEAKER 1: Wat de [BLEEP] doe je? 1199 00:49:42,200 --> 00:49:45,720 >> SPEAKER 1: Ik eet mijn toetje? 1200 00:49:45,720 --> 00:49:47,160 Hoe doe je dat eten? 1201 00:49:47,160 --> 00:49:47,860 Met je handen? 1202 00:49:47,860 --> 00:49:54,050 1203 00:49:54,050 --> 00:49:57,940 >> [Muziek] 1204 00:49:57,940 --> 00:50:03,453