1 00:00:08,119 --> 00:00:11,630 [Powered by Google Translate] David J. Malan: Alle reg, dit is CS50, en dit is die 2 00:00:11,630 --> 00:00:14,790 die begin van die week twee. 3 00:00:14,790 --> 00:00:16,300 Dankie. 4 00:00:16,300 --> 00:00:19,000 Laat ons hier begin met 'n telefoonoproep. 5 00:00:19,000 --> 00:00:30,005 Ek is op die punt om te bel 617-BUG-CS50. 6 00:00:30,005 --> 00:00:31,230 CS50: Dit is CS50. 7 00:00:31,230 --> 00:00:33,930 Vir Shuttle Boy, druk 1. 8 00:00:33,930 --> 00:00:36,660 Om oor te begin, druk 9. 9 00:00:36,660 --> 00:00:38,180 David J. Malan: En hy sê vir Shuttle Boy, druk 1. 10 00:00:38,180 --> 00:00:41,560 So ons gaan te druk 1. 11 00:00:41,560 --> 00:00:43,230 CS50: Wat is jou oorsprong? 12 00:00:43,230 --> 00:00:45,340 Vir quad, druk 1. 13 00:00:45,340 --> 00:00:47,080 Mather, druk 2. 14 00:00:47,080 --> 00:00:49,240 Boylston, druk 3. 15 00:00:49,240 --> 00:00:51,280 Lamont, druk 4. 16 00:00:51,280 --> 00:00:53,210 Mem Hall, druk 5. 17 00:00:53,210 --> 00:00:55,660 Om oor te begin, druk 0. 18 00:00:55,660 --> 00:00:59,590 David J. Malan: Ons sal druk 1 quad. 19 00:00:59,590 --> 00:01:03,610 CS50: Volgende shuttle verlaat hierdie baie minute op 13:10, en 20 00:01:03,610 --> 00:01:09,820 dan op 01:20, 01:30, 01:40. 21 00:01:09,820 --> 00:01:12,030 Dit is CS50. 22 00:01:12,030 --> 00:01:15,570 >> David J. Malan: So dit is CS50 se stem. 23 00:01:15,570 --> 00:01:18,030 En dit is 'n voorbeeld van die soort van die finale projekte, 24 00:01:18,030 --> 00:01:19,500 Byvoorbeeld, kan jy byt af in die rigting van 25 00:01:19,500 --> 00:01:20,600 die einde van die semester. 26 00:01:20,600 --> 00:01:23,840 Byvoorbeeld, dat shuttleboy.cs50.net bestaan ​​- 27 00:01:23,840 --> 00:01:28,200 eintlik 'n projek wat ek die eerste keer geskryf het nadat hy CS51 28 00:01:28,200 --> 00:01:29,740 terug toe ek 'n voorgraadse. 29 00:01:29,740 --> 00:01:32,250 En die inspirasie was hier terug dan, al wat hulle gehad het, was 30 00:01:32,250 --> 00:01:34,320 die gedrukte shuttle bus skedules, en daar was geen 31 00:01:34,320 --> 00:01:35,970 idee van die soek na dinge up aanlyn. 32 00:01:35,970 --> 00:01:38,730 En so het ek soort van duif in een naweek, het deur die 33 00:01:38,730 --> 00:01:41,460 gedrukte skedule, en dit oorgedra na 'n rekenaar program. 34 00:01:41,460 --> 00:01:43,790 Op die oomblik, die rekenaar program gebeur geskryf word 35 00:01:43,790 --> 00:01:47,110 in C. En jy eintlik loop dit op 'n deur die tik van die Shuttle Boy 36 00:01:47,110 --> 00:01:48,600 flikkerende gevra soos ons het tot dusver te doen. 37 00:01:48,600 --> 00:01:50,450 Maar oor die jare, is dit ontwikkel in 'n oomblik 38 00:01:50,450 --> 00:01:51,390 messaging bot. 39 00:01:51,390 --> 00:01:53,970 Dit is meer onlangs ontwikkel in hierdie webwerf, in 'n 40 00:01:53,970 --> 00:01:57,720 SMS-gebaseerde instrument, sowel as in hierdie stem-gebaseerde instrument. 41 00:01:57,720 --> 00:02:00,170 En dit is om te dui op die soort van dinge wat jy kan 42 00:02:00,170 --> 00:02:02,380 doen vir jouself deur semester se einde. 43 00:02:02,380 --> 00:02:05,490 >> Byvoorbeeld, daar gebeur, die SMS-weergawe van die Shuttle Boy 44 00:02:05,490 --> 00:02:06,510 om soos volg te werk. 45 00:02:06,510 --> 00:02:10,880 Indien op jou selfoon, jy stuur 'n SMS-boodskap aan 41.411 en 46 00:02:10,880 --> 00:02:14,300 stuur dan die spesiale simbool sboy, vir Shuttle Boy, 47 00:02:14,300 --> 00:02:18,350 gevolg deur A en B, waar A is 'n oorsprong en B is 'n 48 00:02:18,350 --> 00:02:19,070 bestemming - 49 00:02:19,070 --> 00:02:21,030 byvoorbeeld, Boylston Space Quad - 50 00:02:21,030 --> 00:02:23,330 wat jy moet terug te kry binne 'n paar sekondes is 'n teks 51 00:02:23,330 --> 00:02:25,820 boodskap van Shuttle Boy vertel jou presies wanneer die 52 00:02:25,820 --> 00:02:28,990 volgende paar shuttles is, van daardie punt A gaan 53 00:02:28,990 --> 00:02:29,640 punt B. 54 00:02:29,640 --> 00:02:32,510 En dit is 'n meer algemene voorbeeld van wat bekend staan ​​as 55 00:02:32,510 --> 00:02:33,920 met behulp van 'n API. 56 00:02:33,920 --> 00:02:36,930 >> So byvoorbeeld, is dit hier is net shuttleboy.cs50.net, die 57 00:02:36,930 --> 00:02:39,300 werklike web-gebaseerde inkarnasie van hierdie. 58 00:02:39,300 --> 00:02:42,480 Maar die data wat hierdie en ander programme beklemtoon dat CS50 59 00:02:42,480 --> 00:02:45,560 ontwikkel het, is almal blootgestel aan almal hier in die vorm 60 00:02:45,560 --> 00:02:49,340 van API's, application programming interfaces. 61 00:02:49,340 --> 00:02:52,220 En dit is net 'n fancy manier om te sê dat mense hou van ons op 62 00:02:52,220 --> 00:02:56,010 die Internet en ander het bietjie tyd spandeer om die skep van 63 00:02:56,010 --> 00:02:59,970 sagteware wat jy kan gebruik om data aan te gryp van ons en 64 00:02:59,970 --> 00:03:02,510 dan bou jou eie programme geplaas 65 00:03:02,510 --> 00:03:03,840 van die datastel. 66 00:03:03,840 --> 00:03:06,610 So byvoorbeeld, hierdie Shuttle Boy API bladsy hier, wat 67 00:03:06,610 --> 00:03:09,390 gebeur om te wees in die CS50 handleiding, in wese dokumente 68 00:03:09,390 --> 00:03:13,080 hoe jy kan gaan oor die CS50 bedieners te vra vir data. 69 00:03:13,080 --> 00:03:16,240 Byvoorbeeld, as jy vertroud is met CSV lêers, komma 70 00:03:16,240 --> 00:03:18,940 geskei waardes, dit is net soort van vinnige en vuil 71 00:03:18,940 --> 00:03:20,310 Excel-lêers. 72 00:03:20,310 --> 00:03:23,110 Sodat jy kan Shuttle Boy vra vir almal van die data op al die 73 00:03:23,110 --> 00:03:25,090 huise en hul GPS-koördinate, en jy sal kry 74 00:03:25,090 --> 00:03:27,300 terug, in wese, 'n sigblad soos wat daardie 75 00:03:27,300 --> 00:03:30,820 jy kan lees dan in 'n program van jou eie en dan 76 00:03:30,820 --> 00:03:33,250 genereer resultate, soos Shuttle Boy self 77 00:03:33,250 --> 00:03:34,160 gebeur om te doen. 78 00:03:34,160 --> 00:03:37,030 Vir diegene wat meer bekend is, meer moderne data vertoë 79 00:03:37,030 --> 00:03:39,420 sluit into, JavaScript Object Notasie. 80 00:03:39,420 --> 00:03:40,620 Iets sal terug kom na U in die rigting 81 00:03:40,620 --> 00:03:41,720 die einde van die semester. 82 00:03:41,720 --> 00:03:45,440 >> Maar weereens, dit is net een van 'n paar van CS50 se eie API's. 83 00:03:45,440 --> 00:03:48,320 En die opwindende ding is nou, hierdie dae, Facebook en 84 00:03:48,320 --> 00:03:51,110 Twitter en Google en pretty much elke gewilde webwerf uit 85 00:03:51,110 --> 00:03:54,130 daar het 'n soort van API, wat beteken dat as jy lees die 86 00:03:54,130 --> 00:03:56,620 dokumentasie op hul webwerf, jy inteken vir 'n 87 00:03:56,620 --> 00:03:59,980 rekening, kan jy begin skryf sagteware op die top van 88 00:03:59,980 --> 00:04:03,680 watter gereedskap of data wat maatskappy bied. 89 00:04:03,680 --> 00:04:06,210 En so het een van ons eie onderwys genote 'n paar jaar terug 90 00:04:06,210 --> 00:04:07,620 skryf 'n Mac-weergawe van hierdie. 91 00:04:07,620 --> 00:04:10,990 So op die skakel getiteld Mac hier links bo, kan jy eintlik 92 00:04:10,990 --> 00:04:13,940 download 'n Mac OS widget wat loop op jou eie Mac te doen 93 00:04:13,940 --> 00:04:15,040 dieselfde soort van dinge. 94 00:04:15,040 --> 00:04:17,970 So dit is al oor die bou op die top van die datastelle soos hierdie. 95 00:04:17,970 --> 00:04:21,839 Maar meer oor wat na die einde van die semester. 96 00:04:21,839 --> 00:04:25,780 >> So laat ons duik in die werklike vinnig na 'n fout, net om soort van kry 97 00:04:25,780 --> 00:04:27,990 dinge opgewarm vandag, en dink terug op 'n paar van die 98 00:04:27,990 --> 00:04:29,660 dinge wat ons gekyk na die laaste week. 99 00:04:29,660 --> 00:04:32,840 In die besonder, laat my gaan voort en trek, sê, 100 00:04:32,840 --> 00:04:34,080 hierdie voorbeeld hier. 101 00:04:34,080 --> 00:04:37,500 Buggy1.c, dit is beskikbaar op die kursus se webwerf as jy wil 102 00:04:37,500 --> 00:04:40,250 dit wil hê om jouself af te laai en te steek. 103 00:04:40,250 --> 00:04:43,520 Maar laat ons hier zoom in op hierdie redelik kort program, en net 104 00:04:43,520 --> 00:04:46,550 'n super-vinnige recap van sommige van die basiese boustene wat 105 00:04:46,550 --> 00:04:48,880 ons regtig gaan net begin neem as vanselfsprekend aanvaar nie. 106 00:04:48,880 --> 00:04:51,860 >> So het die blou stuff, in reëls 1 tot 9, is net 107 00:04:51,860 --> 00:04:53,670 sagtebal vrae. 108 00:04:53,670 --> 00:04:54,590 So dit is net kommentaar. 109 00:04:54,590 --> 00:04:56,230 Hulle het geen funksionele betekenis. 110 00:04:56,230 --> 00:04:58,460 Maar hulle is 'n kommentaar in die sin dat hulle notas dat 111 00:04:58,460 --> 00:05:02,010 Ek, die mens, vir myself gemaak het, sodat in die lesing en na 112 00:05:02,010 --> 00:05:04,340 lesing, ek kan eintlik onthou wat hierdie program 113 00:05:04,340 --> 00:05:07,120 doen sonder om te lees deur dit in lyn met die lyn en 114 00:05:07,120 --> 00:05:08,990 herskep geskiedenis in my gedagtes. 115 00:05:08,990 --> 00:05:11,000 En as Ek gee hierdie program aan iemand anders soos 116 00:05:11,000 --> 00:05:14,420 jou, dit is baie duidelik vir julle, as gevolg van kommentaar soos hierdie, 117 00:05:14,420 --> 00:05:16,680 wat die program eintlik doen, of ten minste wat die 118 00:05:16,680 --> 00:05:18,210 program veronderstel is om te doen. 119 00:05:18,210 --> 00:05:20,760 Of dit korrek is, is 'n ander saak. 120 00:05:20,760 --> 00:05:25,040 Nou, in C, met multi-line kommentaar, onthou dat on line 121 00:05:25,040 --> 00:05:27,880 een is hier om die magie simbool, / *. 122 00:05:27,880 --> 00:05:30,380 Dit beteken hier kom die begin van 'n kommentaar. 123 00:05:30,380 --> 00:05:34,560 En niks anders saak maak totdat jy die einde bereik terminator, 124 00:05:34,560 --> 00:05:36,700 wat * /, die teenoorgestelde. 125 00:05:36,700 --> 00:05:39,120 Dus is die feit dat ek 80-paar vreemde sterre hier van 126 00:05:39,120 --> 00:05:41,550 links na regs is regtig net 'n estetiese detail. 127 00:05:41,550 --> 00:05:43,370 Dit het geen funksionele betekenis. 128 00:05:43,370 --> 00:05:44,490 >> Nou hoe oor line 11? 129 00:05:44,490 --> 00:05:46,940 Wat doen dit in leketaal? 130 00:05:51,560 --> 00:05:52,540 Wat is dit? 131 00:05:52,540 --> 00:05:54,280 Gehoor: Sluit die standaard. 132 00:05:54,280 --> 00:05:54,740 David J. Malan: OK, goed. 133 00:05:54,740 --> 00:05:57,500 So is dit sluit in die stdio.h biblioteek. 134 00:05:57,500 --> 00:05:58,230 So wat beteken dit? 135 00:05:58,230 --> 00:06:01,570 Wel, die binnekant van daardie lêer, stdio.h, is 'n hele klomp van 136 00:06:01,570 --> 00:06:03,320 funksie verklarings - 137 00:06:03,320 --> 00:06:05,290 dit is kode wat iemand anders geskryf het. 138 00:06:05,290 --> 00:06:08,160 En 'n perfekte voorbeeld van 'n funksie wat verklaar is in 139 00:06:08,160 --> 00:06:10,250 stdio.h is - 140 00:06:10,250 --> 00:06:11,980 watter gunsteling deur die nou? 141 00:06:11,980 --> 00:06:14,300 So printf, tot een van die mees algemene gebruik, seker 142 00:06:14,300 --> 00:06:15,840 vroeg op, van daardie biblioteek is daar. 143 00:06:15,840 --> 00:06:19,290 As ek daardie lyn van die kode sluit, klang gaan gil 144 00:06:19,290 --> 00:06:22,550 vir my iets oor die gebruik van 'n onverklaarde simbool. 145 00:06:22,550 --> 00:06:24,930 Iets swart is waarskynlik die sleutelwoord, want 146 00:06:24,930 --> 00:06:27,770 ons het nie die samesteller wat printf lyk 147 00:06:27,770 --> 00:06:29,230 graag tensy ons daardie lyn. 148 00:06:29,230 --> 00:06:31,830 En meer down to earth, regtig, wat daardie lyn sê 149 00:06:31,830 --> 00:06:34,890 oopmaak dat lêer, stdio.h, waar dit ook al op die bediener se 150 00:06:34,890 --> 00:06:38,200 hardeskyf, of die toestel se hardeskyf, en kopieer-plak- 151 00:06:38,200 --> 00:06:40,240 reg daar in my lêer, sonder my 152 00:06:40,240 --> 00:06:41,730 om met die hand te doen. 153 00:06:41,730 --> 00:06:44,420 >> Nou, wanneer kry ons hier af na die hoof, kort voor lank sal ons begin 154 00:06:44,420 --> 00:06:46,900 terg uitmekaar wat int en wat nietig is. 155 00:06:46,900 --> 00:06:48,430 Maar vir nou, laat ons kyk na die drie lyne 156 00:06:48,430 --> 00:06:50,350 binne 15 deur 17. 157 00:06:50,350 --> 00:06:52,250 Dit is hier Ek eis as buggy. 158 00:06:52,250 --> 00:06:54,900 Line 7 in my kommentaar sê: "10 moet druk 159 00:06:54,900 --> 00:06:59,410 sterretjies, maar nie "Hoekom. beteken dit nie druk, in werklikheid, 160 00:06:59,410 --> 00:07:01,097 10 sulke sterre? 161 00:07:01,097 --> 00:07:02,347 Gehoor: [onhoorbaar]. 162 00:07:05,210 --> 00:07:05,800 David J. Malan: Presies. 163 00:07:05,800 --> 00:07:08,720 So sien dat ons begin om te tel van 0. 164 00:07:08,720 --> 00:07:10,780 En dit is eintlik 'n konvensie in programmering en 165 00:07:10,780 --> 00:07:13,230 rekenaarwetenskap meer in die algemeen, begin om te tel 166 00:07:13,230 --> 00:07:14,610 van 0 in plaas van 1. 167 00:07:14,610 --> 00:07:16,690 En dit regtig net afgelei van die feit dat, vir 168 00:07:16,690 --> 00:07:18,940 Byvoorbeeld, wanneer ons het agt mense op die verhoog, toe 169 00:07:18,940 --> 00:07:20,680 niemand hulle hand is die verhoging, was hulle 170 00:07:20,680 --> 00:07:22,340 alle effektief nulle. 171 00:07:22,340 --> 00:07:24,260 En dus is dit net 'n soort van 'n rekenaar konvensie, 172 00:07:24,260 --> 00:07:26,030 dus, om te begin met die tel van 0. 173 00:07:26,030 --> 00:07:29,130 As dit is die laagste getal wat jy kan verteenwoordig in binêre. 174 00:07:29,130 --> 00:07:32,270 >> So hier het ons begin inisialisering i 0. 175 00:07:32,270 --> 00:07:34,230 Ons het i gelyk aan 0. 176 00:07:34,230 --> 00:07:37,780 Maar dan het ek hierdie fout gemaak het, en gesê: Ek is minder as of 177 00:07:37,780 --> 00:07:38,820 gelyk aan 10. 178 00:07:38,820 --> 00:07:41,700 Maar as jy dink dat, as ek begin by 0 en dan gaan ek 179 00:07:41,700 --> 00:07:46,410 tot 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, Ek het eintlik gaan 180 00:07:46,410 --> 00:07:49,980 11 sterre op die skerm druk, want ek het opgegaan 181 00:07:49,980 --> 00:07:52,410 tot en gelyk aan 10. 182 00:07:52,410 --> 00:07:55,090 So is die maklike oplossing hier is wat dan? 183 00:07:55,090 --> 00:07:56,070 Gehoor: [onhoorbaar]. 184 00:07:56,070 --> 00:07:57,350 David J. Malan: dit verander net minder as. 185 00:07:57,350 --> 00:07:59,700 As jy regtig wil, kan jy dit doen. 186 00:07:59,700 --> 00:08:01,370 Maar in die algemeen, wat frowned upon. 187 00:08:01,370 --> 00:08:04,020 En so begin om te tel van 0 is net iets wat jy moet 188 00:08:04,020 --> 00:08:05,510 tipies gewoond te raak. 189 00:08:05,510 --> 00:08:07,810 Nou, wat oor hierdie hele konstruk in en van die self? 190 00:08:07,810 --> 00:08:10,640 Hierdie lyn 15 demarks 'n lus. 191 00:08:10,640 --> 00:08:12,510 So is dit nie 'n funksie. 192 00:08:12,510 --> 00:08:13,640 Dit is net 'n verklaring. 193 00:08:13,640 --> 00:08:16,180 Dit is 'n herhaling konstruk, soos ons gesien het in Scratch. 194 00:08:16,180 --> 00:08:17,600 En dit het drie dele. 195 00:08:17,600 --> 00:08:19,740 Let daarop dat daar is die eerste deel van die 196 00:08:19,740 --> 00:08:21,350 die linkerkant van die kommapunt. 197 00:08:21,350 --> 00:08:24,200 Daar is die middelste deel in tussen die twee kommapunte. 198 00:08:24,200 --> 00:08:26,250 En dan is daar die regterkantste deel aan die regterkant 199 00:08:26,250 --> 00:08:27,640 van die tweede kommapunt. 200 00:08:27,640 --> 00:08:31,822 Nou, die eerste van hierdie doen? 201 00:08:31,822 --> 00:08:33,679 Gehoor: [onhoorbaar]. 202 00:08:33,679 --> 00:08:34,270 David J. Malan: Terug daar? 203 00:08:34,270 --> 00:08:34,816 Ja? 204 00:08:34,816 --> 00:08:35,980 Gehoor: inisialisering. 205 00:08:35,980 --> 00:08:36,850 >> David J. Malan: Initialisatie. 206 00:08:36,850 --> 00:08:37,840 So, wat beteken dit? 207 00:08:37,840 --> 00:08:40,690 Ons het 'n veranderlike genaamd i verklaar. 208 00:08:40,690 --> 00:08:43,840 Dit is van die tipe int, want ek het gespesifiseer int i. 209 00:08:43,840 --> 00:08:46,470 En ek inisialisering i tot die waarde van 0. 210 00:08:46,470 --> 00:08:47,730 So wat dit regtig sê? 211 00:08:47,730 --> 00:08:50,680 Dit is effektief op die rekenaar sê hey, gee my genoeg 212 00:08:50,680 --> 00:08:53,660 geheue, genoeg RAM, 'n nommer aan te pas, en dan sit die 213 00:08:53,660 --> 00:08:56,130 nommer 0 in daardie stuk RAM. 214 00:08:56,130 --> 00:08:59,100 En as 'n eenkant, hoe groot is 'n int tipies, ten minste binne 215 00:08:59,100 --> 00:09:00,280 van die toestel? 216 00:09:00,280 --> 00:09:01,000 Gehoor: 32 bit. 217 00:09:01,000 --> 00:09:01,670 David J. Malan: 32 stukkies. 218 00:09:01,670 --> 00:09:04,890 Dus beteken dit dat gee my 32 stukkies, andersins bekend as 4 bytes, 219 00:09:04,890 --> 00:09:07,250 en die waarde 0 in dit, wat is redelik maklik, want 220 00:09:07,250 --> 00:09:09,110 Dit beteken net al die stukkies aan 0. 221 00:09:09,110 --> 00:09:11,690 >> So nou, die tweede deel is die toestand. 222 00:09:11,690 --> 00:09:14,590 En die toestand, soos die naam aandui, is wat word nagegaan 223 00:09:14,590 --> 00:09:18,100 weer en weer en weer aan of dit waar of onwaar is. 224 00:09:18,100 --> 00:09:21,410 So dit is net gesê doen die volgende reëls van die kode 225 00:09:21,410 --> 00:09:23,950 naamlik lyn 16, want dit is die enigste een ingekeep 226 00:09:23,950 --> 00:09:24,820 onder - 227 00:09:24,820 --> 00:09:26,980 so lank as wat ek is minder as 10. 228 00:09:26,980 --> 00:09:30,520 En na elke iterasie deur hierdie lus, doen die 229 00:09:30,520 --> 00:09:33,840 incrementation, wat in hierdie geval is i + +. 230 00:09:33,840 --> 00:09:35,580 Nou, dit hoef nie te wees i + +. 231 00:09:35,580 --> 00:09:37,610 Dit kan wees i -. 232 00:09:37,610 --> 00:09:39,860 Maar as ek dit gedoen het, is wat die gedrag aan die gang 233 00:09:39,860 --> 00:09:41,370 te wees van hierdie program? 234 00:09:41,370 --> 00:09:42,290 Gehoor: Dit gaan 'n oneindige lus. 235 00:09:42,290 --> 00:09:44,060 David J. Malan: Dit gaan om 'n soort van oneindige lus, 236 00:09:44,060 --> 00:09:47,720 tensy ons kry gelukkig na negatiewe 2 miljard of so. 237 00:09:47,720 --> 00:09:51,320 Miskien sal dinge om te draai, net deur die aard van die eindige 238 00:09:51,320 --> 00:09:53,930 aantal bisse wat ons vir 'n int toegeken. 239 00:09:53,930 --> 00:09:56,270 Maar dit is beslis gaan veel meer as 10 itereer en 240 00:09:56,270 --> 00:09:58,630 seker meer as 11 keer hier. 241 00:09:58,630 --> 00:10:02,240 >> En nou, net soos 'n ter syde stel, besef dat ek + + en ek - 242 00:10:02,240 --> 00:10:04,420 is regtig net sintaktiese suiker. 243 00:10:04,420 --> 00:10:07,210 Dis net snelskrifnotasie vir wat is 'n bietjie meer 244 00:10:07,210 --> 00:10:08,720 uitdruklik soos volg geskryf: 245 00:10:08,720 --> 00:10:11,200 i = i + 1. 246 00:10:11,200 --> 00:10:13,460 Dit is identies aan i + +. 247 00:10:13,460 --> 00:10:15,860 Dit is net lyk soort van mooier om te sê i + +. 248 00:10:15,860 --> 00:10:17,490 Dit is meer bondig, meer leesbaar. 249 00:10:17,490 --> 00:10:19,030 En so die meeste mense dit doen in plaas. 250 00:10:19,030 --> 00:10:21,840 Maar dit is identies funksioneel aan 251 00:10:21,840 --> 00:10:22,900 wat ons nou net gesien het. 252 00:10:22,900 --> 00:10:27,770 Dus, in kort, die quick fix hier is net om te sê dat ek itereer 253 00:10:27,770 --> 00:10:30,690 van 0 al die pad tot minder as 10. 254 00:10:30,690 --> 00:10:32,700 En dan sal ons wel kry 10 sterre. 255 00:10:32,700 --> 00:10:33,430 >> Kom ons probeer dit. 256 00:10:33,430 --> 00:10:35,310 Laat my oopmaak die terminale aan die onderkant. 257 00:10:35,310 --> 00:10:37,420 Laat my gaan in die gids wat dit is. 258 00:10:37,420 --> 00:10:40,030 En ek gaan dit met die hand te stel met kletteren vir nou. 259 00:10:40,030 --> 00:10:44,880 En ek gaan om dit te stel as buggy1.c, Enter. 260 00:10:44,880 --> 00:10:50,280 En nou buggy1, waarom is daar geen so 'n lêer of gids 261 00:10:50,280 --> 00:10:52,026 genoem buggy1? 262 00:10:52,026 --> 00:10:53,850 Gehoor: [onhoorbaar]. 263 00:10:53,850 --> 00:10:54,240 David J. Malan: Ja. 264 00:10:54,240 --> 00:10:55,420 So dit is eintlik genoem a.out. 265 00:10:55,420 --> 00:10:57,480 So onthou as jy net kletteren hardloop, waar kletteren die 266 00:10:57,480 --> 00:11:00,420 samesteller, en jy spesifiseer nie die naam wat jy wil 267 00:11:00,420 --> 00:11:03,550 gee aan jou program, gaan dit Keren na a.out. 268 00:11:03,550 --> 00:11:05,030 So wel as ek dit doen ls - 269 00:11:05,030 --> 00:11:05,510 Oeps. 270 00:11:05,510 --> 00:11:07,680 En Ek didn't - die swart-en-wit kwessie sommige van 271 00:11:07,680 --> 00:11:08,840 jy uitgedaag is vasgestel. 272 00:11:08,840 --> 00:11:10,670 Maar laat my dit doen. 273 00:11:10,670 --> 00:11:14,570 Daar het ons a.out op die linker kant is daar. 274 00:11:14,570 --> 00:11:17,360 So ons het a.out uit te voer in plaas van buggy1. 275 00:11:17,360 --> 00:11:19,140 >> So laat ek gaan voort en doen dit. 276 00:11:19,140 --> 00:11:22,840 / A.out, Enter. 277 00:11:22,840 --> 00:11:26,160 En ek glo nie doen wat? 278 00:11:26,160 --> 00:11:26,620 Gehoor: Stoor. 279 00:11:26,620 --> 00:11:27,390 David J. Malan: Hou my lêer. 280 00:11:27,390 --> 00:11:31,520 Sodat dit maklik opgelos deur slaan Control S, of gaan na 281 00:11:31,520 --> 00:11:33,450 File, Save, soos in die meeste programme. 282 00:11:33,450 --> 00:11:36,360 Laat my gaan hier duidelik die skerm, loop dit weer. 283 00:11:36,360 --> 00:11:37,960 En daar is nog 'n fout. 284 00:11:37,960 --> 00:11:41,618 So, wat gaan - 285 00:11:41,618 --> 00:11:42,980 Gehoor: Jy het nie stel. 286 00:11:42,980 --> 00:11:44,040 David J. Malan: Ag, goed. 287 00:11:44,040 --> 00:11:45,010 Ek het dit nie stel nie. 288 00:11:45,010 --> 00:11:47,250 Soos 'n idioot, ek is op soek na die kode om te sien wat is verkeerd. 289 00:11:47,250 --> 00:11:51,275 So kletteren buggy1.c, nou a.out. 290 00:11:51,275 --> 00:11:52,640 En Sjoe, gered. 291 00:11:52,640 --> 00:11:55,090 >> Sodat dit lyk 'n bietjie lelik, want daar is geen nuwe lyn 292 00:11:55,090 --> 00:11:55,970 op enige plek in die program. 293 00:11:55,970 --> 00:11:57,390 Maar weereens, dit is net 'n estetiese detail. 294 00:11:57,390 --> 00:11:59,430 En ten minste as ons tel diegene wat nie, moet ons 295 00:11:59,430 --> 00:12:01,160 kyk nou 10 sulke sterre. 296 00:12:01,160 --> 00:12:03,260 Wel, wat oor hierdie tweede opwarmwedstryd voorbeeld? 297 00:12:03,260 --> 00:12:07,750 So in buggy2, ek beweer dat hierdie weergawe ook, sal druk 298 00:12:07,750 --> 00:12:10,110 10 sterre, een per reël. 299 00:12:10,110 --> 00:12:12,340 So hierdie tyd, ek het 'n newline karakter, net om te 300 00:12:12,340 --> 00:12:13,520 dinge 'n bietjie mooier. 301 00:12:13,520 --> 00:12:15,410 Maar in plaas daarvan wat ek kry is hierdie. 302 00:12:15,410 --> 00:12:19,590 So laat my doen kletteren buggy2.c, Enter. 303 00:12:19,590 --> 00:12:21,790 Nou is dit weer genoem a.out. 304 00:12:21,790 --> 00:12:23,130 Enter. 305 00:12:23,130 --> 00:12:26,900 Ek sien net 'n nuwe lyn, net die laaste nuwe lyn wat 306 00:12:26,900 --> 00:12:29,370 beweeg my prompt na die volgende lyn. 307 00:12:29,370 --> 00:12:32,660 Maar tog ek is druk *, dan 'n nuwe lyn, 308 00:12:32,660 --> 00:12:33,990 *, Dan 'n nuwe reël. 309 00:12:33,990 --> 00:12:35,490 Maar wat is die fout hier? 310 00:12:35,490 --> 00:12:35,974 Ja? 311 00:12:35,974 --> 00:12:37,224 Gehoor: [onhoorbaar]. 312 00:12:39,850 --> 00:12:40,470 >> David J. Malan: Presies. 313 00:12:40,470 --> 00:12:44,110 So in teenstelling met sommige tale soos Python, waar inkeping 314 00:12:44,110 --> 00:12:46,030 funksionele betekenis, in 'n 315 00:12:46,030 --> 00:12:47,150 taal soos C - 316 00:12:47,150 --> 00:12:49,140 soos ons sal sien, PHP, JavaScript - 317 00:12:49,140 --> 00:12:51,940 die inkeping is regtig net vir die mens se voordeel. 318 00:12:51,940 --> 00:12:55,690 En die feit dat ek lyn 16 en 17 het ingekeep lyk groot, 319 00:12:55,690 --> 00:12:57,530 maar dit het geen funksionele betekenis hier. 320 00:12:57,530 --> 00:13:00,700 As ek wil beide lyne uit te voer as deel van die 321 00:13:00,700 --> 00:13:05,140 lus, dan moet ek sluit hulle in krullerige draadjies deur dit te doen. 322 00:13:05,140 --> 00:13:08,540 Jy kan slegs die hoek sny en laat die kode tussen krulhakies indien 323 00:13:08,540 --> 00:13:10,036 wat is die geval? 324 00:13:10,036 --> 00:13:10,410 Gehoor: Net een lyn. 325 00:13:10,410 --> 00:13:11,130 David J. Malan: Slegs een lyn. 326 00:13:11,130 --> 00:13:15,280 So dit is net 'n soort van 'n lekker soort van sintaksis detail sodat 327 00:13:15,280 --> 00:13:17,900 jy mors nie tyd met die skryf van drie lyne, waarvan twee 328 00:13:17,900 --> 00:13:20,040 krullerige draadjies, net 'n enkele lyn van kode te skryf. 329 00:13:20,040 --> 00:13:21,650 Maar as jy twee of meer lyne, het ons 330 00:13:21,650 --> 00:13:22,860 inderdaad nodig het om dit te doen. 331 00:13:22,860 --> 00:13:24,210 >> So nou, laat red my. 332 00:13:24,210 --> 00:13:27,140 Laat my voort te gaan en weer uit te voer kletteren. 333 00:13:27,140 --> 00:13:31,375 Laat my dan heruitzend a.out, en nou kry ek hulle een per reël. 334 00:13:31,375 --> 00:13:33,670 Nou, a.out is weer soort van 'n stom naam vir 'n program. 335 00:13:33,670 --> 00:13:37,500 Hoe kan ek jou vertel kletteren om werklik te gee my 'n lêer naam 336 00:13:37,500 --> 00:13:39,820 dit is meer gebruiker-vriendelik, soos buggy2 self? 337 00:13:43,200 --> 00:13:44,466 'N bietjie meer duidelik? 338 00:13:44,466 --> 00:13:45,220 Gehoor: [onhoorbaar]. 339 00:13:45,220 --> 00:13:47,810 David J. Malan: OK, so ek kan eintlik neem die baie 340 00:13:47,810 --> 00:13:51,000 gebruiker-vriendelike kortpad en net skryf buggy2. 341 00:13:51,000 --> 00:13:53,840 Ek spesifiseer nie c in hierdie geval, en druk Enter. 342 00:13:53,840 --> 00:13:58,530 En wat maak nie, is dit stel buggy2.c vir my deur 343 00:13:58,530 --> 00:14:00,260 vra kletteren om dit te doen. 344 00:14:00,260 --> 00:14:05,100 Spesifiek, dit noem klang, dit loop kletteren met behulp manier om meer 345 00:14:05,100 --> 00:14:08,540 command-line argumente of skakelaars as wat ek werklik nodig het. 346 00:14:08,540 --> 00:14:11,270 In die tyd, sal ons kom terug na wat almal van die verskillende 347 00:14:11,270 --> 00:14:13,810 kriptiese koppelteken uitdrukkings beteken. 348 00:14:13,810 --> 00:14:16,910 Maar vir nou, dit is net spaar my die moeite 349 00:14:16,910 --> 00:14:19,600 om te onthou en uit te tik al daardie 350 00:14:19,600 --> 00:14:21,150 verskeie koppelteken uitdrukkings. 351 00:14:21,150 --> 00:14:23,240 En die onderstebo dit is uiteindelik 352 00:14:23,240 --> 00:14:25,900 dat ek nou het buggy2. 353 00:14:25,900 --> 00:14:27,480 As ek wil om dit te doen met die hand, alhoewel, ek 354 00:14:27,480 --> 00:14:28,775 plaas kan doen - 355 00:14:28,775 --> 00:14:34,110 klang-e-o buggy2 en dan buggy2.c. 356 00:14:34,110 --> 00:14:37,980 En dit sal insgelyks gee my 'n lêer genaamd buggy2. 357 00:14:37,980 --> 00:14:39,710 >> Dus, in kort, klang is die vertaler. 358 00:14:39,710 --> 00:14:43,080 Maak, is net 'n gebruiker-vriendelike instrument wat ons sal gebruik word om meer 359 00:14:43,080 --> 00:14:44,420 en nog baie meer, want dit begin net om te 360 00:14:44,420 --> 00:14:47,330 vereenvoudig dinge vir ons. 361 00:14:47,330 --> 00:14:49,430 En ons terugkeer 0, laastens. 362 00:14:49,430 --> 00:14:51,890 Vir nou, net omdat, maar ons sal begin terg daardie deel 363 00:14:51,890 --> 00:14:52,930 vandag en op Woensdag. 364 00:14:52,930 --> 00:14:55,560 Enige vrae oor enige van hierdie? 365 00:14:55,560 --> 00:14:56,450 Ja? 366 00:14:56,450 --> 00:14:58,234 Gehoor: [onhoorbaar] 367 00:14:58,234 --> 00:15:00,020 ls in aanhalings daar? 368 00:15:00,020 --> 00:15:01,710 David J. Malan: OK. 369 00:15:01,710 --> 00:15:05,880 Toe ek getikte ls in aanhalingstekens, wat my besig met 'n magie 370 00:15:05,880 --> 00:15:07,160 agter die skerms om 'n fout reg te stel. 371 00:15:07,160 --> 00:15:09,370 Ek het vergeet, soos ons het vertel baie van julle op die 372 00:15:09,370 --> 00:15:11,600 discussion forums, om dit te doen - 373 00:15:11,600 --> 00:15:17,220 sal ons dit nou doen - sudo yum-y update appliance50. 374 00:15:17,220 --> 00:15:19,790 Oeps, dat dit is reg gespel. 375 00:15:19,790 --> 00:15:23,240 So is die toestel is soos 'n bedryfstelsel. 376 00:15:23,240 --> 00:15:25,650 Dit is om hierdie bedryfstelsel genoem Fedora. 377 00:15:25,650 --> 00:15:27,450 En nou, ek het as gevolg van my stadige Internet verbinding 378 00:15:27,450 --> 00:15:28,260 regtig afgespuit. 379 00:15:28,260 --> 00:15:31,620 So loop sudo yum update, as ons sê om te doen in die 380 00:15:31,620 --> 00:15:34,080 probleem stel, is in wese soos hardloop outomatiese updates 381 00:15:34,080 --> 00:15:35,420 in Mac OS of Windows. 382 00:15:35,420 --> 00:15:37,280 En die rede vir die uitvoer van hierdie heel aan die begin van die 383 00:15:37,280 --> 00:15:39,640 gestelde probleem is omdat wanneer ons die toestel geskep het, het ek 384 00:15:39,640 --> 00:15:42,480 deurmekaar, en Ek het per ongeluk al jou programme kyk 385 00:15:42,480 --> 00:15:45,210 swart op 'n swart skerm, wat is die rede waarom jy dit nie sien 386 00:15:45,210 --> 00:15:45,860 by verstek. 387 00:15:45,860 --> 00:15:48,020 Maar die nuutste weergawe van die toestel is vasgestel. 388 00:15:48,020 --> 00:15:50,500 En Ek sal regmaak wat tydens pouse wanneer ek het nie Internet 389 00:15:50,500 --> 00:15:51,280 konnektiwiteit. 390 00:15:51,280 --> 00:15:54,630 >> So het die aanhalings net verberg my fout, baie strategies, 391 00:15:54,630 --> 00:15:55,730 glo. 392 00:15:55,730 --> 00:15:56,980 Ander vrae? 393 00:15:59,750 --> 00:16:00,668 Ja? 394 00:16:00,668 --> 00:16:02,012 Gehoor: Waar maak kom uit? 395 00:16:02,012 --> 00:16:03,810 [Onhoorbaar] 396 00:16:03,810 --> 00:16:04,280 David J. Malan: Goeie vraag. 397 00:16:04,280 --> 00:16:05,460 Waar maak vandaan? 398 00:16:05,460 --> 00:16:09,390 Dit is 'n Linux program wat vir baie jare bestaan ​​het, 'n lang 399 00:16:09,390 --> 00:16:10,570 voor CS50. 400 00:16:10,570 --> 00:16:12,930 En dit kom met 'n bedryfstelsel soos Fedora. 401 00:16:12,930 --> 00:16:14,830 Dit kom nie van die CS50 biblioteek. 402 00:16:14,830 --> 00:16:17,560 Trouens, die enigste dinge wat kom uit die CS50 biblioteek 403 00:16:17,560 --> 00:16:20,470 so ver, dat ons gesien het, is GetString, getint, almal van 404 00:16:20,470 --> 00:16:25,550 diegene Kry funksies, en die woord string, en tot 'n 405 00:16:25,550 --> 00:16:26,575 mate die woord Bool. 406 00:16:26,575 --> 00:16:29,180 Maar ons sal uitmekaar terg wanneer ons duik in die CS50 407 00:16:29,180 --> 00:16:30,580 apparaat self. 408 00:16:30,580 --> 00:16:32,820 >> So ja, nog 'n vraag hier. 409 00:16:32,820 --> 00:16:36,636 Gehoor: Wanneer jy sê maak en dan buggy, hoe die 410 00:16:36,636 --> 00:16:39,980 rekenaar weet [onhoorbaar]? 411 00:16:39,980 --> 00:16:40,520 David J. Malan: Goeie vraag. 412 00:16:40,520 --> 00:16:43,830 So wanneer jy net loop buggy1 of buggy2, hoe 413 00:16:43,830 --> 00:16:45,220 maak ken? 414 00:16:45,220 --> 00:16:49,900 Dus, by verstek, as jy tik maak buggy1, kyk vir 'n 415 00:16:49,900 --> 00:16:52,330 lêer genaamd buggy1.c. 416 00:16:52,330 --> 00:16:55,570 En dan is dit voer die toepaslike kletteren opdragte, 417 00:16:55,570 --> 00:17:00,380 die standaard-uitset lêer genaamd a.out daardeur oorheersende. 418 00:17:00,380 --> 00:17:03,670 In werklikheid, as ons kyk na wat maak, wat - 419 00:17:03,670 --> 00:17:04,839 laat se gestop. 420 00:17:04,839 --> 00:17:09,530 As ons kyk na wat maak was eintlik doen, maak buggy2, 421 00:17:09,530 --> 00:17:10,470 dit is reeds op datum is. 422 00:17:10,470 --> 00:17:13,020 So laat my die rm instruksies verwyder, die 423 00:17:13,020 --> 00:17:14,319 program wat ek geskryf het voor. 424 00:17:14,319 --> 00:17:17,319 Tik Y-E-S om te bevestig dat ek wil om dit te verwyder. 425 00:17:17,319 --> 00:17:20,480 As ek nou doen, let op dat in hierdie baie lang lyn, 426 00:17:20,480 --> 00:17:22,980 daar is hierdie laaste ding wat hier-o buggy2. 427 00:17:22,980 --> 00:17:26,959 Maak almal doen is verby daardie argument, om so te praat, om 428 00:17:26,959 --> 00:17:29,665 Klang, sodat Ek het nie om dit self te tik. 429 00:17:29,665 --> 00:17:32,660 >> Alle reg, sodat 'n vinnige paar van administratiewe 430 00:17:32,660 --> 00:17:33,470 aankondigings. 431 00:17:33,470 --> 00:17:36,940 So vir afdelings, wat amptelik begin eerskomende 432 00:17:36,940 --> 00:17:38,970 Sondag, jy sal altyd wil bring, indien 433 00:17:38,970 --> 00:17:40,120 jy het een, 'n skootrekenaar. 434 00:17:40,120 --> 00:17:42,570 As jy nie 'n laptop het nie, doen bereik uit na my deur 435 00:17:42,570 --> 00:17:43,580 laat my 'n e-pos. 436 00:17:43,580 --> 00:17:44,810 En ons sal uitvind 'n workflow. 437 00:17:44,810 --> 00:17:47,100 Wat algemeen vind jy in die artikel is dat hulle deel 438 00:17:47,100 --> 00:17:48,770 konseptuele, hands-on. 439 00:17:48,770 --> 00:17:52,190 Ons sal spesifiek gebruik om die afdeling van die vrae, wat deel uitmaak van 440 00:17:52,190 --> 00:17:54,110 die week se probleem stel, om te loop deur 'n paar van die 441 00:17:54,110 --> 00:17:55,820 konseptuele materiaal van die lesing. 442 00:17:55,820 --> 00:17:57,480 En dit is al in die huidige probleem stel. 443 00:17:57,480 --> 00:18:00,010 En ons sal ook duik in 'n paar praktiese aktiwiteite, soms 444 00:18:00,010 --> 00:18:02,190 wat vereis word, ingedien word, soms 445 00:18:02,190 --> 00:18:02,830 wat nie. 446 00:18:02,830 --> 00:18:04,630 Byvoorbeeld, hierdie eerste week, hulle bedoel net as 'n 447 00:18:04,630 --> 00:18:05,780 warm-up oefening. 448 00:18:05,780 --> 00:18:07,800 En jy sal vind dat die probleme werklik is net dat. 449 00:18:07,800 --> 00:18:10,220 Hulle is bedoel om te wees redelik klein, maar nie noodwendig 450 00:18:10,220 --> 00:18:13,100 triviale programme te kan skryf, wat nie noodwendig 451 00:18:13,100 --> 00:18:16,230 opwindend in en van die self, maar is goeie geleenthede om 452 00:18:16,230 --> 00:18:19,620 oefen met sintaksis, met nuwe funksies, in die gemak van 'n 453 00:18:19,620 --> 00:18:21,900 artikel waar jy 'n paar van jou klasmaats aanbied as 454 00:18:21,900 --> 00:18:22,870 sowel as jou TF. 455 00:18:22,870 --> 00:18:26,210 >> En wat sal ons doen met verloop van tyd is 'n hulpmiddel genaamd CS50 Spaces, 456 00:18:26,210 --> 00:18:28,940 waardeur in plaas van net die gebruik van die CS50 Appliance, sal jy 457 00:18:28,940 --> 00:18:32,450 plaas gaan na 'n web bladsy in 'n browser, waar jy sal in staat wees om 458 00:18:32,450 --> 00:18:35,610 kode in 'n browser window te skryf tydens die artikel. 459 00:18:35,610 --> 00:18:38,240 En dan as jy kies in, jou onderrig mede kan dan wys 460 00:18:38,240 --> 00:18:40,980 wat dit ookal is wat jy op jou skerm te tik in jou 'browser' 461 00:18:40,980 --> 00:18:43,930 venster aan die voorkant van die klas, of anoniem of 462 00:18:43,930 --> 00:18:47,250 openbaar, sodat hy of sy kan dan loop deur met 463 00:18:47,250 --> 00:18:50,080 jou klasmaats wat jy goed gedoen het, wat jy nie goed doen. 464 00:18:50,080 --> 00:18:52,750 En weer, gerus al hierdie dinge kan mooi anoniem word. 465 00:18:52,750 --> 00:18:54,410 Maar dit sal 'n mooi geleentheid wees vir baie meer 466 00:18:54,410 --> 00:18:56,810 interaktiwiteit as iets soos lesing laat. 467 00:18:56,810 --> 00:18:58,910 >> In die tussentyd, sal ons hierdie dinge genoem super 468 00:18:58,910 --> 00:19:01,610 afdelings, wat is opsioneel, maar is oop vir almal in 469 00:19:01,610 --> 00:19:04,030 die klas, sodat jy kan dit doen meer gesamentlik vir 470 00:19:04,030 --> 00:19:05,190 probleem stel. 471 00:19:05,190 --> 00:19:06,010 Hier is die skedule. 472 00:19:06,010 --> 00:19:08,870 Dit word ook geplaas op die tuisblad by cs50.net. 473 00:19:08,870 --> 00:19:10,850 Let daarop dat daar sal 'n hacker-spesifieke 474 00:19:10,850 --> 00:19:12,430 een môre middag. 475 00:19:12,430 --> 00:19:15,460 En ons sal een vandag en een môre film en plaas daardie 476 00:19:15,460 --> 00:19:16,720 aanlyn binne 24 uur. 477 00:19:16,720 --> 00:19:19,370 So as jy nie kan enige van hierdie tye maak, nie te bekommer nie. 478 00:19:19,370 --> 00:19:22,720 En weer, die skedule is online now by cs50.net. 479 00:19:22,720 --> 00:19:25,350 >> In terme van seksie self, moet jy gekry het 'n 480 00:19:25,350 --> 00:19:28,520 e-pos opdrag om te gaan na die kursus se tuisblad te vind 481 00:19:28,520 --> 00:19:29,610 uit jou artikel. 482 00:19:29,610 --> 00:19:32,890 As die lewe het verander en wat jy nodig het om jou artikel te verander, 483 00:19:32,890 --> 00:19:33,560 nie 'n probleem nie. 484 00:19:33,560 --> 00:19:37,900 Gaan terug na dieselfde adres, cs50.net/section, enkelvoud, 485 00:19:37,900 --> 00:19:40,090 en jy sal die soortgelyke vorm invul, sodat jy kan 486 00:19:40,090 --> 00:19:41,260 dan gee ons jou voorkeure. 487 00:19:41,260 --> 00:19:43,360 En ons sal opvolg week se einde as wat ons kan 488 00:19:43,360 --> 00:19:44,240 akkommodeer. 489 00:19:44,240 --> 00:19:49,530 Verlede week, onthou dat ons voorgestel met behulp van CS50 Bespreek, 490 00:19:49,530 --> 00:19:51,370 die kursus se bespreking instrument, in die lesing. 491 00:19:51,370 --> 00:19:53,680 So ons het 40 vrae wat gevra word en 492 00:19:53,680 --> 00:19:54,720 beantwoord tydens die lesing. 493 00:19:54,720 --> 00:19:56,280 So was dit om goed te werk, so ons sal voortgaan 494 00:19:56,280 --> 00:19:57,180 probeer om dit te doen. 495 00:19:57,180 --> 00:19:59,600 Indien, tydens die lesing, het jy nie net gemaklik voel verhoging 496 00:19:59,600 --> 00:20:00,780 jou hand, nie 'n probleem nie. 497 00:20:00,780 --> 00:20:04,640 Gaan te cs50.net/discuss, daar te plaas, en een van ons onderrig 498 00:20:04,640 --> 00:20:07,270 genote sal óf beantwoord dit elektronies of maak hul 499 00:20:07,270 --> 00:20:10,620 hand namens u anoniem te vra, afhangende 500 00:20:10,620 --> 00:20:12,470 op die aard van die vraag. 501 00:20:12,470 --> 00:20:15,000 En in terme van terugvoer, sal oor die algemeen psets 502 00:20:15,000 --> 00:20:16,760 teruggestuur word binne 'n week. 503 00:20:16,760 --> 00:20:19,080 Want dit neem 'n kort rukkie om vir artikels te bereik 504 00:20:19,080 --> 00:20:22,430 ewewig, sal die eerste pset, 0 en 1, 'n bietjie 505 00:20:22,430 --> 00:20:24,130 vertraag as dinge gaan sit. 506 00:20:24,130 --> 00:20:27,130 Maar bly ingeskakel vir die wat in die komende weke. 507 00:20:27,130 --> 00:20:29,750 >> Alles reg, so laat my op my ernstige 508 00:20:29,750 --> 00:20:31,040 stem vir net 'n oomblik. 509 00:20:31,040 --> 00:20:32,690 So dit is eintlik 'n interessante klimaat te wees 510 00:20:32,690 --> 00:20:35,210 met hierdie bespreking, wat met al die ander dinge 511 00:20:35,210 --> 00:20:37,310 op kampus wat daarmee verband hou. 512 00:20:37,310 --> 00:20:40,220 Maar CS50 het beslis het sy geskiedenis van hierdie besondere 513 00:20:40,220 --> 00:20:43,360 onderwerp, in soveel soos elke jaar, hierdie kursus, vir baie 514 00:20:43,360 --> 00:20:46,910 jaar, Ad-Boards ongeveer 3% van die klas. 515 00:20:46,910 --> 00:20:51,620 Die mees onlangse jaar, 2011, CS50 Ad-aan boord van 35 studente. 516 00:20:51,620 --> 00:20:54,120 Dit is nie, dink ek, weens n gebrek aan duidelikheid. 517 00:20:54,120 --> 00:20:56,760 Besef dat in die loop se sillabus, daar is 'n bladsy van 518 00:20:56,760 --> 00:20:59,020 verklaring te verduidelik waar die lyne is. 519 00:20:59,020 --> 00:21:01,350 Dieselfde verklaring word herhaal op elkeen van die 520 00:21:01,350 --> 00:21:03,070 probleem sit op bladsy een. 521 00:21:03,070 --> 00:21:05,760 >> So ek noem dit vandag regtig net te maak 522 00:21:05,760 --> 00:21:07,030 mense bewus van hierdie. 523 00:21:07,030 --> 00:21:08,080 En ons het probeer om verskillende dinge. 524 00:21:08,080 --> 00:21:10,630 En wat ek gedink het ons vandag sou doen is net 'n oomblik te 525 00:21:10,630 --> 00:21:13,830 eintlik kyk na sommige van die verlede gevalle wat gekom het. 526 00:21:13,830 --> 00:21:16,160 Eerder as om dit as vuil klein geheime, eintlik 527 00:21:16,160 --> 00:21:19,170 wys wat die studente gedoen het en hoe ons bespeur 528 00:21:19,170 --> 00:21:21,630 en dit regtig wat die oorkoepelende motivering is vir 529 00:21:21,630 --> 00:21:23,950 selfs met hierdie gesprek. 530 00:21:23,950 --> 00:21:27,060 Dus met wat gesê het, die lyn is in wese - 531 00:21:27,060 --> 00:21:29,200 volgens die sillabus, jy welkom, jy word aangemoedig om, na 532 00:21:29,200 --> 00:21:30,210 praat met klasmaats. 533 00:21:30,210 --> 00:21:31,910 Dit is die hele doel van hierdie gesamentlike 534 00:21:31,910 --> 00:21:34,470 kantoorure in Annenberg en mense aangemoedig om vir die 535 00:21:34,470 --> 00:21:35,755 finale projek saam te werk. 536 00:21:35,755 --> 00:21:38,590 Maar die lyn word getrek wanneer dit tyd is om werklik te skryf 537 00:21:38,590 --> 00:21:39,790 jou finale oplossing. 538 00:21:39,790 --> 00:21:42,590 Praat in Afrikaans, heeltemal fyn, praat in 'n pseudo-kode, 539 00:21:42,590 --> 00:21:43,400 heeltemal fyn. 540 00:21:43,400 --> 00:21:46,340 E-pos 'n klasmaat jou pset, laat hulle kyk oor 541 00:21:46,340 --> 00:21:48,610 die skerm as die hande bly tik, 542 00:21:48,610 --> 00:21:50,110 oor die lyn as goed. 543 00:21:50,110 --> 00:21:52,250 Moenie kyk na die leerplan van die betrokke lyne. 544 00:21:52,250 --> 00:21:55,850 >> Maar net 'n beeld van hoe dit is ongelukkig 'n te verf 545 00:21:55,850 --> 00:21:58,370 werklikheid, besef dat daar websites daar buite wat 546 00:21:58,370 --> 00:22:01,490 oplossings van hierdie klas en baie ander klasse. 547 00:22:01,490 --> 00:22:04,940 Die feit dat jy of sowat 3% van julle weet dat dit bestaan 548 00:22:04,940 --> 00:22:07,240 beteken dat ons weet dat dit bestaan. 549 00:22:07,240 --> 00:22:09,340 Die feit dat daar is webwerwe soos hierdie waar jy 550 00:22:09,340 --> 00:22:11,540 iemand kan betaal om werklik te doen om jou probleem stelle - dit was 551 00:22:11,540 --> 00:22:13,450 'n werklike geval wat opgekom het om verlede jaar. 552 00:22:13,450 --> 00:22:15,790 Dit is 'n webwerf met die naam odesk.com. 553 00:22:15,790 --> 00:22:20,090 En Tim was die naam van die persoon wat plaas op 554 00:22:20,090 --> 00:22:24,580 hierdie webwerf en vra iemand sy pset 7 te doen in 555 00:22:24,580 --> 00:22:25,570 hierdie spesifieke geval. 556 00:22:25,570 --> 00:22:28,350 Wel, odesk.com is baie Google-staat, en ons ook 557 00:22:28,350 --> 00:22:30,310 baie goed by Googlen. 558 00:22:30,310 --> 00:22:32,360 Ook hier is daar sites - en hierdie een is nogal 559 00:22:32,360 --> 00:22:34,234 gruwelike, eerlik. 560 00:22:34,234 --> 00:22:38,050 [Gelag] 561 00:22:38,050 --> 00:22:39,610 David J. Malan: Die snaakse ding oor hierdie site is indien 562 00:22:39,610 --> 00:22:41,970 jy lees die About page, hulle praat oor hul korporatiewe 563 00:22:41,970 --> 00:22:44,390 kultuur en hoe die kliënt diens is hul nommer een 564 00:22:44,390 --> 00:22:46,190 prioriteit, om seker te maak dat u werkopdragte kry 565 00:22:46,190 --> 00:22:47,890 gedraai in op tyd. 566 00:22:47,890 --> 00:22:50,580 >> Maar in alle erns, weer, is die feit dat hierdie sites 567 00:22:50,580 --> 00:22:52,910 bestaan ​​nie, besef ons ook bewus van 568 00:22:52,910 --> 00:22:53,730 hierdie soort van webwerwe. 569 00:22:53,730 --> 00:22:55,890 En gee jou 'n gevoel van wat vorm dit in die algemeen 570 00:22:55,890 --> 00:22:58,570 neem, ons het oor die algemeen nie groot skandale waar mense 571 00:22:58,570 --> 00:23:01,080 saam te werk op 'n soort van 'n massiewe skaal nie, maar eerder 572 00:23:01,080 --> 00:23:04,540 dit is hierdie laataand-oomblikke van swakheid, waar jy so 573 00:23:04,540 --> 00:23:07,550 baie om te doen, dit is 4:00, is jy uitgeput is, en jy 574 00:23:07,550 --> 00:23:09,770 dink aan jouself, wel, laat my net neem 'n blik op my 575 00:23:09,770 --> 00:23:11,770 kamermaat se of my vriend se kode of iets dergeliks. 576 00:23:11,770 --> 00:23:14,800 En die manifestasies van hierdie ongelukkig betrek Student 577 00:23:14,800 --> 00:23:17,640 A indiening van iets soos hierdie en Studente B indiening 578 00:23:17,640 --> 00:23:20,370 iets soos hierdie, wat seker in 'n rekenaar 579 00:23:20,370 --> 00:23:23,830 wetenskap klas, is merkwaardig maklik vir rekenaar wetenskaplikes 580 00:23:23,830 --> 00:23:25,690 op te spoor met die sagteware. 581 00:23:25,690 --> 00:23:28,410 Dit is 'n algemene paradigma, waar jy het soort van 582 00:23:28,410 --> 00:23:31,010 werk saam met iemand, miskien praat in 583 00:23:31,010 --> 00:23:32,360 Engels, net mooi, pseudokode. 584 00:23:32,360 --> 00:23:35,080 Maar dan is dit die tyd kom om werklik te dien, en die psets 585 00:23:35,080 --> 00:23:37,910 kry net uitgeruil via e-pos of Dropbox of iets dergeliks. 586 00:23:37,910 --> 00:23:41,120 Maar in 'n poging om te maak dit minder duidelik dat dit is 587 00:23:41,120 --> 00:23:44,830 wat gebeur het, dan is dit wat voorgelê. 588 00:23:44,830 --> 00:23:47,880 Dit is ook nie reis goed-geskrewe stukke 589 00:23:47,880 --> 00:23:50,360 sagteware soos ons het om werklik te spoor 590 00:23:50,360 --> 00:23:51,280 hierdie soort van dinge. 591 00:23:51,280 --> 00:23:53,760 En inderdaad wat ons doen, is hardloop sagteware wat al vergelyk 592 00:23:53,760 --> 00:23:55,540 hierdie jaar se voorleggings teen al van verlede jaar se 593 00:23:55,540 --> 00:23:57,380 voorleggings, teen alles wat ons op die 594 00:23:57,380 --> 00:24:00,060 Internet, teen elke taak webwerf daar buite. 595 00:24:00,060 --> 00:24:01,710 Dit is alles baie outomatiese. 596 00:24:01,710 --> 00:24:05,665 En so sal ons doen dit regtig in groot billikheid aan die 97% wat 597 00:24:05,665 --> 00:24:07,760 is regtig besig om hulle esels af in hierdie en in ander 598 00:24:07,760 --> 00:24:11,530 klasse en om in al van daardie poging, sodat die werk 599 00:24:11,530 --> 00:24:13,030 hulle uiteindelik dien is hul eie. 600 00:24:13,030 --> 00:24:14,220 En ek kan gaan vir eeue. 601 00:24:14,220 --> 00:24:16,030 >> Dit is net 'n handjievol van verlede jaar se gevalle. 602 00:24:16,030 --> 00:24:19,350 'N Paar studente ingedien hierdie lêers identies vir pset 2, 603 00:24:19,350 --> 00:24:22,460 pset 3, pset 4, pset 5, pset 6, pset 9. 604 00:24:22,460 --> 00:24:26,360 In hierdie geval, dit was quiz 0 en in die afgelope jaar, waar twee 605 00:24:26,360 --> 00:24:29,570 studente ingedien identies hierdie sin onder baie 606 00:24:29,570 --> 00:24:32,210 ander, "Die versoek van die tipe" dot, dot, dot. 607 00:24:32,210 --> 00:24:34,530 Dus, selfs in 'n klas van 600 het ons ontdek hierdie 608 00:24:34,530 --> 00:24:36,310 is voorgelê op quizzes. 609 00:24:36,310 --> 00:24:39,080 Dus, in kort, dit - eerlik, haat ek met hierdie soort van 610 00:24:39,080 --> 00:24:41,300 gesprek - maar dit is regtig 'n doelbewuste poging 611 00:24:41,300 --> 00:24:43,540 hierdie jaar om te probeer om te ry af dat die getal. 612 00:24:43,540 --> 00:24:45,650 Want selfs al sê ons hierdie soort van dinge elke 613 00:24:45,650 --> 00:24:48,100 jaar, dink ek die werklikheid van woon op dit vir 'n paar 614 00:24:48,100 --> 00:24:50,800 nog sekondes as gewoonlik en eintlik net daarop te wys 615 00:24:50,800 --> 00:24:53,600 wat kan lyk, eh, nie so 'n big deal nie, ten minste 616 00:24:53,600 --> 00:24:56,390 dink terug aan hierdie spesifieke oomblik, beide in regverdigheid te 617 00:24:56,390 --> 00:25:00,100 jouself en aan jou klasmaats hier. 618 00:25:00,100 --> 00:25:02,480 So as jy ooit enige vrae het oor waar die lyn 619 00:25:02,480 --> 00:25:04,290 is, kan jy net uit te reik na my persoonlik. 620 00:25:04,290 --> 00:25:07,190 Maar die antwoord is altyd, heeltemal beklemtoon by die 621 00:25:07,190 --> 00:25:09,090 laaste minuut, kontant in 'n laat dag. 622 00:25:09,090 --> 00:25:11,080 Of indien dit is 'n kwessie van nie met enige laat dae, 623 00:25:11,080 --> 00:25:12,900 eerlik, e-pos my persoonlik. 624 00:25:12,900 --> 00:25:14,110 Ons sal wel iets uit. 625 00:25:14,110 --> 00:25:17,480 Asseblief, moenie jou tyd hier by Harvard in gevaar. 626 00:25:17,480 --> 00:25:18,570 >> Nou, ek dink ons ​​moet die gemoed te verlig, so ek 627 00:25:18,570 --> 00:25:20,264 hierdie as die volgende skyfie. 628 00:25:20,264 --> 00:25:22,770 [Gelag] 629 00:25:22,770 --> 00:25:23,630 David J. Malan: Hierdie webwerf was groot. 630 00:25:23,630 --> 00:25:24,820 Ek het eintlik 'n bietjie afgelei. 631 00:25:24,820 --> 00:25:26,330 Daar is hierdie een. 632 00:25:26,330 --> 00:25:29,590 En dan is hierdie een was amazing. 633 00:25:29,590 --> 00:25:35,190 Okay, so dink van daardie katjie laat in die nag by die maak van 634 00:25:35,190 --> 00:25:36,040 dié besluite hê. 635 00:25:36,040 --> 00:25:40,110 Alle reg, sodat terug na meer pret en minder ernstige dinge, soos 636 00:25:40,110 --> 00:25:40,780 voorwaardes. 637 00:25:40,780 --> 00:25:43,900 >> Alle reg, sodat ons kortliks gepraat oor hierdie. 638 00:25:43,900 --> 00:25:46,080 Dit is iets wat waarskynlik redelik vertroud van 639 00:25:46,080 --> 00:25:47,260 die wêreld van Scratch. 640 00:25:47,260 --> 00:25:49,860 En in die wêreld van Scratch, het ons hierdie behoefte soms 641 00:25:49,860 --> 00:25:51,110 gaan maak vurke in die pad. 642 00:25:51,110 --> 00:25:54,840 Doen dit of dat of hierdie ander ding hier. 643 00:25:54,840 --> 00:25:58,990 En wanneer ons wil om dit te doen, kan ons gebruik in C nou, dit as 644 00:25:58,990 --> 00:26:00,860 anders bou. 645 00:26:00,860 --> 00:26:06,420 En dan het ons hier Boolse uitdrukkings. 646 00:26:06,420 --> 00:26:09,260 Byvoorbeeld, Boolse uitdrukkings hier, ons kan of 647 00:26:09,260 --> 00:26:12,260 hulle saam, in die sin dat ons hierdie toestand of 648 00:26:12,260 --> 00:26:13,200 daardie toestand. 649 00:26:13,200 --> 00:26:15,100 Ons kan en hulle saam, in die sin dat ons wil 650 00:26:15,100 --> 00:26:17,710 Gaan hierdie toestand en dat die toestand. 651 00:26:17,710 --> 00:26:22,440 En hier het ons 'n verklaring van 'n skakelaar nou, wat is nie so 652 00:26:22,440 --> 00:26:26,040 soortgelyke sintakties daardie soorte van voorwaardes, maar dit 653 00:26:26,040 --> 00:26:30,160 stel ons in staat om die ekwivalent van as, anders as, anders as, anders om te doen 654 00:26:30,160 --> 00:26:34,990 indien, en dies meer deur eenvoudig deelinventaris hulle geval tot geval 655 00:26:34,990 --> 00:26:36,670 deur van geval tot geval. 656 00:26:36,670 --> 00:26:38,370 So ons het die laaste tyd. 657 00:26:38,370 --> 00:26:40,430 En dan het ons begin raak oor dinge soos loops. 658 00:26:40,430 --> 00:26:42,070 Ons het gesien een van hierdie net 'n oomblik gelede. 659 00:26:42,070 --> 00:26:44,180 Maar daar is hierdie ander herhaling konstrukte. 660 00:26:44,180 --> 00:26:46,370 >> Byvoorbeeld, hierdie een hier. 661 00:26:46,370 --> 00:26:50,140 Dus, terwyl (toestand), doen hierdie ding weer en weer. 662 00:26:50,140 --> 00:26:53,070 So in wese, wat blyk te wees verskil tussen hierdie 663 00:26:53,070 --> 00:26:55,760 lus en dit terwyl loop hier? 664 00:27:00,810 --> 00:27:05,045 Dit for-lus en die while lus. 665 00:27:05,045 --> 00:27:07,840 Ja? 666 00:27:07,840 --> 00:27:08,800 Wat is dit? 667 00:27:08,800 --> 00:27:10,050 Gehoor: [onhoorbaar]. 668 00:27:14,632 --> 00:27:15,120 David J. Malan: Goed. 669 00:27:15,120 --> 00:27:17,130 Dus, terwyl dit in die loop toestand, daar is duidelik 670 00:27:17,130 --> 00:27:17,940 meer sintaksis. 671 00:27:17,940 --> 00:27:20,560 Daar is hierdie inisialisering, daar is hierdie update. 672 00:27:20,560 --> 00:27:23,820 In 'n while lus, daar is net hierdie toestand. 673 00:27:23,820 --> 00:27:26,630 Dus blyk dit dat dit 'n bietjie vergeleke teenoor die 674 00:27:26,630 --> 00:27:28,770 lus, wat beteken dat as ons wil veranderlikes te hê en ons wil 675 00:27:28,770 --> 00:27:30,800 incrementation te hê, het ons eintlik moet 676 00:27:30,800 --> 00:27:32,500 hierdie ding doen onsself. 677 00:27:32,500 --> 00:27:34,420 >> So laat ek gaan voort en maak gedit. 678 00:27:34,420 --> 00:27:36,320 Laat my oor te skakel na die toestel. 679 00:27:36,320 --> 00:27:38,110 En laat ons net 'n vinnige klein voorbeeld wat 680 00:27:38,110 --> 00:27:40,550 onderskei een van dié van die ander. 681 00:27:40,550 --> 00:27:42,490 En in die agterkant van my gedagtes hier, moet ek sê een ding. 682 00:27:42,490 --> 00:27:44,120 Ek het spesifiek genoem die naam Tim. 683 00:27:44,120 --> 00:27:47,740 Tim was eintlik iemand wat 'n student probeer om te vind om te doen 684 00:27:47,740 --> 00:27:48,680 hulle huiswerk vir hulle. 685 00:27:48,680 --> 00:27:51,280 Ons het geen Tim in daardie spesifieke afdeling. 686 00:27:51,280 --> 00:27:53,690 So besef, sodat ek 'n student bekend gemaak, dit was nie 'n student. 687 00:27:53,690 --> 00:27:55,720 Dit was 'n random persoon op die Internet om dinge te doen 688 00:27:55,720 --> 00:27:57,180 deur proxy verlede jaar. 689 00:27:57,180 --> 00:27:58,670 So vind ons dat ook. 690 00:27:58,670 --> 00:28:00,630 So in hierdie geval hier, laat ek gaan voort en 691 00:28:00,630 --> 00:28:02,810 oop te maak 'n nuwe lêer. 692 00:28:02,810 --> 00:28:04,800 File, New. 693 00:28:04,800 --> 00:28:06,050 Dit gee my 'n blad hier. 694 00:28:06,050 --> 00:28:09,940 Laat my gaan voort en stoor dit as loop.c. 695 00:28:09,940 --> 00:28:11,810 Laat my gaan en klik op Save. 696 00:28:11,810 --> 00:28:15,340 En dan af hier, laat ons gaan voort en begin skryf 697 00:28:15,340 --> 00:28:16,605 # Include . 698 00:28:19,116 --> 00:28:20,520 Laat my zoom. 699 00:28:20,520 --> 00:28:23,410 Nou sal ons doen int main (void). 700 00:28:23,410 --> 00:28:30,020 Nou laat my gaan voort en doen vir (int i = 0; i < 701 00:28:30,020 --> 00:28:33,480 oh, 10; i + +). 702 00:28:33,480 --> 00:28:36,620 En nou is ek gaan om voort te gaan en doen die ster print dat ek 703 00:28:36,620 --> 00:28:37,890 het vroeër. 704 00:28:37,890 --> 00:28:39,390 En dan aan die einde van hierdie program, wat ons net gaan 705 00:28:39,390 --> 00:28:41,130 print 'n nuwe reël, net so dat my vinnige 706 00:28:41,130 --> 00:28:42,470 kyk nie na alle slordig. 707 00:28:42,470 --> 00:28:45,170 terugkeer 0. 708 00:28:45,170 --> 00:28:47,610 Lyk sintakties korrekte? 709 00:28:47,610 --> 00:28:48,040 So ver. 710 00:28:48,040 --> 00:28:48,560 So laat ons sien. 711 00:28:48,560 --> 00:28:51,290 >> So laat my uitzoomen, gaan in my terminale venster. 712 00:28:51,290 --> 00:28:54,570 En laat my voort te gaan en uit te voer lus, omdat Ek geroep 713 00:28:54,570 --> 00:28:55,690 ding loop.c. 714 00:28:55,690 --> 00:28:56,780 So maak lus. 715 00:28:56,780 --> 00:28:57,840 Lyk na OK te stel. 716 00:28:57,840 --> 00:29:00,210 Laat ek hardloop lus, en nou Enter. 717 00:29:00,210 --> 00:29:01,820 En dit blyk te gedruk het 10 sterre. 718 00:29:01,820 --> 00:29:03,780 So laat ons net skakel na 'n while lus en kyk wat 719 00:29:03,780 --> 00:29:05,220 vorme van kwessies wat ons reis oor. 720 00:29:05,220 --> 00:29:11,290 So in plaas van hierdie, laat my gaan hier in en sê terwyl ek 721 00:29:11,290 --> 00:29:12,760 minder as 10 - 722 00:29:12,760 --> 00:29:14,910 laat my ontslae te raak van die for-lus. 723 00:29:14,910 --> 00:29:17,170 OK, so ons het 'n paar van die probleme wat reeds. 724 00:29:17,170 --> 00:29:21,110 So die toestand is dieselfde, maar ek is natuurlik ontbreek die 725 00:29:21,110 --> 00:29:21,680 inisialisering. 726 00:29:21,680 --> 00:29:23,840 Ek mis die incrementation. 727 00:29:23,840 --> 00:29:28,020 So, wat moet die samesteller waarskynlik my vertel wanneer ek probeer om te 728 00:29:28,020 --> 00:29:29,170 Stel hierdie program? 729 00:29:29,170 --> 00:29:29,666 Ja? 730 00:29:29,666 --> 00:29:31,154 Gehoor: [onhoorbaar]. 731 00:29:31,154 --> 00:29:31,650 >> David J. Malan: Goed. 732 00:29:31,650 --> 00:29:34,180 So dit gaan om iets te sê soos onverklaarde - in hierdie 733 00:29:34,180 --> 00:29:35,280 geval, veranderlike i. 734 00:29:35,280 --> 00:29:37,980 En inderdaad, gebruik van onverklaarde identifiseerder i. 735 00:29:37,980 --> 00:29:40,960 En so het dit is in teenstelling met tale soos PHP en 736 00:29:40,960 --> 00:29:43,120 Python en Ruby, waarmee sommige van julle dalk vertroud wees, 737 00:29:43,120 --> 00:29:44,820 waar jy kan net soort van begin met behulp van veranderlikes 738 00:29:44,820 --> 00:29:47,420 willens en wetens en nie hoef te bekommer oor hulle te verklaar 739 00:29:47,420 --> 00:29:48,560 uitdruklik altyd. 740 00:29:48,560 --> 00:29:51,770 In C en in tale soos Java en C + +, jy moet 741 00:29:51,770 --> 00:29:53,020 super eksplisiete. 742 00:29:53,020 --> 00:29:55,760 En as jy wil 'n veranderlike genaamd i, moet jy my te vertel 743 00:29:55,760 --> 00:29:57,360 watter soort van 'n veranderlike is. 744 00:29:57,360 --> 00:29:59,360 So ons gaan te hê om dit soos volg te los. 745 00:29:59,360 --> 00:30:05,510 Ek gaan hê om te gaan hier en int i tik, daarom, 746 00:30:05,510 --> 00:30:07,860 Ek het 'n veranderlike genaamd i verklaar. 747 00:30:07,860 --> 00:30:09,180 Nou, ek het 'n stap oorgeslaan. 748 00:30:09,180 --> 00:30:11,340 Ek het natuurlik nie geïnisialiseer nie, maar laat ons sien of wat by 749 00:30:11,340 --> 00:30:13,650 minste fabrikate kletteren ophou kla. 750 00:30:13,650 --> 00:30:15,770 So laat my remake van hierdie program. 751 00:30:15,770 --> 00:30:16,770 >> Alle reg, nou is dit net kla 752 00:30:16,770 --> 00:30:17,870 vir 'n ander rede. 753 00:30:17,870 --> 00:30:21,130 "Veranderlike 'i' is geïnitialiseerd wanneer dit gebruik word hier." Alle reg, sodat 754 00:30:21,130 --> 00:30:22,340 wat is redelik eksplisiet. 755 00:30:22,340 --> 00:30:25,510 Geïnisialiseer beteken net dit gelyk is aan 'n waarde. 756 00:30:25,510 --> 00:30:30,820 En ons het dit nie gedoen nie, so laat ek probeer gelyk aan 0. 757 00:30:30,820 --> 00:30:35,030 Nou, laat ons probeer om dit weer en weer uit te voer kletteren. 758 00:30:35,030 --> 00:30:36,140 Saamgestel hierdie tyd. 759 00:30:36,140 --> 00:30:37,210 En ek is oor dit uit te voer. 760 00:30:37,210 --> 00:30:43,120 Maar groot ou oneindige lus, want ek gedoen het die 761 00:30:43,120 --> 00:30:45,530 inisialisering, het ek gedoen om die toestand, maar ek het nog nooit gedoen het 762 00:30:45,530 --> 00:30:47,030 enige soort van incrementation. 763 00:30:47,030 --> 00:30:48,780 So, hoe kan ek doen die incrementation? 764 00:30:48,780 --> 00:30:51,170 Wel, in 'n while lus, dit voel asof ek gaan te hê 765 00:30:51,170 --> 00:30:54,180 binnekant van die lus om dit te doen, want baie soos die eerste 766 00:30:54,180 --> 00:30:56,570 week se voorbeelde van doen herhaling konstrukte, soos met 767 00:30:56,570 --> 00:30:59,040 die sokkies en met die self-tel, wat ons moes doen 768 00:30:59,040 --> 00:31:01,550 iets heel aan die einde, soos om terug te gaan na die volgende lyn. 769 00:31:01,550 --> 00:31:05,040 Wat gebeur as ek gaan voort en doen dit i + + hier? 770 00:31:05,040 --> 00:31:06,030 Laat ons nie selfs stel. 771 00:31:06,030 --> 00:31:06,890 Catch me reeds. 772 00:31:06,890 --> 00:31:09,704 Wat is hier verkeerd? 773 00:31:09,704 --> 00:31:10,690 Gehoor: [onhoorbaar]. 774 00:31:10,690 --> 00:31:11,770 >> David J. Malan: So dit is beslis nie int. 775 00:31:11,770 --> 00:31:13,080 Dit is i. 776 00:31:13,080 --> 00:31:15,110 En die kode tussen krulhakies, soos vroeër, 777 00:31:15,110 --> 00:31:16,800 inkeping is nie genoeg nie. 778 00:31:16,800 --> 00:31:18,410 So nou kan ek bou dit. 779 00:31:18,410 --> 00:31:21,780 Dus, terwyl ek minder as 10 is, druk 'n ster, 780 00:31:21,780 --> 00:31:23,220 dan inkrementeer i. 781 00:31:23,220 --> 00:31:25,680 En die manier waarop 'n while lus werke is dat sodra jy druk op die 782 00:31:25,680 --> 00:31:29,630 onderkant van die lus, wat in hierdie geval lyk lyn 10, 783 00:31:29,630 --> 00:31:32,880 dit gaan om terug te gaan lyn 6, op watter punt die 784 00:31:32,880 --> 00:31:34,400 toestand sal weer nagegaan word. 785 00:31:34,400 --> 00:31:37,500 En as ek is nog steeds minder as 10, sal ons doen lyne 8 en 786 00:31:37,500 --> 00:31:41,250 dan 9, dan sal ons tref 10, en gaan terug na 6, weer en 787 00:31:41,250 --> 00:31:45,580 weer en weer en weer, so lank as wat ek is minder as 10. 788 00:31:45,580 --> 00:31:47,860 So laat ons weer uit te voer hier maak. 789 00:31:47,860 --> 00:31:48,940 >> Okay, het ons saamgestel okay. 790 00:31:48,940 --> 00:31:50,300 Laat my re-run loop. 791 00:31:50,300 --> 00:31:52,620 En nou lyk dit eintlik is om te werk. 792 00:31:52,620 --> 00:31:55,100 So plus punte en minuses hier? 793 00:31:55,100 --> 00:31:58,910 Wel, tot dusver is daar is eintlik nie 'n hele pcp - 794 00:31:58,910 --> 00:31:59,420 so cute. 795 00:31:59,420 --> 00:32:01,870 Alles reg, dit was 'n - ah, dit was 'n ongeluk. 796 00:32:01,870 --> 00:32:05,200 Alle reg, sodat laat ons gaan terug na die for-lus. 797 00:32:05,200 --> 00:32:07,530 So vir loops is mooi, want hulle is super eksplisiete. 798 00:32:07,530 --> 00:32:09,720 En selfs al is hulle 'n bietjie clunky om te skryf, is dit 799 00:32:09,720 --> 00:32:11,500 baie sterk en dit laat jou toe om te doen 800 00:32:11,500 --> 00:32:12,980 verskeie dinge op een slag. 801 00:32:12,980 --> 00:32:16,240 Terwyl loops lyk nie 'n groot bedrag van die waarde te hê net 802 00:32:16,240 --> 00:32:18,500 nie, want dit voel soos ons moet net meer werk te doen. 803 00:32:18,500 --> 00:32:20,670 Ons het die inisialisering hier te sit, die 804 00:32:20,670 --> 00:32:23,480 werk hier, en ons het om te onthou wat om te doen. 805 00:32:23,480 --> 00:32:26,260 So ons sal sien in die tyd dat terwyl loops eintlik leen 806 00:32:26,260 --> 00:32:29,380 hulself net verskillende kontekste, verskillende data 807 00:32:29,380 --> 00:32:33,900 strukture soos lyste en hash tabelle, dinge wat ons sal kry om 808 00:32:33,900 --> 00:32:34,970 die middel van die semester. 809 00:32:34,970 --> 00:32:37,900 Maar vir nou, weet dat daar is hierdie derde soort wat bekend staan ​​as 'n doen- 810 00:32:37,900 --> 00:32:38,480 while lus. 811 00:32:38,480 --> 00:32:39,540 En ons het gesien dat dit kortliks. 812 00:32:39,540 --> 00:32:41,830 En dit kan wees super nuttig pset 1. 813 00:32:41,830 --> 00:32:45,570 Enige tyd wat jy wil om iets te doen en dan kyk of 814 00:32:45,570 --> 00:32:48,940 die gebruiker saam, en as hulle gedoen het nie, doen dit weer, 'n doen- 815 00:32:48,940 --> 00:32:51,460 while lus leen hom tot daardie soort van logika. 816 00:32:51,460 --> 00:32:55,640 Want as die bestel van bo na onder hier suggereer, 817 00:32:55,640 --> 00:32:57,750 nie beteken letterlik doen. 818 00:32:57,750 --> 00:32:59,830 En doen dit weer en weer, wat kan dit wees? 819 00:32:59,830 --> 00:33:03,000 Miskien is dit beteken roep getint of GetString en dan 820 00:33:03,000 --> 00:33:05,830 die beheer van die waarde getint of GetString en dan skree 821 00:33:05,830 --> 00:33:08,260 aan die gebruiker as hulle nie saam deur hulle te vra 822 00:33:08,260 --> 00:33:10,100 weer en weer en weer. 823 00:33:10,100 --> 00:33:11,730 Waar jy wil iets om een ​​keer te doen, 824 00:33:11,730 --> 00:33:13,210 kontroleer dan 'n paar toestand. 825 00:33:13,210 --> 00:33:14,110 >> Kom ons probeer dit. 826 00:33:14,110 --> 00:33:17,130 Laat my eintlik verander nou na 'n do-while lus. 827 00:33:17,130 --> 00:33:18,830 En ek gaan om voort te gaan en die volgende te doen. 828 00:33:18,830 --> 00:33:21,830 So doen die volgende. 829 00:33:21,830 --> 00:33:26,870 Kom ons doen int i = getint (), maar laat ons eers vir die gebruiker 830 00:33:26,870 --> 00:33:27,410 wat om te doen nie. 831 00:33:27,410 --> 00:33:29,050 So 'n bietjie anders hierdie keer. 832 00:33:29,050 --> 00:33:31,270 "Gee my 'n int". 833 00:33:31,270 --> 00:33:32,910 So ek sal printf gebruik vir. 834 00:33:32,910 --> 00:33:35,740 En nou is ek gaan om af te gaan, en ek gaan om dit te doen 835 00:33:35,740 --> 00:33:41,520 terwyl ek besig is, laat ons sê, groter as - 836 00:33:41,520 --> 00:33:47,540 Kom ons kyk, ek is, laat ons sê, minder as 0, of ek is 837 00:33:47,540 --> 00:33:48,730 groter as 10. 838 00:33:48,730 --> 00:33:51,810 Met ander woorde, ek wil 'n getal van 1 tot 9, 839 00:33:51,810 --> 00:33:52,720 arbitrêr. 840 00:33:52,720 --> 00:33:55,290 So ek is met behulp van 'n gekombineerde Boole-uitdrukking hier om te 841 00:33:55,290 --> 00:33:59,930 maak seker dat ek is minder as 0 of groter as 10, 842 00:33:59,930 --> 00:34:02,530 geval sal ek ook hierdie lus hier weer doen. 843 00:34:02,530 --> 00:34:04,400 Dit weer doen, dit doen - 844 00:34:04,400 --> 00:34:08,480 terwyl ek minder as 0 of ek is groter as 10. 845 00:34:08,480 --> 00:34:11,440 >> So nou, laat ons gaan voort en doen dit wanneer ons dit gedoen het. 846 00:34:11,440 --> 00:34:13,270 Laat ons net 'n vinnige sanity check. 847 00:34:13,270 --> 00:34:18,929 printf ("Dankie, ek is% d", i). 848 00:34:18,929 --> 00:34:21,350 So hierdie eenvoudige program vra die gebruiker vir 'n int, 849 00:34:21,350 --> 00:34:24,000 maak seker dit is binne 'n paar reeks, 1 tot 9 ingesluit, 850 00:34:24,000 --> 00:34:26,280 en dan bedank die gebruiker deur hulle daaraan te herinner wat hulle net 851 00:34:26,280 --> 00:34:27,940 getik in, net soos 'n bietjie gesonde verstand tjek. 852 00:34:27,940 --> 00:34:30,659 Maar laat ons kyk of dit werk soos bedoel. 853 00:34:30,659 --> 00:34:34,533 Laat my gaan kop af hier en weer hardloop maak lus. 854 00:34:34,533 --> 00:34:35,350 Hmm. 855 00:34:35,350 --> 00:34:38,600 "Gebruik van onverklaarde identifiseerder 'i'". Dis vreemd. 856 00:34:38,600 --> 00:34:41,509 Ek het gedink ons ​​het besluit dat. 857 00:34:45,489 --> 00:34:47,560 Dieselfde simptoom maar verskillende kode. 858 00:34:47,560 --> 00:34:47,899 Ja? 859 00:34:47,899 --> 00:34:50,191 Publiek: [onhoorbaar] binne die twee, ons moet 860 00:34:50,191 --> 00:34:52,639 [Onhoorbaar]. 861 00:34:52,639 --> 00:34:53,260 >> David J. Malan: Presies. 862 00:34:53,260 --> 00:34:55,989 So dit lei eintlik ons ​​aan 'n onderwerp wat bekend staan ​​as die omvang. 863 00:34:55,989 --> 00:34:59,350 Dit blyk dat C weer, dit regtig neem jou letterlik. 864 00:34:59,350 --> 00:35:02,970 En as jy iets soos hierdie waar jy 'n int verklaar 865 00:35:02,970 --> 00:35:06,120 en dan wys dit 'n bietjie waarde, maar jy doen dat die binnekant van 'n 866 00:35:06,120 --> 00:35:09,840 paar van die kode tussen krulhakies, wat C nie, is dit aanvaar dat jy 867 00:35:09,840 --> 00:35:14,800 wil net daardie 32 bisse bekend as ek om te bestaan ​​binne die 868 00:35:14,800 --> 00:35:18,200 konteks van daardie kode tussen krulhakies, binne die konteks van lyne 869 00:35:18,200 --> 00:35:22,420 6 tot 9. So ek is verklaar, en dit is wat 'n 870 00:35:22,420 --> 00:35:26,530 waarde in reël 8, maar so gou as jy buite 871 00:35:26,530 --> 00:35:30,270 lyn 9 onder die krullerige brace, ek is nie meer in 872 00:35:30,270 --> 00:35:31,910 omvang, om so te praat. 873 00:35:31,910 --> 00:35:35,030 S-C-O-P-E. Dit is nie meer in die regte konteks. 874 00:35:35,030 --> 00:35:37,940 So nou is daar geen i, so dit is asof ons het nie eens 875 00:35:37,940 --> 00:35:38,770 verklaar dit glad nie. 876 00:35:38,770 --> 00:35:41,520 >> So, wat is 'n oplossing dan vir iets soos hierdie, indien die 877 00:35:41,520 --> 00:35:44,300 rede is dat ek verklaar word binne die kode tussen krulhakies, wat 878 00:35:44,300 --> 00:35:45,120 is blykbaar sleg? 879 00:35:45,120 --> 00:35:45,410 Hier? 880 00:35:45,410 --> 00:35:46,820 Gehoor: [onhoorbaar]. 881 00:35:46,820 --> 00:35:47,150 David J. Malan: Ja. 882 00:35:47,150 --> 00:35:48,710 Sodat ons kan inisialiseer buite. 883 00:35:48,710 --> 00:35:53,530 So laat ek gaan voort en verwyder die verklaring dele waardeur 884 00:35:53,530 --> 00:35:55,820 Ek spesifiseer die tipe, en laat my doen dit hier. 885 00:35:55,820 --> 00:36:00,220 So in reël 5, dit sê nou: "Gee my 'n int." Noem dit i. 886 00:36:00,220 --> 00:36:03,400 Kennisgewing in reël 9, Ek wil nie hê om dit te doen, want ek 887 00:36:03,400 --> 00:36:04,830 reeds die 32 stukkies. 888 00:36:04,830 --> 00:36:06,140 Ek wil nie die rekenaar om te vra vir 'n 889 00:36:06,140 --> 00:36:07,630 verskillende 32 stukkies. 890 00:36:07,630 --> 00:36:09,850 Ek wil daardie 32 bisse gebruik. 891 00:36:09,850 --> 00:36:13,190 En nou, want ek is in reël 5 verklaar, dit is nog steeds wettig 892 00:36:13,190 --> 00:36:16,550 om dit te gebruik in lyn 11 en lyn 12. 893 00:36:16,550 --> 00:36:19,310 >> So laat ek probeer om dit te hercompileren en sien 894 00:36:19,310 --> 00:36:20,490 indien kletteren stop skree. 895 00:36:20,490 --> 00:36:22,380 maak lus. 896 00:36:22,380 --> 00:36:25,470 So nou is dit "implisiete verklaring van die funksie 897 00:36:25,470 --> 00:36:29,880 'Getint "is ongeldig in C99" Wat is dit? 898 00:36:29,880 --> 00:36:30,400 Ja? 899 00:36:30,400 --> 00:36:32,330 Gehoor: [onhoorbaar]. 900 00:36:32,330 --> 00:36:32,690 David J. Malan: Ja. 901 00:36:32,690 --> 00:36:35,520 So nou dat ek eintlik is die gebruik van getint, dit is nie iets 902 00:36:35,520 --> 00:36:38,190 wat kom net met C. Dit kom van CS50. 903 00:36:38,190 --> 00:36:39,890 Daarom moet ons dit hier. 904 00:36:39,890 --> 00:36:41,450 En laat my terug gaan na die stiptelike down 905 00:36:41,450 --> 00:36:43,500 hier en weer uit te voer. 906 00:36:43,500 --> 00:36:44,160 Okay, uiteindelik. 907 00:36:44,160 --> 00:36:46,270 Nou het ons besluit dat en die ander fout. 908 00:36:46,270 --> 00:36:48,930 Laat my tog hardloop lus en kyk wat gebeur. 909 00:36:48,930 --> 00:36:51,740 "Gee my 'n int." Ek gee dit 11. 910 00:36:51,740 --> 00:36:53,100 Ek sal dit gee -1. 911 00:36:53,100 --> 00:36:54,470 Ek sal dit gee cat. 912 00:36:54,470 --> 00:36:56,080 Ek sal dit gee 5. 913 00:36:56,080 --> 00:36:57,450 En nou is dit werk. 914 00:36:57,450 --> 00:36:59,410 Maar die vinnige verander hier vir 'n rede. 915 00:36:59,410 --> 00:37:02,800 Hoekom het dit sê weer probeer een van hierdie tye, maar gee my 'n 916 00:37:02,800 --> 00:37:03,920 int die ander drie keer? 917 00:37:03,920 --> 00:37:05,500 Hoekom is dit gedrag anders? 918 00:37:05,500 --> 00:37:06,980 Gehoor: het dit 'n string. 919 00:37:06,980 --> 00:37:07,830 David J. Malan: Jammer? 920 00:37:07,830 --> 00:37:08,570 Gehoor: Jy het dit 'n string. 921 00:37:08,570 --> 00:37:08,990 David J. Malan: Ja. 922 00:37:08,990 --> 00:37:11,450 So ons het dit 'n string in hierdie derde poging, 923 00:37:11,450 --> 00:37:12,490 toe ek getik cat. 924 00:37:12,490 --> 00:37:13,200 Foo is 'n string. 925 00:37:13,200 --> 00:37:14,340 Dit is natuurlik nie 'n int. 926 00:37:14,340 --> 00:37:17,500 En die manier waarop CS50 getint geïmplementeer het, is dat ons 927 00:37:17,500 --> 00:37:20,330 nie kyk as daar iets is minder as 0 of meer as 10 928 00:37:20,330 --> 00:37:22,260 vir jou, want hoe weet ons vooraf watter soort 929 00:37:22,260 --> 00:37:23,130 int wat jy wil? 930 00:37:23,130 --> 00:37:25,880 Maar ons kan ten minste so vir jou, het ten minste die gebruiker 931 00:37:25,880 --> 00:37:26,730 tik 'n heelgetal? 932 00:37:26,730 --> 00:37:30,500 En as hulle nie, ons skreeu op die gebruiker deur te tik "probeer weer" op 933 00:37:30,500 --> 00:37:31,440 die skerm. 934 00:37:31,440 --> 00:37:34,210 >> So nou het ons 'n program wat herhaling. Okay. 935 00:37:34,210 --> 00:37:37,070 Nou, watter van hierdie is 'n soort van die beter konstruk? 936 00:37:37,070 --> 00:37:39,060 So, dit is waar dinge begin om te kry 'n bietjie slordig, die 937 00:37:39,060 --> 00:37:42,360 feit dat jy moet onthou om 'n veranderlike te verklaar hier 938 00:37:42,360 --> 00:37:44,630 as jy wil om dit te gebruik binnekant van sommige 939 00:37:44,630 --> 00:37:46,460 krullerige draadjies en buite. 940 00:37:46,460 --> 00:37:48,490 Maar selfs as dit lyk 'n bietjie kripties op die eerste 941 00:37:48,490 --> 00:37:50,750 oogopslag, net weer, onthou die eenvoudige logika. 942 00:37:50,750 --> 00:37:54,630 Om iets te gebruik in C, of ​​dit nou 'n funksie of 943 00:37:54,630 --> 00:37:57,680 dit is 'n veranderlike, moet jy dit in te sluit indien dit is 'n funksie 944 00:37:57,680 --> 00:37:59,770 in sommige biblioteek, of wat jy nodig het om dit te verklaar. 945 00:37:59,770 --> 00:38:02,405 Maar nou wat jy nodig het om ekstra bewus van die feit dat 946 00:38:02,405 --> 00:38:04,940 jy verklaar dat dit in die regte omvang. 947 00:38:04,940 --> 00:38:08,150 Jy nie om dit te styf binne hakies. 948 00:38:08,150 --> 00:38:09,410 >> So laat my terug eintlik rol. 949 00:38:09,410 --> 00:38:12,660 As ons gaan terug na ons byvoorbeeld van vroeër, en ek gaan 950 00:38:12,660 --> 00:38:19,245 terug na vir int, int i = 0; i <10; i + +, en ek 951 00:38:19,245 --> 00:38:26,370 printf sterre, soos hierdie, en dan naby hakie, en nou doen 952 00:38:26,370 --> 00:38:30,410 printf ek is nou - 953 00:38:30,410 --> 00:38:33,500 volgens dieselfde logika, wat sal gebeur wanneer ek probeer om te 954 00:38:33,500 --> 00:38:35,500 Stel hierdie program? 955 00:38:35,500 --> 00:38:36,790 Gehoor: Ongeldige id. 956 00:38:36,790 --> 00:38:38,560 David J. Malan: So dit is 'n ander ongeldige identifiseerder, 957 00:38:38,560 --> 00:38:39,470 onverklaarde identifier. 958 00:38:39,470 --> 00:38:41,810 Nou, die rede is 'n bietjie anders. 959 00:38:41,810 --> 00:38:44,370 Daar is natuurlik geen kode tussen krulhakies hier, maar dieselfde 960 00:38:44,370 --> 00:38:46,790 idee, dieselfde storie van die omvang van toepassing. 961 00:38:46,790 --> 00:38:50,340 As jy het 'n veranderlike verklaar soos ek binnekant van 'n 962 00:38:50,340 --> 00:38:53,960 lus, selfs as jy nie uitdruklik geskryf die krullerige 963 00:38:53,960 --> 00:38:56,980 draadjies, dink hulle geestelik nog steeds daar, in welke 964 00:38:56,980 --> 00:39:00,310 geval ek is slegs geldig binnekant van die loop. 965 00:39:00,310 --> 00:39:03,080 Dit is nie geldig wanneer jy na die volgende lyn, wat in 966 00:39:03,080 --> 00:39:05,090 hierdie geval is nou 10. 967 00:39:05,090 --> 00:39:09,060 Sodat net 'n paar kwessies van die omvang en die wil. 968 00:39:09,060 --> 00:39:12,620 Alle reg, enige vrae? 969 00:39:12,620 --> 00:39:15,310 >> Alle reg, sodat dit is 'n soort van 'n onbeduidende klein program, 970 00:39:15,310 --> 00:39:17,450 druk net bietjie sterre. 971 00:39:17,450 --> 00:39:20,400 Maar laat ons kyk of jy onthou hierdie lied hier. 972 00:39:20,400 --> 00:39:22,530 Dit is 'n ongelooflik irriterende liedjie wat die kinders sal sing 973 00:39:22,530 --> 00:39:23,550 die skoolbus en dies meer. 974 00:39:23,550 --> 00:39:25,990 Maar wat is lekker oor dit is dat dit hierdie cycliciteit, 975 00:39:25,990 --> 00:39:27,910 waardeur dit is "99 bottels van bier op die muur, 976 00:39:27,910 --> 00:39:28,520 99 bottels van bier. 977 00:39:28,520 --> 00:39:31,030 Neem een ​​af, slaag dit rond, 98 bottels van bier op die 978 00:39:31,030 --> 00:39:34,330 muur. "En dan is die liedjie herhaal die 97, dan 96, dan 979 00:39:34,330 --> 00:39:38,040 95, dan 94, al die pad af na 0 as jy eintlik het dat 980 00:39:38,040 --> 00:39:38,920 ver op die bus. 981 00:39:38,920 --> 00:39:41,960 So, dit is 'n mooi program te sorteer implement, want my 982 00:39:41,960 --> 00:39:43,650 God, as jy kon net die uitvoering van hierdie met 'n paar 983 00:39:43,650 --> 00:39:46,660 reëls van die kode, kan jy spoeg uit die hele lyrics hierdie 984 00:39:46,660 --> 00:39:48,240 lied redelik vinnig. 985 00:39:48,240 --> 00:39:50,420 Maar langs die pad, kan ons begin om nou te terg uitmekaar 986 00:39:50,420 --> 00:39:52,460 van hierdie basiese herhaling konstrukte en nou ook 987 00:39:52,460 --> 00:39:55,830 stel funksies wat ons skryf onsself, terugkeer waardes 988 00:39:55,830 --> 00:39:57,020 dat ons beweeg rond. 989 00:39:57,020 --> 00:39:58,910 Maar eers, waarom ons nie voort te gaan en neem ons vyf-minuut 990 00:39:58,910 --> 00:39:59,320 breek hier? 991 00:39:59,320 --> 00:40:01,480 En wanneer ons terug te kry, sal ons hierdie lied sing. 992 00:40:05,680 --> 00:40:08,760 >> Alle reg, sodat ons is terug. 993 00:40:08,760 --> 00:40:11,850 En as ek sê ons sal nou hierdie lied sing, ek bedoel 994 00:40:11,850 --> 00:40:13,250 programmaties, nie mondelings nie. 995 00:40:13,250 --> 00:40:19,370 So hier is ons het beer1.c, wat is 'n implementering van hierdie 996 00:40:19,370 --> 00:40:20,580 spesifieke liedjie. 997 00:40:20,580 --> 00:40:23,110 En net om duidelik te wees, vir diegene wat nie vertroud met wat 998 00:40:23,110 --> 00:40:24,460 hierdie ding lyk, laat my gaan voort 999 00:40:24,460 --> 00:40:27,070 en maak BEER1 Enter. 1000 00:40:27,070 --> 00:40:30,400 Laat My dan nou hardloop BEER1, en wat ons sal sien - hoeveel bottels 1001 00:40:30,400 --> 00:40:31,140 bier sal daar wees? 1002 00:40:31,140 --> 00:40:33,240 Ek sal tik in 99, soos die liedjie sê. 1003 00:40:33,240 --> 00:40:34,040 Enter. 1004 00:40:34,040 --> 00:40:35,650 En nou as ons blaai deur - 1005 00:40:35,650 --> 00:40:38,280 oops - as ons blaai deur al hierdie dinge, sal ons sien dat 1006 00:40:38,280 --> 00:40:41,350 dit het inderdaad die hele lied sing. 1007 00:40:44,050 --> 00:40:44,540 Wag 'n minuut. 1008 00:40:44,540 --> 00:40:46,240 My schuifbalk is 'n bietjie deurmekaar. 1009 00:40:46,240 --> 00:40:47,940 Kom ons gebruik die groter venster. 1010 00:40:47,940 --> 00:40:53,500 So BEER1, 99, daar gaan ons. 1011 00:40:53,500 --> 00:40:56,420 So hier het ons die hele lied, gesing baie vinniger deur die 1012 00:40:56,420 --> 00:40:58,450 rekenaar as wat dit kon gewees het deur ons. 1013 00:40:58,450 --> 00:41:00,340 So let, alhoewel, die sikliese aard hier. 1014 00:41:00,340 --> 00:41:03,380 Dit sê 99, dan 99, dan neem een ​​af, gaan dit 1015 00:41:03,380 --> 00:41:04,740 rond, "dan 98. 1016 00:41:04,740 --> 00:41:06,640 En nou is dit herhaal weer en weer. 1017 00:41:06,640 --> 00:41:08,840 >> So dit is eintlik 'n ideale geleentheid vir 'n soort van 1018 00:41:08,840 --> 00:41:10,400 herhaling bou. 1019 00:41:10,400 --> 00:41:12,950 Let op dat ek is soort van die sny van 'n hoek hier. 1020 00:41:12,950 --> 00:41:15,960 Let daarop dat ek sê "98 bottels van bier op die muur, 1021 00:41:15,960 --> 00:41:19,010 97 bottels van bier op die muur, "en dit was net so 1022 00:41:19,010 --> 00:41:21,640 dat wanneer ons na een bottels van bier, ek het nie 1023 00:41:21,640 --> 00:41:23,300 bekommerd te wees oor die Engelse grammatika. 1024 00:41:23,300 --> 00:41:25,790 Maar ons kan ook hierdie probleem oplos met 'n bietjie van 'n as 1025 00:41:25,790 --> 00:41:26,910 toestand, miskien. 1026 00:41:26,910 --> 00:41:30,110 As hierdie getal is enkelvoud, gaan voort en sê: "bottel", 1027 00:41:30,110 --> 00:41:31,840 anders as dit is meervoud, sê: "bottels". 1028 00:41:31,840 --> 00:41:34,150 Maar vir nou, ek is heeltemal te sny daardie hoek. 1029 00:41:34,150 --> 00:41:35,520 So laat ons sien wat ons hier het. 1030 00:41:35,520 --> 00:41:37,150 Dus het ons 'n paar opmerkings aan die bokant. 1031 00:41:37,150 --> 00:41:39,450 Ek sluit hierdie twee biblioteke, 1032 00:41:39,450 --> 00:41:41,140 ons het algemeen. 1033 00:41:41,140 --> 00:41:43,610 Laat My dan nou scroll af na die eerste 1034 00:41:43,610 --> 00:41:44,990 werklike reëls van die kode. 1035 00:41:44,990 --> 00:41:47,020 Line 17 skop af Hoofstraat. 1036 00:41:47,020 --> 00:41:50,610 Line 21 en 20 het hoeveel bottels bier daar sal wees? 1037 00:41:50,610 --> 00:41:52,060 En dan moet ek noem getint. 1038 00:41:52,060 --> 00:41:53,800 En nou het ek 'n bietjie van 'n gesonde verstand tjek. 1039 00:41:53,800 --> 00:41:57,030 >> So, dit is 'n konvensie wat sal ons nou begin die aanneming van 1040 00:41:57,030 --> 00:41:59,620 meer streng check die gebruiker se insette. 1041 00:41:59,620 --> 00:42:01,710 Soms wil jy net hulle nie weer gevra word 1042 00:42:01,710 --> 00:42:02,630 en weer en weer. 1043 00:42:02,630 --> 00:42:05,620 As die gebruiker skroewe en nie saam, fyn. 1044 00:42:05,620 --> 00:42:07,430 Stop en net te doen het nie met hulle. 1045 00:42:07,430 --> 00:42:08,990 En so het dit is wat ek hier doen. 1046 00:42:08,990 --> 00:42:12,520 Indien n is minder as 1, is ek net gaan om te skreeu op die gebruiker, 1047 00:42:12,520 --> 00:42:14,330 "Jammer, dit maak nie sin nie." En dan gaan ek te 1048 00:42:14,330 --> 00:42:16,650 arbitrêr terug 1. 1049 00:42:16,650 --> 00:42:18,550 Dit weer doen, dit is net 'n konvensie om gewoond te raak. 1050 00:42:18,550 --> 00:42:19,850 Vir nou, neem dit op geloof. 1051 00:42:19,850 --> 00:42:22,700 Maar tot nou toe, het ons altyd terugkeer 0, omdat 1052 00:42:22,700 --> 00:42:25,204 ons het gesê terugkeer 0 dui wat? 1053 00:42:25,204 --> 00:42:26,000 Gehoor: Sukses. 1054 00:42:26,000 --> 00:42:27,320 David J. Malan: Sukses, dis al. 1055 00:42:27,320 --> 00:42:29,740 So nou dat ons uiteindelik is begin om oor na te dink 1056 00:42:29,740 --> 00:42:31,330 nie-suksesse - 1057 00:42:31,330 --> 00:42:33,760 in ander woorde, hoek gevalle, fout voorwaardes - 1058 00:42:33,760 --> 00:42:37,520 nou het ek 'n oneindige toevoer, of ten minste vier miljard 1059 00:42:37,520 --> 00:42:39,790 moontlike dinge wat verkeerd kan gaan in my programme. 1060 00:42:39,790 --> 00:42:42,300 En ek kan begin met die toeken van hulle individuele nommers. 1061 00:42:42,300 --> 00:42:44,340 Nou, oor die algemeen is dit voldoende om net terug 1062 00:42:44,340 --> 00:42:45,730 iets anders as 0. 1063 00:42:45,730 --> 00:42:48,040 So ons gaan net terug 1 vir nou. 1064 00:42:48,040 --> 00:42:51,440 Maar die rede vir die terugkeer van 1 is dat sodra jy terugkeer 1065 00:42:51,440 --> 00:42:55,110 1, raai wat gebeur met die res van die program? 1066 00:42:55,110 --> 00:42:55,720 Dit stop. 1067 00:42:55,720 --> 00:42:56,560 Dit is dit. 1068 00:42:56,560 --> 00:42:59,150 So die feit dat ek 1 is die terugkeer is effektief 1069 00:42:59,150 --> 00:43:02,950 kortsluitings die uitvoering van hierdie program, sodat 1070 00:43:02,950 --> 00:43:06,780 niks onder line 27 sal voortgaan om die uitvoering. 1071 00:43:06,780 --> 00:43:09,210 So gou as hoof opbrengste, dit is dit. 1072 00:43:09,210 --> 00:43:13,160 >> Alle reg, sodat as die gebruiker nie saam te werk en ons bereik lyn 30 1073 00:43:13,160 --> 00:43:15,680 omdat hulle getik in 'n wettige nommer, hier is my 1074 00:43:15,680 --> 00:43:16,990 implementering van hierdie lied. 1075 00:43:16,990 --> 00:43:19,050 So het ek die eerste keer druk 'n newline karakter, net vir 1076 00:43:19,050 --> 00:43:19,880 estetika. 1077 00:43:19,880 --> 00:43:21,500 Ek het nou 'n for-lus. 1078 00:43:21,500 --> 00:43:22,930 En let op ek om dinge te doen in 'n bietjie 1079 00:43:22,930 --> 00:43:23,880 van 'n ander rigting. 1080 00:43:23,880 --> 00:43:26,210 Ek het nie minder as om te doen, ek het nie + + te doen. 1081 00:43:26,210 --> 00:43:30,660 Ek kan in plaas daarvan sê inisialiseer 'n veranderlike i, stel dit gelyk aan 1082 00:43:30,660 --> 00:43:35,080 n, die aantal wat die gebruiker ingetik in, dan doen die volgende, so 1083 00:43:35,080 --> 00:43:39,590 lank as wat ek is groter as 0, dan is ek - 1084 00:43:39,590 --> 00:43:42,070 sodra jy klaar is een iterasie van hierdie lus. 1085 00:43:42,070 --> 00:43:44,310 So kan ons reken af ​​met behulp van 'n for-lus so goed. 1086 00:43:44,310 --> 00:43:47,520 Nou, dit is pretty much week een dinge nou met printf. 1087 00:43:47,520 --> 00:43:51,770 So print "% d bottels van bier op die muur." Print "% d 1088 00:43:51,770 --> 00:43:54,990 bottels van bier. "" Neem een ​​af, beweeg dit rond. "Print 1089 00:43:54,990 --> 00:43:58,880 "% D bottels van bier op die muur." So dit is nog steeds% d nie, maar 1090 00:43:58,880 --> 00:44:02,770 opmerk dat die argument printf is besig om te verander. 1091 00:44:02,770 --> 00:44:05,840 Na die komma, ek het my, want ek wil hê om te sê 99. 1092 00:44:05,840 --> 00:44:08,590 Na afloop van hierdie komma, ek het my, want ek wil hê om te sê 99. 1093 00:44:08,590 --> 00:44:14,030 Ek het na hierdie komma i - 1, want ek wil 98 te sê 1094 00:44:14,030 --> 00:44:16,260 hierdie eerste iterasie, en so meer. 1095 00:44:16,260 --> 00:44:18,520 En nou sit hier, ek het net 'n paar dom klein opmerking. 1096 00:44:18,520 --> 00:44:22,270 En dan lyn 42, ek terugkeer 0 deur die konvensie, wat beteken dat 1097 00:44:22,270 --> 00:44:23,650 alles is okay. 1098 00:44:23,650 --> 00:44:24,490 >> So, wat as ek goofed? 1099 00:44:24,490 --> 00:44:26,350 Wat sou 'n gemeenskaplike fout hier wees? 1100 00:44:26,350 --> 00:44:29,200 Wel, wat as ek per ongeluk het goed, ek wil om te tel 1101 00:44:29,200 --> 00:44:31,640 af na 0, ek wil 0 bottels van bier op die muur? 1102 00:44:31,640 --> 00:44:34,620 So ek sê, ek is groter as of gelyk aan 0. 1103 00:44:34,620 --> 00:44:38,920 Wat gaan die simptoom wat ek nou sien as ek heropstel 1104 00:44:38,920 --> 00:44:41,173 BEER1 en voer dit uit? 1105 00:44:41,173 --> 00:44:42,120 GEHOOR: Negatief. 1106 00:44:42,120 --> 00:44:43,590 David J. Malan: Ja, dit is nou eers gaan negatiewe. 1107 00:44:43,590 --> 00:44:45,950 Dit is 'n off-vir-een fout, 'n ongelooflike 1108 00:44:45,950 --> 00:44:47,270 algemene fout te maak. 1109 00:44:47,270 --> 00:44:48,960 Kom ons eintlik terug te gaan na die terminale venster en doen dit 1110 00:44:48,960 --> 00:44:50,620 hier, sodat ons kan sien meer op 'n slag. 1111 00:44:50,620 --> 00:44:53,280 Betree, 99 bottels van bier. 1112 00:44:53,280 --> 00:44:56,580 Naby, maar ons het ooit so iets te ver. 1113 00:44:56,580 --> 00:45:00,500 Ons het die lied gesing te ver af, soos wat ons nou tref die 1114 00:45:00,500 --> 00:45:01,510 negatiewe getal. 1115 00:45:01,510 --> 00:45:03,680 So is dit nie heeltemal werk nie. 1116 00:45:03,680 --> 00:45:06,450 >> Alle reg, sodat ons kan maklik los dat deur terug te gaan na die 1117 00:45:06,450 --> 00:45:07,650 manier om dit eens was. 1118 00:45:07,650 --> 00:45:10,360 Maar wat is 'n paar geleenthede wat nou vir 1119 00:45:10,360 --> 00:45:11,190 verbetering? 1120 00:45:11,190 --> 00:45:17,200 Wel, laat ek oop beer2.c en scroll down hier en neem 'n 1121 00:45:17,200 --> 00:45:19,310 kyk na hierdie weergawe. 1122 00:45:19,310 --> 00:45:21,370 Wat is die eerste ding wat spring uit by jou as verskillende 1123 00:45:21,370 --> 00:45:23,715 in hierdie weergawe hier? 1124 00:45:23,715 --> 00:45:24,190 Gehoor: [onhoorbaar]. 1125 00:45:24,190 --> 00:45:26,510 David J. MALAN: Ja, so nie meer ek, omdat dit plaasgevind het 1126 00:45:26,510 --> 00:45:29,350 my jy weet wat, ek die gebruiker vir n ek vra, en dan is ek 1127 00:45:29,350 --> 00:45:33,580 opstel van i gelyk is aan n, en dan verander ek i, maar ek is nooit 1128 00:45:33,580 --> 00:45:34,590 raak n weer. 1129 00:45:34,590 --> 00:45:37,390 So, wat die heck is die punt van die toekenning van 'n ander 32 1130 00:45:37,390 --> 00:45:45,210 stukkies genoem i net sodat ek kan 'n ander veranderlike? 1131 00:45:45,210 --> 00:45:47,960 Dus, in hierdie geval, ek soort van erken dat onnodige 1132 00:45:47,960 --> 00:45:49,190 ontwerp funksie. 1133 00:45:49,190 --> 00:45:52,730 En ek gaan nou te sê, terwyl n groter as 0, gaan 1134 00:45:52,730 --> 00:45:56,180 voort en print dieselfde lied, verby 'n printf as die 1135 00:45:56,180 --> 00:46:00,210 tweede argument, en n - 1 as die tweede argument hier onder. 1136 00:46:00,210 --> 00:46:02,930 En dan op elke iterasie van hierdie lus, voor en net te gaan 1137 00:46:02,930 --> 00:46:05,080 Trek 'n self. 1138 00:46:05,080 --> 00:46:06,960 Nou, funksioneel, hierdie program 1139 00:46:06,960 --> 00:46:08,010 gaan identies te wees. 1140 00:46:08,010 --> 00:46:10,730 As ek tik in 99, n begin op 99. 1141 00:46:10,730 --> 00:46:12,890 Ek decrement, decrement, decrement, decrement. 1142 00:46:12,890 --> 00:46:15,875 Ek gaan al die pad af te kry na "Een bottel bier op 1143 00:46:15,875 --> 00:46:16,740 die muur, die een bottel bier. 1144 00:46:16,740 --> 00:46:18,020 Neem een ​​af, beweeg dit rond. 1145 00:46:18,020 --> 00:46:21,480 0 bottels van bier op die muur "Die einde, want ek het 1146 00:46:21,480 --> 00:46:23,200 Kry die toestand korrek is. 1147 00:46:23,200 --> 00:46:24,280 Dit is groter as 0. 1148 00:46:24,280 --> 00:46:26,220 Ek het nie hierdie fout maak nie. 1149 00:46:26,220 --> 00:46:28,470 >> So wat is beter, weergawe een of weergawe Twee? 1150 00:46:31,380 --> 00:46:33,480 So ek het 'n klomp van die murmureringe gehoor vir twee. 1151 00:46:33,480 --> 00:46:34,730 Waarom twee? 1152 00:46:37,210 --> 00:46:38,225 Wat is dit? 1153 00:46:38,225 --> 00:46:39,215 Gehoor: [onhoorbaar]. 1154 00:46:39,215 --> 00:46:40,070 David J. Malan: "O, okay. 1155 00:46:40,070 --> 00:46:42,870 So dit sal nie gaan onder 0, maar onthou, in die weergawe een, die 1156 00:46:42,870 --> 00:46:45,870 oorspronklike korrekte weergawe nie onder 0 óf. 1157 00:46:45,870 --> 00:46:48,340 So onthou dat hierdie is die korrekte weergawe. 1158 00:46:48,340 --> 00:46:51,630 So laat ons ten minste vergelyk die twee korrekte weergawes. 1159 00:46:51,630 --> 00:46:53,300 Wat is 'n argument ten gunste van weergawe 1160 00:46:53,300 --> 00:46:55,146 twee is, mmm, beter? 1161 00:46:55,146 --> 00:46:55,642 Ja? 1162 00:46:55,642 --> 00:46:57,630 Gehoor: Dit maak gebruik van minder ruimte. 1163 00:46:57,630 --> 00:46:59,530 David J. Malan: Okay, so dit gebruik minder spasie, reg? 1164 00:46:59,530 --> 00:47:02,900 AANGESIEN weergawe een wat gebruik word 32 bisse vir n, en dan die ander 1165 00:47:02,900 --> 00:47:07,680 32 bisse vir i. 1166 00:47:07,680 --> 00:47:10,060 Weergawe twee het net 32 ​​bisse gebruik vir n, sodat 1167 00:47:10,060 --> 00:47:11,700 lyk na 'n plus wees. 1168 00:47:11,700 --> 00:47:12,950 Ander gedagtes? 1169 00:47:18,070 --> 00:47:21,520 Is daar iemand wil om te argumenteer ten gunste van die een? 1170 00:47:21,520 --> 00:47:22,070 Ja? 1171 00:47:22,070 --> 00:47:25,240 Gehoor: Jy het ekstra reël van die kode te gebruik vir n -. 1172 00:47:25,240 --> 00:47:26,090 >> David J. Malan: Okay, seker nie. 1173 00:47:26,090 --> 00:47:26,960 So dit is regverdig. 1174 00:47:26,960 --> 00:47:29,040 So dit is net, ten minste vir my - 1175 00:47:29,040 --> 00:47:31,940 Ek bedoel, dit eintlik voel 'n bietjie Messier, die feit dat 1176 00:47:31,940 --> 00:47:35,120 Ek kan nie sorteer kapselt al my logika in een 1177 00:47:35,120 --> 00:47:38,030 pragtige lyn, die lus, as die lus kan. 1178 00:47:38,030 --> 00:47:40,240 Hier, ek soort van te ryg op hierdie n - 1179 00:47:40,240 --> 00:47:41,120 aan die einde van die lus, want 1180 00:47:41,120 --> 00:47:42,550 dit is logies nodig. 1181 00:47:42,550 --> 00:47:45,190 Maar dit vryf soort van my op die verkeerde manier, net omdat dit 1182 00:47:45,190 --> 00:47:48,260 lyk apart van die logika van hier, selfs al 1183 00:47:48,260 --> 00:47:49,430 weer, dit is nodig. 1184 00:47:49,430 --> 00:47:50,990 Ander gedagtes? 1185 00:47:50,990 --> 00:47:51,490 Ja? 1186 00:47:51,490 --> 00:47:52,740 Gehoor: [onhoorbaar]. 1187 00:47:57,990 --> 00:47:58,350 >> David J. Malan: Ja. 1188 00:47:58,350 --> 00:48:00,730 So, wat as jy plaas, aan die einde van die liedjie, wou 1189 00:48:00,730 --> 00:48:02,950 druk weer die naam van die liedjie? 1190 00:48:02,950 --> 00:48:05,660 Soos "Dankie vir die speel van 99 bottels van bier", of iets 1191 00:48:05,660 --> 00:48:06,690 dom soos wat? 1192 00:48:06,690 --> 00:48:09,750 Maar die punt is, jy wou toegang tot die oorspronklike waarde. 1193 00:48:09,750 --> 00:48:13,180 Die feit dat jy gemuteerde of verander n op elke 1194 00:48:13,180 --> 00:48:16,330 iterasie en daarom het sy oorspronklike waarde vernietig 1195 00:48:16,330 --> 00:48:18,650 beteken dat jy net nie kan doen wat aan die einde. 1196 00:48:18,650 --> 00:48:20,660 Nou, waarskynlik ons ​​duidelik nie wil hê om te doen 1197 00:48:20,660 --> 00:48:21,450 wat in hierdie program. 1198 00:48:21,450 --> 00:48:22,350 So wat omgee? 1199 00:48:22,350 --> 00:48:23,630 Maar dit is 'n baie geldige punt. 1200 00:48:23,630 --> 00:48:25,520 En om eerlik te wees, daar is regtig niemand 1201 00:48:25,520 --> 00:48:26,630 reg hier beantwoord. 1202 00:48:26,630 --> 00:48:28,740 Hulle is albei ewe korrek is. 1203 00:48:28,740 --> 00:48:30,210 Ek kon oortuig word óf manier. 1204 00:48:30,210 --> 00:48:33,310 Ek sal sê dat, in die algemeen, is dit 'n goeie beginsel as jy 1205 00:48:33,310 --> 00:48:36,030 die gebruiker gevra vir 'n paar waarde en jy in 'n veranderlike gestoor 1206 00:48:36,030 --> 00:48:38,730 soos n, net soort van beginsel, dit is waarskynlik 'n goeie 1207 00:48:38,730 --> 00:48:40,160 wat rondom hou. 1208 00:48:40,160 --> 00:48:43,400 En enige inligting wat jy wil om weer en weer te muteer, net 1209 00:48:43,400 --> 00:48:46,030 gee jouself 'n afskrif van daardie veranderlike, net sodat jy 1210 00:48:46,030 --> 00:48:47,830 het toegang tot die oorspronklike. 1211 00:48:47,830 --> 00:48:51,040 Jy spandeer 32 meer stukkies, maar die werklikheid is hierdie 1212 00:48:51,040 --> 00:48:53,490 rekenaar, soos twee GB RAM hierdie dae, 1213 00:48:53,490 --> 00:48:55,310 en ons quibbling meer as 32 stukkies? 1214 00:48:55,310 --> 00:48:56,320 Regtig nie so 'n groot deal. 1215 00:48:56,320 --> 00:48:58,550 En selfs op hierdie toestel hier, met 'n 1/2 'n gig of 'n 1216 00:48:58,550 --> 00:49:01,700 GB RAM, 32 stukkies teenoor 64 stukkies, 1217 00:49:01,700 --> 00:49:02,920 nie so 'n big deal nie. 1218 00:49:02,920 --> 00:49:05,890 Sekerlik vandag, gaan dit manier wat oorweldig is deur die grootte 1219 00:49:05,890 --> 00:49:08,400 van die program self, wat gaan wees 'n paar honderd 1220 00:49:08,400 --> 00:49:10,890 kilogrepe, indien nie 'n paar megagrepe, hierdie dae. 1221 00:49:10,890 --> 00:49:13,550 >> So redelike kommer, geen een korrekte antwoord. 1222 00:49:13,550 --> 00:49:15,490 Maar ten minste dit is die gedagtes wat moet begin 1223 00:49:15,490 --> 00:49:16,790 gaan deur jou gedagtes? 1224 00:49:16,790 --> 00:49:19,600 Omdat in pset 0, selfs al het ons eintlik net verwag 1225 00:49:19,600 --> 00:49:22,340 korrektheid, of ten minste afwijzen van aanspreeklikheid verskeie foute wat 1226 00:49:22,340 --> 00:49:25,440 jy dalk teëgekom het, as ons vorentoe beweeg, ontwerp is 1227 00:49:25,440 --> 00:49:27,910 gaan na 'n ander belangrike aspek, beide van die skryf van kode 1228 00:49:27,910 --> 00:49:29,770 en ook ons ​​evaluering van kode. 1229 00:49:29,770 --> 00:49:32,310 En so gee ten minste gedink aan dinge soos hierdie. 1230 00:49:32,310 --> 00:49:35,590 En net omdat iets werk, beteken nie dit is goed, 1231 00:49:35,590 --> 00:49:37,130 beteken nie dit is goed ontwerp. 1232 00:49:37,130 --> 00:49:38,820 En dit is een van die dinge wat die onderrig genote en 1233 00:49:38,820 --> 00:49:41,990 probleem stelle sal help om ons terg deel met verloop van tyd. 1234 00:49:41,990 --> 00:49:45,020 >> Wel, wat, laat ons sê, hierdie weergawe hier? 1235 00:49:45,020 --> 00:49:49,090 Laat my om iets te doen 'n bietjie sexy hier in 'n oomblik. 1236 00:49:49,090 --> 00:49:50,740 Eerste laat my ontslae te raak van hierdie. 1237 00:49:50,740 --> 00:49:54,120 En nou, laat ons dit regmaak grammatikale probleem. 1238 00:49:54,120 --> 00:49:58,780 Dus, in hierdie weergawe, ek wil die grammatika reg te maak sodat 1239 00:49:58,780 --> 00:50:02,460 eerder as om net tussen hakies s sê, soos "bottel" 1240 00:50:02,460 --> 00:50:03,360 of "bottels" - 1241 00:50:03,360 --> 00:50:04,900 Ek wil nie dat die hoek te sny - 1242 00:50:04,900 --> 00:50:08,350 Ek wil ook dinamiese druk die woord "bottels" 1243 00:50:08,350 --> 00:50:12,820 of "bottel", waardeur die gebruik van hierdie% s plekhouers vandag. 1244 00:50:12,820 --> 00:50:16,550 So ek moet voorwaardelik kyk wat is die waarde van i. 1245 00:50:16,550 --> 00:50:19,590 En as dit is 1, Ek wil "bottel" te sê, en as dit enigiets 1246 00:50:19,590 --> 00:50:23,115 anders, ek wil om te sê "bottels". So laat ons probeer om dit te doen. 1247 00:50:23,115 --> 00:50:31,340 So as ek == 1, dan laat ek gaan voort en verklaar - 1248 00:50:31,340 --> 00:50:34,080 Ek moet 'n string, so laat my string s1 doen, want dit is die 1249 00:50:34,080 --> 00:50:36,070 eerste string wat ek omgee right now. 1250 00:50:36,070 --> 00:50:40,980 Ek gaan om te sê "bottel". En dan, laat ons sien, string 1251 00:50:40,980 --> 00:50:43,110 s2 - en ek sal verduidelik waar ek gaan in 'n oomblik - 1252 00:50:43,110 --> 00:50:47,650 "Bottels." So onthou dat in hierdie lied, het ons nodig het om in staat te wees om 1253 00:50:47,650 --> 00:50:50,580 dinge, twee verskillende woorde te potensieel te druk. 1254 00:50:50,580 --> 00:50:53,590 So as ons terug kyk hier, sien dat wanneer ons 1255 00:50:53,590 --> 00:50:56,440 hierdie voorbeeld hier, "het twee bottels van bier op die muur, 1256 00:50:56,440 --> 00:50:59,490 twee bottels bier, neem een ​​af, slaag dit rond ", wat ek wil hê, 1257 00:50:59,490 --> 00:51:02,380 hierdie vierde reël nou te sê "een bottel bier op die 1258 00:51:02,380 --> 00:51:04,900 muur "So ek nodig het om te besluit, ek wil om te sê" bottels "of 1259 00:51:04,900 --> 00:51:07,780 "Bottel"? So ek gaan na willekeur te sê, al die regte, 1260 00:51:07,780 --> 00:51:10,530 Ek gaan om te verklaar nou 'n veranderlike genoem s1, string 1261 00:51:10,530 --> 00:51:13,830 een is wat gaan ingeprop te kry hier en ook hier, 1262 00:51:13,830 --> 00:51:16,070 want hierdie woorde is altyd identies, net as gevolg van die 1263 00:51:16,070 --> 00:51:17,290 aard van die lied. 1264 00:51:17,290 --> 00:51:20,100 En ek gaan om te bel s2 watter woord wat ek wil 1265 00:51:20,100 --> 00:51:21,560 uiteindelik verskyn hier onder. 1266 00:51:21,560 --> 00:51:25,530 Nou, letterlik, 99 keer uit 100, is dit gaan wees om die 1267 00:51:25,530 --> 00:51:28,820 dieselfde in albei daardie gevalle nie, want 3 is meervoud, 2 1268 00:51:28,820 --> 00:51:30,200 meervoud, 4 is die meervoud. 1269 00:51:30,200 --> 00:51:34,640 Maar in hierdie hoek geval, waar ons tot 2 en dan 1 of 1270 00:51:34,640 --> 00:51:37,250 selfs 1 en dan 0, ek moet hierdie logika. 1271 00:51:37,250 --> 00:51:41,020 So ek het 'n bietjie tyd te spandeer in my kode om dit reg te kry. 1272 00:51:41,020 --> 00:51:47,530 So as ek dit doen, as ek == 1, dan s1 gelyk aan "bottel" 1273 00:51:47,530 --> 00:51:52,010 en s2 gelyk aan "bottels", want dit sal wees vir 1 1274 00:51:52,010 --> 00:51:56,340 bottel, en dit sal wees vir 0 bottels. 1275 00:51:56,340 --> 00:51:58,250 En dit is hier, wat beteken dit verteenwoordig? 1276 00:51:58,250 --> 00:51:59,780 Net om duidelik te wees. 1277 00:51:59,780 --> 00:52:00,620 Dit is net 'n comment. 1278 00:52:00,620 --> 00:52:03,730 En die feit dat jy enkel-lyn kommentaar kan beteken dat jy 1279 00:52:03,730 --> 00:52:06,110 kan jou kode kommentaar soos hierdie, maar 'n ander gemeenskaplike 1280 00:52:06,110 --> 00:52:09,050 paradigma, ook, is dat as jy 'n super-kort frase wat 1281 00:52:09,050 --> 00:52:11,410 jy wil om jouself te sit en dit is net meer leesbare te sit 1282 00:52:11,410 --> 00:52:13,270 dit reg aan die einde van die lyn van die kode, kan jy 1283 00:52:13,270 --> 00:52:15,230 absoluut iets soos hierdie te doen. 1284 00:52:15,230 --> 00:52:20,150 >> So nou wat as ek dit doen? Anders as ek is nie gelyk aan 1. 1285 00:52:20,150 --> 00:52:21,620 So bang is gelyk aan - 1286 00:52:21,620 --> 00:52:23,150 uitroepteken is bekend as "bang". 1287 00:52:23,150 --> 00:52:25,080 So bang = 1. 1288 00:52:25,080 --> 00:52:28,530 So as ek is nie gelyk is aan 1, doen wat ek plaas wil om dit te doen? 1289 00:52:28,530 --> 00:52:31,700 Wel, die eerste woord wat ek wil om te wees wat? 1290 00:52:34,620 --> 00:52:40,030 So string 1 moet "bottels" vir meervoud bottels, 1291 00:52:40,030 --> 00:52:42,440 en dan is dit sal wees meervoud "bottels" so goed, vir nou. 1292 00:52:42,440 --> 00:52:43,800 En ons sal sien of dit eintlik om ons te kry 1293 00:52:43,800 --> 00:52:44,870 waar ons wil gaan. 1294 00:52:44,870 --> 00:52:47,680 So as ek nou scroll down hier opmerk dat ek steek in 1295 00:52:47,680 --> 00:52:50,170 nie ek alleen nie, maar s1. 1296 00:52:50,170 --> 00:52:51,860 Ek steek in i en s1. 1297 00:52:51,860 --> 00:52:54,440 En dan af hier, ek is minus 1, wat dieselfde is as 1298 00:52:54,440 --> 00:52:55,920 voor, maar s2. 1299 00:52:55,920 --> 00:52:58,730 Met ander woorde, ek wil die Engelse woord te verander gebaseer 1300 00:52:58,730 --> 00:52:59,930 op hierdie logika. 1301 00:52:59,930 --> 00:53:03,310 Nou, daar is reeds 'n paar probleme in hierdie kode. 1302 00:53:03,310 --> 00:53:08,460 Wat reeds uitgebreek van die poort hier? 1303 00:53:08,460 --> 00:53:10,796 Ja? 1304 00:53:10,796 --> 00:53:13,210 Gehoor: [onhoorbaar]. 1305 00:53:13,210 --> 00:53:13,800 >> David J. Malan: Presies. 1306 00:53:13,800 --> 00:53:16,030 So ek het reeds oortree die les van die omvang. 1307 00:53:16,030 --> 00:53:19,610 So ek het S1 en S2 verklaar nie, maar Ek het dit gedoen binnekant van 1308 00:53:19,610 --> 00:53:22,980 krullerige draadjies, wat beteken ja, hierdie kode sal werk 1309 00:53:22,980 --> 00:53:27,430 totdat line 42, maar so gou as ek lyn 43 getref het, raai wat geen 1310 00:53:27,430 --> 00:53:28,900 meer bestaan ​​nie? 1311 00:53:28,900 --> 00:53:32,600 Wel, raai wat is nie meer in omvang - nie s1 of s2. 1312 00:53:32,600 --> 00:53:33,780 So ons het om dit op te los. 1313 00:53:33,780 --> 00:53:36,180 So laat ek die verklarings verwyder. 1314 00:53:36,180 --> 00:53:39,320 En Ek sal laat die veranderlike name en verwyder dit hier 1315 00:53:39,320 --> 00:53:40,120 en verwyder dit hier. 1316 00:53:40,120 --> 00:53:43,557 En in watter lyne Ek moet regtig hierdie dinge verklaar? 1317 00:53:43,557 --> 00:53:44,960 Gehoor: [onhoorbaar]. 1318 00:53:44,960 --> 00:53:45,410 David J. Malan: Ja, so waarskynlik 1319 00:53:45,410 --> 00:53:46,850 reg hier, 33-ish. 1320 00:53:46,850 --> 00:53:50,670 So string S1 en dan string s2. 1321 00:53:50,670 --> 00:53:51,950 En dit blyk, kan ek dit doen. 1322 00:53:51,950 --> 00:53:54,260 As jy twee veranderlikes van dieselfde soort te verklaar, 1323 00:53:54,260 --> 00:53:57,420 Jy kan eintlik net 'n komma gebruik en doen in C. Alle 1324 00:53:57,420 --> 00:53:58,970 reg, so nou het ek twee veranderlikes - 1325 00:53:58,970 --> 00:53:59,860 S1 en S2. 1326 00:53:59,860 --> 00:54:02,000 Ek is die toeken van hulle waardes in hierdie 1327 00:54:02,000 --> 00:54:04,210 toestande hier, of in hier. 1328 00:54:04,210 --> 00:54:06,690 En dan is ek met behulp van hulle hieronder neer. 1329 00:54:06,690 --> 00:54:10,960 Hoe goed dit gaan nou te werk? 1330 00:54:10,960 --> 00:54:12,740 >> Wel, dit is nog steeds 'n bietjie buggy, maar laat ons ten minste sien 1331 00:54:12,740 --> 00:54:13,730 hoe ver ons gekry het. 1332 00:54:13,730 --> 00:54:16,500 So laat ek gaan voort en maak beer3. 1333 00:54:16,500 --> 00:54:17,695 Is hierdie beer3? 1334 00:54:17,695 --> 00:54:19,410 Yep, dit is beer3. 1335 00:54:19,410 --> 00:54:21,510 Laat My dan nou voort te gaan en uit te voer beer3. 1336 00:54:21,510 --> 00:54:23,820 399 99. 1337 00:54:23,820 --> 00:54:25,840 Ons kan waarskynlik slaan die meeste van hulle. 1338 00:54:25,840 --> 00:54:29,100 En af hier, kyk op daardie. 1339 00:54:29,100 --> 00:54:31,110 "Een bottel bier op die muur, een bottel bier, 1340 00:54:31,110 --> 00:54:34,306 een af, beweeg dit rond, 0 bottels van bier op die muur. " 1341 00:54:34,306 --> 00:54:37,570 Maar ek jou aandag te trek tot net die helfte van die oplossing. 1342 00:54:37,570 --> 00:54:39,620 Soort van screwed up hier. 1343 00:54:39,620 --> 00:54:43,030 Dus blyk dit dat die hoek gevalle ontstaan ​​wanneer ek gelyk is aan wat 1344 00:54:43,030 --> 00:54:44,030 twee waardes? 1345 00:54:44,030 --> 00:54:45,020 Gehoor: 2, 1. 1346 00:54:45,020 --> 00:54:46,190 David J. Malan: 2 en 1. 1347 00:54:46,190 --> 00:54:48,180 Dit is nie 1 en nie 1. 1348 00:54:48,180 --> 00:54:51,890 Dit is regtig net hierdie laaste twee strofes van hierdie lied. 1349 00:54:51,890 --> 00:54:53,890 So, wat ek plaas wil doen? 1350 00:54:53,890 --> 00:54:58,890 So dit lyk asof ek gevang het die geval waar as ek == tot 1, 1351 00:54:58,890 --> 00:55:02,240 dan is die eerste woord is "bottel", maar die tweede woord 1352 00:55:02,240 --> 00:55:07,230 is "bottels". Maar hier, ek wil verander om dit te == 2. 1353 00:55:07,230 --> 00:55:08,570 En as dit die geval is, doen wat ek wil die 1354 00:55:08,570 --> 00:55:09,620 eerste woord te wees? 1355 00:55:09,620 --> 00:55:10,430 Gehoor: "Bottles". 1356 00:55:10,430 --> 00:55:12,890 David J. Malan: "Bottles", so vir twee bottels. 1357 00:55:12,890 --> 00:55:14,690 En dan hierdie woord hier moet wees - 1358 00:55:14,690 --> 00:55:15,340 Gehoor: "bottel". 1359 00:55:15,340 --> 00:55:17,316 David J. Malan: "bottel", enkelvoud. 1360 00:55:20,430 --> 00:55:25,160 >> Alle reg, laat se uitzoomen, gaan terug hier, re-run maak, 1361 00:55:25,160 --> 00:55:28,590 re-run beer3, tipe 99 weer. 1362 00:55:28,590 --> 00:55:30,710 Okay, "Segmentasie skuld (kern gestort)." 1363 00:55:30,710 --> 00:55:32,780 Wat het ek verkeerd gedoen? 1364 00:55:36,050 --> 00:55:38,722 Gehoor: Jy hoef nie 'n waarde [onhoorbaar]. 1365 00:55:38,722 --> 00:55:40,480 David J. Malan: Ag, 'n uitstekende punt. 1366 00:55:40,480 --> 00:55:43,310 Alle reg, sodat Wat is hier verkeerd? 1367 00:55:43,310 --> 00:55:45,450 So segmentering skuld, en ons is eintlik gaan om te sien 1368 00:55:45,450 --> 00:55:49,020 dit nogal 'n paar keer in die toekoms, doelbewus. 1369 00:55:49,020 --> 00:55:51,030 Maar vir nou, wat beteken dit eintlik beteken? 1370 00:55:51,030 --> 00:55:53,620 'N segmentering skuld beteken byna altyd wat jy het 1371 00:55:53,620 --> 00:55:56,760 geheue, geheue in jou rekenaar op een of ander manier probeer om toegang te verkry tot, 1372 00:55:56,760 --> 00:56:00,600 wat jy doen nie, dat jy eintlik nie gevra om die 1373 00:56:00,600 --> 00:56:02,050 bedryfstelsel. 1374 00:56:02,050 --> 00:56:04,440 Dus, in hierdie geval, let op wat ek gedoen het, wat 1375 00:56:04,440 --> 00:56:05,870 gebrekkig in my logika. 1376 00:56:05,870 --> 00:56:09,500 Ek het S1 en S2 'n waarde as wat i gelyk is aan 1. 1377 00:56:09,500 --> 00:56:11,590 Ek het ook gedoen dat indien ek gelyk is aan 2. 1378 00:56:11,590 --> 00:56:13,710 Maar ek het nie dit gedoen het in die oneindige aantal ander 1379 00:56:13,710 --> 00:56:14,690 moontlikhede - 1380 00:56:14,690 --> 00:56:17,940 in die besonder, 3 of 4 of dot, dot, dot, 99. 1381 00:56:17,940 --> 00:56:20,100 So kon net een oplossing vir hierdie let's 1382 00:56:20,100 --> 00:56:22,190 'n anders toestand. 1383 00:56:22,190 --> 00:56:26,780 En my laat gaan hier in en sê s1 is gelyk aan - 1384 00:56:26,780 --> 00:56:28,180 Wat moet dit hier wees? 1385 00:56:28,180 --> 00:56:28,750 Gehoor: [onhoorbaar]. 1386 00:56:28,750 --> 00:56:30,460 >> David J. Malan: "Bottles", want in die algemene geval, 1387 00:56:30,460 --> 00:56:32,020 dit is net die dieselfde ding. 1388 00:56:32,020 --> 00:56:35,580 So is gelyk aan quote, unquote, "bottels." So vir meervoud 1389 00:56:35,580 --> 00:56:41,010 bottels, en dan hier, vir meervoud bottels. 1390 00:56:41,010 --> 00:56:44,580 Okay, so laat my nou terug te gaan na my terminale venster, 1391 00:56:44,580 --> 00:56:47,200 heropstel, re-voer dit uit. 1392 00:56:47,200 --> 00:56:48,440 99. 1393 00:56:48,440 --> 00:56:49,150 Sjoe. 1394 00:56:49,150 --> 00:56:50,610 En laat ons doen 'n vinnige sanity check. 1395 00:56:50,610 --> 00:56:52,400 Tegnies, sou ons wil al hierdie te lees om seker te maak 1396 00:56:52,400 --> 00:56:53,370 hulle is korrek, maar laat ons kyk na 1397 00:56:53,370 --> 00:56:54,640 minste die bekende skuldiges. 1398 00:56:54,640 --> 00:56:57,370 3 bottels, 2 bottels, 2 bottels, 1 1399 00:56:57,370 --> 00:57:00,380 bottel, 1 bottel, 0 bottels. 1400 00:57:00,380 --> 00:57:03,080 Ons lyk het ten minste vasgestel dit vir nou. 1401 00:57:03,080 --> 00:57:06,010 Maar die vangs hier is dat wat 'n god aaklige gemors dit is 1402 00:57:06,010 --> 00:57:07,470 net 'n dom op te los 1403 00:57:07,470 --> 00:57:09,540 een karakter grammatikale detail. 1404 00:57:09,540 --> 00:57:11,150 So daar is 'n soort van 'n rede dat ek sny hierdie hoek 1405 00:57:11,150 --> 00:57:14,090 vroeër, want dit is net heeltemal irriterende moet 1406 00:57:14,090 --> 00:57:15,020 skryf hierdie veel-kode. 1407 00:57:15,020 --> 00:57:17,530 Maar dit blyk dat daar is effens meer elegante maniere 1408 00:57:17,530 --> 00:57:20,110 uitdrukking van die presies dieselfde ding. 1409 00:57:20,110 --> 00:57:22,040 En ons kan doen dit soos volg. 1410 00:57:22,040 --> 00:57:23,890 >> Laat my los dit op die skerm vir 'n oomblik en 1411 00:57:23,890 --> 00:57:27,320 voer iets wat bekend staan ​​as 'n drieledige operateur. 1412 00:57:27,320 --> 00:57:29,600 Dit is 'n soort van 'n one-liner wat net bedoel om ons 1413 00:57:29,600 --> 00:57:31,880 leef 'n bietjie sexier, soos belowe. 1414 00:57:31,880 --> 00:57:33,130 En ek gaan om dit te doen soos volg. 1415 00:57:33,130 --> 00:57:35,810 Gee my 'n string met die naam s1, en laat my 1416 00:57:35,810 --> 00:57:37,200 wys dit as volg. 1417 00:57:37,200 --> 00:57:39,900 (I == 1)? 1418 00:57:39,900 --> 00:57:47,820 "Bottel", anders "bottels". String s2 kry (i == 2)? 1419 00:57:47,820 --> 00:57:52,670 "Bottel", anders "bottels". 1420 00:57:52,670 --> 00:57:57,050 So wat is dan die verskil hier? 1421 00:57:57,050 --> 00:57:59,370 Hierdie twee reëls van die kode, het ek argumenteer, kan 1422 00:57:59,370 --> 00:58:02,200 Vervang hierdie hele gemors. 1423 00:58:02,200 --> 00:58:04,280 Daarom noem ek dit 'n gemors, net omdat dit soort van vryf my die 1424 00:58:04,280 --> 00:58:05,940 verkeerde manier dat dit so baie reëls van die kode. 1425 00:58:05,940 --> 00:58:06,650 Nie verkeerd nie. 1426 00:58:06,650 --> 00:58:07,700 Dit is nie slegte ontwerp. 1427 00:58:07,700 --> 00:58:10,140 Wil, dit is heeltemal korrek en perfek fyn. 1428 00:58:10,140 --> 00:58:12,970 Maar kodering kry vervelig as jy jouself om dit uit te druk 1429 00:58:12,970 --> 00:58:15,530 damn spesifiek weer en weer en weer met 'n eenvoudige 1430 00:58:15,530 --> 00:58:16,620 scenario soos hierdie. 1431 00:58:16,620 --> 00:58:19,470 So C het 'n paar kortpaaie, soos hierdie. 1432 00:58:19,470 --> 00:58:24,270 So, dit in wese sê verklaar 'n string met die naam s1 en 1433 00:58:24,270 --> 00:58:32,610 toewys hierdie waarde of hierdie waarde as ek == - 1434 00:58:32,610 --> 00:58:35,290 jammer, moet ek sê dit meer duidelik. 1435 00:58:35,290 --> 00:58:41,680 Verklaar 'n veranderlike s1, wys dit waarde as dit waar is. 1436 00:58:41,680 --> 00:58:44,280 Andersins, wys dit waarde. 1437 00:58:44,280 --> 00:58:47,220 So met ander woorde, dit is 'n soort van 'n een-lyn weg van 1438 00:58:47,220 --> 00:58:51,490 sê as anders, maar 'n opdrag te doen langs die pad. 1439 00:58:51,490 --> 00:58:55,540 So as ek is 1, dan voort te gaan en roep hierdie "bottel". En 1440 00:58:55,540 --> 00:58:59,830 dan is dit anders, noem dit "bottels". Intussen, s2, die 1441 00:58:59,830 --> 00:59:04,060 tweede woord wat ons nodig het om te definieer, indien ek gelyk is aan 2, sal ons 1442 00:59:04,060 --> 00:59:08,350 stel s2 na "bottel". Andersins, stel dit na "bottels". En wat 1443 00:59:08,350 --> 00:59:11,460 Dit beteken dit is nou ek kan gaan deur middel van hierdie en verwyder al 1444 00:59:11,460 --> 00:59:12,860 daardie reëls van die kode. 1445 00:59:12,860 --> 00:59:17,220 En as ek sê, 'n bietjie belaglik, dat dit is nou 1446 00:59:17,220 --> 00:59:20,060 sexier, dit is sexier in die soort van stilistiese verstand. 1447 00:59:20,060 --> 00:59:22,660 Die feit dat funksioneel, hierdie kode is eintlik gaan 1448 00:59:22,660 --> 00:59:24,610 doen presies dieselfde ding. 1449 00:59:24,610 --> 00:59:26,890 En hoewel dit lyk dalk 'n bietjie kripties op die eerste 1450 00:59:26,890 --> 00:59:29,250 oogopslag, omdat ons nie hierdie konstruk gesien het voor, sou ek 1451 00:59:29,250 --> 00:59:31,850 argumenteer dat dit uiteindelik gaan om soveel meer te wees 1452 00:59:31,850 --> 00:59:34,820 leesbare en so veel makliker vir ons mense te sorteer 1453 00:59:34,820 --> 00:59:36,830 verstaan ​​nie, want nou kan jy lees net die 1454 00:59:36,830 --> 00:59:38,830 kode almal op een lyn. 1455 00:59:38,830 --> 00:59:41,550 Dit is nog steeds dieselfde in die gees op 'n as, waar dit die 1456 00:59:41,550 --> 00:59:44,920 toestand en dan is dit wat is binne-in die as, en dit 1457 00:59:44,920 --> 00:59:46,480 is wat is binne-in die ander. 1458 00:59:46,480 --> 00:59:49,450 Maar ons kan dit net baie meer elegant. 1459 00:59:49,450 --> 00:59:52,650 >> En as ek nou terug gaan na my terminale, verwyder alle 1460 00:59:52,650 --> 00:59:55,530 van daardie lyne en vervang hulle met net die twee, 1461 00:59:55,530 --> 01:00:00,150 heropstel, re-run bottels van bier met 99, kennis dat my 1462 01:00:00,150 --> 01:00:03,350 grammatika is, in werklikheid, nog korrek is. 1463 01:00:03,350 --> 01:00:06,160 Dit weer doen, iets om te begin. 1464 01:00:06,160 --> 01:00:08,840 2 bottels van bier, 1 bottel bier. 1465 01:00:08,840 --> 01:00:09,370 Reg lyk. 1466 01:00:09,370 --> 01:00:10,100 Ja. 1467 01:00:10,100 --> 01:00:13,900 So daar het ons het 'n baie meer bondige oplossing. 1468 01:00:13,900 --> 01:00:16,020 So ook, as jy meer gemaklik met C, nie 1469 01:00:16,020 --> 01:00:18,630 noodwendig met die eerste pset of selfs 2, maar 1470 01:00:18,630 --> 01:00:21,170 besef dat hierdie konstrukte ons kan nie toelaat dat dinge om ooit te doen 1471 01:00:21,170 --> 01:00:22,810 meer elegant. 1472 01:00:22,810 --> 01:00:25,200 Laat ons nou 'n ander ding doen hier. 1473 01:00:25,200 --> 01:00:31,460 Laat my voort te gaan en maak return1.c. 1474 01:00:31,460 --> 01:00:34,340 Nou laat ons begin nog 'n probleem op te los in 'n manier wat 1475 01:00:34,340 --> 01:00:37,140 stel ons in staat om meer gesofistikeerde kode te skryf. 1476 01:00:37,140 --> 01:00:39,960 >> So hier is 'n eenvoudige klein program wie se doel in die lewe 1477 01:00:39,960 --> 01:00:41,870 is waardes inkrementeer. 1478 01:00:41,870 --> 01:00:43,100 En eintlik, laat ons 'n stap terug. 1479 01:00:43,100 --> 01:00:44,400 Laat ek dit handmatig doen. 1480 01:00:44,400 --> 01:00:52,200 Laat my sluit en int main (void). 1481 01:00:52,200 --> 01:00:53,450 En laat my noem dit increment.c. 1482 01:00:57,150 --> 01:00:58,570 En wat doen wat ek wil doen? 1483 01:00:58,570 --> 01:01:02,240 Ek gaan om voort te gaan en iets sê soos: - 1484 01:01:02,240 --> 01:01:04,280 noem ons die getalle dieselfde - 1485 01:01:04,280 --> 01:01:04,980 int x. 1486 01:01:04,980 --> 01:01:13,670 So int x kry 2 printf x is% d nuwe lyn, x. 1487 01:01:13,670 --> 01:01:16,780 So ek tik vinnig, maar soort van bekende dinge nou. 1488 01:01:16,780 --> 01:01:18,830 Dan gaan ek x + + te doen. 1489 01:01:18,830 --> 01:01:21,710 Dan gaan ek daardie selfde sin weer te druk. 1490 01:01:21,710 --> 01:01:24,550 En dan gaan ek 0 net die program om op te hou om terug te keer. 1491 01:01:24,550 --> 01:01:25,960 Alle reg, sodat dit is 'n program wat 1492 01:01:25,960 --> 01:01:26,960 inkremente 'n aantal. 1493 01:01:26,960 --> 01:01:29,830 Dit is eers gaan om iets te inisialiseer 2, en dan is dit 1494 01:01:29,830 --> 01:01:33,470 gaan om dit te inkrementeer en druk dit weer. 1495 01:01:33,470 --> 01:01:36,930 >> So laat ons hardloop inkrement, ongelooflik eenvoudige program. 1496 01:01:36,930 --> 01:01:40,940 Maar nou dink dat ek wil kubus die waarde, so doen 1497 01:01:40,940 --> 01:01:42,490 iets ietwat arbitrêre. 1498 01:01:42,490 --> 01:01:45,140 En ek eintlik wil doen x kry die kubus dit. 1499 01:01:45,140 --> 01:01:47,570 So ek kan gebruik wat die pow-funksie genoem, maar ek doen nie 1500 01:01:47,570 --> 01:01:48,650 regtig weet waar dit is nog. 1501 01:01:48,650 --> 01:01:50,580 So ek gaan om dit te doen die outydse manier. 1502 01:01:50,580 --> 01:01:54,550 x tye gelyk is aan die x maal x maal x. 1503 01:01:54,550 --> 01:01:56,880 So ek cubing die waarde te vermenigvuldig op sigself weer 1504 01:01:56,880 --> 01:02:00,440 en weer en weer, sodat ons die krag kry 1505 01:02:00,440 --> 01:02:02,050 van 3 in hierdie geval. 1506 01:02:02,050 --> 01:02:06,000 So nou die getalle wat ek moet druk moet wees, soos ons sal sien 1507 01:02:06,000 --> 01:02:08,450 hier - maak inkrement, so dit is eintlik nie regtig inkrementeer 1508 01:02:08,450 --> 01:02:10,260 nie, maar ons sal die naam uitlos - 1509 01:02:10,260 --> 01:02:11,590 2 en dan 8. 1510 01:02:11,590 --> 01:02:17,670 Nou, ons het die begin van 'n geleentheid vir verfyning 1511 01:02:17,670 --> 01:02:21,570 hier, waardeur hierdie cubing ding van 'n getal te vermenigvuldig 1512 01:02:21,570 --> 01:02:24,680 deur self deur homself deur self voel soos hierdie dalk net wees 1513 01:02:24,680 --> 01:02:27,920 nuttig as 'n funksie te hê, net soos iemand besluit 1514 01:02:27,920 --> 01:02:30,430 jare gelede - jy weet, soort van nuttige indien een van ons sit 1515 01:02:30,430 --> 01:02:33,120 en skryf printf so dat die res van die wêreld dit kan gebruik, 1516 01:02:33,120 --> 01:02:36,160 hoekom ons sit nie en skryf 'n funksie genoem kubus 1517 01:02:36,160 --> 01:02:39,250 wat nie hierdie cubing vir ons, sodat ons nie met die hand te 1518 01:02:39,250 --> 01:02:41,500 die uitvoering van die idee van die cubing waardes hier? 1519 01:02:41,500 --> 01:02:44,040 >> So 'n eenvoudige voorbeeld, maar laat ons gaan voort en gebruik dit is soos 'n 1520 01:02:44,040 --> 01:02:46,280 geleentheid om ons eie funksie te skryf. 1521 01:02:46,280 --> 01:02:49,110 So tot dusver het ons slegs gebruik hoof, en ons het gebruik om ander 1522 01:02:49,110 --> 01:02:51,780 mense se funksies, maar ons het ons eie nie beskrywe. 1523 01:02:51,780 --> 01:02:52,650 So hier gaan ons. 1524 01:02:52,650 --> 01:02:56,330 Ek gaan om voort te gaan en skryf 'n funksie genoem kubus. 1525 01:02:56,330 --> 01:02:58,490 En ek gaan om dit 'n inset te neem. 1526 01:02:58,490 --> 01:03:02,070 Sodat sy insette is gaan na 'n heelgetal wees. 1527 01:03:02,070 --> 01:03:03,570 En waarvoor word dit gaan om dit te doen? 1528 01:03:03,570 --> 01:03:08,500 Dit gaan int uitset verklaar = insette keer insette 1529 01:03:08,500 --> 01:03:09,880 keer insette. 1530 01:03:09,880 --> 01:03:12,190 En dan is dit gaan om terug te keer dat die uitset. 1531 01:03:12,190 --> 01:03:14,500 En dan moet ek nou spesifiek wees. 1532 01:03:14,500 --> 01:03:16,820 Hierdie funksie is 'n int om terug te keer. 1533 01:03:16,820 --> 01:03:19,130 So hier is dan hoe jy jou eie funksies wil skryf. 1534 01:03:19,130 --> 01:03:20,850 Jy vir die eerste besluit wat is die naam van jou 1535 01:03:20,850 --> 01:03:21,720 funksie gaan wees. 1536 01:03:21,720 --> 01:03:23,964 En oor die algemeen, iets verduidelikende is goed, so ek sal 1537 01:03:23,964 --> 01:03:25,060 noem dit kubus. 1538 01:03:25,060 --> 01:03:27,180 Dan moet jy spesifiseer hoe dit gaan om terug te keer, wat is 1539 01:03:27,180 --> 01:03:28,240 sy produksie gaan wees. 1540 01:03:28,240 --> 01:03:29,595 En ons het nie dat baie opsies nie. 1541 01:03:29,595 --> 01:03:32,260 Int, char, vlot, Bool, string. 1542 01:03:32,260 --> 01:03:34,260 Vir nou, ek gaan om vas te hou met 'n int, want ek wil dit 1543 01:03:34,260 --> 01:03:35,880 'n heelgetal is om terug te keer. 1544 01:03:35,880 --> 01:03:38,770 Dan moet jy spesifiseer wat sy insette, indien enige, is. 1545 01:03:38,770 --> 01:03:41,570 En as kubus neem om 'n argument, iets tussen 1546 01:03:41,570 --> 01:03:44,970 hakies, moet jy daardie argument 'n naam gee, sodat 1547 01:03:44,970 --> 01:03:47,860 jy kan noem dit iets soos jy implementering of skryf 1548 01:03:47,860 --> 01:03:50,550 hierdie funksie, en jy het om te gee dit 'n soort, wat in hierdie 1549 01:03:50,550 --> 01:03:51,810 geval gaan wees int. 1550 01:03:51,810 --> 01:03:54,690 Dus, in kort, kubus is 'n funksie wat 'n heelgetal 1551 01:03:54,690 --> 01:03:57,560 as inset en opbrengste 'n heelgetal as afvoer. 1552 01:03:57,560 --> 01:03:59,240 >> So, wat doen dit met daardie insette? 1553 01:03:59,240 --> 01:04:03,710 Wel, in line 14, het ek 'n veranderlike genoem uitset verklaar, en ek 1554 01:04:03,710 --> 01:04:07,410 wys dit die waarde, inset keer insette keer insette. 1555 01:04:07,410 --> 01:04:11,490 En dan het ek terug uitset. 1556 01:04:11,490 --> 01:04:14,890 So hoe kan ek dit dan? 1557 01:04:14,890 --> 01:04:19,210 Wat kan ek hierdie uitgelig karakters op die lyn 1558 01:04:19,210 --> 01:04:21,006 7 word, dink jy? 1559 01:04:21,006 --> 01:04:21,800 Gehoor: [onhoorbaar]. 1560 01:04:21,800 --> 01:04:25,570 David J. Malan: Ja, so 'n kubus van x. 1561 01:04:25,570 --> 01:04:28,290 So is x 'n veranderlike, wat beteken dat dit het 'n paar waarde. 1562 01:04:28,290 --> 01:04:30,190 Gelukkig, dit is van die tipe heelgetal. 1563 01:04:30,190 --> 01:04:34,280 En omdat x is 'n int, dit beteken dat ek dit kan slaag in die kubus. 1564 01:04:34,280 --> 01:04:39,500 En selfs al het ek die oorheersende die waarde van x met die waarde 1565 01:04:39,500 --> 01:04:42,780 kubus x, soos die geval was tot dusver, enige tyd wat jy 1566 01:04:42,780 --> 01:04:46,150 gelyke teken en 'n lyn van kode, die dinge op die regte 1567 01:04:46,150 --> 01:04:49,090 sal uitgevoer word en dan kry wat aan die 1568 01:04:49,090 --> 01:04:50,150 waarde aan die linkerkant. 1569 01:04:50,150 --> 01:04:52,950 So is die volgorde van bewerkings is as sou ons hoop. 1570 01:04:52,950 --> 01:04:56,620 So werk dit? 1571 01:04:56,620 --> 01:04:58,410 Wel, laat ek gaan af hier. 1572 01:04:58,410 --> 01:04:59,970 Laat my my terminale venster oop te maak. 1573 01:04:59,970 --> 01:05:03,610 Laat my inkrement maak, Enter. 1574 01:05:03,610 --> 01:05:07,140 "Implisiete verklaring van funksie" kubus "is ongeldig 1575 01:05:07,140 --> 01:05:13,700 C99 "As 'n eenkant, C99 verwys na die taal C soos dit was 1576 01:05:13,700 --> 01:05:16,790 omskryf in 1999, wat was 'n update oor die weergawe van 1577 01:05:16,790 --> 01:05:19,360 1989, wat is 'n update oor die oorspronklike. 1578 01:05:19,360 --> 01:05:21,740 So dit is al wat dit beteken. 1579 01:05:21,740 --> 01:05:24,250 >> So, wat beteken dit dat "implisiete verklaring van 1580 01:05:24,250 --> 01:05:26,790 funksie 'kubus' is ongeldig "Dit is reg hier? 1581 01:05:26,790 --> 01:05:28,430 Dit is reg daar in lyn 12. 1582 01:05:28,430 --> 01:05:30,460 Gehoor: [onhoorbaar]. 1583 01:05:30,460 --> 01:05:30,730 David J. Malan: Wat is dit? 1584 01:05:30,730 --> 01:05:32,470 Gehoor: Dit is nie voor die aangesig van die. 1585 01:05:32,470 --> 01:05:33,540 David J. Malan: Dit is nie voor die aangesig van die. 1586 01:05:33,540 --> 01:05:34,740 So dit is die ding. 1587 01:05:34,740 --> 01:05:38,190 C is 'n soort van dom, of C kompileerders is soort van dom. 1588 01:05:38,190 --> 01:05:41,060 Hulle het regtig net doen wat jy vertel om dit te doen nie. 1589 01:05:41,060 --> 01:05:44,770 En hulle in die besonder, lees net jou kode bo na onder, 1590 01:05:44,770 --> 01:05:45,620 links na regs. 1591 01:05:45,620 --> 01:05:49,140 So as die samesteller, klang, is die lees van jou kode, lyn 1, 1592 01:05:49,140 --> 01:05:50,120 figure uit hoe om dit te doen. 1593 01:05:50,120 --> 01:05:50,940 O, hier kom hoof. 1594 01:05:50,940 --> 01:05:53,000 Goed, laat ek gaan voort en verklaar 'n veranderlike x. 1595 01:05:53,000 --> 01:05:54,160 Laat my druk iets. 1596 01:05:54,160 --> 01:05:55,890 Line 7, wat die heck is kubus? 1597 01:05:55,890 --> 01:05:58,230 Dit is nie verklaar in stdio.h. 1598 01:05:58,230 --> 01:06:00,950 Dit kom nie met C. Ek het geen idee wat om te doen nie. 1599 01:06:00,950 --> 01:06:03,960 En so kletteren bails net en gesluit met die fout boodskap. 1600 01:06:03,960 --> 01:06:05,850 Sodat ons kan hierdie probleem oplos in 'n paar maniere. 1601 01:06:05,850 --> 01:06:10,530 Ons kan leer geratel wat kubus is deur net die beweging waar die 1602 01:06:10,530 --> 01:06:11,820 verklaring is. 1603 01:06:11,820 --> 01:06:14,640 So ek gesny en geplak dit bo-hoof. 1604 01:06:14,640 --> 01:06:17,770 Nou besef dat net omdat hoof is nie meer eerste, dit is 1605 01:06:17,770 --> 01:06:19,150 nog steeds uitgevoer word by verstek. 1606 01:06:19,150 --> 01:06:20,060 Main is die hoof. 1607 01:06:20,060 --> 01:06:21,022 Dit is die naam van die standaard funksie. 1608 01:06:21,022 --> 01:06:22,930 Dit maak nie saak waar dit in 'n lêer. 1609 01:06:22,930 --> 01:06:26,910 Maar ten minste nou kletteren kubus gesien het voor ek dit gebruik. 1610 01:06:26,910 --> 01:06:28,500 So laat ons sien as die geratel is nou gelukkiger. 1611 01:06:28,500 --> 01:06:31,410 Maak inkrement, het dit stel hierdie tyd. 1612 01:06:31,410 --> 01:06:33,060 >> Laat ek hardloop inkrement. 1613 01:06:33,060 --> 01:06:34,810 En inderdaad, dit blyk te werk. 1614 01:06:34,810 --> 01:06:36,810 Nou, kan jy kom met scenario's uiteindelik waar 1615 01:06:36,810 --> 01:06:38,650 dit is nie haalbaar om elke funksie te sit 1616 01:06:38,650 --> 01:06:39,740 bo elke ander funksie. 1617 01:06:39,740 --> 01:06:42,140 Jy sal vassit in hierdie oneindige lus in werklikheid, 1618 01:06:42,140 --> 01:06:43,480 waar hierdie man wil hier, maar dit 1619 01:06:43,480 --> 01:06:44,390 man nodig het om daar te wees. 1620 01:06:44,390 --> 01:06:45,830 So dit werk nie altyd nie. 1621 01:06:45,830 --> 01:06:49,020 So gelukkig, C het 'n meer elegante oplossing. 1622 01:06:49,020 --> 01:06:50,790 Ek gaan om dit terug te sit waar dit is, net omdat ek 1623 01:06:50,790 --> 01:06:53,390 verkies, as 'n saak van beginsel, dat die vernaamste altyd 1624 01:06:53,390 --> 01:06:55,550 aan die bokant, want dit is net lekker om te sien wat hierdie program 1625 01:06:55,550 --> 01:06:56,920 nie by verstek. 1626 01:06:56,920 --> 01:06:58,950 En wat ek gaan om te doen hier is verklaar wat genoem word 1627 01:06:58,950 --> 01:07:00,250 'n prototipe. 1628 01:07:00,250 --> 01:07:05,730 Ek gaan weer my kubus funksie deur letterlik verklaar 1629 01:07:05,730 --> 01:07:07,180 kopieer en plak. 1630 01:07:07,180 --> 01:07:08,290 Eintlik is dit nie letterlik nie. 1631 01:07:08,290 --> 01:07:13,060 So letterlik kopieer en plak lyn 15 1632 01:07:13,060 --> 01:07:15,160 bo lyn 6. 1633 01:07:15,160 --> 01:07:17,010 Dit maak nie saak watter lyn hierdie eindig op. 1634 01:07:17,010 --> 01:07:18,380 Dit gebeur te wees op die lyn 4. 1635 01:07:18,380 --> 01:07:19,950 Maar dit hoef te wees voor belangrikste. 1636 01:07:19,950 --> 01:07:21,150 Maar let op die verskil. 1637 01:07:21,150 --> 01:07:24,100 Line 4 eindig met 'n kommapunt, wat beteken hey, 1638 01:07:24,100 --> 01:07:27,510 Klang, neem my woord vir dit, dat daar 'n funksie 1639 01:07:27,510 --> 01:07:31,350 kubus dit neem 'n int en terugstuur 'n int. 1640 01:07:31,350 --> 01:07:33,020 Maar ek is nie jou gaan vertel wat dit nog is. 1641 01:07:33,020 --> 01:07:35,180 Weet net dat ek belowe om jou te vertel. 1642 01:07:35,180 --> 01:07:38,490 En inderdaad, nou is dit is goed dat dit hieronder neer. 1643 01:07:38,490 --> 01:07:41,275 >> So, dit is oor die algemeen beter, want dan aan die bokant van 1644 01:07:41,275 --> 01:07:44,240 jou lêer, jy kan net aframmel, vinnige-vuur, een lyn 1645 01:07:44,240 --> 01:07:46,470 elk, wat die name van jou funksies, wat hulle 1646 01:07:46,470 --> 01:07:49,120 insette is, wat hul uitsette is. 1647 01:07:49,120 --> 01:07:52,210 En om meer duidelik te wees, insette beteken gewoonlik argument of 1648 01:07:52,210 --> 01:07:54,110 parameter, sinoniem. 1649 01:07:54,110 --> 01:07:56,890 Uitset beteken terugkeer waarde, wat dit doen nie 1650 01:07:56,890 --> 01:07:58,700 hand terug na my. 1651 01:07:58,700 --> 01:08:03,420 So in hierdie geval hier, kubus verklaar is aan die bokant, maar 1652 01:08:03,420 --> 01:08:06,940 omskryf, andersins bekend as geïmplementeer word, aan die onderkant. 1653 01:08:06,940 --> 01:08:09,620 So nou, laat ons gaan terug hier en weer uit te voer hierdie. 1654 01:08:09,620 --> 01:08:13,430 So laat my nou voort te gaan en weer uit te voer maak, weer uit te voer inkrement. 1655 01:08:13,430 --> 01:08:16,500 En dit lyk nou te werk net 'n boete. 1656 01:08:16,500 --> 01:08:19,450 So ons kan nou voortgaan en faktor uit iets soos die 1657 01:08:19,450 --> 01:08:23,720 bier voorbeeld in hierdie vierde weergawe. 1658 01:08:23,720 --> 01:08:25,590 So laat my scroll down hier. 1659 01:08:25,590 --> 01:08:28,149 En let op dat ek soort van hierdie les ter harte geneem het nou net. 1660 01:08:28,149 --> 01:08:31,140 Die feit dat ek dieselfde strofe sing weer en 1661 01:08:31,140 --> 01:08:34,130 weer en weer, dieselfde refrein lyn in die liedjie, voel 1662 01:08:34,130 --> 01:08:36,439 graag hoekom nie ek faktor wat uit in 'n funksie? 1663 01:08:36,439 --> 01:08:38,470 En inderdaad, sou dit een van die motiverings. 1664 01:08:38,470 --> 01:08:40,960 Behalwe die feit dat iemand anders in die wêreld wil dalk 1665 01:08:40,960 --> 01:08:42,390 'n kubus funksie te gebruik - 1666 01:08:42,390 --> 01:08:44,560 wat is 'n goeie rede om iets aan 'n faktorontleding en skryf jou 1667 01:08:44,560 --> 01:08:45,720 eie persoonlike funksie - 1668 01:08:45,720 --> 01:08:48,720 indien daar is 'n stuk van die kode in jou program wat net maak 1669 01:08:48,720 --> 01:08:51,370 konseptuele sin, dat jy soort van wil gee dit 'n 1670 01:08:51,370 --> 01:08:53,740 naam - soos in hierdie geval, koor - 1671 01:08:53,740 --> 01:08:57,380 dan kan jy skryf insgelyks dat as 'n aparte funksie. 1672 01:08:57,380 --> 01:08:59,560 Jy hoef nie alles in die hoof te skryf, al is dit net 1673 01:08:59,560 --> 01:09:02,609 voel skoner dit uit te skei en gee dit 'n naam. 1674 01:09:02,609 --> 01:09:05,529 >> So in hierdie geval hier, kennis dat ek a comment bo 1675 01:09:05,529 --> 01:09:06,859 hierdie funksie wat net sing oor die 1676 01:09:06,859 --> 01:09:08,630 gespesifiseerde aantal bottels. 1677 01:09:08,630 --> 01:09:10,609 Let op hier dat ek nie nodig het om dit te noem 1678 01:09:10,609 --> 01:09:12,520 dinge inset en uitset. 1679 01:09:12,520 --> 01:09:16,090 Om die waarheid te sê, hierdie tyd het ek net genoem my insette b vir bottel. 1680 01:09:16,090 --> 01:09:19,960 En hier sien, nietig suggereer wat? 1681 01:09:19,960 --> 01:09:21,309 Dit chorus - 1682 01:09:21,309 --> 01:09:22,660 Gehoor: Is dit nie terugkeer nie. 1683 01:09:22,660 --> 01:09:23,870 David J. Malan: Maak nie terugkeer nie 'n waarde. 1684 01:09:23,870 --> 01:09:26,800 En inderdaad, funksies nie waardes om terug te keer. 1685 01:09:26,800 --> 01:09:28,060 Hulle kan net iets doen. 1686 01:09:28,060 --> 01:09:30,270 Hulle kan hê wat die newe-effekte is geroep, wat in hierdie 1687 01:09:30,270 --> 01:09:33,109 geval is net 'n hele klomp van die druk op die skerm. 1688 01:09:33,109 --> 01:09:36,580 So let dat hierdie kode hier, ek het net letterlik gesteel het 1689 01:09:36,580 --> 01:09:37,680 die vorige voorbeeld. 1690 01:09:37,680 --> 01:09:39,930 Die enigste verskil is in plaas van die gebruik van i as my 1691 01:09:39,930 --> 01:09:42,890 veranderlike, ek nou met behulp van b as my veranderlike. 1692 01:09:42,890 --> 01:09:45,880 So ek het b af hier, ek het b af hier, ek het b 1693 01:09:45,880 --> 01:09:47,109 minus 1 af hier. 1694 01:09:47,109 --> 01:09:49,279 Maar die kode is presies dieselfde. 1695 01:09:49,279 --> 01:09:52,529 Maar net om julle nou te wys hoe ons dit kan gebruik, laat my gaan 1696 01:09:52,529 --> 01:09:56,780 voor en eintlik verander dat dit 'n for-lus. 1697 01:09:56,780 --> 01:10:03,850 (int i = n; i> n; i -). 1698 01:10:03,850 --> 01:10:06,230 >> So ek het dat van ons vorige voorbeeld gesteel. 1699 01:10:06,230 --> 01:10:08,970 Voorheen, is dit in lyn 37, dat ek sou begin het 1700 01:10:08,970 --> 01:10:10,640 hierdie irriterende liedjie te sing. 1701 01:10:10,640 --> 01:10:15,810 Maar in plaas daarvan, Ek gaan net nou bel koor van i. 1702 01:10:15,810 --> 01:10:16,870 Gedoen het. 1703 01:10:16,870 --> 01:10:20,260 So nou in elke iterasie van hierdie lus, ek noem dit 1704 01:10:20,260 --> 01:10:22,220 funksie, koor, dat ek gebeur het om te skryf. 1705 01:10:22,220 --> 01:10:24,110 Dit was nie geskryf deur iemand anders jare gelede. 1706 01:10:24,110 --> 01:10:27,930 Maar koor, intussen, gebruik printf te druk 1707 01:10:27,930 --> 01:10:29,840 uit hierdie vier lyne. 1708 01:10:29,840 --> 01:10:32,720 Maar die feit dat ek koor is roep weer en weer in 'n 1709 01:10:32,720 --> 01:10:35,900 lus beteken dat ek gaan kry, heel aan die einde, die 1710 01:10:35,900 --> 01:10:39,310 presies dieselfde liedjie as Ek het tot dusver. 1711 01:10:39,310 --> 01:10:42,130 Dus, in kort, as ek nou terug kyk op my kode, selfs al 1712 01:10:42,130 --> 01:10:44,240 funksioneel is dit ekwivalent, sien dat dit 1713 01:10:44,240 --> 01:10:46,020 begin om selfs meer leesbare. 1714 01:10:46,020 --> 01:10:48,410 Ek weet nie presies hoe getint 1715 01:10:48,410 --> 01:10:49,250 geïmplementeer word. 1716 01:10:49,250 --> 01:10:52,050 Om eerlik te wees, weet ek nie hoe koor geïmplementeer word. 1717 01:10:52,050 --> 01:10:52,970 Maar dit maak nie vir my saak nie. 1718 01:10:52,970 --> 01:10:55,620 Ek gee nie om nie, want nou kan ek soort van, as 'n mens, lees 1719 01:10:55,620 --> 01:10:57,050 van bo na onder. 1720 01:10:57,050 --> 01:10:59,950 En omdat die funksies is vernoem volgens wat hulle 1721 01:10:59,950 --> 01:11:02,910 doen, my kode is toenemend leesbaar. 1722 01:11:02,910 --> 01:11:05,190 En as ons programme kry veel meer kompleks - 1723 01:11:05,190 --> 01:11:07,220 deur die einde van die semester se, jy skryf honderde van lyne 1724 01:11:07,220 --> 01:11:10,970 van kode in tale soos PHP en JavaScript en dies meer - 1725 01:11:10,970 --> 01:11:13,550 jy sal vind dat dit is baie makliker as om tred te hou van 1726 01:11:13,550 --> 01:11:14,080 wat jy gedoen het. 1727 01:11:14,080 --> 01:11:15,810 En wanneer jy begin saam met vriende of 1728 01:11:15,810 --> 01:11:19,010 vennote of kollegas, sal jy in staat wees om baie meer te skryf 1729 01:11:19,010 --> 01:11:22,910 massiewe programme deur te begin om hierdie basiese uit te oefen 1730 01:11:22,910 --> 01:11:23,990 boublokke. 1731 01:11:23,990 --> 01:11:25,550 >> Dus met wat gesê het, waarom ons nie noem dit 'n dag? 1732 01:11:25,550 --> 01:11:27,190 En ons sal sien wat jy op Woensdag. 1733 01:11:27,190 --> 01:11:33,611 [Applous]