1 00:00:08,119 --> 00:00:11,630 [Powered by Google Translate] DAVID J. Malan: Bone, ĉi tiu estas CS50, kaj ĉi tiu estas la 2 00:00:11,630 --> 00:00:14,790 komenci de semajno du. 3 00:00:14,790 --> 00:00:16,300 Dankon. 4 00:00:16,300 --> 00:00:19,000 Ni komencos ĉi tie kun alvokon. 5 00:00:19,000 --> 00:00:30,005 Mi volis marki 617-Bug-CS50. 6 00:00:30,005 --> 00:00:31,230 CS50: Ĉi tiu estas CS50. 7 00:00:31,230 --> 00:00:33,930 Por pramo Knabo, klaku 1. 8 00:00:33,930 --> 00:00:36,660 Por ekigi plus premi 9. 9 00:00:36,660 --> 00:00:38,180 DAVID J. Malan: Do li diris al pramo Knabo, gazetaro 1. 10 00:00:38,180 --> 00:00:41,560 Do ni tuj premi 1. 11 00:00:41,560 --> 00:00:43,230 CS50: Kio estas via deveno? 12 00:00:43,230 --> 00:00:45,340 Por quad, premu 1. 13 00:00:45,340 --> 00:00:47,080 Mather, gazetaro 2. 14 00:00:47,080 --> 00:00:49,240 Boylston, gazetaro 3. 15 00:00:49,240 --> 00:00:51,280 Lamont, gazetaro 4. 16 00:00:51,280 --> 00:00:53,210 Mem Hall, gazetaro 5. 17 00:00:53,210 --> 00:00:55,660 Por ekigi plus premi 0. 18 00:00:55,660 --> 00:00:59,590 DAVID J. Malan: Ni premu 1 por quad. 19 00:00:59,590 --> 00:01:03,610 CS50: Sekva pramo lasas nuna minuto, je 1:10 am, kaj 20 00:01:03,610 --> 00:01:09,820 tiam, je 1:20 PM, 1:30 am, 1:40 PM. 21 00:01:09,820 --> 00:01:12,030 Ĉi tiu estas CS50. 22 00:01:12,030 --> 00:01:15,570 >> DAVID J. Malan: Do ĉi tiu estas CS50 vocxo. 23 00:01:15,570 --> 00:01:18,030 Kaj estas ekzemplo de la varoj de fina projektoj, por 24 00:01:18,030 --> 00:01:19,500 Ekzemple, vi povas mordi ekstere al 25 00:01:19,500 --> 00:01:20,600 Fine de la semestro. 26 00:01:20,600 --> 00:01:23,840 Ekzemple, ke ekzistas shuttleboy.cs50.net - 27 00:01:23,840 --> 00:01:28,200 fakte projekto, kiun mi unue verkis post preni CS51 28 00:01:28,200 --> 00:01:29,740 reen kiam mi estis studento. 29 00:01:29,740 --> 00:01:32,250 Kaj la inspiro tie estis tiam, ĉiuj ili havis estis 30 00:01:32,250 --> 00:01:34,320 la presita buso horarojn, kaj ne estis 31 00:01:34,320 --> 00:01:35,970 nocio de looking aĵojn en linio. 32 00:01:35,970 --> 00:01:38,730 Kaj do mi ia kolombo en unu semajnfino, verŝis tra la 33 00:01:38,730 --> 00:01:41,460 presita horaro, kaj portita al komputila programo. 34 00:01:41,460 --> 00:01:43,790 En la momento, la komputila programo okazis al esti skribita 35 00:01:43,790 --> 00:01:47,110 en C. Kaj vi efektive kuris ĝin tajpante pramo Knabo ĉe 36 00:01:47,110 --> 00:01:48,600 palpebrumante instigas kiel ni estis farante tiel for. 37 00:01:48,600 --> 00:01:50,450 Sed tra la jaroj, ĝi estas evoluis instantáneo 38 00:01:50,450 --> 00:01:51,390 mesaĝado bot. 39 00:01:51,390 --> 00:01:53,970 Oni evoluis pli lastatempe en ĉi tiu retejo, enen 40 00:01:53,970 --> 00:01:57,720 SMS-bazita ilo, tiel kiel en ĉi tiu voĉo-bazita ilo. 41 00:01:57,720 --> 00:02:00,170 Kaj jen estas por sugesti al la varoj de aĵoj kiujn vi povas 42 00:02:00,170 --> 00:02:02,380 faru por vi mem per semestro la fino. 43 00:02:02,380 --> 00:02:05,490 >> Ekzemple, tie, la SMS versio de Pramo Knabo okazas 44 00:02:05,490 --> 00:02:06,510 operacii kiel sekvas. 45 00:02:06,510 --> 00:02:10,880 Se, en via poŝtelefono, vi sendu mesaĝon de teksto al 41411 kaj 46 00:02:10,880 --> 00:02:14,300 tiam sendi la specialajn simbolon sboy, por pramo Knabo, 47 00:02:14,300 --> 00:02:18,350 sekvata de A kaj B, kie A estas origino kaj B estas 48 00:02:18,350 --> 00:02:19,070 destino - 49 00:02:19,070 --> 00:02:21,030 ekzemple, Boylston Spaco Quad - 50 00:02:21,030 --> 00:02:23,330 kion vi devas reiri ene de kelkaj sekundoj estas teksto 51 00:02:23,330 --> 00:02:25,820 mesaĝo de Pramo Knabo diras al vi precize kiam la 52 00:02:25,820 --> 00:02:28,990 venontaj pramoj estas, de tiu punkto A tuj ke 53 00:02:28,990 --> 00:02:29,640 punkto B. 54 00:02:29,640 --> 00:02:32,510 Kaj jen estas pli ĝenerala ekzemplo de kio konata kiel 55 00:02:32,510 --> 00:02:33,920 uzante API. 56 00:02:33,920 --> 00:02:36,930 >> Do ekzemple, ĉi tie estas nur shuttleboy.cs50.net, la 57 00:02:36,930 --> 00:02:39,300 reala reta personigo de ĉi. 58 00:02:39,300 --> 00:02:42,480 Sed la datumoj kiuj substrekas ĉi tiu kaj aliaj apps ke CS50 59 00:02:42,480 --> 00:02:45,560 disvolvis estas ĉiuj elmontris al ĉiuj ĉi tie en la formo 60 00:02:45,560 --> 00:02:49,340 de APIs, apliko programado interfacoj. 61 00:02:49,340 --> 00:02:52,220 Kaj tio estas nur fantazio maniero diri ke la homoj kiel ni en 62 00:02:52,220 --> 00:02:56,010 la Interreto kaj aliaj pasigis iom da tempo krei 63 00:02:56,010 --> 00:02:59,970 programaro, kiun vi povas uzi por kapti datumojn de ni kaj 64 00:02:59,970 --> 00:03:02,510 tiam konstrui vian propran aplikoj sur supro 65 00:03:02,510 --> 00:03:03,840 de tiu aro de datumoj. 66 00:03:03,840 --> 00:03:06,610 Do ekzemple, ĉi pramo Knabo API paĝon tie ĉi, kion 67 00:03:06,610 --> 00:03:09,390 hazarde estas en la CS50 manlibro, esence dokumentoj 68 00:03:09,390 --> 00:03:13,080 kiel vi povas iri sur petante CS50 serviloj por datumoj. 69 00:03:13,080 --> 00:03:16,240 Ekzemple, se vi estas familiara kun CSV-dosieroj, komo 70 00:03:16,240 --> 00:03:18,940 disigitaj valoroj, tiuj estas nur speco de rapida kaj malpura 71 00:03:18,940 --> 00:03:20,310 Excel-kiel dosierojn. 72 00:03:20,310 --> 00:03:23,110 Do vi povas peti pramo Knabo por ĉiuj el la datumoj de ĉiuj 73 00:03:23,110 --> 00:03:25,090 domoj kaj iliaj GPS koordinatoj, kaj vi ricevos 74 00:03:25,090 --> 00:03:27,300 dorso, esence, al ŝtono kiel tiu kiun 75 00:03:27,300 --> 00:03:30,820 vi povas tiam legis en programo de via propra kaj poste 76 00:03:30,820 --> 00:03:33,250 generi rezultoj, kiel pramo Knabo mem 77 00:03:33,250 --> 00:03:34,160 pasas al farante. 78 00:03:34,160 --> 00:03:37,030 Por tiuj pli familiara, pli moderna datumoj reprezentoj 79 00:03:37,030 --> 00:03:39,420 inkluzivas JSON, JavaScript Objekto Skribmaniero. 80 00:03:39,420 --> 00:03:40,620 Io revenos al vi al 81 00:03:40,620 --> 00:03:41,720 Fine de la semestro. 82 00:03:41,720 --> 00:03:45,440 >> Sed denove, ĉi tiu estas nur unu el pluraj de CS50 propra API. 83 00:03:45,440 --> 00:03:48,320 Kaj la ekscita afero estas nun, ĉi tiuj tagoj, Facebook kaj 84 00:03:48,320 --> 00:03:51,110 Twitter kaj Google kaj preskaux cxiu populara retejo el 85 00:03:51,110 --> 00:03:54,130 tie havas ian API, kiu signifas, se vi legis la 86 00:03:54,130 --> 00:03:56,620 dokumentado sur lia retpaĝaro, vi subskribas por 87 00:03:56,620 --> 00:03:59,980 konton, vi povas tiam komencos skribi programaron sur 88 00:03:59,980 --> 00:04:03,680 kion ajn iloj aŭ datumoj tiu kompanio ne provizas. 89 00:04:03,680 --> 00:04:06,210 Kaj tiel unu el niaj propraj instruado uloj paron jaroj malantaŭen 90 00:04:06,210 --> 00:04:07,620 skribis Mac versio de ĉi. 91 00:04:07,620 --> 00:04:10,990 Do je la ligilo titolita Mac ĉi tie supre maldekstre, vi povas efektive 92 00:04:10,990 --> 00:04:13,940 elŝuti Mac OS fenestraĵo kiu kuras sur viaj Mac fari la 93 00:04:13,940 --> 00:04:15,040 sama specoj de aferoj. 94 00:04:15,040 --> 00:04:17,970 Do ĝi ĉion pri konstruado sur supro de datenaroj kiel tiuj. 95 00:04:17,970 --> 00:04:21,839 Sed pli en tiu direkto al la fino de la semestro. 96 00:04:21,839 --> 00:04:25,780 >> Do estu la plonĝi en reala rapidu cimon, nur por ia akiri 97 00:04:25,780 --> 00:04:27,990 aĵoj hejtis hodiaŭ, kaj pensi reen sur iu el la 98 00:04:27,990 --> 00:04:29,660 aĵoj ni rigardis lasta semajno. 99 00:04:29,660 --> 00:04:32,840 En aparta, lasu min antaŭeniri kaj tiros, diru, 100 00:04:32,840 --> 00:04:34,080 ĉi tiu ekzemplo tie. 101 00:04:34,080 --> 00:04:37,500 Buggy1.c, ĉi tiu estas disponebla en la kurso de afiŝinto se vi volas 102 00:04:37,500 --> 00:04:40,250 kiel elŝuti ĝin kaj poke ĉirkaŭ vi. 103 00:04:40,250 --> 00:04:43,520 Sed estu la zomi tie en ĉi tiu sufiĉe mallonga programo, kaj nur 104 00:04:43,520 --> 00:04:46,550 super-rapida recap de iuj el la bazaj blokoj ke 105 00:04:46,550 --> 00:04:48,880 ni vere tuj komencu prenante por sentado. 106 00:04:48,880 --> 00:04:51,860 >> Do la blua ŝtofo, en linioj 1 ĝis 9, estas nur 107 00:04:51,860 --> 00:04:53,670 softbalo demandoj. 108 00:04:53,670 --> 00:04:54,590 Do tiuj estas nur komentoj. 109 00:04:54,590 --> 00:04:56,230 Ili ne havas funkcian signifon. 110 00:04:56,230 --> 00:04:58,460 Sed ili estas komentoj en la senco ke ili estas notoj, ke 111 00:04:58,460 --> 00:05:02,010 Mi, la homo, farita al mi mem tiel ke en prelego kaj post 112 00:05:02,010 --> 00:05:04,340 prelego, mi povas vere memori kio tiu programo 113 00:05:04,340 --> 00:05:07,120 faras sen devi legi per ĝi linio por linio kaj 114 00:05:07,120 --> 00:05:08,990 amuzante historio en mia menso. 115 00:05:08,990 --> 00:05:11,000 Cetere, se mi transdonos tiun programon al iu alia kiel 116 00:05:11,000 --> 00:05:14,420 vi, estas multe pli klara al vi, ĉar de komentoj kiel ĉi tiu, 117 00:05:14,420 --> 00:05:16,680 kion la programo efektive faras, aŭ almenaŭ tio, kion la 118 00:05:16,680 --> 00:05:18,210 programo Laŭprognoze esti farante. 119 00:05:18,210 --> 00:05:20,760 Ĉu ĝi estas korekta estas alia afero entute. 120 00:05:20,760 --> 00:05:25,040 Nun, en C, kun plurliniaj komentoj, memori ke sur linio 121 00:05:25,040 --> 00:05:27,880 unu jen la magio simbolo, / *. 122 00:05:27,880 --> 00:05:30,380 Ĝi signifas tie venas la komenco de komento. 123 00:05:30,380 --> 00:05:34,560 Kaj nenio pli gravas ol vi atingas la finon finilo, 124 00:05:34,560 --> 00:05:36,700 kio estas * /, la malo. 125 00:05:36,700 --> 00:05:39,120 Do la fakto, ke mi havas 80-iuj neparaj steloj tien el 126 00:05:39,120 --> 00:05:41,550 maldekstre dekstren estas vere nur estetika detalo. 127 00:05:41,550 --> 00:05:43,370 Ĝi ne havas funkcian signifon. 128 00:05:43,370 --> 00:05:44,490 >> Nun kion pri linio 11? 129 00:05:44,490 --> 00:05:46,940 Kion tio do en lego la terminoj? 130 00:05:51,560 --> 00:05:52,540 Kio estas tio? 131 00:05:52,540 --> 00:05:54,280 Spektantaro: Inkluzivas la normo. 132 00:05:54,280 --> 00:05:54,740 DAVID J. Malan: Bone, vi bona. 133 00:05:54,740 --> 00:05:57,500 Do ĝi inkludas la stdio.h biblioteko. 134 00:05:57,500 --> 00:05:58,230 Do kion tio signifas? 135 00:05:58,230 --> 00:06:01,570 Nu, enen tiu dosiero, stdio.h, estas tuta aro da 136 00:06:01,570 --> 00:06:03,320 funkcio deklaroj - 137 00:06:03,320 --> 00:06:05,290 tio estas, kodo kiu iu alia skribis. 138 00:06:05,290 --> 00:06:08,160 Kaj perfekta ekzemplo de funkcio ke tio deklaris en 139 00:06:08,160 --> 00:06:10,250 stdio.h estas - 140 00:06:10,250 --> 00:06:11,980 kiu preferita de nun? 141 00:06:11,980 --> 00:06:14,300 Do printf, unu el la plej komunaj uzi, certe 142 00:06:14,300 --> 00:06:15,840 frue, de tiu biblioteko ekzistas. 143 00:06:15,840 --> 00:06:19,290 Se mi ekskludi tiun linion de kodo, Clang tuj krii 144 00:06:19,290 --> 00:06:22,550 ĉe mi ion pri uzante nedeklarita simbolo. 145 00:06:22,550 --> 00:06:24,930 Io ne deklarita estas probable la ŝlosilvorto, ĉar 146 00:06:24,930 --> 00:06:27,770 ni ne informis la tradukilo kio printf aspektas 147 00:06:27,770 --> 00:06:29,230 kiel se ni inkluzivas tiun linion. 148 00:06:29,230 --> 00:06:31,830 Kaj pli malsupren al la tero, vere, kion tiu linio diras estas 149 00:06:31,830 --> 00:06:34,890 malfermi tiu dosiero, stdio.h, kie ajn ĝi estas ĉe la servila 150 00:06:34,890 --> 00:06:38,200 malmola disko, aŭ la aparaton la malmola disko, kaj kopio-paston ĝin 151 00:06:38,200 --> 00:06:40,240 Dekstre en mian dosieron, sen mia 152 00:06:40,240 --> 00:06:41,730 devi fari tion permane. 153 00:06:41,730 --> 00:06:44,420 >> Nun, iam ni atingos cxi tie al ĉefa, antaŭ longa ni komencu 154 00:06:44,420 --> 00:06:46,900 ŝercoj aparte kio int kaj kion void estas. 155 00:06:46,900 --> 00:06:48,430 Sed nuntempe, ni rigardu la tri linioj 156 00:06:48,430 --> 00:06:50,350 ene 15 tra 17. 157 00:06:50,350 --> 00:06:52,250 Ĉi tie mi asertas kiel kalesxo. 158 00:06:52,250 --> 00:06:54,900 Linio 7 en mia komentoj diras "Should presi 10 159 00:06:54,900 --> 00:06:59,410 asteriskoj sed ne. "Kial ĉi ne presi, fakte, 160 00:06:59,410 --> 00:07:01,097 10 tiaj steloj? 161 00:07:01,097 --> 00:07:02,347 Spektantaro: [inaudible]. 162 00:07:05,210 --> 00:07:05,800 DAVID J. Malan: Ĝuste. 163 00:07:05,800 --> 00:07:08,720 Do rimarki ke ni komencas rakonti de 0. 164 00:07:08,720 --> 00:07:10,780 Kaj jen estas fakte konvencio en programado kaj 165 00:07:10,780 --> 00:07:13,230 komputiko pli ĝenerale, komencante por rakonti 166 00:07:13,230 --> 00:07:14,610 de 0 anstataŭ 1. 167 00:07:14,610 --> 00:07:16,690 Kaj jen vere nur derivas de la fakto ke, por 168 00:07:16,690 --> 00:07:18,940 Ekzemple, kiam ni havis ok personoj sur la scenejo, kiam 169 00:07:18,940 --> 00:07:20,680 neniu levante sian manon, ke ili 170 00:07:20,680 --> 00:07:22,340 ĉiuj efektive nuloj. 171 00:07:22,340 --> 00:07:24,260 Kaj tiel estas nur speco de komputila konvencio tiel, 172 00:07:24,260 --> 00:07:26,030 sekve, por komenci rakonti de 0. 173 00:07:26,030 --> 00:07:29,130 Se tio estas la plej malalta nombro povas reprezenti en duuma. 174 00:07:29,130 --> 00:07:32,270 >> Do jen ni komencis inicializar i al 0. 175 00:07:32,270 --> 00:07:34,230 Ni starigis i egala al 0. 176 00:07:34,230 --> 00:07:37,780 Sed tiam mi faris ĉi tiun eraron tie, dirante i estas malpli ol aŭ 177 00:07:37,780 --> 00:07:38,820 egala al 10. 178 00:07:38,820 --> 00:07:41,700 Sed se vi pensas ke per, se mi komencas ĉe 0 kaj tiam mi iros 179 00:07:41,700 --> 00:07:46,410 ĝis 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, mi fakte tuj 180 00:07:46,410 --> 00:07:49,980 presi 11 stelojn al la ekrano, ĉar mi iris 181 00:07:49,980 --> 00:07:52,410 al kaj egalaj al 10. 182 00:07:52,410 --> 00:07:55,090 Do la facilan solvon ĉi tie do estas kio? 183 00:07:55,090 --> 00:07:56,070 Spektantaro: [inaudible]. 184 00:07:56,070 --> 00:07:57,350 DAVID J. Malan: Just ŝanĝi ĝin al malpli ol. 185 00:07:57,350 --> 00:07:59,700 Se vi vere volas, vi povus fari tion. 186 00:07:59,700 --> 00:08:01,370 Sed ĝenerale, ke tio malaprobita. 187 00:08:01,370 --> 00:08:04,020 Kaj tiel komencas kalkuli de 0 estas nur io, kion vi devus 188 00:08:04,020 --> 00:08:05,510 tipe kutimiĝos. 189 00:08:05,510 --> 00:08:07,810 Nun, kio pri ĉi tiu tuta konstruo en kaj de sin? 190 00:08:07,810 --> 00:08:10,640 Ĉi tiu linio 15 demarks a por buklo. 191 00:08:10,640 --> 00:08:12,510 Do por estas ne funkcio. 192 00:08:12,510 --> 00:08:13,640 Estas nur komunikaĵo. 193 00:08:13,640 --> 00:08:16,180 Estas looping konstruo, kiel ni vidis en Scratch. 194 00:08:16,180 --> 00:08:17,600 Kaj ĝi havas tri partoj. 195 00:08:17,600 --> 00:08:19,740 Rimarku, ke estas la unua parto 196 00:08:19,740 --> 00:08:21,350 maldekstre de la punktokomo. 197 00:08:21,350 --> 00:08:24,200 Jen la meza parto en inter la du punktokomojn. 198 00:08:24,200 --> 00:08:26,250 Kaj tiam ekzistas la dekstra parto de la dekstra 199 00:08:26,250 --> 00:08:27,640 de la dua punktokomo. 200 00:08:27,640 --> 00:08:31,822 Nun, la unua de tiuj kiu faras kio? 201 00:08:31,822 --> 00:08:33,679 Spektantaro: [inaudible]. 202 00:08:33,679 --> 00:08:34,270 DAVID J. Malan: Back tie? 203 00:08:34,270 --> 00:08:34,816 Yeah? 204 00:08:34,816 --> 00:08:35,980 Spektantaro: inicialización. 205 00:08:35,980 --> 00:08:36,850 >> DAVID J. Malan: inicialización. 206 00:08:36,850 --> 00:08:37,840 Do kion tio signifas? 207 00:08:37,840 --> 00:08:40,690 Ni deklaras variablon vokis mi. 208 00:08:40,690 --> 00:08:43,840 Ĝi estas de tipo int, ĉar mi specifitaj int i. 209 00:08:43,840 --> 00:08:46,470 Kaj mi inicializar i al la valoro de 0. 210 00:08:46,470 --> 00:08:47,730 Do kio ĉi vere diras? 211 00:08:47,730 --> 00:08:50,680 Ĝi estas efektive dirante al la komputilo hey, donu al mi sufiĉe 212 00:08:50,680 --> 00:08:53,660 memoro, sufiĉa memoro RAM, por persvadi numeron, kaj tiam metis la 213 00:08:53,660 --> 00:08:56,130 nombro 0 en tiu bloko de RAM. 214 00:08:56,130 --> 00:08:59,100 Kaj kiel flanken, kiom granda estas int tipe, almenaŭ interne 215 00:08:59,100 --> 00:09:00,280 de la aparaton? 216 00:09:00,280 --> 00:09:01,000 Spektantaro: 32 bitoj. 217 00:09:01,000 --> 00:09:01,670 DAVID J. Malan: 32 bitoj. 218 00:09:01,670 --> 00:09:04,890 Do tio signifas al mi 32 bitoj, alie sciata kiel 4 bajtoj, 219 00:09:04,890 --> 00:09:07,250 kaj alfortikigu la valoro 0 en ĝin, kio estas sufiĉe facila ĉar 220 00:09:07,250 --> 00:09:09,110 ĝi simple signifas starigis la tutan bitoj al 0. 221 00:09:09,110 --> 00:09:11,690 >> Do nun, la dua parto jen la kondiĉo. 222 00:09:11,690 --> 00:09:14,590 Kaj la kondiĉo, kiel la nomo sugestas, estas kio kontrolis 223 00:09:14,590 --> 00:09:18,100 denove kaj denove kaj denove pri tio, ĉu ĝi estas vera aŭ malvera. 224 00:09:18,100 --> 00:09:21,410 Do ĉi tiu estas nur diras fari la sekvajn liniojn de kodo - 225 00:09:21,410 --> 00:09:23,950 nome linio 16, ĉar tio estas la sola dentado 226 00:09:23,950 --> 00:09:24,820 sube - 227 00:09:24,820 --> 00:09:26,980 tiel longe kiel i estas malpli ol 10. 228 00:09:26,980 --> 00:09:30,520 Kaj post ĉiu ripeto tra tiu ciklo, do la 229 00:09:30,520 --> 00:09:33,840 incrementation, kiu en ĉi tiu kazo estas mi + +. 230 00:09:33,840 --> 00:09:35,580 Nun, ĝi ne devas esti i + +. 231 00:09:35,580 --> 00:09:37,610 Ĝi povus esti mi -. 232 00:09:37,610 --> 00:09:39,860 Sed se mi faris ĉi tion, kion la konduto tuj 233 00:09:39,860 --> 00:09:41,370 esti de tiu programo? 234 00:09:41,370 --> 00:09:42,290 Spektantaro: ĝi tuj estos senfina ciklo. 235 00:09:42,290 --> 00:09:44,060 DAVID J. Malan: ĝi tuj estos ia senfina ciklo, 236 00:09:44,060 --> 00:09:47,720 se ni preni bonŝanca post negativa 2 miliardoj aŭ tiel. 237 00:09:47,720 --> 00:09:51,320 Eble tio estos envolver ĉirkaŭe, kun nur naturo de la finia 238 00:09:51,320 --> 00:09:53,930 nombro de bitoj, ke ni jam asignitaj por int. 239 00:09:53,930 --> 00:09:56,270 Sed ĝi estas certe tuj persisti multe pli ol 10 kaj 240 00:09:56,270 --> 00:09:58,630 certe pli ol 11 fojojn tie. 241 00:09:58,630 --> 00:10:02,240 >> Kaj nun, ĝuste kiel flanken, rimarkas ke mi + + kaj mi - 242 00:10:02,240 --> 00:10:04,420 estas vere nur sintaksa sukero. 243 00:10:04,420 --> 00:10:07,210 Estas nur stenografio skribmaniero por kio estas iom pli 244 00:10:07,210 --> 00:10:08,720 eksplicite skribita kiel sekvas: 245 00:10:08,720 --> 00:10:11,200 mi = mi + 1. 246 00:10:11,200 --> 00:10:13,460 Tio estas identa al mi + +. 247 00:10:13,460 --> 00:10:15,860 Ĝi simple ia aspektas pli belaj diri i + +. 248 00:10:15,860 --> 00:10:17,490 Estas pli konciza, pli legebla. 249 00:10:17,490 --> 00:10:19,030 Kaj tiel multaj homoj faros ke anstataŭ. 250 00:10:19,030 --> 00:10:21,840 Sed ĉi tiu estas identaj funkcie al 251 00:10:21,840 --> 00:10:22,900 kion ni ĵus vidis. 252 00:10:22,900 --> 00:10:27,770 Do mallonge, la rapidan solvon ĉi tie estas nur por diri persisti i 253 00:10:27,770 --> 00:10:30,690 de 0 tuta vojo ĝis malpli ol 10. 254 00:10:30,690 --> 00:10:32,700 Kaj tiam ni ja get 10 steloj. 255 00:10:32,700 --> 00:10:33,430 >> Do ni provu tion. 256 00:10:33,430 --> 00:10:35,310 Lasu min malfermi la terminalo ĉe la malsupro. 257 00:10:35,310 --> 00:10:37,420 Lasu min iri en la dosierujo ke ĉi tio estas in 258 00:10:37,420 --> 00:10:40,030 Kaj mi tuj kompili ĝin permane kun Clang por nun. 259 00:10:40,030 --> 00:10:44,880 Kaj mi tuj kompili tiun kiel buggy1.c, Enter. 260 00:10:44,880 --> 00:10:50,280 Kaj nun buggy1, kial mankas tiaj dosiero aŭ dosierujo 261 00:10:50,280 --> 00:10:52,026 vokis buggy1? 262 00:10:52,026 --> 00:10:53,850 Spektantaro: [inaudible]. 263 00:10:53,850 --> 00:10:54,240 DAVID J. Malan: Yeah. 264 00:10:54,240 --> 00:10:55,420 Do ĝi estas reale nomita a.out. 265 00:10:55,420 --> 00:10:57,480 Do rememori, se vi nur kuri Clang, kie Clang estas la 266 00:10:57,480 --> 00:11:00,420 tradukilo, kaj vi ne indikas la nomon vi volas 267 00:11:00,420 --> 00:11:03,550 doni al via programo, ĝi tuj default al a.out. 268 00:11:03,550 --> 00:11:05,030 Do ja se mi faras ls - 269 00:11:05,030 --> 00:11:05,510 oops. 270 00:11:05,510 --> 00:11:07,680 Kaj mi didn't - la nigra-kaj-blanka temo kelkaj 271 00:11:07,680 --> 00:11:08,840 vi alfrontis estis fiksita. 272 00:11:08,840 --> 00:11:10,670 Sed lasu min fari tion. 273 00:11:10,670 --> 00:11:14,570 Tie ni havas a.out sur la maldekstra flanko. 274 00:11:14,570 --> 00:11:17,360 Do ni devas kuri a.out anstataŭ buggy1. 275 00:11:17,360 --> 00:11:19,140 >> Do mi faru tion. 276 00:11:19,140 --> 00:11:22,840 . / A.out, Enter. 277 00:11:22,840 --> 00:11:26,160 Kaj mi ŝajne ne faris kion? 278 00:11:26,160 --> 00:11:26,620 Spektantaro: Savu. 279 00:11:26,620 --> 00:11:27,390 DAVID J. Malan: Savu mian dosieron. 280 00:11:27,390 --> 00:11:31,520 Por ke estas facile solvita per bati Kontrolo S, aŭ tuj 281 00:11:31,520 --> 00:11:33,450 Dosiero: Savu, kiel en plej programoj. 282 00:11:33,450 --> 00:11:36,360 Lasu min iri cxi tie, certe la ekrano, ruli ĝin denove. 283 00:11:36,360 --> 00:11:37,960 Kaj ankoraŭ cimon. 284 00:11:37,960 --> 00:11:41,618 Do kio okazas - 285 00:11:41,618 --> 00:11:42,980 Spektantaro: Vi ne kompili. 286 00:11:42,980 --> 00:11:44,040 DAVID J. Malan: Ha, bona. 287 00:11:44,040 --> 00:11:45,010 Mi ne kompili ĝin. 288 00:11:45,010 --> 00:11:47,250 Kiel idioto, mi rigardas la kodon por vidi kio estas malbone. 289 00:11:47,250 --> 00:11:51,275 Do clang buggy1.c, nun a.out. 290 00:11:51,275 --> 00:11:52,640 Kaj phew, savita. 291 00:11:52,640 --> 00:11:55,090 >> Do ĝi aspektas iom malbela ĉar ne estas nova linio 292 00:11:55,090 --> 00:11:55,970 ie ajn en la programo. 293 00:11:55,970 --> 00:11:57,390 Sed denove, tio estas nur estetika detalo. 294 00:11:57,390 --> 00:11:59,430 Kaj almenaŭ se ni kalkulu tiuj el ni devus 295 00:11:59,430 --> 00:12:01,160 nun zorgu 10 tiaj steloj. 296 00:12:01,160 --> 00:12:03,260 Nu, kio pri tiu dua varma-supren ekzemplo? 297 00:12:03,260 --> 00:12:07,750 Do en buggy2, mi asertas ke ĉi tiu versio, tro, tuj presi 298 00:12:07,750 --> 00:12:10,110 10 steloj, unu po linio. 299 00:12:10,110 --> 00:12:12,340 Do ĉi tiu fojo, mi havas novan linion karaktero, nur por fari 300 00:12:12,340 --> 00:12:13,520 aĵoj iom pli bela. 301 00:12:13,520 --> 00:12:15,410 Sed anstataŭ tio, kion mi get estas ĉi. 302 00:12:15,410 --> 00:12:19,590 Do lasu min fari clang buggy2.c, Enter. 303 00:12:19,590 --> 00:12:21,790 Nun ĝi estas denove alvokis a.out. 304 00:12:21,790 --> 00:12:23,130 Eniri. 305 00:12:23,130 --> 00:12:26,900 Mi nur vidas unu nova linio, nur la lasta nova linio kiu 306 00:12:26,900 --> 00:12:29,370 movas mia prompto al la sekvanta linio. 307 00:12:29,370 --> 00:12:32,660 Kaj tamen klare mi estis presi *, tiam nova linio, 308 00:12:32,660 --> 00:12:33,990 *, Tiam nova linio. 309 00:12:33,990 --> 00:12:35,490 Sed kio estas la cimo tie? 310 00:12:35,490 --> 00:12:35,974 Yeah? 311 00:12:35,974 --> 00:12:37,224 Spektantaro: [inaudible]. 312 00:12:39,850 --> 00:12:40,470 >> DAVID J. Malan: Ĝuste. 313 00:12:40,470 --> 00:12:44,110 Do kontraste iuj lingvoj, kiel Python, kie deŝovon 314 00:12:44,110 --> 00:12:46,030 reale havas funkcian signifon, en 315 00:12:46,030 --> 00:12:47,150 lingvo kiel C - 316 00:12:47,150 --> 00:12:49,140 kiel ni vidos, PHP, JavaScript - 317 00:12:49,140 --> 00:12:51,940 la deŝovon estas vere nur por homoj 'profito. 318 00:12:51,940 --> 00:12:55,690 Do la fakto, ke mi Duobla desxovo 16 kaj 17 aspektas granda, 319 00:12:55,690 --> 00:12:57,530 sed ĝi ne havas funkcian signifon tie. 320 00:12:57,530 --> 00:13:00,700 Se mi volas ambaŭ linioj ekzekuti kiel parto de la por 321 00:13:00,700 --> 00:13:05,140 buklo, tiam mi devas kunsendi ilin en bukla krampoj farante tion ĉi. 322 00:13:05,140 --> 00:13:08,540 Vi povas nur tranĉis tiu angulo kaj preterlasas la frizita krampoj se 323 00:13:08,540 --> 00:13:10,036 kio estas la kazo? 324 00:13:10,036 --> 00:13:10,410 Spektantaro: Nur unu linion. 325 00:13:10,410 --> 00:13:11,130 DAVID J. Malan: Nur unu linion. 326 00:13:11,130 --> 00:13:15,280 Do tio estas nur ia belan ia sintakso detale por ke 327 00:13:15,280 --> 00:13:17,900 vi ne malŝpari tempon skribi tri linioj, du el kiuj estas 328 00:13:17,900 --> 00:13:20,040 frizita krampoj, nur por skribi unu linion de kodo. 329 00:13:20,040 --> 00:13:21,650 Sed se vi havas du aŭ pli linioj, ni 330 00:13:21,650 --> 00:13:22,860 ja devas fari tion. 331 00:13:22,860 --> 00:13:24,210 >> Do nun mi savos tion. 332 00:13:24,210 --> 00:13:27,140 Lasu min kaj re-ruli Clang. 333 00:13:27,140 --> 00:13:31,375 Tiam lasu min rerun a.out, kaj nun mi alvenas al ili unu por linio. 334 00:13:31,375 --> 00:13:33,670 Nun, a.out denove estas speco de mutaj nomon por programo. 335 00:13:33,670 --> 00:13:37,500 Kiel mi povas diri al Clang por fakte donos al mi dosiernomo 336 00:13:37,500 --> 00:13:39,820 jen pli afablan, kiel buggy2 mem? 337 00:13:43,200 --> 00:13:44,466 Iom pli klare? 338 00:13:44,466 --> 00:13:45,220 Spektantaro: [inaudible]. 339 00:13:45,220 --> 00:13:47,810 DAVID J. Malan: Bone, do mi povas reale preni la tre 340 00:13:47,810 --> 00:13:51,000 uzantamika ŝparvojo kaj simple skribi fari buggy2. 341 00:13:51,000 --> 00:13:53,840 Mi ne specifas. C en ĉi tiu kazo, kaj batis Eniru. 342 00:13:53,840 --> 00:13:58,530 Kaj kion fari faras estas kompilas buggy2.c por mi per 343 00:13:58,530 --> 00:14:00,260 petante Clang fari ĝin. 344 00:14:00,260 --> 00:14:05,100 Specife, flamo Clang, ĝi kuras Clang uzante vojon pli 345 00:14:05,100 --> 00:14:08,540 komand-linio argumentoj aŭ ŝaltilojn ol mi reale bezonas. 346 00:14:08,540 --> 00:14:11,270 En tempo, ni revenos al kio ĉiu el ĉi tiuj diversaj 347 00:14:11,270 --> 00:14:13,810 kamufla hyphenated esprimoj signifas. 348 00:14:13,810 --> 00:14:16,910 Sed nuntempe, ke tio nur ŝparas al mi la penon 349 00:14:16,910 --> 00:14:19,600 devi memori kaj devante tajpi cxiujn el tiuj 350 00:14:19,600 --> 00:14:21,150 diversaj hyphenated esprimoj. 351 00:14:21,150 --> 00:14:23,240 Kaj la kapo de ĝi fine estas 352 00:14:23,240 --> 00:14:25,900 ke nun mi havas buggy2. 353 00:14:25,900 --> 00:14:27,480 Se mi volas fari ĉi permane, kvankam, mi 354 00:14:27,480 --> 00:14:28,775 povas anstataŭe fari ĉi - 355 00:14:28,775 --> 00:14:34,110 clang-o buggy2 kaj poste buggy2.c. 356 00:14:34,110 --> 00:14:37,980 Kaj tio estos simile donu al mi dosieron nomatan buggy2. 357 00:14:37,980 --> 00:14:39,710 >> Do mallonge, Clang estas la tradukilo. 358 00:14:39,710 --> 00:14:43,080 Faru estas nur uzantamika ilo ke ni estos uzi pli 359 00:14:43,080 --> 00:14:44,420 kaj plie, ĉar ĝi apenaŭ komencas 360 00:14:44,420 --> 00:14:47,330 simpligi aferojn por ni. 361 00:14:47,330 --> 00:14:49,430 Kaj ni revenos 0, persiste. 362 00:14:49,430 --> 00:14:51,890 Por nun, nur ĉar, sed ni komencas ŝercoj tiu parto 363 00:14:51,890 --> 00:14:52,930 hodiaŭ kaj merkrede. 364 00:14:52,930 --> 00:14:55,560 Demandojn pri ajna el tio? 365 00:14:55,560 --> 00:14:56,450 Yeah? 366 00:14:56,450 --> 00:14:58,234 Spektantaro: [inaudible] 367 00:14:58,234 --> 00:15:00,020 ls en citilojn tie? 368 00:15:00,020 --> 00:15:01,710 DAVID J. Malan: Bone. 369 00:15:01,710 --> 00:15:05,880 Kiam mi tajpitaj ls en citiloj, kiu estis al mi fari kelkajn magiajn 370 00:15:05,880 --> 00:15:07,160 malantaŭ la scenoj ripari cimon. 371 00:15:07,160 --> 00:15:09,370 Mi forgesis, kiel ni estis dirante multaj el vi en la 372 00:15:09,370 --> 00:15:11,600 diskuto tabulojn, fari - 373 00:15:11,600 --> 00:15:17,220 ni faros ĉi nun - ŝvitas yum-y ŝanĝo appliance50. 374 00:15:17,220 --> 00:15:19,790 Whoops, ke ke tio literumita pravas. 375 00:15:19,790 --> 00:15:23,240 Do la aparaton estas kiel mastruma sistemo. 376 00:15:23,240 --> 00:15:25,650 Oni kuras ĉi tiu mastruma sistemo nomita Fedora. 377 00:15:25,650 --> 00:15:27,450 Kaj nun pro mia malrapida Interreto rilato, mi havas 378 00:15:27,450 --> 00:15:28,260 vere hosed ĝin. 379 00:15:28,260 --> 00:15:31,620 Do kurante ŝvitas yum ĝisdatigo, kiel ni diras al vi fari en la 380 00:15:31,620 --> 00:15:34,080 problemo aro, estas esence same kiel kuras aŭtomataj ĝisdatigoj 381 00:15:34,080 --> 00:15:35,420 en Mac OS aŭ Vindozo. 382 00:15:35,420 --> 00:15:37,280 Kaj la kialo por kuri ĉi je la tre komenco de la 383 00:15:37,280 --> 00:15:39,640 problemo aro estas ĉar kiam ni kreis la aparaton, mi 384 00:15:39,640 --> 00:15:42,480 paneas, kaj mi hazarde faris ĉiujn de viaj programoj aspektas 385 00:15:42,480 --> 00:15:45,210 nigra sur nigra ekrano, tial vi ne vidas ilin 386 00:15:45,210 --> 00:15:45,860 defaŭlte. 387 00:15:45,860 --> 00:15:48,020 Sed la lasta versio de la aparaton fiksa ĉi. 388 00:15:48,020 --> 00:15:50,500 Kaj mi riparos ke dum paŭzo fojon mi havas Interreto 389 00:15:50,500 --> 00:15:51,280 konekteblecon. 390 00:15:51,280 --> 00:15:54,630 >> Do la citilojn nur kaŝas mian eraron, tre diskrete, 391 00:15:54,630 --> 00:15:55,730 ŝajne. 392 00:15:55,730 --> 00:15:56,980 Aliaj demandoj? 393 00:15:59,750 --> 00:16:00,668 Jes? 394 00:16:00,668 --> 00:16:02,012 Spektantaro: Kie faras venis? 395 00:16:02,012 --> 00:16:03,810 [Inaudible] 396 00:16:03,810 --> 00:16:04,280 DAVID J. Malan: Bona demando. 397 00:16:04,280 --> 00:16:05,460 Kie faras venis? 398 00:16:05,460 --> 00:16:09,390 Estas Linukso programo kiu ekzistis dum multaj jaroj, longe 399 00:16:09,390 --> 00:16:10,570 antaux CS50. 400 00:16:10,570 --> 00:16:12,930 Kaj ĝi venas kun la mastruma sistemo kiel Fedora. 401 00:16:12,930 --> 00:16:14,830 Ĝi ne venas el la CS50 biblioteko. 402 00:16:14,830 --> 00:16:17,560 Fakte, la sola aĵoj kiuj venas de la CS50 biblioteko 403 00:16:17,560 --> 00:16:20,470 tiel malproksime, ke ni vidis, estas GetString, GetInt, ĉiuj 404 00:16:20,470 --> 00:16:25,550 tiuj Get funkcioj, kaj la vorto ŝnuro, kaj al iuj 405 00:16:25,550 --> 00:16:26,575 mezuro, la vorto bool. 406 00:16:26,575 --> 00:16:29,180 Sed ni tease ke krom kiam ni plonĝi en la CS50 407 00:16:29,180 --> 00:16:30,580 aparaton mem. 408 00:16:30,580 --> 00:16:32,820 >> Do jes, oni pli demandon ĉi tie. 409 00:16:32,820 --> 00:16:36,636 Spektantaro: Kiam vi diris fari kaj tiam kalesxo, kiel faras la 410 00:16:36,636 --> 00:16:39,980 komputilo scias [inaudible]? 411 00:16:39,980 --> 00:16:40,520 DAVID J. Malan: Bona demando. 412 00:16:40,520 --> 00:16:43,830 Do kiam vi ĵus kuras fari buggy1 aŭ fari buggy2, kiom 413 00:16:43,830 --> 00:16:45,220 ne fari koni? 414 00:16:45,220 --> 00:16:49,900 Do implicite, se vi tajpas fari buggy1, fari serĉas a 415 00:16:49,900 --> 00:16:52,330 dosiero nomata buggy1.c. 416 00:16:52,330 --> 00:16:55,570 Kaj tiam ĝi ekzekutas la taŭga Clang komandoj, 417 00:16:55,570 --> 00:17:00,380 tiel supera la defaŭlta eligo-dosiero nomata a.out. 418 00:17:00,380 --> 00:17:03,670 Fakte, se ni rigardas kio fari, kion - 419 00:17:03,670 --> 00:17:04,839 ni quit ĉi. 420 00:17:04,839 --> 00:17:09,530 Se ni rigardas kio fari estis reale faras, faru buggy2, 421 00:17:09,530 --> 00:17:10,470 ĝi estas jam ĝis nun. 422 00:17:10,470 --> 00:17:13,020 Do lasu min forigi la rm komando, La 423 00:17:13,020 --> 00:17:14,319 programo mi skribis antaŭe. 424 00:17:14,319 --> 00:17:17,319 Tajpi Y-E-S por konfirmi ke mi volas forigi ĝin. 425 00:17:17,319 --> 00:17:20,480 Se mi nun faru fari, rimarki ke en ĉi tiu tre longa linio, 426 00:17:20,480 --> 00:17:22,980 tie estas tio lasta afero ĉi tie,-o buggy2. 427 00:17:22,980 --> 00:17:26,959 Ĉiuj fari faras pasas tiu argumento, por tiel diri, por 428 00:17:26,959 --> 00:17:29,665 Clang, tiel ke mi ne devas tajpi ĝin mi mem. 429 00:17:29,665 --> 00:17:32,660 >> Bone, do rapida kelkaj administraj 430 00:17:32,660 --> 00:17:33,470 anoncoj. 431 00:17:33,470 --> 00:17:36,940 Do por sekcioj, kiuj oficiale komencis ĉi venas 432 00:17:36,940 --> 00:17:38,970 Dimanĉo, vi ĉiam volas alporti, se 433 00:17:38,970 --> 00:17:40,120 tion vi havas, la portebla. 434 00:17:40,120 --> 00:17:42,570 Se vi ne havas portebla, do alveni al mi de 435 00:17:42,570 --> 00:17:43,580 delasante min retmesaĝo. 436 00:17:43,580 --> 00:17:44,810 Kaj ni elŝeligi a laborfluo. 437 00:17:44,810 --> 00:17:47,100 Kio ĝenerale vi trovos en la sekcio estas ke ili estas parto 438 00:17:47,100 --> 00:17:48,770 koncepta, parto manoj-on. 439 00:17:48,770 --> 00:17:52,190 Ni specife uzas la sekcio de demandoj, parto de 440 00:17:52,190 --> 00:17:54,110 la semajno problemo aro, marŝi tra iu el la 441 00:17:54,110 --> 00:17:55,820 konceptaj materialo el konferencoj. 442 00:17:55,820 --> 00:17:57,480 Kaj tio estas ĉio en la nuna problemo aro. 443 00:17:57,480 --> 00:18:00,010 Kaj ni ankaŭ plonĝi en iuj manoj-on aktivecojn, kelkfoje 444 00:18:00,010 --> 00:18:02,190 de kiu estos postulita al esti donita, kelkfoje de 445 00:18:02,190 --> 00:18:02,830 kiu ne estos. 446 00:18:02,830 --> 00:18:04,630 Ekzemple, tiu ĉi unua semajno, ili estas signifis nur kiel 447 00:18:04,630 --> 00:18:05,780 varma-supren ekzerco. 448 00:18:05,780 --> 00:18:07,800 Kaj vi trovos, ke tiuj problemoj estas vere ĝuste tio. 449 00:18:07,800 --> 00:18:10,220 Ili devus esti sufiĉe malgranda, sed ne nepre 450 00:18:10,220 --> 00:18:13,100 bagatela programoj por skribi, ke ne estas bezone 451 00:18:13,100 --> 00:18:16,230 ekscita en kaj per si mem sed estas bonaj ŝancoj por 452 00:18:16,230 --> 00:18:19,620 praktiki kun sintakso, kun novaj funkcioj, en la konsolo de 453 00:18:19,620 --> 00:18:21,900 sekcio kie vi havas kelkajn el viaj kompanoj prezenti kiel 454 00:18:21,900 --> 00:18:22,870 bone kiel via TF. 455 00:18:22,870 --> 00:18:26,210 >> Kaj kion ni faros kun la tempo estas uzi ilon nomata CS50 Spacoj, 456 00:18:26,210 --> 00:18:28,940 per anstataŭ simple uzi la CS50 Appliance, vi 457 00:18:28,940 --> 00:18:32,450 anstataŭ iri al retpaĝo en foliumilo, kie vi povos 458 00:18:32,450 --> 00:18:35,610 skribi kodo en retumilo fenestro dum sekcio. 459 00:18:35,610 --> 00:18:38,240 Kaj tiam se vi elektos en, via instruado ulo povas tiam montri 460 00:18:38,240 --> 00:18:40,980 kion ajn ĝi estas vi tajpas en via ekrano en via retumilo 461 00:18:40,980 --> 00:18:43,930 fenestro ĉe la fronto de la klaso, ĉu anonime aŭ 462 00:18:43,930 --> 00:18:47,250 publike, tiel ke li aŭ ŝi povas tiam trairu kun 463 00:18:47,250 --> 00:18:50,080 viaj samklasanoj, kion vi faris bone, kion vi ne faru bone. 464 00:18:50,080 --> 00:18:52,750 Kaj denove, estu certaj ĉio ĉi povas bele anonymized. 465 00:18:52,750 --> 00:18:54,410 Sed estos belan okazon por multe pli 466 00:18:54,410 --> 00:18:56,810 interactividad ol iu kiel prelego permesas. 467 00:18:56,810 --> 00:18:58,910 >> Dume, ni devos tion nomis super 468 00:18:58,910 --> 00:19:01,610 sekcioj, kiuj estas nedeviga sed estas malfermitaj al ĉiuj en 469 00:19:01,610 --> 00:19:04,030 la klaso, por ke vi povas fari tion pli kolektive por 470 00:19:04,030 --> 00:19:05,190 problemo starigis unu. 471 00:19:05,190 --> 00:19:06,010 Jen la horaro. 472 00:19:06,010 --> 00:19:08,870 Ĉi tio ankaŭ eldonita en la hejmpaĝo ĉe cs50.net. 473 00:19:08,870 --> 00:19:10,850 Rimarku ke estos hacker-specifa 474 00:19:10,850 --> 00:19:12,430 unu morgaŭ posttagmeze. 475 00:19:12,430 --> 00:19:15,460 Kaj ni filmar unu hodiaŭ kaj unu matenon kaj afiŝi tiujn 476 00:19:15,460 --> 00:19:16,720 linio en 24 horoj. 477 00:19:16,720 --> 00:19:19,370 Do se vi ne povas fari iu ajn el tiuj tempoj, ne maltrankviliĝu. 478 00:19:19,370 --> 00:19:22,720 Kaj denove, la horaro estas linio nun cs50.net. 479 00:19:22,720 --> 00:19:25,350 >> En terminoj de sekci sin, vi devas esti alveninta al 480 00:19:25,350 --> 00:19:28,520 email instruante vin iri al la kurso de hejmpaĝo trovi 481 00:19:28,520 --> 00:19:29,610 vian sekcio. 482 00:19:29,610 --> 00:19:32,890 Se vivo ŝanĝiĝis, kaj vi bezonas ŝanĝi viajn sekcio, 483 00:19:32,890 --> 00:19:33,560 ne estas problemo. 484 00:19:33,560 --> 00:19:37,900 Reiru al tiu sama URL cs50.net/section, unuopa, 485 00:19:37,900 --> 00:19:40,090 kaj vi plenigi la simila formo por ke vi povas 486 00:19:40,090 --> 00:19:41,260 tiam donu al ni vian preferoj. 487 00:19:41,260 --> 00:19:43,360 Kaj ni sekvos far semajno fino pri kio ni povas 488 00:19:43,360 --> 00:19:44,240 akomodi. 489 00:19:44,240 --> 00:19:49,530 Pasintsemajne, memori, ke ni proponis uzante CS50 diskuti, 490 00:19:49,530 --> 00:19:51,370 la kurson de diskuto ilo, en prelego. 491 00:19:51,370 --> 00:19:53,680 Do ni havis 40 demandoj kiujn oni petis kaj 492 00:19:53,680 --> 00:19:54,720 respondis dum prelego. 493 00:19:54,720 --> 00:19:56,280 Do ŝajnis funkcii bone, do ni devos daŭrigi 494 00:19:56,280 --> 00:19:57,180 provas fari tion. 495 00:19:57,180 --> 00:19:59,600 Se, dum prelego, vi ne nur sentas komfortaj bredado 496 00:19:59,600 --> 00:20:00,780 via mano, ne estas problemo. 497 00:20:00,780 --> 00:20:04,640 Iru al cs50.net/discuss, afiŝi tie, kaj unu el niaj instruado 498 00:20:04,640 --> 00:20:07,270 uloj faros ĉu respondi ĝin elektronike aŭ levi siajn 499 00:20:07,270 --> 00:20:10,620 mano en via nomo anonime demandi, depende 500 00:20:10,620 --> 00:20:12,470 sur la naturo de la demando. 501 00:20:12,470 --> 00:20:15,000 Kaj en terminoj de sugestoj, ĝenerale psets estos 502 00:20:15,000 --> 00:20:16,760 revenis en semajno. 503 00:20:16,760 --> 00:20:19,080 Ĉar ĝi prenas iom da tempo por sekcioj por atingi 504 00:20:19,080 --> 00:20:22,430 egalpezo, la unua pset, 0 kaj 1, estos iom 505 00:20:22,430 --> 00:20:24,130 prokrastita pro aferoj establi. 506 00:20:24,130 --> 00:20:27,130 Sed restu atentaj por ke en la semajnoj veni. 507 00:20:27,130 --> 00:20:29,750 >> Bone, do lasu min metis sur mia serioza 508 00:20:29,750 --> 00:20:31,040 voĉo por nur momento. 509 00:20:31,040 --> 00:20:32,690 Do ĉi tiu estas vere interesa klimato esti 510 00:20:32,690 --> 00:20:35,210 havante ĉi diskuto, kio kun ĉiuj aliaj aĵoj 511 00:20:35,210 --> 00:20:37,310 okazas en la campus rilatanta al gxi. 512 00:20:37,310 --> 00:20:40,220 Sed CS50 certe havis lian historion de ĉi tiu aparta 513 00:20:40,220 --> 00:20:43,360 temo, pro tio, ke ĉiu jaro, ĉi tiu kurso, por multaj 514 00:20:43,360 --> 00:20:46,910 jaroj, Jafar-Kune proksimume 3% de la klaso. 515 00:20:46,910 --> 00:20:51,620 Tiu plej freŝa jaro, 2011, CS50 Ad-eniĝis 35 studentoj. 516 00:20:51,620 --> 00:20:54,120 Tio ne estas, mi pensas, pro la manko de klareco. 517 00:20:54,120 --> 00:20:56,760 Rimarkas ke en la paso de syllabus, estas paĝo de 518 00:20:56,760 --> 00:20:59,020 deklaro klarigante kie la linioj estas. 519 00:20:59,020 --> 00:21:01,350 Tiu sama deklaro ripetas en ĉiu de la 520 00:21:01,350 --> 00:21:03,070 problemo aroj sur paĝo unu. 521 00:21:03,070 --> 00:21:05,760 >> Do mi mencias ĉi hodiaŭ vere nur por fari 522 00:21:05,760 --> 00:21:07,030 ulojn memoras tion. 523 00:21:07,030 --> 00:21:08,080 Kaj ni provis malsamaj aĵoj. 524 00:21:08,080 --> 00:21:10,630 Kaj kion mi pensis ke ni povus fari hodiaŭ estas nur preni momenton por 525 00:21:10,630 --> 00:21:13,830 efektive rigardi iujn de pasintaj kazoj kiuj venis supren. 526 00:21:13,830 --> 00:21:16,160 Anstataŭ teni tiujn tiel malpura iom sekretojn, reale 527 00:21:16,160 --> 00:21:19,170 atentigi kion studentoj faris kaj kiel ni detektas 528 00:21:19,170 --> 00:21:21,630 kaj vere, kion la komunajn motivado estas por 529 00:21:21,630 --> 00:21:23,950 eĉ havante ĉi konversacio. 530 00:21:23,950 --> 00:21:27,060 Do kun kiu diris, la linio esence estas ĉi - 531 00:21:27,060 --> 00:21:29,200 por la syllabus, vi bonvena, vi kuraĝigis, por 532 00:21:29,200 --> 00:21:30,210 paroli kun samklasanoj. 533 00:21:30,210 --> 00:21:31,910 Tio estas la tuta celo de havi tiujn kunlaboran 534 00:21:31,910 --> 00:21:34,470 oficejo horoj en Annenberg kaj kuraĝiga homon por la 535 00:21:34,470 --> 00:21:35,755 fina projekto por labori kune. 536 00:21:35,755 --> 00:21:38,590 Sed la linio estas desegnita kiam venas tempo por vere skribos 537 00:21:38,590 --> 00:21:39,790 Via fina solvo. 538 00:21:39,790 --> 00:21:42,590 Parolante en Esperanto, tute bone, parolante en pseŭdo kodo, 539 00:21:42,590 --> 00:21:43,400 tute bone. 540 00:21:43,400 --> 00:21:46,340 Emailing a samklasano vian pset, lasante ilin rigardi super 541 00:21:46,340 --> 00:21:48,610 la ekrano kiel la manoj daŭre tajpi, 542 00:21:48,610 --> 00:21:50,110 super la linio tiel. 543 00:21:50,110 --> 00:21:52,250 Ĉu rigardi la syllabus por la aparta linioj. 544 00:21:52,250 --> 00:21:55,850 >> Sed nur por pentri bildon de kiel ĉi tiu estas bedaŭrinde 545 00:21:55,850 --> 00:21:58,370 realaĵo, rimarkas ke ekzistas retejoj tie ke 546 00:21:58,370 --> 00:22:01,490 havi solvojn de tiu klaso kaj multaj aliaj klasoj. 547 00:22:01,490 --> 00:22:04,940 La fakto ke vi aŭ iu 3% el vi scias, ke ĉi tiu ekzistas 548 00:22:04,940 --> 00:22:07,240 signifas, ke ni scias, ke ĉi tiu ekzistas. 549 00:22:07,240 --> 00:22:09,340 La fakto ke ekzistas retejoj kiel ĉi, kie vi 550 00:22:09,340 --> 00:22:11,540 povas pagi iun fakte faras via problemo aroj - tio estis 551 00:22:11,540 --> 00:22:13,450 reala kazo kiu venis lasta jaro. 552 00:22:13,450 --> 00:22:15,790 Tio estas retejo nomata odesk.com. 553 00:22:15,790 --> 00:22:20,090 Kaj Tim estis la nomo de la persono tie kiu posting sur 554 00:22:20,090 --> 00:22:24,580 tiu retejo kaj demandis iun fari sian pset 7 en 555 00:22:24,580 --> 00:22:25,570 ĉi tiu aparta kazo. 556 00:22:25,570 --> 00:22:28,350 Nu, odesk.com estas tre Google-kapabla, kaj ni tro estas 557 00:22:28,350 --> 00:22:30,310 tre bona Googling. 558 00:22:30,310 --> 00:22:32,360 Tie, ankaŭ, estas lokoj - kaj ĉi tiu estas sufiĉe 559 00:22:32,360 --> 00:22:34,234 atroces, sincere. 560 00:22:34,234 --> 00:22:38,050 [Ridado] 561 00:22:38,050 --> 00:22:39,610 DAVID J. Malan: La amuza afero pri ĉi tiu loko estas se 562 00:22:39,610 --> 00:22:41,970 vi legis la Pri paĝo, ili parolas pri lia kompania 563 00:22:41,970 --> 00:22:44,390 kulturo kaj kiel servo al la kliento estas ilia nombro unu 564 00:22:44,390 --> 00:22:46,190 prioritato, por certigi ke via taskoj akiri 565 00:22:46,190 --> 00:22:47,890 turnis en la tempo. 566 00:22:47,890 --> 00:22:50,580 >> Sed en ĉiu seriozeco, denove, la fakto ke tiuj retejoj 567 00:22:50,580 --> 00:22:52,910 ekzistas, rimarkas ke ni ankaux estas consciente 568 00:22:52,910 --> 00:22:53,730 tiajn lokojn. 569 00:22:53,730 --> 00:22:55,890 Kaj doni al vi la senton de kio formas ĉi ĝenerale 570 00:22:55,890 --> 00:22:58,570 prenas, ni ĝenerale ne havas grandajn skandalojn, kie homoj 571 00:22:58,570 --> 00:23:01,080 estas kunlaborantoj en ajna speco de amasa skalo, sed prefere 572 00:23:01,080 --> 00:23:04,540 estas tiuj malfrua nokto momentoj de malforteco, kie vi havas tiel 573 00:23:04,540 --> 00:23:07,550 multe por fari, ĝi estas 4:00 AM, vi elĉerpita, kaj vi 574 00:23:07,550 --> 00:23:09,770 pensas al vi mem, nu, lasu min nur rigardu mian 575 00:23:09,770 --> 00:23:11,770 kompano aŭ de mia amiko kodo aŭ similaj. 576 00:23:11,770 --> 00:23:14,800 Kaj la demonstracioj de ĉi bedaŭrinde implicas Studenta 577 00:23:14,800 --> 00:23:17,640 Al submitting io tiamaniere kaj Studenta B Submeti 578 00:23:17,640 --> 00:23:20,370 io tiamaniere, ke certe, en komputilo 579 00:23:20,370 --> 00:23:23,830 scienco klaso, estas notinde facila por komputilo sciencistoj 580 00:23:23,830 --> 00:23:25,690 detekti kun programaro. 581 00:23:25,690 --> 00:23:28,410 Tio estas alia komuna paradigmo, kie vi havas ia 582 00:23:28,410 --> 00:23:31,010 estis laborante kune de iu, eble parolas en 583 00:23:31,010 --> 00:23:32,360 Esperanto, same bone, _pseudocode_. 584 00:23:32,360 --> 00:23:35,080 Sed tiam ĝi venas tempo por vere submetiĝi, kaj la psets 585 00:23:35,080 --> 00:23:37,910 nur get interŝanĝis per retpoŝto aŭ Dropbox aŭ similaj. 586 00:23:37,910 --> 00:23:41,120 Sed en provo por fari ĝin malpli evidenta ke ĉi tio estas 587 00:23:41,120 --> 00:23:44,830 kio okazis, tiam ĉi tiu estas kion afiŝita. 588 00:23:44,830 --> 00:23:47,880 Ĉi tio, ankaŭ, ne vojaĝo ĝis bone skribita pecoj de 589 00:23:47,880 --> 00:23:50,360 programaro kiel ni devas vere detekti 590 00:23:50,360 --> 00:23:51,280 tiajn aĵojn. 591 00:23:51,280 --> 00:23:53,760 Kaj efektive, kion ni faras estas run programaro kiu komparas ĉiuj 592 00:23:53,760 --> 00:23:55,540 ĉi-jara sendoj kontraŭ ĉiuj pasintaj jaro 593 00:23:55,540 --> 00:23:57,380 prezentoj, kontraŭ ĉiu ni trovis sur la 594 00:23:57,380 --> 00:24:00,060 Interreto, kontraŭ ĉiu laboro afiŝinto tie. 595 00:24:00,060 --> 00:24:01,710 Ĝi tute ne estas aŭtomata. 596 00:24:01,710 --> 00:24:05,665 Kaj tiel ni faros ĉi vere en granda justeco al la 97% kiuj 597 00:24:05,665 --> 00:24:07,760 vere laboras siajn azenojn ekstere en oriento kaj en aliaj 598 00:24:07,760 --> 00:24:11,530 klasoj kaj metante en ĉiuj de tiu penado por ke la laboro 599 00:24:11,530 --> 00:24:13,030 ili finfine submeti estas ilia propra. 600 00:24:13,030 --> 00:24:14,220 Kaj mi povas iri por aĝoj. 601 00:24:14,220 --> 00:24:16,030 >> Ĉi tiuj estas nur manpleno da pasinta jaro kazoj. 602 00:24:16,030 --> 00:24:19,350 Kelkaj studentoj afiŝita tiuj dosieroj idente por 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 En ĉi tiu kazo, ĉi tiu estis kvizo 0 kaj en lasta jaro, kie du 605 00:24:26,360 --> 00:24:29,570 studentoj afiŝita idente tiu frazo inter multaj 606 00:24:29,570 --> 00:24:32,210 aliaj, "La peto de tipo -" punkto, pentras, punkto. 607 00:24:32,210 --> 00:24:34,530 Do eĉ en klaso de 600 ni ne detekti ĉi 608 00:24:34,530 --> 00:24:36,310 sur afiŝita Quizzes. 609 00:24:36,310 --> 00:24:39,080 Do mallonge, tio - sincere, mi malamas havi tian 610 00:24:39,080 --> 00:24:41,300 konversacio - sed tio estas vere intenca peno 611 00:24:41,300 --> 00:24:43,540 ĉi tiu jaro por provi stiri malsupren tiu numero. 612 00:24:43,540 --> 00:24:45,650 Ĉar kvankam ni diras tiajn aferojn ĉiu 613 00:24:45,650 --> 00:24:48,100 jaro, mi kredas ke la realo de esti loĝis sur ĝi dum kelkaj 614 00:24:48,100 --> 00:24:50,800 pli sekundoj ol kutime kaj fakte ĝuste montrante 615 00:24:50,800 --> 00:24:53,600 ke kion povus aspekti kiel, he, ne tiom granda interkonsento, almenaŭ 616 00:24:53,600 --> 00:24:56,390 pensas reen al ĉi tiu aparta momento, ambaŭ en justeco al 617 00:24:56,390 --> 00:25:00,100 vi mem kaj por viaj kompanoj tie. 618 00:25:00,100 --> 00:25:02,480 Do, se vi iam havas demandojn pri kie la linio 619 00:25:02,480 --> 00:25:04,290 estas, bonvolu simple alveni al mi persone. 620 00:25:04,290 --> 00:25:07,190 Sed la respondo estas ĉiam, tute emfazis en la 621 00:25:07,190 --> 00:25:09,090 lasta minuto, efektiva en malfrua tago. 622 00:25:09,090 --> 00:25:11,080 Aŭ se temas pri demando de ne havi neniun malfrue tagoj, 623 00:25:11,080 --> 00:25:12,900 honeste, retpoŝtu min persone. 624 00:25:12,900 --> 00:25:14,110 Ni kompreni ion. 625 00:25:14,110 --> 00:25:17,480 Bonvolu ne meti vian tempon ĉi tie en Harvard en risko. 626 00:25:17,480 --> 00:25:18,570 >> Nun, mi pensis ke ni devus malpligrandigi la humoro, do mi 627 00:25:18,570 --> 00:25:20,264 inkludis tiun kiel la proksima glito. 628 00:25:20,264 --> 00:25:22,770 [Ridado] 629 00:25:22,770 --> 00:25:23,630 DAVID J. Malan: Ĉi retejo estis granda. 630 00:25:23,630 --> 00:25:24,820 Mi vere havas iom distrita. 631 00:25:24,820 --> 00:25:26,330 Estas ĉi tiu. 632 00:25:26,330 --> 00:25:29,590 Kaj tiam ĉi tiu estis miriga. 633 00:25:29,590 --> 00:25:35,190 Okay, do elpensis tion katido malfrua nokto kiam farante 634 00:25:35,190 --> 00:25:36,040 tiuj decidoj. 635 00:25:36,040 --> 00:25:40,110 Bone, do reen al pli amuza kaj malpli seriozaj aferoj, kiel 636 00:25:40,110 --> 00:25:40,780 kondiĉoj. 637 00:25:40,780 --> 00:25:43,900 >> Bone, do ni parolis mallonge pri tiuj. 638 00:25:43,900 --> 00:25:46,080 Tio estas io tiel estas probable sufiĉe familiara de 639 00:25:46,080 --> 00:25:47,260 la mondo de Scratch. 640 00:25:47,260 --> 00:25:49,860 Kaj en la mondo de Scratch, ni havas ĉi tiun neceson foje 641 00:25:49,860 --> 00:25:51,110 iri fari forkoj en la vojo. 642 00:25:51,110 --> 00:25:54,840 Ĉu fari ĉi aŭ tiu aŭ tiu alia afero ĉi tie. 643 00:25:54,840 --> 00:25:58,990 Kaj kiam ni volas fari tion, ni povas uzi, en C nun, tiu se 644 00:25:58,990 --> 00:26:00,860 alie konstrui. 645 00:26:00,860 --> 00:26:06,420 Kaj tiam tie ni havas Bulea esprimoj. 646 00:26:06,420 --> 00:26:09,260 Ekzemple, Bulea esprimoj tie, ni povas AŬ 647 00:26:09,260 --> 00:26:12,260 ilin kune, en la senco, ke ni havas ĉi tiun kondiĉon AŬ 648 00:26:12,260 --> 00:26:13,200 tiu kondiĉo. 649 00:26:13,200 --> 00:26:15,100 Ni povas KAJ ilin kune, en la senco, ke ni volas 650 00:26:15,100 --> 00:26:17,710 kontrolu ĉi kondiĉo AND tiu kondiĉo. 651 00:26:17,710 --> 00:26:22,440 Kaj ĉi tie ni havas ŝaltilon deklaro nun, kio ne estas tiel 652 00:26:22,440 --> 00:26:26,040 simila sintakse al tiuj specoj de kondiĉoj, sed 653 00:26:26,040 --> 00:26:30,160 permesas fari la ekvivalento de se, alie se, alie se, alie 654 00:26:30,160 --> 00:26:34,990 se, kaj similaj per simple numeri ilin kazo por kazo 655 00:26:34,990 --> 00:26:36,670 por kazo de kazo. 656 00:26:36,670 --> 00:26:38,370 Do ni vidis tiujn lasta fojo. 657 00:26:38,370 --> 00:26:40,430 Kaj tiam ni komencis tuŝi sur aĵoj kiel maŝojn. 658 00:26:40,430 --> 00:26:42,070 Ni vidis unu el tiuj nur antaŭ momento. 659 00:26:42,070 --> 00:26:44,180 Sed estas tiuj aliaj looping konstruoj. 660 00:26:44,180 --> 00:26:46,370 >> Ekzemple, tiu ĉi. 661 00:26:46,370 --> 00:26:50,140 Do dum (kondiĉo), faru tion denove kaj denove. 662 00:26:50,140 --> 00:26:53,070 Do esence, kio ŝajnas esti malsamaj inter ĉi 663 00:26:53,070 --> 00:26:55,760 por buklo kaj ĉi dum buklo tie? 664 00:27:00,810 --> 00:27:05,045 Ĉi por buklo kaj ĉi dum ciklo. 665 00:27:05,045 --> 00:27:07,840 Yeah? 666 00:27:07,840 --> 00:27:08,800 Kio estas tio? 667 00:27:08,800 --> 00:27:10,050 Spektantaro: [inaudible]. 668 00:27:14,632 --> 00:27:15,120 DAVID J. Malan: Bonan. 669 00:27:15,120 --> 00:27:17,130 Do dum kiu en la por buklo kondiĉo, estas klare 670 00:27:17,130 --> 00:27:17,940 pli sintakso. 671 00:27:17,940 --> 00:27:20,560 Estas ĉi inicialización, ne estas tio ĝisdatigon. 672 00:27:20,560 --> 00:27:23,820 En momento buklo, tie estas nur tiun kondiĉon. 673 00:27:23,820 --> 00:27:26,630 Do ŝajnas, ke ĝi estas iom pared malsupren kontre la por 674 00:27:26,630 --> 00:27:28,770 buklo, kio signifas, se ni volas havi variablojn kaj ni volas 675 00:27:28,770 --> 00:27:30,800 havi incrementation, ni vere devas 676 00:27:30,800 --> 00:27:32,500 fari tion mem. 677 00:27:32,500 --> 00:27:34,420 >> Do lasu min antaŭeniri kaj malfermu gedit. 678 00:27:34,420 --> 00:27:36,320 Lasu min ŝanĝi super la aparaton. 679 00:27:36,320 --> 00:27:38,110 Kaj ni nur faru rapidan iom ekzemplo kiu 680 00:27:38,110 --> 00:27:40,550 distingas unu el tiuj de la alia. 681 00:27:40,550 --> 00:27:42,490 Kaj en la dorso de mia menso tie, mi devas diri ion. 682 00:27:42,490 --> 00:27:44,120 Mi specife menciis la nomon Tim. 683 00:27:44,120 --> 00:27:47,740 Tim estis fakte iu ke studento provis trovi fari 684 00:27:47,740 --> 00:27:48,680 liajn devojn por ili. 685 00:27:48,680 --> 00:27:51,280 Ni ne havis Tim en tiu aparta sekcio. 686 00:27:51,280 --> 00:27:53,690 Do realigi, ke mi ne malkaŝis al studento, ne estis studento. 687 00:27:53,690 --> 00:27:55,720 Estis hazarda persono en Interreto faras tion 688 00:27:55,720 --> 00:27:57,180 per prokuro pasintjare. 689 00:27:57,180 --> 00:27:58,670 Do ni trovas ke, ankaŭ. 690 00:27:58,670 --> 00:28:00,630 Do en ĉi tiu kazo tie, lasu min antaŭeniri kaj 691 00:28:00,630 --> 00:28:02,810 malfermi novan dosieron. 692 00:28:02,810 --> 00:28:04,800 Dosiero, Nov. 693 00:28:04,800 --> 00:28:06,050 Tio donas al mi langeto tie. 694 00:28:06,050 --> 00:28:09,940 Lasu min per ĝi kiel loop.c. 695 00:28:09,940 --> 00:28:11,810 Lasu min iri kaj klaku Save. 696 00:28:11,810 --> 00:28:15,340 Kaj tiam cxi tie, ni iru antaŭen kaj komenci skribi 697 00:28:15,340 --> 00:28:16,605 # Include . 698 00:28:19,116 --> 00:28:20,520 Lasu min zoom in 699 00:28:20,520 --> 00:28:23,410 Nun ni faros int main (void). 700 00:28:23,410 --> 00:28:30,020 Nun mi faru por (_int_ i = 0; i < 701 00:28:30,020 --> 00:28:33,480 ho, 10; i + +). 702 00:28:33,480 --> 00:28:36,620 Kaj nun mi tuj iros antaŭen kaj ne presi la stelo, kiun mi 703 00:28:36,620 --> 00:28:37,890 faris antaŭe. 704 00:28:37,890 --> 00:28:39,390 Kaj poste fine de tiu programo, ni nur tuj 705 00:28:39,390 --> 00:28:41,130 presi nova linio, nur por ke mia prompto 706 00:28:41,130 --> 00:28:42,470 ne aspektas ĉiuj senorda. 707 00:28:42,470 --> 00:28:45,170 revenu 0. 708 00:28:45,170 --> 00:28:47,610 Ŝajnas sintakse ĝusta? 709 00:28:47,610 --> 00:28:48,040 Ĝis nun. 710 00:28:48,040 --> 00:28:48,560 Do ni vidu. 711 00:28:48,560 --> 00:28:51,290 >> Do mi malzomi, iru en mian fina fenestro. 712 00:28:51,290 --> 00:28:54,570 Kaj lasu min antaŭeniri kaj kuri ciklo, ĉar mi nomis tion 713 00:28:54,570 --> 00:28:55,690 afero loop.c. 714 00:28:55,690 --> 00:28:56,780 Do fari banton. 715 00:28:56,780 --> 00:28:57,840 Ŝajnas kompili OK. 716 00:28:57,840 --> 00:29:00,210 Mi kuros ciklo, kaj nun Eniru. 717 00:29:00,210 --> 00:29:01,820 Kaj ŝajnas esti presita 10 steloj. 718 00:29:01,820 --> 00:29:03,780 Do ni nur konverti tion al tempo loop kaj vidi kion 719 00:29:03,780 --> 00:29:05,220 specojn de demandoj ni vojaĝo super. 720 00:29:05,220 --> 00:29:11,290 Do anstataŭ tio, lasu min iri en ĉi tie kaj diru dum mi estas 721 00:29:11,290 --> 00:29:12,760 malpli ol 10 - 722 00:29:12,760 --> 00:29:14,910 lasu min forigi la por buklo. 723 00:29:14,910 --> 00:29:17,170 Bone, do ni havas kelkajn problemojn jam. 724 00:29:17,170 --> 00:29:21,110 Do la kondiĉo estas la sama, sed mi evidente mankas la 725 00:29:21,110 --> 00:29:21,680 inicialización. 726 00:29:21,680 --> 00:29:23,840 Mi mankis la incrementation. 727 00:29:23,840 --> 00:29:28,020 Do kion devus la tradukilo verŝajne diru al mi, kiam mi provos 728 00:29:28,020 --> 00:29:29,170 kompili tiun programon? 729 00:29:29,170 --> 00:29:29,666 Yeah? 730 00:29:29,666 --> 00:29:31,154 Spektantaro: [inaudible]. 731 00:29:31,154 --> 00:29:31,650 >> DAVID J. Malan: Bonan. 732 00:29:31,650 --> 00:29:34,180 Do tuj diri ion kiel nedeklarita - en ĉi tiu 733 00:29:34,180 --> 00:29:35,280 kazo, variablo i. 734 00:29:35,280 --> 00:29:37,980 Kaj efektive, la uzo de nedeklarita ensalutilo i. 735 00:29:37,980 --> 00:29:40,960 Kaj tiel tio estas en kontrasto kun lingvoj kiel PHP kaj 736 00:29:40,960 --> 00:29:43,120 Python kaj Ruby, kun kiu iuj el vi povus esti familiara, 737 00:29:43,120 --> 00:29:44,820 kie vi povas nur ia komenco uzante variabloj 738 00:29:44,820 --> 00:29:47,420 willy-nilly kaj ne devas zorgi pri deklarante ilin 739 00:29:47,420 --> 00:29:48,560 eksplicite ĉiam. 740 00:29:48,560 --> 00:29:51,770 En C kaj en lingvoj kiel Java kaj C + +, vi devas esti 741 00:29:51,770 --> 00:29:53,020 super eksplicita. 742 00:29:53,020 --> 00:29:55,760 Kaj se vi volas variablo nomata mi, vi devas diri al mi 743 00:29:55,760 --> 00:29:57,360 kia variablo estas. 744 00:29:57,360 --> 00:29:59,360 Do ni tuj devas ripari tion kiel sekvas. 745 00:29:59,360 --> 00:30:05,510 Mi tuj devos iri tien kaj tajpu int i; sekve, 746 00:30:05,510 --> 00:30:07,860 Mi raportis pri variablo nomis i. 747 00:30:07,860 --> 00:30:09,180 Nun, mi saltis unu paŝo. 748 00:30:09,180 --> 00:30:11,340 Mi evidente ne inicializado ĝin, sed ni vidu se tiu ĉe 749 00:30:11,340 --> 00:30:13,650 almenaŭ faras Clang halto plendis. 750 00:30:13,650 --> 00:30:15,770 Do lasu min refari tiun programon. 751 00:30:15,770 --> 00:30:16,770 >> Bone, nun ĝi estas ĵus plendis 752 00:30:16,770 --> 00:30:17,870 por malsama kialo. 753 00:30:17,870 --> 00:30:21,130 "Variablo 'i' estas uninitialized kiam uzata ĉi tie." Bone, do 754 00:30:21,130 --> 00:30:22,340 ke estas sufiĉe eksplicita. 755 00:30:22,340 --> 00:30:25,510 Inicializado simple signifas opcio ĝi egalas al valoro. 756 00:30:25,510 --> 00:30:30,820 Kaj ni ne faris tion, do lasu min provi egalas 0. 757 00:30:30,820 --> 00:30:35,030 Nun ni provu ĉi denove kaj denove kuras Clang. 758 00:30:35,030 --> 00:30:36,140 Kompilita ĉi tiu tempo. 759 00:30:36,140 --> 00:30:37,210 Kaj mi komencis forkuri ĝin. 760 00:30:37,210 --> 00:30:43,120 Sed granda maljuna senfina ciklo, ĉar mi faris la 761 00:30:43,120 --> 00:30:45,530 inicialización, mi faris la kondiĉon, sed mi neniam faris 762 00:30:45,530 --> 00:30:47,030 ia incrementation. 763 00:30:47,030 --> 00:30:48,780 Do kiel mi povas fari la incrementation? 764 00:30:48,780 --> 00:30:51,170 Nu, en momento buklo, sentas mi tuj devos 765 00:30:51,170 --> 00:30:54,180 fari ĝin ene de la ciklo, ĉar same kiel la unua 766 00:30:54,180 --> 00:30:56,570 semajno ekzemploj de fari looping konstruas, kiel kun 767 00:30:56,570 --> 00:30:59,040 la ŝtrumpetojn kaj kun la mem-kalkula, ni devis fari 768 00:30:59,040 --> 00:31:01,550 ion al la fino, kiel reiri al la sekvanta linio. 769 00:31:01,550 --> 00:31:05,040 Kio se mi faru ĉi i + + tie? 770 00:31:05,040 --> 00:31:06,030 Ni eĉ ne kompili ĉi. 771 00:31:06,030 --> 00:31:06,890 Catch min jam. 772 00:31:06,890 --> 00:31:09,704 Kio okazas ĉi tie? 773 00:31:09,704 --> 00:31:10,690 Spektantaro: [inaudible]. 774 00:31:10,690 --> 00:31:11,770 >> DAVID J. Malan: Do ĝi certe ne int. 775 00:31:11,770 --> 00:31:13,080 Estas mi. 776 00:31:13,080 --> 00:31:15,110 Kaj la krispa krampoj, kiel antaŭe, 777 00:31:15,110 --> 00:31:16,800 deŝovon ne sufiĉas. 778 00:31:16,800 --> 00:31:18,410 Do nun mi ĉi konstrui. 779 00:31:18,410 --> 00:31:21,780 Do dum i estas malpli ol 10, presi stelo, 780 00:31:21,780 --> 00:31:23,220 tiam pliigo i. 781 00:31:23,220 --> 00:31:25,680 Kaj la vojon iom buklo verkoj kiuj apenaŭ vi frapis la 782 00:31:25,680 --> 00:31:29,630 fundo de la ciklo, kiu en ĉi tiu kazo similas linio 10, 783 00:31:29,630 --> 00:31:32,880 ĝi tuj reiri al la linio 6, je kiu punkto la 784 00:31:32,880 --> 00:31:34,400 kondiĉo estos kontrolata denove. 785 00:31:34,400 --> 00:31:37,500 Kaj se mi estas ankoraŭ malpli ol 10, ni faros linioj 8 kaj 786 00:31:37,500 --> 00:31:41,250 tiam 9, tiam ni batis 10, kaj reiri al 6, denove kaj 787 00:31:41,250 --> 00:31:45,580 denove kaj denove kaj denove, tiom longe kiom mi estas malpli ol 10. 788 00:31:45,580 --> 00:31:47,860 Do estu la re-ruli fari tie. 789 00:31:47,860 --> 00:31:48,940 >> Konsentite, ni kompilis okay. 790 00:31:48,940 --> 00:31:50,300 Lasu min re-run buklo. 791 00:31:50,300 --> 00:31:52,620 Kaj nun ĝi vere ŝajnas funkcii. 792 00:31:52,620 --> 00:31:55,100 Do pluses kaj malpli tie? 793 00:31:55,100 --> 00:31:58,910 Nu, ĝis nun tie fakte ne estas tuta el OLP - 794 00:31:58,910 --> 00:31:59,420 so cute. 795 00:31:59,420 --> 00:32:01,870 Bone, kiu estis - ah, ke estis akcidento. 796 00:32:01,870 --> 00:32:05,200 Bone, do ni reiru al la por buklo. 797 00:32:05,200 --> 00:32:07,530 Do por cikloj estas bela ĉar ili estas super eksplicita. 798 00:32:07,530 --> 00:32:09,720 Kaj eĉ se ili estas iom clunky skribi, estas 799 00:32:09,720 --> 00:32:11,500 tre potenca kaj permesas vin fari 800 00:32:11,500 --> 00:32:12,980 multnombraj aferojn samtempe. 801 00:32:12,980 --> 00:32:16,240 Dum bukloj ne ŝajnas havi grandegan kvanton de valoro nur 802 00:32:16,240 --> 00:32:18,500 tamen, ĉar ĝi sentas kiel ni nur devas fari pli da laboro. 803 00:32:18,500 --> 00:32:20,670 Ni devas meti la inicialización ĝis tie, la 804 00:32:20,670 --> 00:32:23,480 ĝisdatigi ĉi tie, kaj ni devas memori fari ĉion, kion. 805 00:32:23,480 --> 00:32:26,260 Do ni vidos ĝustatempe ke dum maŝojn reale prunti 806 00:32:26,260 --> 00:32:29,380 sin nur malsamaj kuntekstoj, malsamaj datumoj 807 00:32:29,380 --> 00:32:33,900 strukturoj kiel lertaj kaj hash tabloj, aĵoj ni atingos 808 00:32:33,900 --> 00:32:34,970 meze semestro. 809 00:32:34,970 --> 00:32:37,900 Sed nuntempe, scias, ke tie estas tio tria tipo konata kiel do- 810 00:32:37,900 --> 00:32:38,480 dum ciklo. 811 00:32:38,480 --> 00:32:39,540 Kaj ni vidis ĉi mallonge. 812 00:32:39,540 --> 00:32:41,830 Kaj tiu povus esti super helpema kun pset 1. 813 00:32:41,830 --> 00:32:45,570 Ajn vi volas fari ion, kaj poste kontroli se 814 00:32:45,570 --> 00:32:48,940 la uzanto kunlaboris, kaj se ili ne faris tion, faru ĝin denove, do- 815 00:32:48,940 --> 00:32:51,460 dum buklo pruntas al tiu speco de logiko. 816 00:32:51,460 --> 00:32:55,640 Ĉar kiel la ordigante de supre ĝis malsupre tie sugestas, 817 00:32:55,640 --> 00:32:57,750 do laŭvorte signifas fari ĉi tion. 818 00:32:57,750 --> 00:32:59,830 Kaj fari tion denove kaj denove, kio povus tiu esti? 819 00:32:59,830 --> 00:33:03,000 Eble tio signifas nomante GetInt aŭ GetString kaj poste 820 00:33:03,000 --> 00:33:05,830 kontrolanta la valoro de GetInt aŭ GetString kaj tiam krii 821 00:33:05,830 --> 00:33:08,260 ĉe la uzanto se ili ne kunlaboris petante ilin 822 00:33:08,260 --> 00:33:10,100 denove kaj denove kaj denove. 823 00:33:10,100 --> 00:33:11,730 Kie vi deziras fari ion iam, 824 00:33:11,730 --> 00:33:13,210 tiam kontrolu iu kondiĉo. 825 00:33:13,210 --> 00:33:14,110 >> Do ni provu tion. 826 00:33:14,110 --> 00:33:17,130 Lasu min vere ŝanĝi ĉi nun al do-dum ciklo. 827 00:33:17,130 --> 00:33:18,830 Kaj mi tuj faru la sekvajn. 828 00:33:18,830 --> 00:33:21,830 Do faru la sekvajn. 829 00:33:21,830 --> 00:33:26,870 Ni faru int i = GetInt (), sed ni unue diri al la uzanto 830 00:33:26,870 --> 00:33:27,410 kion fari. 831 00:33:27,410 --> 00:33:29,050 Do iom malsama ĉi tiu tempo. 832 00:33:29,050 --> 00:33:31,270 "Donu al mi int". 833 00:33:31,270 --> 00:33:32,910 Do mi devos uzi printf por tio. 834 00:33:32,910 --> 00:33:35,740 Kaj nun mi tuj iros malsupren tie, kaj Mi faros ĉi 835 00:33:35,740 --> 00:33:41,520 dum mi estas, ni diru, pli granda ol - 836 00:33:41,520 --> 00:33:47,540 ni vidu, mi estas, ni diru, malpli ol 0, aŭ mi estas 837 00:33:47,540 --> 00:33:48,730 pli granda ol 10. 838 00:33:48,730 --> 00:33:51,810 Alivorte, mi volas numeron de 1 ĝis 9, nur 839 00:33:51,810 --> 00:33:52,720 arbitre. 840 00:33:52,720 --> 00:33:55,290 Do Mi uzas kombinita Bulea esprimo ĉi tie por 841 00:33:55,290 --> 00:33:59,930 certigi ke mi estas malpli ol 0 aŭ pli granda ol 10, en kiu 842 00:33:59,930 --> 00:34:02,530 kazo mi faros ĉi buklo tie denove. 843 00:34:02,530 --> 00:34:04,400 Do denove, do tio - 844 00:34:04,400 --> 00:34:08,480 dum i estas malpli ol 0 aŭ i estas pli granda ol 10. 845 00:34:08,480 --> 00:34:11,440 >> Do nun ni faru ĉi fojon ni faris tion. 846 00:34:11,440 --> 00:34:13,270 Ni nur faru rapidan prudento ĉeko. 847 00:34:13,270 --> 00:34:18,929 printf ("Dankon, mi estas% d", i). 848 00:34:18,929 --> 00:34:21,350 Do ĉi tiu simpla programo demandas al la uzanto por int, 849 00:34:21,350 --> 00:34:24,000 certigas estas ene de iu teritorio, 1 al 9 inkluziva, 850 00:34:24,000 --> 00:34:26,280 kaj tiam gracias la uzanto por memorigi al ili kion ili nur 851 00:34:26,280 --> 00:34:27,940 tajpita en, kiel iom prudento ĉeko. 852 00:34:27,940 --> 00:34:30,659 Sed ni vidu se ĉi funkcias kiel intencita. 853 00:34:30,659 --> 00:34:34,533 Lasu min iri kapo malsupren tie kaj re-ruli fari banton. 854 00:34:34,533 --> 00:34:35,350 Hmm. 855 00:34:35,350 --> 00:34:38,600 "Uzo de nedeklarita ensalutilo 'i'". Tio estas stranga. 856 00:34:38,600 --> 00:34:41,509 Mi pensis ke ni decidis tion. 857 00:34:45,489 --> 00:34:47,560 Sama simptomo sed malsama kodo. 858 00:34:47,560 --> 00:34:47,899 Yeah? 859 00:34:47,899 --> 00:34:50,191 Spektantaro: [inaudible] ene de la du, ni devas 860 00:34:50,191 --> 00:34:52,639 [Inaudible]. 861 00:34:52,639 --> 00:34:53,260 >> DAVID J. Malan: Ĝuste. 862 00:34:53,260 --> 00:34:55,989 Do tiu fakte kondukas al temo konata kiel medion. 863 00:34:55,989 --> 00:34:59,350 Ĝi rezultas ke C, denove, vere prenas vi laŭvorte. 864 00:34:59,350 --> 00:35:02,970 Kaj se vi faros ion kiel tiu kie vi deklaru int 865 00:35:02,970 --> 00:35:06,120 kaj poste atribui ĝin iu valoro, sed vi faru tion interne de 866 00:35:06,120 --> 00:35:09,840 paro de frizita krampoj, kio C faras estas supozas ke vi 867 00:35:09,840 --> 00:35:14,800 nur volas tiuj 32 bitoj konata kiel mi al ekzistas ene de la 868 00:35:14,800 --> 00:35:18,200 kunteksto de tiuj buklaj krampoj, ene de la kunteksto de linioj 869 00:35:18,200 --> 00:35:22,420 6 per 9. Do i estas deklarita, kaj ĝi estas atribuita 870 00:35:22,420 --> 00:35:26,530 valoro en linio 8, sed tuj kiam vi ricevas ekster 871 00:35:26,530 --> 00:35:30,270 linio 9 sub la frizita streĉa, i ne plu estas en 872 00:35:30,270 --> 00:35:31,910 medion, por tiel diri. 873 00:35:31,910 --> 00:35:35,030 S-C-O-P-E. Ĝi ne plu en la dekstra kadro. 874 00:35:35,030 --> 00:35:37,940 Do nun estas ne mi, do ĝi estas kvazaŭ ni havis eĉ ne 875 00:35:37,940 --> 00:35:38,770 deklaris ĝin. 876 00:35:38,770 --> 00:35:41,520 >> Do kio estas riparas tiam por io tiamaniere, se la 877 00:35:41,520 --> 00:35:44,300 kialo estas ke mi estas deklarita en la frizita krampoj, kiuj 878 00:35:44,300 --> 00:35:45,120 estas ŝajne malbona? 879 00:35:45,120 --> 00:35:45,410 Ĉi tie? 880 00:35:45,410 --> 00:35:46,820 Spektantaro: [inaudible]. 881 00:35:46,820 --> 00:35:47,150 DAVID J. Malan: Yeah. 882 00:35:47,150 --> 00:35:48,710 Do ni povas pravalorizi ĝin ekstere. 883 00:35:48,710 --> 00:35:53,530 Do lasu min antaŭeniri kaj forviŝi la deklaro partoj per 884 00:35:53,530 --> 00:35:55,820 Mi specifi la tipon, kaj lasu min fari ĝin ĉi tie. 885 00:35:55,820 --> 00:36:00,220 Do en linio 5, nun diras "Donu al mi int." Nomas ĝin mi. 886 00:36:00,220 --> 00:36:03,400 Rimarki en la linio 9, mi ne volas fari tion, ĉar mi 887 00:36:03,400 --> 00:36:04,830 jam havas la 32 bitoj. 888 00:36:04,830 --> 00:36:06,140 Mi ne volas demandi al la komputilo por 889 00:36:06,140 --> 00:36:07,630 malsamaj 32 bitoj. 890 00:36:07,630 --> 00:36:09,850 Mi volas uzi tiuj samaj 32 bitoj. 891 00:36:09,850 --> 00:36:13,190 Kaj nun ĉar mi estas deklarita en linio 5, estas ankoraŭ legit 892 00:36:13,190 --> 00:36:16,550 uzi ĝin en linio 11 kaj linio 12. 893 00:36:16,550 --> 00:36:19,310 >> Do mi provos recompilar ĉi kaj vidu 894 00:36:19,310 --> 00:36:20,490 se Clang ĉesu krii. 895 00:36:20,490 --> 00:36:22,380 fari banton. 896 00:36:22,380 --> 00:36:25,470 Do nun estas "implica deklaro de funkcio 897 00:36:25,470 --> 00:36:29,880 'GetInt' estas nevalida en C99. "Kio estas tio? 898 00:36:29,880 --> 00:36:30,400 Yeah? 899 00:36:30,400 --> 00:36:32,330 Spektantaro: [inaudible]. 900 00:36:32,330 --> 00:36:32,690 DAVID J. Malan: Yeah. 901 00:36:32,690 --> 00:36:35,520 Do nun, ke mi efektive uzante GetInt, ĉi tio ne estas io 902 00:36:35,520 --> 00:36:38,190 ke nur venas kun C. Ĉi tio venas de CS50. 903 00:36:38,190 --> 00:36:39,890 Do ni bezonas ĉi tie. 904 00:36:39,890 --> 00:36:41,450 Kaj lasu min iri reen al la prompto malsupren 905 00:36:41,450 --> 00:36:43,500 tie kaj re-ruli fari. 906 00:36:43,500 --> 00:36:44,160 Konsentite, fine. 907 00:36:44,160 --> 00:36:46,270 Nun ni decidis ke kaj la alia eraro. 908 00:36:46,270 --> 00:36:48,930 Permesu al mi kuri buklo kaj vidu kio okazas. 909 00:36:48,930 --> 00:36:51,740 "Donu al mi int." Mi donos al ĝi 11. 910 00:36:51,740 --> 00:36:53,100 Mi donos al ĝi -1. 911 00:36:53,100 --> 00:36:54,470 Mi donos al ĝi foo. 912 00:36:54,470 --> 00:36:56,080 Mi donos al ĝi 5. 913 00:36:56,080 --> 00:36:57,450 Kaj nun ĝi ja funkcias. 914 00:36:57,450 --> 00:36:59,410 Sed la prompto ŝanĝis por kialo tie. 915 00:36:59,410 --> 00:37:02,800 Kial ĝi diras reprovi unu el tiuj tempoj sed donu al mi 916 00:37:02,800 --> 00:37:03,920 Mez la aliaj tri fojojn? 917 00:37:03,920 --> 00:37:05,500 Kial tiu konduto malsamaj? 918 00:37:05,500 --> 00:37:06,980 Spektantaro: Donis ĝin ĉenon. 919 00:37:06,980 --> 00:37:07,830 DAVID J. Malan: Pardonu? 920 00:37:07,830 --> 00:37:08,570 Spektantaro: Vi donis ĝin ĉenon. 921 00:37:08,570 --> 00:37:08,990 DAVID J. Malan: Yeah. 922 00:37:08,990 --> 00:37:11,450 Do ni donis ĝin ĉenon en ĉi tiu tria provo, 923 00:37:11,450 --> 00:37:12,490 kiam mi tajpis foo. 924 00:37:12,490 --> 00:37:13,200 Foo estas ĉeno. 925 00:37:13,200 --> 00:37:14,340 Estas evidente ne int. 926 00:37:14,340 --> 00:37:17,500 Kaj la vojon kiun CS50 estas implementado GetInt estas, ke ni 927 00:37:17,500 --> 00:37:20,330 Ne kontroli se io estas malpli ol 0 aŭ pli granda ol 10 928 00:37:20,330 --> 00:37:22,260 por vi, ĉar kiel ni scias anticipe kia 929 00:37:22,260 --> 00:37:23,130 int vi volas? 930 00:37:23,130 --> 00:37:25,880 Sed ni povas minimume kontroli por vi, ĉu la uzanto almenaŭ 931 00:37:25,880 --> 00:37:26,730 tajpi entjero? 932 00:37:26,730 --> 00:37:30,500 Kaj se ili ne faris tion, ni krias al la uzanto per tajpo de "reprovi" on 933 00:37:30,500 --> 00:37:31,440 la ekrano. 934 00:37:31,440 --> 00:37:34,210 >> Do nun ni havas programon ke tio looping. Okay. 935 00:37:34,210 --> 00:37:37,070 Nun, kiu el tiuj estas varo de la bona konstruo? 936 00:37:37,070 --> 00:37:39,060 Do tiu estas kie aĵoj komencas akiri iom senorda, la 937 00:37:39,060 --> 00:37:42,360 fakto, ke vi devas memori deklari variablon tien 938 00:37:42,360 --> 00:37:44,630 se vi volas uzi ĝin ene de iu 939 00:37:44,630 --> 00:37:46,460 frizita streĉaj kaj ekstere. 940 00:37:46,460 --> 00:37:48,490 Sed eĉ se tio aspektas iom críptico unue 941 00:37:48,490 --> 00:37:50,750 rigardo, nur denove, memoru la simpla logiko. 942 00:37:50,750 --> 00:37:54,630 Por uzi ion en C, ĉu ĝi estas funkcio aŭ 943 00:37:54,630 --> 00:37:57,680 ĝi estas variablo, vi devas inkluzivi ĝin se estas funkcio 944 00:37:57,680 --> 00:37:59,770 en iu biblioteko, aŭ vi devas konfesi. 945 00:37:59,770 --> 00:38:02,405 Sed nun vi devas esti superflua memoru la fakto, ke 946 00:38:02,405 --> 00:38:04,940 vi deklarante ĝin en la rajton medion. 947 00:38:04,940 --> 00:38:08,150 Vi ne metante ĝin tro firme ene de krampoj. 948 00:38:08,150 --> 00:38:09,410 >> Do mi efektive ruliĝas dorso. 949 00:38:09,410 --> 00:38:12,660 Se ni reiru al nia ekzemple de antaŭe, kaj mi iras 950 00:38:12,660 --> 00:38:19,245 reen al por int, int i = 0; i <10; i + +, kaj mi 951 00:38:19,245 --> 00:38:26,370 fari printf steloj, kiel ĉi tiu, kaj tiam proksime paren, kaj nun 952 00:38:26,370 --> 00:38:30,410 printf i estas nun - 953 00:38:30,410 --> 00:38:33,500 laŭ la sama logiko, kio okazos, kiam mi provos 954 00:38:33,500 --> 00:38:35,500 kompili tiun programon? 955 00:38:35,500 --> 00:38:36,790 Spektantaro: Nevalida identigilo. 956 00:38:36,790 --> 00:38:38,560 DAVID J. Malan: Do ĝi alian nevalida identigilo, 957 00:38:38,560 --> 00:38:39,470 nedeklarita ensalutilo. 958 00:38:39,470 --> 00:38:41,810 Nun, la kialo estas iom malsama. 959 00:38:41,810 --> 00:38:44,370 Estas evidente ne frizita krampoj tie, sed la sama 960 00:38:44,370 --> 00:38:46,790 ideo, la sama rakonto de medio aplikas. 961 00:38:46,790 --> 00:38:50,340 Se vi deklaras variablon kiel i interne de 962 00:38:50,340 --> 00:38:53,960 por ciklo, eĉ se vi ne eksplicite skribis la frizita 963 00:38:53,960 --> 00:38:56,980 krampoj, pensu pri ilin mense kiel ankoraŭ estas tie, en kiu 964 00:38:56,980 --> 00:39:00,310 kazo mi estas nur valida interne de la por buklo. 965 00:39:00,310 --> 00:39:03,080 Ĝi ne estas valida kiam vi atingos la sekvanta linio, kiu en 966 00:39:03,080 --> 00:39:05,090 ĉi tiu kazo estas nun 10. 967 00:39:05,090 --> 00:39:09,060 Do nur kelkaj demandoj de medio kaj similaj. 968 00:39:09,060 --> 00:39:12,620 Bone, demandojn? 969 00:39:12,620 --> 00:39:15,310 >> Bone, do ĉi tiu estas speco de bagatela iom programo, 970 00:39:15,310 --> 00:39:17,450 presi nur iom steloj. 971 00:39:17,450 --> 00:39:20,400 Sed ni vidu, se vi memoras tiun kanton ĉi tie. 972 00:39:20,400 --> 00:39:22,530 Ĉi tiu estas nekredeble tedas kanto la infanoj kantis en 973 00:39:22,530 --> 00:39:23,550 la lerneja buso kaj similaj. 974 00:39:23,550 --> 00:39:25,990 Sed kio estas agrabla pri tio estas ke ĝi havas ĉi ciclicidad, 975 00:39:25,990 --> 00:39:27,910 per tio "99 boteloj da biero sur la muro, 976 00:39:27,910 --> 00:39:28,520 99 botelojn da biero. 977 00:39:28,520 --> 00:39:31,030 Prenu unu malsupren, pasi ĝin ĉirkaŭe, 98 boteloj da biero sur la 978 00:39:31,030 --> 00:39:34,330 muro. "Kaj tiam la kanto ripetas la 97, tiam 96, do 979 00:39:34,330 --> 00:39:38,040 95, tiam 94, la tutan vojon malsupren al 0 se vi efektive havas tiun 980 00:39:38,040 --> 00:39:38,920 malproksime sur la buso. 981 00:39:38,920 --> 00:39:41,960 Do ĉi tiu estas bona programo por ordigi de ilo, ĉar mia 982 00:39:41,960 --> 00:39:43,650 Dio, se vi povus simple apliki tion kun kelkaj 983 00:39:43,650 --> 00:39:46,660 linioj de kodo, vi povus kracxis el la tuta literoj al ĉi 984 00:39:46,660 --> 00:39:48,240 kanto sufiĉe rapide. 985 00:39:48,240 --> 00:39:50,420 Sed laŭ la maniero, ni povas komenci nun tease apartigas iujn 986 00:39:50,420 --> 00:39:52,460 de tiuj bazaj looping konstruoj kaj nun ankaŭ 987 00:39:52,460 --> 00:39:55,830 enkonduki funkcioj, ke ni skribu nin, revenu valoroj 988 00:39:55,830 --> 00:39:57,020 ke ni pasas ĉirkaŭe. 989 00:39:57,020 --> 00:39:58,910 Sed unue, kial ni ne iras antaŭen kaj prenu nian kvin minutoj 990 00:39:58,910 --> 00:39:59,320 rompi ĉi tie? 991 00:39:59,320 --> 00:40:01,480 Kaj kiam ni reiros, ni kantos ĉi tiu kanto. 992 00:40:05,680 --> 00:40:08,760 >> Bone, do ni estas dorso. 993 00:40:08,760 --> 00:40:11,850 Kaj kiam mi diras, ke ni nun kanti tiun kanton, mi volas diri 994 00:40:11,850 --> 00:40:13,250 programmatically, ne parole. 995 00:40:13,250 --> 00:40:19,370 Do jen ni havas beer1.c, kiu estas unu realigo de ĉi 996 00:40:19,370 --> 00:40:20,580 aparta kanto. 997 00:40:20,580 --> 00:40:23,110 Kaj nur por esti klara, por kiuj ne konas kio 998 00:40:23,110 --> 00:40:24,460 tiun aferon similas, lasu min iri antaŭen 999 00:40:24,460 --> 00:40:27,070 kaj faru beer1, Enter. 1000 00:40:27,070 --> 00:40:30,400 Nun mi kuros beer1, kaj kion ni vidos - kiom da boteloj 1001 00:40:30,400 --> 00:40:31,140 de biero estos esti? 1002 00:40:31,140 --> 00:40:33,240 Mi tajpas en 99, kiel la kanto diras. 1003 00:40:33,240 --> 00:40:34,040 Eniri. 1004 00:40:34,040 --> 00:40:35,650 Kaj nun se ni rulumi tra - 1005 00:40:35,650 --> 00:40:38,280 oops - se ni rulumi tra ĉio ĉi, ni vidos, ke 1006 00:40:38,280 --> 00:40:41,350 ĉi tio ja kanti la tutan kanton. 1007 00:40:44,050 --> 00:40:44,540 Atendu minuton. 1008 00:40:44,540 --> 00:40:46,240 Mia rulumskalon estas iom paneas. 1009 00:40:46,240 --> 00:40:47,940 Ni uzu la pli granda fenestro. 1010 00:40:47,940 --> 00:40:53,500 Do beer1, 99, tie ni iru. 1011 00:40:53,500 --> 00:40:56,420 Do jen ni havas la tuta kanto, kantita multe pli rapide per la 1012 00:40:56,420 --> 00:40:58,450 komputilo kio povus esti por ni. 1013 00:40:58,450 --> 00:41:00,340 Do rimarki, tamen, la cikla naturo tie. 1014 00:41:00,340 --> 00:41:03,380 Ĝi diras 99, tiam 99, tiam "preni unu malsupren, pasi ĝin 1015 00:41:03,380 --> 00:41:04,740 ĉirkaŭe, "tiam 98. 1016 00:41:04,740 --> 00:41:06,640 Kaj nun ripetas ree kaj ree. 1017 00:41:06,640 --> 00:41:08,840 >> Do tiu estas fakte perfekta ŝanco por ia 1018 00:41:08,840 --> 00:41:10,400 looping konstrui. 1019 00:41:10,400 --> 00:41:12,950 Rimarku ke mi estas speco de tranĉi angulo tie. 1020 00:41:12,950 --> 00:41:15,960 Rimarku, ke mi estas diranta "98 boteloj da biero sur la muro, 1021 00:41:15,960 --> 00:41:19,010 97 boteloj da biero sur la muro ", kaj kiu estis simple tiel 1022 00:41:19,010 --> 00:41:21,640 ke kiam ni atingos unu boteloj de biero, mi ne havas 1023 00:41:21,640 --> 00:41:23,300 zorgi pri la angla gramatiko. 1024 00:41:23,300 --> 00:41:25,790 Sed ni povas ankaŭ korekti ĉi tion kun iom de se 1025 00:41:25,790 --> 00:41:26,910 kondiĉo, eble. 1026 00:41:26,910 --> 00:41:30,110 Se ĉi tiu nombro estas unuopa, antaŭeniri kaj diru "botelo", 1027 00:41:30,110 --> 00:41:31,840 alie se estas pluralo, diri "boteloj". 1028 00:41:31,840 --> 00:41:34,150 Sed nuntempe, mi tute tranĉante tiu angulo. 1029 00:41:34,150 --> 00:41:35,520 Do ni vidu kion ni havas ĉi tie. 1030 00:41:35,520 --> 00:41:37,150 Do ni havas iujn komentojn ĉe la supro. 1031 00:41:37,150 --> 00:41:39,450 Mi inkludante tiujn du bibliotekoj, kiel 1032 00:41:39,450 --> 00:41:41,140 ni komune. 1033 00:41:41,140 --> 00:41:43,610 Kaj nun mi rulu suben ĝis la unua 1034 00:41:43,610 --> 00:41:44,990 reala linioj de kodo. 1035 00:41:44,990 --> 00:41:47,020 Linio 17 piedbatoj sur ĉefa. 1036 00:41:47,020 --> 00:41:50,610 Linio 21 kaj 20 havas kiom da boteloj de biero estos esti? 1037 00:41:50,610 --> 00:41:52,060 Kaj poste mi vokas GetInt. 1038 00:41:52,060 --> 00:41:53,800 Kaj nun mi havas iom de prudento ĉeko. 1039 00:41:53,800 --> 00:41:57,030 >> Do ĉi tiu estas konvencio ke ni nun komencas adoptante al 1040 00:41:57,030 --> 00:41:59,620 pli rigore kontroli la uzanto enigo. 1041 00:41:59,620 --> 00:42:01,710 Iam vi ĵus ne volas instigas ilin denove 1042 00:42:01,710 --> 00:42:02,630 kaj denove kaj denove. 1043 00:42:02,630 --> 00:42:05,620 Se la uzanto ŝraŭboj tien kaj ne kunlabori, fajna. 1044 00:42:05,620 --> 00:42:07,430 Quit kaj simple ne trakti ilin. 1045 00:42:07,430 --> 00:42:08,990 Kaj tiel tio estas kion mi faras tie. 1046 00:42:08,990 --> 00:42:12,520 Se n estas malpli ol 1, mi nur tuj krias al la uzanto, 1047 00:42:12,520 --> 00:42:14,330 "Pardonu, ke ne havas senson." Kaj poste mi iros al 1048 00:42:14,330 --> 00:42:16,650 arbitre reveni 1. 1049 00:42:16,650 --> 00:42:18,550 Do denove, ĉi tiu estas nur konvencio kutimi. 1050 00:42:18,550 --> 00:42:19,850 Por la momento, prenu gxin sur fido. 1051 00:42:19,850 --> 00:42:22,700 Sed ĝis nun, ni ĉiam reveni 0, ĉar 1052 00:42:22,700 --> 00:42:25,204 ni diris reveni 0 signifas kion? 1053 00:42:25,204 --> 00:42:26,000 Spektantaro: Sukceso. 1054 00:42:26,000 --> 00:42:27,320 DAVID J. Malan: Sukceso, jen ĉio. 1055 00:42:27,320 --> 00:42:29,740 Do nun ke ni fine komencas pensi 1056 00:42:29,740 --> 00:42:31,330 ne-sukcesoj - 1057 00:42:31,330 --> 00:42:33,760 en aliaj vortoj, angulo kazoj, eraro kondiĉoj - 1058 00:42:33,760 --> 00:42:37,520 nun mi havas senfinan provizon aŭ almenaŭ kvar miliardoj 1059 00:42:37,520 --> 00:42:39,790 eblaj aĵoj kiuj povas iri malbone en mia programoj. 1060 00:42:39,790 --> 00:42:42,300 Kaj mi povas komenci atribui ilin individuaj nombroj. 1061 00:42:42,300 --> 00:42:44,340 Nun, ĝenerale sufiĉas simple reveni 1062 00:42:44,340 --> 00:42:45,730 io alia ol 0. 1063 00:42:45,730 --> 00:42:48,040 Do ni tuj simple reveni 1 por nun. 1064 00:42:48,040 --> 00:42:51,440 Sed la kialo por reveni 1 estas ke tuj kiam vi revenos 1065 00:42:51,440 --> 00:42:55,110 1, diveni kio okazas al la resto de la programo? 1066 00:42:55,110 --> 00:42:55,720 Ĝi haltas. 1067 00:42:55,720 --> 00:42:56,560 Estas tio. 1068 00:42:56,560 --> 00:42:59,150 Do la fakto, ke mi revenis 1 estas efektive 1069 00:42:59,150 --> 00:43:02,950 mallonga circuiting ĉi programo ekzekuto por ke 1070 00:43:02,950 --> 00:43:06,780 nenio sub linio 27 daŭrigos ekzekuti. 1071 00:43:06,780 --> 00:43:09,210 Apenaŭ ĉefa revenas, tio estas ĝi. 1072 00:43:09,210 --> 00:43:13,160 >> Bone, do se la uzanto faras kunlabori kaj ni atingos linio 30 1073 00:43:13,160 --> 00:43:15,680 ĉar ili tajpis en leĝa nombro, jen mia 1074 00:43:15,680 --> 00:43:16,990 efektivigo de ĉi tiu kanto. 1075 00:43:16,990 --> 00:43:19,050 Do mi unue presi novan linion karaktero, nur por 1076 00:43:19,050 --> 00:43:19,880 estetiko. 1077 00:43:19,880 --> 00:43:21,500 Mi nun havas por buklo. 1078 00:43:21,500 --> 00:43:22,930 Kaj rimarkos mi faras tion en iom 1079 00:43:22,930 --> 00:43:23,880 de malsama direkto. 1080 00:43:23,880 --> 00:43:26,210 Mi ne devas fari malpli ol, mi ne devas fari + +. 1081 00:43:26,210 --> 00:43:30,660 Mi povas anstataŭe diri pravalorizi variablo i, starigis ĝin egala al 1082 00:43:30,660 --> 00:43:35,080 n, la nombro de la uzanto tajpas en, tiam faru la sekvan, tiom 1083 00:43:35,080 --> 00:43:39,590 longa kiel i estas pli granda ol 0, tiam mi - 1084 00:43:39,590 --> 00:43:42,070 iam vi finita ripeto de ĉi ciklo. 1085 00:43:42,070 --> 00:43:44,310 Do ni povas kalkuli suben uzanta por buklo tiel. 1086 00:43:44,310 --> 00:43:47,520 Nun, ĉi tiu estas preskaux semajno unu stuff nun, kun printf. 1087 00:43:47,520 --> 00:43:51,770 Do print "% d boteloj de biero sur la muro." Print "% d 1088 00:43:51,770 --> 00:43:54,990 botelojn da biero. "" Prenu unu malsupren, pasi ĝin ĉirkaŭ. "Presi 1089 00:43:54,990 --> 00:43:58,880 "% D boteloj de biero sur la muro." Do ĝi estas ankoraŭ% d, sed 1090 00:43:58,880 --> 00:44:02,770 rimarkas, ke la argumento al printf ŝanĝas. 1091 00:44:02,770 --> 00:44:05,840 Post la komo, mi havas mi, ĉar mi volas diri 99. 1092 00:44:05,840 --> 00:44:08,590 Post ĉi tiu komo, mi havas mi, ĉar mi volas diri 99. 1093 00:44:08,590 --> 00:44:14,030 Post ĉi tiu komo, mi havas i - 1, ĉar mi volas diri 98 en 1094 00:44:14,030 --> 00:44:16,260 tiu unua ripeto, kaj tiel plu. 1095 00:44:16,260 --> 00:44:18,520 Kaj nun cxi tie, mi nur havas iom stulta iom rimarko. 1096 00:44:18,520 --> 00:44:22,270 Kaj tiam linio 42, mi revenos 0 per konvencio, signifante ke 1097 00:44:22,270 --> 00:44:23,650 ĉio estas bone. 1098 00:44:23,650 --> 00:44:24,490 >> Do kio se mi goofed? 1099 00:44:24,490 --> 00:44:26,350 Kio povus komuna eraro ĉi tie estos? 1100 00:44:26,350 --> 00:44:29,200 Nu, kio se mi hazarde diris bone, mi volas rakonti 1101 00:44:29,200 --> 00:44:31,640 malsupren al 0, mi volas 0 boteloj de biero sur la muro? 1102 00:44:31,640 --> 00:44:34,620 Do mi diras, mi estas pli granda ol aŭ egala al 0. 1103 00:44:34,620 --> 00:44:38,920 Kio okazas al esti la simptomo, ke mi nun vidas, se mi recompilar 1104 00:44:38,920 --> 00:44:41,173 beer1 kaj ruli ĝin? 1105 00:44:41,173 --> 00:44:42,120 Spektantaro: Negativaj. 1106 00:44:42,120 --> 00:44:43,590 DAVID J. Malan: Jes, ĝi estas gonna go negativa. 1107 00:44:43,590 --> 00:44:45,950 Ĉi tiu estas ekstere per-unu eraro, nekredeble 1108 00:44:45,950 --> 00:44:47,270 komuna eraro fari. 1109 00:44:47,270 --> 00:44:48,960 Ni efektive reiros al la stacio fenestro kaj fari ĝin 1110 00:44:48,960 --> 00:44:50,620 ĉi tie, do ni povas vidi pli samtempe. 1111 00:44:50,620 --> 00:44:53,280 Eniri, 99 boteloj da biero. 1112 00:44:53,280 --> 00:44:56,580 Apude, sed ni iris nur milde tro for. 1113 00:44:56,580 --> 00:45:00,500 Ni kantis la kanton tro malproksime sube, tia ke oni nun batis la 1114 00:45:00,500 --> 00:45:01,510 negativa nombro. 1115 00:45:01,510 --> 00:45:03,680 Do ĝi ne sufiĉe funkcias. 1116 00:45:03,680 --> 00:45:06,450 >> Bone, do ni povas facile ripari ke irante reen al la 1117 00:45:06,450 --> 00:45:07,650 maniero fojon estis. 1118 00:45:07,650 --> 00:45:10,360 Sed kion estas iuj ŝancoj nun por 1119 00:45:10,360 --> 00:45:11,190 plibonigo? 1120 00:45:11,190 --> 00:45:17,200 Nu, mi malfermos beer2.c kaj rulu suben tie kaj preni 1121 00:45:17,200 --> 00:45:19,310 rigardi ĉi tiun version. 1122 00:45:19,310 --> 00:45:21,370 Kio estas la unua aĵo kiun elsaltas ĉe vi kiel malsamaj 1123 00:45:21,370 --> 00:45:23,715 en ĉi tiu versio ĉi tie? 1124 00:45:23,715 --> 00:45:24,190 Spektantaro: [inaudible]. 1125 00:45:24,190 --> 00:45:26,510 DAVID J. Malan: Yeah, do ne plu mi, ĉar ĝi donis al 1126 00:45:26,510 --> 00:45:29,350 mi vi scias kion, mi petas al la uzanto por n, kaj tiam mi 1127 00:45:29,350 --> 00:45:33,580 opcio i egala al n, kaj tiam mi ŝanĝas i, sed mi neniam 1128 00:45:33,580 --> 00:45:34,590 tuŝi n denove. 1129 00:45:34,590 --> 00:45:37,390 Do kio estas la heck estis la punkto de vi atribuante alian 32 1130 00:45:37,390 --> 00:45:45,210 bitoj nomis i nur por ke mi povas havi malsaman variablo? 1131 00:45:45,210 --> 00:45:47,960 Do ĉi-kaze, mi ia rekonis ke nenecesajn 1132 00:45:47,960 --> 00:45:49,190 dezajno karakterizaĵo. 1133 00:45:49,190 --> 00:45:52,730 Kaj mi nun intencas diri dum n estas pli granda ol 0, iru 1134 00:45:52,730 --> 00:45:56,180 antaŭeniris kaj presi la sama kanto, pasante n al printf kiel la 1135 00:45:56,180 --> 00:46:00,210 dua argumento, kaj n - 1 kiel la dua argumento cxi tie. 1136 00:46:00,210 --> 00:46:02,930 Kaj tiam en ĉiu ripeto de ĉi ciklo, antaŭeniri kaj justa 1137 00:46:02,930 --> 00:46:05,080 dekremento n mem. 1138 00:46:05,080 --> 00:46:06,960 Nun, funkcie, tiu programo 1139 00:46:06,960 --> 00:46:08,010 tuj estos identaj. 1140 00:46:08,010 --> 00:46:10,730 Se mi tajpas en 99, n startas je 99. 1141 00:46:10,730 --> 00:46:12,890 Mi dekremento, dekremento, dekremento, dekremento. 1142 00:46:12,890 --> 00:46:15,875 Mi iros akiri la tutan vojon malsupren al "Unu botelo de biero sur 1143 00:46:15,875 --> 00:46:16,740 la muro, unu botelo da biero. 1144 00:46:16,740 --> 00:46:18,020 Prenu unu malsupren, pasi ĝin ĉirkaŭe. 1145 00:46:18,020 --> 00:46:21,480 0 boteloj de biero sur la muro. "La fino, ĉar mi faris 1146 00:46:21,480 --> 00:46:23,200 akiri la kondiĉo ĝentila. 1147 00:46:23,200 --> 00:46:24,280 Estas granda ol 0. 1148 00:46:24,280 --> 00:46:26,220 Mi ne faris tiun eraron. 1149 00:46:26,220 --> 00:46:28,470 >> Do kio estas bona, versio unu aŭ du versio? 1150 00:46:31,380 --> 00:46:33,480 Do mi aŭdis faskon da murmurado por du. 1151 00:46:33,480 --> 00:46:34,730 Kial du? 1152 00:46:37,210 --> 00:46:38,225 Kio estas tio? 1153 00:46:38,225 --> 00:46:39,215 Spektantaro: [inaudible]. 1154 00:46:39,215 --> 00:46:40,070 DAVID J. Malan: Ho, bone. 1155 00:46:40,070 --> 00:46:42,870 Do ne iros sub 0, sed memoru, en versio, la 1156 00:46:42,870 --> 00:46:45,870 originalaj korekta versio ne iru sub 0 ĉu. 1157 00:46:45,870 --> 00:46:48,340 Do memoru, ke tio estas la ĝusta versio. 1158 00:46:48,340 --> 00:46:51,630 Do estas almenaŭ kompari la du ĝentilaj versioj. 1159 00:46:51,630 --> 00:46:53,300 Kio estas argumento favore versio 1160 00:46:53,300 --> 00:46:55,146 du esti, mmm, pli bona? 1161 00:46:55,146 --> 00:46:55,642 Yeah? 1162 00:46:55,642 --> 00:46:57,630 Spektantaro: Ĝi uzas malpli da spaco. 1163 00:46:57,630 --> 00:46:59,530 DAVID J. Malan: Konsentite, do ĝi uzas malpli da spaco, ĉu ne? 1164 00:46:59,530 --> 00:47:02,900 Dum versio oni uzas 32 bitojn por n, kaj tiam alia 1165 00:47:02,900 --> 00:47:07,680 32 bitoj por mi. 1166 00:47:07,680 --> 00:47:10,060 Versio du nur uzas 32 bitojn por n, por ke 1167 00:47:10,060 --> 00:47:11,700 Ŝajnas esti pli. 1168 00:47:11,700 --> 00:47:12,950 Aliaj pensoj? 1169 00:47:18,070 --> 00:47:21,520 Ĉu iu volas argumenti favore de unu? 1170 00:47:21,520 --> 00:47:22,070 Yeah? 1171 00:47:22,070 --> 00:47:25,240 Spektantaro: Vi devas uzi ekstra linio de kodo por n -. 1172 00:47:25,240 --> 00:47:26,090 >> DAVID J. Malan: Konsentite, certa. 1173 00:47:26,090 --> 00:47:26,960 Do jen justa. 1174 00:47:26,960 --> 00:47:29,040 Do tiu justa, almenaŭ por mi - 1175 00:47:29,040 --> 00:47:31,940 Mi volas diri, ĉi vere sentas iom Messier, la fakto ke 1176 00:47:31,940 --> 00:47:35,120 Mi ne povas ordigi de encapsular ĉiuj miaj logiko en unu 1177 00:47:35,120 --> 00:47:38,030 bela linio, la por ciklo, kiel la por buklo povas. 1178 00:47:38,030 --> 00:47:40,240 Jen, mi specon de devas Tack sur ĉi n - 1179 00:47:40,240 --> 00:47:41,120 fine de la ciklo, ĉar 1180 00:47:41,120 --> 00:47:42,550 ĝi estas logike necesa. 1181 00:47:42,550 --> 00:47:45,190 Sed ia frotas mi la malĝusta vojo, nur ĉar ĝi 1182 00:47:45,190 --> 00:47:48,260 ŝajnas aparte de la logiko de ĝis tie, kvankam, 1183 00:47:48,260 --> 00:47:49,430 denove, ĝi estas necesa. 1184 00:47:49,430 --> 00:47:50,990 Aliaj pensoj? 1185 00:47:50,990 --> 00:47:51,490 Yeah? 1186 00:47:51,490 --> 00:47:52,740 Spektantaro: [inaudible]. 1187 00:47:57,990 --> 00:47:58,350 >> DAVID J. Malan: Yeah. 1188 00:47:58,350 --> 00:48:00,730 Do kion se vi anstataŭe, fine de la kanto, ili volis 1189 00:48:00,730 --> 00:48:02,950 presi denove la nomon de la kanto? 1190 00:48:02,950 --> 00:48:05,660 Kiel "Dankon pro ludi 99 boteloj da biero", aŭ ion 1191 00:48:05,660 --> 00:48:06,690 stulta tiel? 1192 00:48:06,690 --> 00:48:09,750 Sed la punkto estas, vi volis aliro al la originala valoro. 1193 00:48:09,750 --> 00:48:13,180 La fakto ke vi mutaciis aŭ ŝanĝis n sur ĉiu 1194 00:48:13,180 --> 00:48:16,330 ripeta kaj sekve ili detruis lia originala valoro 1195 00:48:16,330 --> 00:48:18,650 signifas simple ne povas fari ĉe la fino. 1196 00:48:18,650 --> 00:48:20,660 Nun, eble, ni klare ne volas fari 1197 00:48:20,660 --> 00:48:21,450 ke en tiu programo. 1198 00:48:21,450 --> 00:48:22,350 Do who cares? 1199 00:48:22,350 --> 00:48:23,630 Sed tio estas tre valida punkto. 1200 00:48:23,630 --> 00:48:25,520 Kaj esti honesta, ne estas vere neniu 1201 00:48:25,520 --> 00:48:26,630 dekstra respondi ĉi tie. 1202 00:48:26,630 --> 00:48:28,740 Ili ambaŭ estas egale korekta. 1203 00:48:28,740 --> 00:48:30,210 Mi povus esti konvinkita ajna maniero. 1204 00:48:30,210 --> 00:48:33,310 Mi diros ke, ĝenerale, estas bona principo, se vi 1205 00:48:33,310 --> 00:48:36,030 demandis la uzanto por iu valoro kaj vi stokitaj en variablo 1206 00:48:36,030 --> 00:48:38,730 kiel n, nur ia en principo, estas probable bona 1207 00:48:38,730 --> 00:48:40,160 teni ke ĉirkaŭe. 1208 00:48:40,160 --> 00:48:43,400 Kaj neniu datumo vi volas mutate denove kaj denove, simple 1209 00:48:43,400 --> 00:48:46,030 doni vin kopion de tiu variablo, nur por ke vi 1210 00:48:46,030 --> 00:48:47,830 havas aliron al la originala. 1211 00:48:47,830 --> 00:48:51,040 Vi elspezante 32 pli bitoj, sed la realeco estas ĉi 1212 00:48:51,040 --> 00:48:53,490 komputilo, kiel, du gigabajtoj de RAM tiuj tagoj, 1213 00:48:53,490 --> 00:48:55,310 kaj ni quibbling super 32 bitojn? 1214 00:48:55,310 --> 00:48:56,320 Vere ne tiel granda interkonsento. 1215 00:48:56,320 --> 00:48:58,550 Kaj eĉ sur tiu aparato tie, kun duono de koncerto aŭ 1216 00:48:58,550 --> 00:49:01,700 gigabajto de RAM, 32 bitoj kontre 64 bitoj, 1217 00:49:01,700 --> 00:49:02,920 ne tia estas granda interkonsento. 1218 00:49:02,920 --> 00:49:05,890 Certe hodiaŭ, tuj estos vojo premita de la grandeco 1219 00:49:05,890 --> 00:49:08,400 de la programo mem, kiu tuj estos plurcent 1220 00:49:08,400 --> 00:49:10,890 kilobajtoj, se ne malmultaj megabajtoj, ĉi tiuj tagoj. 1221 00:49:10,890 --> 00:49:13,550 >> Do racia zorgoj, neniu rajtas respondo. 1222 00:49:13,550 --> 00:49:15,490 Sed almenaŭ tiuj estas la pensoj kiuj devus komenci 1223 00:49:15,490 --> 00:49:16,790 iri tra via menso? 1224 00:49:16,790 --> 00:49:19,600 Ĉar en pset 0, eĉ se ni vere nur atendis 1225 00:49:19,600 --> 00:49:22,340 praveco, aŭ almenaŭ malpretendante diversaj bugs kiu 1226 00:49:22,340 --> 00:49:25,440 vi eble renkontis, kiel ni movos antaŭen, dezajno estas 1227 00:49:25,440 --> 00:49:27,910 tuj estos alia klavo aspekto, ambaŭ de skribi kodo 1228 00:49:27,910 --> 00:49:29,770 kaj ankaŭ nia taksi kodo. 1229 00:49:29,770 --> 00:49:32,310 Kaj tiel almenaŭ doni pensis al aĵoj kiel ĉi tio. 1230 00:49:32,310 --> 00:49:35,590 Kaj ĝuste pro io verkoj ne signifas ke estas bona, 1231 00:49:35,590 --> 00:49:37,130 ne signifas ke estas bone desegnita. 1232 00:49:37,130 --> 00:49:38,820 Kaj tio estas unu el la aĵoj de la instruado uloj kaj 1233 00:49:38,820 --> 00:49:41,990 problemo aroj helpos nin tease parto kun la tempo. 1234 00:49:41,990 --> 00:49:45,020 >> Nu, kio pri, ni diru, ĉi tiu versio ĉi tie? 1235 00:49:45,020 --> 00:49:49,090 Lasu min fari ion iom sexy tie en momento. 1236 00:49:49,090 --> 00:49:50,740 Unue lasu min forigi tiun. 1237 00:49:50,740 --> 00:49:54,120 Kaj nun ni ripari tiun gramatikan temon. 1238 00:49:54,120 --> 00:49:58,780 Do en tiu versio, mi volas ripari la gramatikon por ke, 1239 00:49:58,780 --> 00:50:02,460 anstataŭ nur diri parenthetical s, kiel "botelo" 1240 00:50:02,460 --> 00:50:03,360 aŭ "boteloj" - 1241 00:50:03,360 --> 00:50:04,900 Mi ne volas tranĉi tiu angulo - 1242 00:50:04,900 --> 00:50:08,350 Mi ankaŭ volas dinamike presi la vorto "boteloj" 1243 00:50:08,350 --> 00:50:12,820 aŭ "botelo", per tio uzante tiujn% s anstataŭiloj hodiaŭ. 1244 00:50:12,820 --> 00:50:16,550 Do mi bezonas kondiĉe kontroli kio estas la valoro de i. 1245 00:50:16,550 --> 00:50:19,590 Kaj se estas 1, mi volas diri "botelo", kaj se ĝi estas io 1246 00:50:19,590 --> 00:50:23,115 alie, mi volas diri "boteloj". Do ni provos fari tion. 1247 00:50:23,115 --> 00:50:31,340 Do, se i == 1, tiam lasu min antaŭeniri kaj deklari - 1248 00:50:31,340 --> 00:50:34,080 Mi bezonas kordoj, do lasu min fari ĉenon s1, ĉar ĝi estas la 1249 00:50:34,080 --> 00:50:36,070 unua linio mi zorgas pri nun. 1250 00:50:36,070 --> 00:50:40,980 Mi intencis diri "botelo". Kaj tiam, vidu, kordoj 1251 00:50:40,980 --> 00:50:43,110 s2 - kaj mi klarigos kie mi iros en momento - 1252 00:50:43,110 --> 00:50:47,650 "Boteloj". Do rememori ke, en ĉi tiu kanto, ni bezonas por povi 1253 00:50:47,650 --> 00:50:50,580 presi aĵoj, du malsamajn vortojn potenciale. 1254 00:50:50,580 --> 00:50:53,590 Do, se ni retrorigardas tie, rimarki, ke kiam ni atingos 1255 00:50:53,590 --> 00:50:56,440 ĉi tiu ekzemplo tie ĉi, "du boteloj da biero sur la muro, 1256 00:50:56,440 --> 00:50:59,490 du boteloj de biero, prenu unu malsupren, pasi ĝin ĉirkaŭ ", mi volas 1257 00:50:59,490 --> 00:51:02,380 ĉi tiu kvara linio nun diras "unu botelo da biero sur la 1258 00:51:02,380 --> 00:51:04,900 muro ". Do mi bezonas por decidi, ĉu mi volas diri" boteloj "aŭ 1259 00:51:04,900 --> 00:51:07,780 "Botelo"? Do mi iros al arbitre diras, ĉiuj pravas, 1260 00:51:07,780 --> 00:51:10,530 Mi tuj nun deklaras variablon nomis s1, kordoj 1261 00:51:10,530 --> 00:51:13,830 oni, kiu tuj akiri konektita en ĉi tie kaj ankaŭ ĉi tie, 1262 00:51:13,830 --> 00:51:16,070 ĉar tiuj vortoj estas ĉiam identa, nur pro la 1263 00:51:16,070 --> 00:51:17,290 naturon de la kanto. 1264 00:51:17,290 --> 00:51:20,100 Kaj mi tuj voki s2 ajn vorton Mi volas 1265 00:51:20,100 --> 00:51:21,560 eventuale aperas cxi tie. 1266 00:51:21,560 --> 00:51:25,530 Nun, laŭvorte, 99 fojojn el 100, ĝi tuj estos la 1267 00:51:25,530 --> 00:51:28,820 sama en ambaŭ el tiuj kazoj, ĉar 3 estas pluralo, 2 estas 1268 00:51:28,820 --> 00:51:30,200 pluralo, 4 estas pluralo. 1269 00:51:30,200 --> 00:51:34,640 Sed en ĉi tiu angulo kazo, kie ni atingos 2 kaj tiam 1, aŭ 1270 00:51:34,640 --> 00:51:37,250 eĉ 1 kaj do 0, mi bezonas tiun logikon. 1271 00:51:37,250 --> 00:51:41,020 Do mi devas pasigi iom da tempo en mia kodo atingi tiun rajton. 1272 00:51:41,020 --> 00:51:47,530 Do, se mi faras tion, se i == 1, tiam starigis s1 egala al "botelo" 1273 00:51:47,530 --> 00:51:52,010 kaj s2 egala al "boteloj", ĉar ĉi tio estos por 1 1274 00:51:52,010 --> 00:51:56,340 botelo, kaj ĉi tio estos por 0 boteloj. 1275 00:51:56,340 --> 00:51:58,250 Kaj ĉi tie, kion signifas ĉi reprezenti? 1276 00:51:58,250 --> 00:51:59,780 Nur por esti klara. 1277 00:51:59,780 --> 00:52:00,620 Tiu estas nur komento. 1278 00:52:00,620 --> 00:52:03,730 Do la fakto ke vi povas havi unu-linio komentoj celas vin 1279 00:52:03,730 --> 00:52:06,110 povas diri vian kodo kiel ĉi tiu, sed alia komuna 1280 00:52:06,110 --> 00:52:09,050 paradigmo, ankaŭ, estas ke se vi havas super-mallonga frazo ke 1281 00:52:09,050 --> 00:52:11,410 vi volas meti sin mem kaj ĝi estas nur pli legebla por meti 1282 00:52:11,410 --> 00:52:13,270 ĝin ĝuste en la fino de la linio de kodo, vi povas 1283 00:52:13,270 --> 00:52:15,230 absolute faru ion kiel ĉi tio. 1284 00:52:15,230 --> 00:52:20,150 >> Do nun kio se mi faras tion? Else if i estas ne egala al 1. 1285 00:52:20,150 --> 00:52:21,620 Do bang egalas - 1286 00:52:21,620 --> 00:52:23,150 ekkrio punkto estas nomata "bang". 1287 00:52:23,150 --> 00:52:25,080 Do bang = 1. 1288 00:52:25,080 --> 00:52:28,530 Do, se i ne estas egala al 1, kion mi anstataŭ volas fari? 1289 00:52:28,530 --> 00:52:31,700 Nu, la unua vorto Mi volas esti kio? 1290 00:52:34,620 --> 00:52:40,030 Do string 1 devus esti "boteloj" por pluralo boteloj, 1291 00:52:40,030 --> 00:52:42,440 kaj tiam ĉi tio estos pluralo "boteloj" tiel, por nun. 1292 00:52:42,440 --> 00:52:43,800 Kaj ni vidos se ĉi reale ricevas nin 1293 00:52:43,800 --> 00:52:44,870 kie ni volas iri. 1294 00:52:44,870 --> 00:52:47,680 Do nun, se mi rulumu malsupren tie, rimarki ke mi ŝtopanta en 1295 00:52:47,680 --> 00:52:50,170 ne nur mi, sed s1. 1296 00:52:50,170 --> 00:52:51,860 Mi ŝtopanta en i kaj s1. 1297 00:52:51,860 --> 00:52:54,440 Kaj tiam cxi tie, mi estas minus 1, kiu estas la sama kiel 1298 00:52:54,440 --> 00:52:55,920 antaŭe, sed s2. 1299 00:52:55,920 --> 00:52:58,730 Alivorte, mi volas ke la angla vorto por ŝanĝi bazita 1300 00:52:58,730 --> 00:52:59,930 en ĉi tiu logiko. 1301 00:52:59,930 --> 00:53:03,310 Nun, ekzistas jam kelkaj problemoj en ĉi tiu kodo. 1302 00:53:03,310 --> 00:53:08,460 Kio estas rompita jam ekster la pordego tie? 1303 00:53:08,460 --> 00:53:10,796 Yeah? 1304 00:53:10,796 --> 00:53:13,210 Spektantaro: [inaudible]. 1305 00:53:13,210 --> 00:53:13,800 >> DAVID J. Malan: Ĝuste. 1306 00:53:13,800 --> 00:53:16,030 Do mi jam malobeis la leciono de medio. 1307 00:53:16,030 --> 00:53:19,610 Do mi deklaris s1 kaj s2, sed mi faris ĝin interne de 1308 00:53:19,610 --> 00:53:22,980 frizita krampoj, kio signifas jes, ĉi tiu kodo funkcios ĝis 1309 00:53:22,980 --> 00:53:27,430 ĝis linio 42, sed tuj kiam mi batis linio 43, divenu kion neniu 1310 00:53:27,430 --> 00:53:28,900 ne ekzistas? 1311 00:53:28,900 --> 00:53:32,600 Nu, diveni kio estas ne plu en la medio - nek s1 aŭ s2. 1312 00:53:32,600 --> 00:53:33,780 Do ni devas ripari tion. 1313 00:53:33,780 --> 00:53:36,180 Do lasu min forigi la deklaroj. 1314 00:53:36,180 --> 00:53:39,320 Kaj mi lasos la variablo nomoj kaj forviŝi ĉi tie 1315 00:53:39,320 --> 00:53:40,120 kaj forigu ĉi tiun ĉi tie. 1316 00:53:40,120 --> 00:53:43,557 Kaj en kio linioj mi vere deklari tion? 1317 00:53:43,557 --> 00:53:44,960 Spektantaro: [inaudible]. 1318 00:53:44,960 --> 00:53:45,410 DAVID J. Malan: Jes, tiel probable 1319 00:53:45,410 --> 00:53:46,850 dekstra tien, 33-ish. 1320 00:53:46,850 --> 00:53:50,670 Do string s1 kaj s2 tiam kordoj. 1321 00:53:50,670 --> 00:53:51,950 Kaj ĝi rezultas, mi povas fari ĉi tion. 1322 00:53:51,950 --> 00:53:54,260 Se vi deklaras du variabloj de la sama tipo, 1323 00:53:54,260 --> 00:53:57,420 vi povas fakte nur uzas komo kaj do ke en C. Ĉiuj 1324 00:53:57,420 --> 00:53:58,970 Bone, do nun mi havas du variabloj - 1325 00:53:58,970 --> 00:53:59,860 s1 kaj s2. 1326 00:53:59,860 --> 00:54:02,000 Mi atribui ilin taksas tiujn 1327 00:54:02,000 --> 00:54:04,210 kondiĉoj ĉi tie, aŭ en ĉi tie. 1328 00:54:04,210 --> 00:54:06,690 Kaj tiam Mi uzas ilin sube. 1329 00:54:06,690 --> 00:54:10,960 Kiel bone tiu nun tuj funkcias? 1330 00:54:10,960 --> 00:54:12,740 >> Nu, estas ankoraŭ iom kalesxon, sed ni almenaŭ vidi 1331 00:54:12,740 --> 00:54:13,730 kiom for ni alvenas. 1332 00:54:13,730 --> 00:54:16,500 Do lasu min antaŭeniri kaj realigi beer3. 1333 00:54:16,500 --> 00:54:17,695 Ĉu ĉi tiu beer3? 1334 00:54:17,695 --> 00:54:19,410 Yep, ĉi tiu estas beer3. 1335 00:54:19,410 --> 00:54:21,510 Kaj nun lasu min iri antaŭen kaj kuri beer3. 1336 00:54:21,510 --> 00:54:23,820 399 99. 1337 00:54:23,820 --> 00:54:25,840 Ni probable povas salti plej el ili. 1338 00:54:25,840 --> 00:54:29,100 Kaj cxi tie, rigardi tion. 1339 00:54:29,100 --> 00:54:31,110 "Unu botelo de biero sur la muro, unu botelon da biero, preni 1340 00:54:31,110 --> 00:54:34,306 unu malsupren, pasi ĝin ĉirkaŭe, 0 boteloj de biero sur la muro. " 1341 00:54:34,306 --> 00:54:37,570 Sed mi desegni vian atenton al nur duono de la solvo. 1342 00:54:37,570 --> 00:54:39,620 Speco de ŝraŭbita tien. 1343 00:54:39,620 --> 00:54:43,030 Do ŝajnas, ke la angulo kazoj ekesti kiam i egalas kion 1344 00:54:43,030 --> 00:54:44,030 du valoroj? 1345 00:54:44,030 --> 00:54:45,020 Spektantaro: 2, 1. 1346 00:54:45,020 --> 00:54:46,190 DAVID J. Malan: 2 kaj 1. 1347 00:54:46,190 --> 00:54:48,180 Ne 1 kaj ne 1. 1348 00:54:48,180 --> 00:54:51,890 Estas vere nur tiuj du lastaj strofoj de ĉi tiu kanto. 1349 00:54:51,890 --> 00:54:53,890 Do kion mi anstataŭ volas fari? 1350 00:54:53,890 --> 00:54:58,890 Do mi ŝajnas esti kaptis la kazo kie se i estas == al 1, 1351 00:54:58,890 --> 00:55:02,240 tiam la unua vorto estas "botelo", sed la dua vorto 1352 00:55:02,240 --> 00:55:07,230 estas "boteloj". Sed ĉi tie, mi volas ŝanĝi ĉi tion al esti == 2. 1353 00:55:07,230 --> 00:55:08,570 Kaj se tio ne estas la kazo, kion mi volas ke la 1354 00:55:08,570 --> 00:55:09,620 unua vorto esti? 1355 00:55:09,620 --> 00:55:10,430 Spektantaro: "Boteloj". 1356 00:55:10,430 --> 00:55:12,890 DAVID J. Malan: "Boteloj", do por du boteloj. 1357 00:55:12,890 --> 00:55:14,690 Kaj tiam tiu vorto tie estu - 1358 00:55:14,690 --> 00:55:15,340 Spektantaro: "Botelo". 1359 00:55:15,340 --> 00:55:17,316 DAVID J. Malan: "Botelo", unuopa. 1360 00:55:20,430 --> 00:55:25,160 >> Bone, ni malzomi, revenu ĉi tien, re-ruli fari, 1361 00:55:25,160 --> 00:55:28,590 re-run beer3, tajpu 99 denove. 1362 00:55:28,590 --> 00:55:30,710 Konsentite, "Segmentación kulpo (kerno verŝis)." 1363 00:55:30,710 --> 00:55:32,780 Kion mi faris malbone? 1364 00:55:36,050 --> 00:55:38,722 Spektantaro: Vi ne havas valoron [inaudible]. 1365 00:55:38,722 --> 00:55:40,480 DAVID J. Malan: Ha, bonega punkto. 1366 00:55:40,480 --> 00:55:43,310 Bone, do kio estas malĝusta ĉi tie? 1367 00:55:43,310 --> 00:55:45,450 Do segmentación kulpo, kaj ni vere tuj vidos 1368 00:55:45,450 --> 00:55:49,020 ĉi sufiĉe da fojoj en la estonteco, intence. 1369 00:55:49,020 --> 00:55:51,030 Sed nuntempe, kion signifas ĉi reale signifas? 1370 00:55:51,030 --> 00:55:53,620 Al segmentación kulpo preskaŭ ĉiam signifas ke vi havas 1371 00:55:53,620 --> 00:55:56,760 iel provis aliri memoro, RAM en via komputilo, 1372 00:55:56,760 --> 00:56:00,600 ke vi ne posedas, ke vi ne efektive demandis la 1373 00:56:00,600 --> 00:56:02,050 mastruma sistemo por. 1374 00:56:02,050 --> 00:56:04,440 Do ĉi-kaze, rimarki kion mi faris, kio estas 1375 00:56:04,440 --> 00:56:05,870 misa en mia logiko. 1376 00:56:05,870 --> 00:56:09,500 Mi atribuas s1 kaj s2 valoro se i egalas 1. 1377 00:56:09,500 --> 00:56:11,590 Mi ankaŭ faris, ke se i egalas 2. 1378 00:56:11,590 --> 00:56:13,710 Sed mi ne faris ĝin en la malfinia nombro de aliaj 1379 00:56:13,710 --> 00:56:14,690 ebloj - 1380 00:56:14,690 --> 00:56:17,940 en aparta, 3 aŭ 4 aŭ punkto, pentras, pentras, 99. 1381 00:56:17,940 --> 00:56:20,100 Do oni riparas por ĉi povus simple esti let la 1382 00:56:20,100 --> 00:56:22,190 havas alian kondiĉon. 1383 00:56:22,190 --> 00:56:26,780 Kaj lasu min iri en ĉi tie kaj diru s1 egalas - 1384 00:56:26,780 --> 00:56:28,180 kio devus esti tie? 1385 00:56:28,180 --> 00:56:28,750 Spektantaro: [inaudible]. 1386 00:56:28,750 --> 00:56:30,460 >> DAVID J. Malan: "Boteloj", ĉar en la komuna kazo, 1387 00:56:30,460 --> 00:56:32,020 estas nur la sama aĵo. 1388 00:56:32,020 --> 00:56:35,580 Do egalas citaĵo, unquote, "boteloj". Do por pluralo 1389 00:56:35,580 --> 00:56:41,010 boteloj, kaj tiam ĉi tien, por pluralo boteloj. 1390 00:56:41,010 --> 00:56:44,580 Konsentite, tiel nun mi reiru al mia fina fenestro, 1391 00:56:44,580 --> 00:56:47,200 recompilar, re-ruli ĝin. 1392 00:56:47,200 --> 00:56:48,440 99. 1393 00:56:48,440 --> 00:56:49,150 Whew. 1394 00:56:49,150 --> 00:56:50,610 Kaj ni faru rapidan prudento ĉeko. 1395 00:56:50,610 --> 00:56:52,400 Teknike, ni volonte volas legi ĉiuj de ĉi tiuj certigi 1396 00:56:52,400 --> 00:56:53,370 ili estas ĝusta, sed ni rigardu 1397 00:56:53,370 --> 00:56:54,640 Almenaŭ la konata kulpaj. 1398 00:56:54,640 --> 00:56:57,370 3 boteloj, 2 boteloj, 2 boteloj, 1 1399 00:56:57,370 --> 00:57:00,380 botelo, 1 botelo, 0 boteloj. 1400 00:57:00,380 --> 00:57:03,080 Ni ŝajnas esti almenaŭ fiksita por nun. 1401 00:57:03,080 --> 00:57:06,010 Sed la kaptita ĉi tie estas, ke kia dio terura katastrofo estas 1402 00:57:06,010 --> 00:57:07,470 nur por solvi stulta 1403 00:57:07,470 --> 00:57:09,540 unu-karaktero gramatika detalo. 1404 00:57:09,540 --> 00:57:11,150 Do tie estas ia kialo ke mi tranĉis tiu angulo 1405 00:57:11,150 --> 00:57:14,090 antaŭe, ĉar ĝi estas simple tute ĝena por devi 1406 00:57:14,090 --> 00:57:15,020 skribi ĉi multe kodo. 1407 00:57:15,020 --> 00:57:17,530 Sed ĝi rezultas ke tie estas iomete pli elegante manieroj 1408 00:57:17,530 --> 00:57:20,110 esprimanta la ĝusta sama afero. 1409 00:57:20,110 --> 00:57:22,040 Kaj ni povas fari ĉi tion jene. 1410 00:57:22,040 --> 00:57:23,890 >> Lasu min eliri ĉi sur la ekrano dum momento kaj 1411 00:57:23,890 --> 00:57:27,320 enkonduki iu konata kiel triargumenta operatoro. 1412 00:57:27,320 --> 00:57:29,600 Tio estas speco de unu-Liner ke tio simple signifis fari nian 1413 00:57:29,600 --> 00:57:31,880 loĝas iom sexier, kiel promesis. 1414 00:57:31,880 --> 00:57:33,130 Kaj mi tuj faros tion kiel sekvas. 1415 00:57:33,130 --> 00:57:35,810 Donu al mi ŝnuro nomita s1, kaj lasu min 1416 00:57:35,810 --> 00:57:37,200 atribui ĝin jene. 1417 00:57:37,200 --> 00:57:39,900 (I == 1)? 1418 00:57:39,900 --> 00:57:47,820 "Botelo", alie "boteloj". String s2 gets (i == 2)? 1419 00:57:47,820 --> 00:57:52,670 "Botelo", alie "boteloj". 1420 00:57:52,670 --> 00:57:57,050 Do kio tiam estas la diferenco ĉi tie? 1421 00:57:57,050 --> 00:57:59,370 Ĉi tiuj du linioj de kodo, mi argumentas, povas 1422 00:57:59,370 --> 00:58:02,200 anstataŭigi ĉi tiu tuta salato. 1423 00:58:02,200 --> 00:58:04,280 Do mi nomas ĝin salaton, nur ĉar ĝi ia frotas mi la 1424 00:58:04,280 --> 00:58:05,940 malĝusta maniero, ke ĝi estas tiom da linioj de kodo. 1425 00:58:05,940 --> 00:58:06,650 Ne malbone. 1426 00:58:06,650 --> 00:58:07,700 Ne malbona dezajno. 1427 00:58:07,700 --> 00:58:10,140 Kiel, ĉi tiu estas perfekte ĝentila kaj perfekte bela. 1428 00:58:10,140 --> 00:58:12,970 Sed kodigo gets teda se vi devas esprimi sin tiel 1429 00:58:12,970 --> 00:58:15,530 damn specife denove kaj denove kaj denove kun simpla 1430 00:58:15,530 --> 00:58:16,620 scenaro kiel ĉi tio. 1431 00:58:16,620 --> 00:58:19,470 Do C havas iu ŝparvojoj, kiel ĉi tio. 1432 00:58:19,470 --> 00:58:24,270 Do tiu estas fundamente dirante deklari ĉeno nomata s1 kaj 1433 00:58:24,270 --> 00:58:32,610 atribui ĝin ĉu ĉi tiu valoro aŭ tiun valoron se i estas == - 1434 00:58:32,610 --> 00:58:35,290 pardonon, mi devus diri tion pli klare. 1435 00:58:35,290 --> 00:58:41,680 Deklari variablon s1, atribui ĝin ĉi valoro se tio ne estas vera. 1436 00:58:41,680 --> 00:58:44,280 Alie, atribui ĝin ĉi valoro. 1437 00:58:44,280 --> 00:58:47,220 Do alivorte, tiu estas speco de unu-linio vojo de 1438 00:58:47,220 --> 00:58:51,490 dirante se alie sed farante asigno la vojo. 1439 00:58:51,490 --> 00:58:55,540 Do, se i estas 1, tiam iru antaŭen kaj nomas tion "botelo". Kaj 1440 00:58:55,540 --> 00:58:59,830 tiam ĉi alie, nomas ĝin "boteloj". Dume, s2, la 1441 00:58:59,830 --> 00:59:04,060 dua vorto, kiun ni devas difini, se i egalas 2, ni instruos vin 1442 00:59:04,060 --> 00:59:08,350 starigis s2 al "botelo". Alie, starigis ĝin al "boteloj". Kaj kio 1443 00:59:08,350 --> 00:59:11,460 ĉi tio signifas nun estas mi povas iri tra ĉi kaj forviŝi ĉiujn 1444 00:59:11,460 --> 00:59:12,860 tiuj linioj de kodo. 1445 00:59:12,860 --> 00:59:17,220 Kaj kiam mi diras, iom ridinde, ke ĉi tio estas nun 1446 00:59:17,220 --> 00:59:20,060 sexier, estas sexier en la speco de stilaj senco. 1447 00:59:20,060 --> 00:59:22,660 La fakto ke funkcie, tiu kodo estas vere tuj 1448 00:59:22,660 --> 00:59:24,610 fari la ĝustan samon. 1449 00:59:24,610 --> 00:59:26,890 Kaj eĉ se ĝi povus aspekti iom críptico unue 1450 00:59:26,890 --> 00:59:29,250 rigardo, ĉar ni ne vidis tiun konstruo antaŭe, Mi preferas 1451 00:59:29,250 --> 00:59:31,850 argumenti ke ĝi estas finfine tuj estos tiom multe pli 1452 00:59:31,850 --> 00:59:34,820 legebla kaj tiel pli facile por ni homoj por ordigi de 1453 00:59:34,820 --> 00:59:36,830 komprenas, ĉar nun vi povas simple legi la 1454 00:59:36,830 --> 00:59:38,830 kodo ĉiuj laŭ unu linio. 1455 00:59:38,830 --> 00:59:41,550 Estas ankoraŭ simila en spirito al se, kie ĉi tiu estas la 1456 00:59:41,550 --> 00:59:44,920 kondiĉo kaj tiam ĉi tiu estas kio estas ene de la se kaj ĉi 1457 00:59:44,920 --> 00:59:46,480 Estas kio estas interne de la alia. 1458 00:59:46,480 --> 00:59:49,450 Sed ni povas fari ĉi tion simple multe pli elegante. 1459 00:59:49,450 --> 00:59:52,650 >> Kaj se mi nun reiru al mia stacio, esti forviŝita ĉiuj 1460 00:59:52,650 --> 00:59:55,530 de tiuj linioj kaj anstataŭis ilin per nur tiuj du, 1461 00:59:55,530 --> 01:00:00,150 recompilar, re-run boteloj de biero kun 99, avizo, ke mia 1462 01:00:00,150 --> 01:00:03,350 gramatiko estas, fakte, ankoraŭ ĝusta. 1463 01:00:03,350 --> 01:00:06,160 Do denove, iu por komenci. 1464 01:00:06,160 --> 01:00:08,840 2 boteloj de biero, 1 botelo de biero. 1465 01:00:08,840 --> 01:00:09,370 Aspektas bone. 1466 01:00:09,370 --> 01:00:10,100 Yeah. 1467 01:00:10,100 --> 01:00:13,900 Do ni havos multe pli konciza solvo. 1468 01:00:13,900 --> 01:00:16,020 Do tiu, tro, kiel vi ricevis pli komforta kun C, ne 1469 01:00:16,020 --> 01:00:18,630 nepre kun la unua pset aŭ eĉ dua, sed 1470 01:00:18,630 --> 01:00:21,170 rimarkas ke tiuj konstruoj povas permesi al ni fari tion iam 1471 01:00:21,170 --> 01:00:22,810 pli elegante. 1472 01:00:22,810 --> 01:00:25,200 Nun ni faru unu alia afero ĉi tie. 1473 01:00:25,200 --> 01:00:31,460 Lasu min kaj malfermu return1.c. 1474 01:00:31,460 --> 01:00:34,340 Nun ni komencu solvi alian problemon en maniero kiu 1475 01:00:34,340 --> 01:00:37,140 nin permesas skribi pli kompleksa kodo. 1476 01:00:37,140 --> 01:00:39,960 >> Do jen simpla iom programo kies celo en la vivo 1477 01:00:39,960 --> 01:00:41,870 estas pliigo valoroj. 1478 01:00:41,870 --> 01:00:43,100 Kaj efektive, ni preni retropaŝon. 1479 01:00:43,100 --> 01:00:44,400 Lasu min fari tion permane. 1480 01:00:44,400 --> 01:00:52,200 Lasu min fari inkluzivi kaj int main (void). 1481 01:00:52,200 --> 01:00:53,450 Kaj lasu min nomas tion increment.c. 1482 01:00:57,150 --> 01:00:58,570 Kaj kion mi volas fari? 1483 01:00:58,570 --> 01:01:02,240 Mi tuj iros antaŭen kaj diru ion kiel - 1484 01:01:02,240 --> 01:01:04,280 ni nomas la nombroj la sama - 1485 01:01:04,280 --> 01:01:04,980 int x. 1486 01:01:04,980 --> 01:01:13,670 Do int x prenas 2; printf x estas% d, nova linio, x. 1487 01:01:13,670 --> 01:01:16,780 Do mi tajpas rapida, sed speco de familiaraj aferoj nun. 1488 01:01:16,780 --> 01:01:18,830 Tiam Mi faros x + +. 1489 01:01:18,830 --> 01:01:21,710 Tiam mi tuj presi tiu sama frazo denove. 1490 01:01:21,710 --> 01:01:24,550 Kaj poste mi tuj revenos 0 simple lasi la programon. 1491 01:01:24,550 --> 01:01:25,960 Bone, do ĉi estas programo kiu 1492 01:01:25,960 --> 01:01:26,960 pliigoj numero. 1493 01:01:26,960 --> 01:01:29,830 Ĝi estas unue tuj pravalorizi ion al 2, kaj tiam ĝi estas 1494 01:01:29,830 --> 01:01:33,470 tuj pliigo ĝin kaj presi ĝin denove. 1495 01:01:33,470 --> 01:01:36,930 >> Do estu la kuri pliigo, nekredeble simpla programo. 1496 01:01:36,930 --> 01:01:40,940 Sed supozu nun, ke mi volas kubo la valoron, do fari 1497 01:01:40,940 --> 01:01:42,490 io iom arbitra. 1498 01:01:42,490 --> 01:01:45,140 Kaj mi vere volas fari x prenas la kubo de ĝi. 1499 01:01:45,140 --> 01:01:47,570 Do mi povus uzi kion nomas la pow funkcio, sed mi ne 1500 01:01:47,570 --> 01:01:48,650 vere scias, kie tio estas ankoraŭ. 1501 01:01:48,650 --> 01:01:50,580 Do mi faros tio la antikva vojo. 1502 01:01:50,580 --> 01:01:54,550 x fojoj ĉi egalas x fojoj x fojoj x. 1503 01:01:54,550 --> 01:01:56,880 Do mi cubing la valoro, multiplikante ĝi per sin denove 1504 01:01:56,880 --> 01:02:00,440 kaj denove kaj denove, por ke ni preni la povon 1505 01:02:00,440 --> 01:02:02,050 de 3 en ĉi tiu kazo. 1506 01:02:02,050 --> 01:02:06,000 Do nun la numeroj mi presi devus esti, kiel ni vidos 1507 01:02:06,000 --> 01:02:08,450 tie - fari pliigo, do fakte ne vere pliigo 1508 01:02:08,450 --> 01:02:10,260 plu, sed ni lasos la nomo sola - 1509 01:02:10,260 --> 01:02:11,590 2 kaj tiam 8. 1510 01:02:11,590 --> 01:02:17,670 Nun, ni havas la komencoj de ŝanco por bonmaniereco 1511 01:02:17,670 --> 01:02:21,570 tie, per tiu cubing aĵo de multiplikante nombro 1512 01:02:21,570 --> 01:02:24,680 per sin per sin per sin sentas ĉi povus simple esti 1513 01:02:24,680 --> 01:02:27,920 utila havi kiel funkcio, multe kiel iu decidis 1514 01:02:27,920 --> 01:02:30,430 jaroj - vi scias, speco de utila se unu el ni eksidas 1515 01:02:30,430 --> 01:02:33,120 kaj skribas printf tiel ke la resto de la mondo povas uzi ĝin, 1516 01:02:33,120 --> 01:02:36,160 kial ni ne sidigxu kaj skribu funkcio nomita kubo 1517 01:02:36,160 --> 01:02:39,250 kiu faras ĉi cubing por ni por ke ni ne devas permane 1518 01:02:39,250 --> 01:02:41,500 apliki la nocio de cubing valoroj tie? 1519 01:02:41,500 --> 01:02:44,040 >> Do simpla ekzemplo, sed ni iru antaŭen kaj uzi ĉi estas kiel 1520 01:02:44,040 --> 01:02:46,280 ŝanco verki niajn proprajn funkcio. 1521 01:02:46,280 --> 01:02:49,110 Do ĝis nun, ni nur uzis ĉefa, kaj ni uzis aliajn 1522 01:02:49,110 --> 01:02:51,780 popola funkcioj, sed ni ne skribas nia propra. 1523 01:02:51,780 --> 01:02:52,650 Do jen ni iru. 1524 01:02:52,650 --> 01:02:56,330 Mi tuj iros antaŭen kaj skribi funkcio nomita kubo. 1525 01:02:56,330 --> 01:02:58,490 Kaj mi tuj devos ĝin preni enigo. 1526 01:02:58,490 --> 01:03:02,070 Do lia eniro tuj estos entjero. 1527 01:03:02,070 --> 01:03:03,570 Kaj kio ĝi faros? 1528 01:03:03,570 --> 01:03:08,500 Ĝi tuj deklari int eligo = enigo fojoj enigo 1529 01:03:08,500 --> 01:03:09,880 fojoj enigo. 1530 01:03:09,880 --> 01:03:12,190 Kaj tiam ĝi tuj revenos, ke eliro. 1531 01:03:12,190 --> 01:03:14,500 Kaj tiam mi devas esti specifa nun. 1532 01:03:14,500 --> 01:03:16,820 Ĉi tiu funkcio estas tuj revenos al int. 1533 01:03:16,820 --> 01:03:19,130 Do jen do estas kiel vi volas skribi viajn proprajn funkciojn. 1534 01:03:19,130 --> 01:03:20,850 Vi unue decidi kio estas la nomo de via 1535 01:03:20,850 --> 01:03:21,720 funkcio tuj estos. 1536 01:03:21,720 --> 01:03:23,964 Kaj ĝenerale, iu klarigan estas bona, do mi 1537 01:03:23,964 --> 01:03:25,060 nomas ĝin kubo. 1538 01:03:25,060 --> 01:03:27,180 Tiam vi devas specifi kio okazas reveni, kio estas 1539 01:03:27,180 --> 01:03:28,240 lia eliro tuj estos. 1540 01:03:28,240 --> 01:03:29,595 Kaj ni ne havas tiun multaj ebloj ankoraŭ. 1541 01:03:29,595 --> 01:03:32,260 Int, char, kaleŝego, bool, kordoj. 1542 01:03:32,260 --> 01:03:34,260 Nuntempe, mi tuj batos kun int, ĉar mi volas ĝin 1543 01:03:34,260 --> 01:03:35,880 reveni entjero. 1544 01:03:35,880 --> 01:03:38,770 Tiam vi devas precizigi kion lia enigoj, se iu, estas. 1545 01:03:38,770 --> 01:03:41,570 Kaj se kubo prenas argumenton, prenas ion inter 1546 01:03:41,570 --> 01:03:44,970 krampoj, vi devas doni tiun argumenton nomon por ke 1547 01:03:44,970 --> 01:03:47,860 vi povas nomi ŝin ion kiel vi apliki aŭ skribi 1548 01:03:47,860 --> 01:03:50,550 ĉi tiu funkcio, kaj vi devas doni tipo, kiu en ĉi tiu 1549 01:03:50,550 --> 01:03:51,810 kazo tuj estos int. 1550 01:03:51,810 --> 01:03:54,690 Do mallonge, kubo estas funkcio kiu prenas entjero 1551 01:03:54,690 --> 01:03:57,560 kiel eniro kaj revenas entjero kiel rezulto. 1552 01:03:57,560 --> 01:03:59,240 >> Do kio faras ĝi fari kun tiu eniro? 1553 01:03:59,240 --> 01:04:03,710 Nu, en linio 14, mi deklaras variablon nomis eligo, kaj mi 1554 01:04:03,710 --> 01:04:07,410 atribui al ĝi la valoron, enigo fojoj enigo fojoj enigo. 1555 01:04:07,410 --> 01:04:11,490 Kaj poste mi revenos eligo. 1556 01:04:11,490 --> 01:04:14,890 Do kiel mi uzas ĉi tiam? 1557 01:04:14,890 --> 01:04:19,210 Kion mi ŝanĝu tiuj elstaris karakteroj sur linio 1558 01:04:19,210 --> 01:04:21,006 7 esti, vi opinias? 1559 01:04:21,006 --> 01:04:21,800 Spektantaro: [inaudible]. 1560 01:04:21,800 --> 01:04:25,570 DAVID J. Malan: Jes, tia kubo de x. 1561 01:04:25,570 --> 01:04:28,290 Do x estas variablo, kiu signifas ĝi tenas iu valoro. 1562 01:04:28,290 --> 01:04:30,190 Feliĉe, estas de tipo entjero. 1563 01:04:30,190 --> 01:04:34,280 Kaj ĉar x estas int, tiu signifas Mi povas pasi ĝin en kubo. 1564 01:04:34,280 --> 01:04:39,500 Kaj eĉ se mi supera la valoro de x kun la valoro 1565 01:04:39,500 --> 01:04:42,780 de kubo x, kiel estis la kazo tiel malproksime, iu ajn tempo vi 1566 01:04:42,780 --> 01:04:46,150 havi egalsigno kaj sxnuro de kodo, la aĵoj sur la dekstra 1567 01:04:46,150 --> 01:04:49,090 gets ekzekutita kaj tiam gets atribuita al la 1568 01:04:49,090 --> 01:04:50,150 valoro sur la maldekstra. 1569 01:04:50,150 --> 01:04:52,950 Do la ordo de operacioj estas kiel ni atendus. 1570 01:04:52,950 --> 01:04:56,620 Do faras ĉi tiun laboron? 1571 01:04:56,620 --> 01:04:58,410 Nu, mi iros tien. 1572 01:04:58,410 --> 01:04:59,970 Lasu min malfermi mia fina fenestro. 1573 01:04:59,970 --> 01:05:03,610 Lasu min estas ebla pliigo, Enter. 1574 01:05:03,610 --> 01:05:07,140 "Implicitaj deklaro de funkcio 'kubo' estas nevalida en 1575 01:05:07,140 --> 01:05:13,700 C99 ". Kiel flanken, C99 raportas al la lingvo C kiel estis 1576 01:05:13,700 --> 01:05:16,790 difinita en 1999, kiu estis ĝisdatigo super la versio de 1577 01:05:16,790 --> 01:05:19,360 1989, kiu estas ĝisdatigo super la originalo. 1578 01:05:19,360 --> 01:05:21,740 Do jen ĉio tio signifas. 1579 01:05:21,740 --> 01:05:24,250 >> Do kion tio signifas ke "implica deklaro de 1580 01:05:24,250 --> 01:05:26,790 funkcio 'kubo' estas nevalida? "Estas ĉi tie. 1581 01:05:26,790 --> 01:05:28,430 Estas tie en linio 12. 1582 01:05:28,430 --> 01:05:30,460 Spektantaro: [inaudible]. 1583 01:05:30,460 --> 01:05:30,730 DAVID J. Malan: Kio estas tio? 1584 01:05:30,730 --> 01:05:32,470 Spektantaro: Ne antaŭe. 1585 01:05:32,470 --> 01:05:33,540 DAVID J. Malan: Ne antaŭe. 1586 01:05:33,540 --> 01:05:34,740 Do ĉi tiu estas la afero. 1587 01:05:34,740 --> 01:05:38,190 C estas speco de stulta, aŭ C tradukiloj estas speco de stultaj. 1588 01:05:38,190 --> 01:05:41,060 Ili vere nur faras kion vi diros al ili. 1589 01:05:41,060 --> 01:05:44,770 Kaj ili, precipe, nur legis vian kodo supre sube, 1590 01:05:44,770 --> 01:05:45,620 maldekstre dekstren. 1591 01:05:45,620 --> 01:05:49,140 Do se la tradukilo, Clang, legas vian kodon, linio 1, ĝi 1592 01:05:49,140 --> 01:05:50,120 figuroj, kiel eblas fari ĉi tion. 1593 01:05:50,120 --> 01:05:50,940 Ho, tie venas ĉefa. 1594 01:05:50,940 --> 01:05:53,000 Konsentite, lasu min antaŭeniri kaj deklari variablon x. 1595 01:05:53,000 --> 01:05:54,160 Lasu min presi ion. 1596 01:05:54,160 --> 01:05:55,890 Linio 7, kion la heck estas kubo? 1597 01:05:55,890 --> 01:05:58,230 Ne estas deklarita en stdio.h. 1598 01:05:58,230 --> 01:06:00,950 Ĝi ne venas kun C. Mi tute ne scias kion fari. 1599 01:06:00,950 --> 01:06:03,960 Kaj tiel Clang nur bails kaj fermas kun tiu eraro mesaĝo. 1600 01:06:03,960 --> 01:06:05,850 Do ni povas fiksi tion en kelkaj manieroj. 1601 01:06:05,850 --> 01:06:10,530 Ni povas instrui Clang kion kubo estas por nur movi kie la 1602 01:06:10,530 --> 01:06:11,820 deklaro estas. 1603 01:06:11,820 --> 01:06:14,640 Do mi tranĉis kaj pasted ĝin sur la pinto ĉefa. 1604 01:06:14,640 --> 01:06:17,770 Nun rimarkas ke nur ĉar ĉefa ne plu estas unua, estas 1605 01:06:17,770 --> 01:06:19,150 ankoraŭ ekzekutita defaŭlte. 1606 01:06:19,150 --> 01:06:20,060 Artikolo estas ĉefa. 1607 01:06:20,060 --> 01:06:21,022 Ĝi estas la defaŭlta funkcio nomo. 1608 01:06:21,022 --> 01:06:22,930 Ne gravas kie ĝi estas en dosiero. 1609 01:06:22,930 --> 01:06:26,910 Sed almenaŭ nun Clang vidis kubo antaŭ ol mi uzas ĝin. 1610 01:06:26,910 --> 01:06:28,500 Do ni vidu se Clang estas feliĉaj nun. 1611 01:06:28,500 --> 01:06:31,410 Faru pliigo, ĝi kompili ĉi tiun fojon. 1612 01:06:31,410 --> 01:06:33,060 >> Mi kuros pliigo. 1613 01:06:33,060 --> 01:06:34,810 Kaj efektive, ŝajnas esti laborante. 1614 01:06:34,810 --> 01:06:36,810 Nun, vi povas veni supren kun scenaroj eventuale kie 1615 01:06:36,810 --> 01:06:38,650 ĝi ne estas farebla por meti ĉiu funkcio 1616 01:06:38,650 --> 01:06:39,740 super ĉiu alia funkcio. 1617 01:06:39,740 --> 01:06:42,140 Vi get ŝtopita en ĉi senfina ciklo en realeco, 1618 01:06:42,140 --> 01:06:43,480 kie ĉi tiu viro deziras esti tie sed ĉi 1619 01:06:43,480 --> 01:06:44,390 ulo bezonas esti tie. 1620 01:06:44,390 --> 01:06:45,830 Por ke ne ĉiam funkcias. 1621 01:06:45,830 --> 01:06:49,020 Do dankeme, C havas pli eleganta solvo. 1622 01:06:49,020 --> 01:06:50,790 Mi tuj metos ĉi tien, kie ĝi estis, nur ĉar mi 1623 01:06:50,790 --> 01:06:53,390 preferas, kiel demando de principo, ke ĉefa ĉiam 1624 01:06:53,390 --> 01:06:55,550 ĉe la supro, ĉar ĝi estas nur bela por vidi, kio tiu programo 1625 01:06:55,550 --> 01:06:56,920 faras defaŭlte. 1626 01:06:56,920 --> 01:06:58,950 Kaj kion mi faros ĝis tie rakontos, kion nomas 1627 01:06:58,950 --> 01:07:00,250 prototipon. 1628 01:07:00,250 --> 01:07:05,730 Mi tuj re-deklari mian kubo funkcio per laŭvorte 1629 01:07:05,730 --> 01:07:07,180 kopii kaj bati. 1630 01:07:07,180 --> 01:07:08,290 Efektive, tio ne estas laŭvorte. 1631 01:07:08,290 --> 01:07:13,060 Do laŭvorte kopii kaj bati linio 15 1632 01:07:13,060 --> 01:07:15,160 super la linio 6. 1633 01:07:15,160 --> 01:07:17,010 Ne gravas kion linio ĉi finas plu. 1634 01:07:17,010 --> 01:07:18,380 Ĝi okazas al esti sur linio 4. 1635 01:07:18,380 --> 01:07:19,950 Sed ĝi devas esti antaux ĉefa. 1636 01:07:19,950 --> 01:07:21,150 Sed rimarki la diferencon. 1637 01:07:21,150 --> 01:07:24,100 Linio 4 finas kun punktokomo, kiu signifas bona, 1638 01:07:24,100 --> 01:07:27,510 Clang, prenu mian vorton por ĝi, ke tie ekzistas funkcio 1639 01:07:27,510 --> 01:07:31,350 vokis kubo kiun prenas int kaj redonas int. 1640 01:07:31,350 --> 01:07:33,020 Sed mi ne gonna diri al vi kio estas ankoraŭ. 1641 01:07:33,020 --> 01:07:35,180 Nur scias, ke mi promesas al vi eventuale. 1642 01:07:35,180 --> 01:07:38,490 Kaj efektive, nun estas bone ke ĉi tiu estas sube. 1643 01:07:38,490 --> 01:07:41,275 >> Do ĉi tiu estas ĝenerale bona, ĉar tiam ĉe la supro de 1644 01:07:41,275 --> 01:07:44,240 vian dosieron, vi povas simple Rattle for, rapida fajro, unu linio 1645 01:07:44,240 --> 01:07:46,470 ĉiu, kion la nomojn de viaj funkcioj estas, kion liaj 1646 01:07:46,470 --> 01:07:49,120 enigoj estas, kion liaj eligoj estas. 1647 01:07:49,120 --> 01:07:52,210 Kaj esti pli klara, enigo ĝenerale signifas argumento aŭ 1648 01:07:52,210 --> 01:07:54,110 parametro, sinonimo. 1649 01:07:54,110 --> 01:07:56,890 Eligo signifas revenon valoro, kio faras ĝin 1650 01:07:56,890 --> 01:07:58,700 manon al mi. 1651 01:07:58,700 --> 01:08:03,420 Do en ĉi tiu kazo tie, kubo estis deklarita je la supro, sed 1652 01:08:03,420 --> 01:08:06,940 difinita, alie konata kiel implementado, ĉe la malsupro. 1653 01:08:06,940 --> 01:08:09,620 Do nun ni reiros tien kaj re-ruli ĉi. 1654 01:08:09,620 --> 01:08:13,430 Do nun mi antaŭeniri kaj re-ruli fari, re-ruli pliigo. 1655 01:08:13,430 --> 01:08:16,500 Kaj nun ŝajnas esti funkciante ĝuste fajna. 1656 01:08:16,500 --> 01:08:19,450 Do nun ni povas antaŭeniri kaj faktoro ekster iun kiel la 1657 01:08:19,450 --> 01:08:23,720 biero ekzemple en ĉi tiu kvara versio. 1658 01:08:23,720 --> 01:08:25,590 Do lasu min rulumi malsupren tie. 1659 01:08:25,590 --> 01:08:28,149 Kaj rimarki ke mi specon de prenis tiun lecionon koro gxuste nun. 1660 01:08:28,149 --> 01:08:31,140 La fakto, ke mi kantis la sama strofo denove kaj 1661 01:08:31,140 --> 01:08:34,130 denove kaj denove, la sama ĥoro linio en la kanto, sentis 1662 01:08:34,130 --> 01:08:36,439 kiel kial ne mi faktoro kiu eliris sur funkcio? 1663 01:08:36,439 --> 01:08:38,470 Kaj efektive, tiu devus esti unu el la motivoj. 1664 01:08:38,470 --> 01:08:40,960 Krom la fakto ke iu ajn alia en la mondo povus deziri 1665 01:08:40,960 --> 01:08:42,390 uzi kubo funkcio - 1666 01:08:42,390 --> 01:08:44,560 tio estas bona kialo por faktorigi ion kaj skribi vian 1667 01:08:44,560 --> 01:08:45,720 propra kutimo funkcio - 1668 01:08:45,720 --> 01:08:48,720 se estas peco de kodo en via programo kiu simple faras 1669 01:08:48,720 --> 01:08:51,370 koncepta senco, ke vi ia volis doni al ĝi 1670 01:08:51,370 --> 01:08:53,740 nomo - kiel en ĉi tiu kazo, ĥoro - 1671 01:08:53,740 --> 01:08:57,380 tiam vi povas simile skribi ke kiel aparta funkcio. 1672 01:08:57,380 --> 01:08:59,560 Vi ne devas skribi ĉion ĉefa se nur 1673 01:08:59,560 --> 01:09:02,609 sentas purigilo disigi ĝin kaj doni al ĝi nomon. 1674 01:09:02,609 --> 01:09:05,529 >> Do en ĉi tiu kazo tie, rimarki, ke mi havas komenton sur la pinto 1675 01:09:05,529 --> 01:09:06,859 ĉi tiu funkcio kiu ĝuste kantas pri la 1676 01:09:06,859 --> 01:09:08,630 specifita nombro de boteloj. 1677 01:09:08,630 --> 01:09:10,609 Rimarku, ke mi ne bezonas nomi tiujn 1678 01:09:10,609 --> 01:09:12,520 aĵoj enigo kaj eligo. 1679 01:09:12,520 --> 01:09:16,090 Fakte, ĉi tiu tempo Mi nur nomas mia enigo b por botelo. 1680 01:09:16,090 --> 01:09:19,960 Kaj rimarki tie, void sugestas kio? 1681 01:09:19,960 --> 01:09:21,309 Ke ĥoro - 1682 01:09:21,309 --> 01:09:22,660 Spektantaro: Ĉu ne revenos ĝin. 1683 01:09:22,660 --> 01:09:23,870 DAVID J. Malan: Ĉu ne resendas valoro. 1684 01:09:23,870 --> 01:09:26,800 Kaj efektive, funkcioj ne devas reveni valoroj. 1685 01:09:26,800 --> 01:09:28,060 Ili povas nur fari ion. 1686 01:09:28,060 --> 01:09:30,270 Ili povas havi tiel nomataj kromefikoj, kiuj en ĉi tiu 1687 01:09:30,270 --> 01:09:33,109 kazo estas nur aro faskon da presi en la ekrano. 1688 01:09:33,109 --> 01:09:36,580 Do rimarki ke tiu kodo tie, mi laŭvorte simple sxtelis de 1689 01:09:36,580 --> 01:09:37,680 la antaŭa ekzemplo. 1690 01:09:37,680 --> 01:09:39,930 La sola diferenco estas anstataŭ uzi i kiel mia 1691 01:09:39,930 --> 01:09:42,890 variablo, mi nun uzas b kiel mia variablo. 1692 01:09:42,890 --> 01:09:45,880 Do mi havas b cxi tie, mi havas b cxi tie, mi havas b 1693 01:09:45,880 --> 01:09:47,109 minus 1 cxi tie. 1694 01:09:47,109 --> 01:09:49,279 Sed la kodo precize la sama. 1695 01:09:49,279 --> 01:09:52,529 Sed nur por montri al vi nun, kiel ni povas uzi tiun, lasu min iri 1696 01:09:52,529 --> 01:09:56,780 antaŭeniris kaj reale ŝanĝi ĉi tion al esti por buklo. 1697 01:09:56,780 --> 01:10:03,850 por (_int_ mi = n; i> n; i -). 1698 01:10:03,850 --> 01:10:06,230 >> Do mi ŝtelis ke de nia antaŭa ekzemplo. 1699 01:10:06,230 --> 01:10:08,970 Antaŭe, estas en linio 37 ke mi jam komencis 1700 01:10:08,970 --> 01:10:10,640 kantante ĉi ĝena kanto. 1701 01:10:10,640 --> 01:10:15,810 Sed anstataŭ, mi nur tuj nun nomas ĥoro de i. 1702 01:10:15,810 --> 01:10:16,870 Faris. 1703 01:10:16,870 --> 01:10:20,260 Do nun en ĉiu ripeto de ĉi ciklo, mi nomas tion aliaj 1704 01:10:20,260 --> 01:10:22,220 funkcio, ĥoro, kiujn mi hazarde skribas. 1705 01:10:22,220 --> 01:10:24,110 Ĝi ne estis skribita de alia persono jaroj. 1706 01:10:24,110 --> 01:10:27,930 Sed ĥoro, dume, uzas printf presi 1707 01:10:27,930 --> 01:10:29,840 el tiuj kvar linioj. 1708 01:10:29,840 --> 01:10:32,720 Sed la fakto, ke mi vokas ĥoro denove kaj denove en 1709 01:10:32,720 --> 01:10:35,900 buklo signifas ke mi iros akiri, ke je la fino, la 1710 01:10:35,900 --> 01:10:39,310 ĝusta sama kanto kiel mi havas tiel multe. 1711 01:10:39,310 --> 01:10:42,130 Do mallonge, nun se mi retrorigardas al mia kodo, kvankam 1712 01:10:42,130 --> 01:10:44,240 funkcie ĉi estas ekvivalento, rimarki ke ĝi estas 1713 01:10:44,240 --> 01:10:46,020 komencas akiri eĉ pli legebla. 1714 01:10:46,020 --> 01:10:48,410 Mi ne precize scias kiel GetInt 1715 01:10:48,410 --> 01:10:49,250 estas efektivigitaj. 1716 01:10:49,250 --> 01:10:52,050 Sincere, mi ne scias kiel ĥoro estas efektivigitaj. 1717 01:10:52,050 --> 01:10:52,970 Sed ne gravas al mi. 1718 01:10:52,970 --> 01:10:55,620 Mi ne zorgas, ĉar mi nun povas ordigi de, kiel homo, legu 1719 01:10:55,620 --> 01:10:57,050 ĉi de supre ĝis malsupre. 1720 01:10:57,050 --> 01:10:59,950 Kaj ĉar la funkcioj estas nomata laŭ kion ili 1721 01:10:59,950 --> 01:11:02,910 do, mia kodo estas pli legebla. 1722 01:11:02,910 --> 01:11:05,190 Kaj kiel niaj programoj akiri multe pli kompleksa - 1723 01:11:05,190 --> 01:11:07,220 de la semestro la fino, vi povas skribi centojn da linioj 1724 01:11:07,220 --> 01:11:10,970 de kodo en lingvoj kiel PHP kaj Javascript kaj similaj - 1725 01:11:10,970 --> 01:11:13,550 vi trovos, ke estas multe pli facila ol por kontroli kiu faras 1726 01:11:13,550 --> 01:11:14,080 kion vi faris. 1727 01:11:14,080 --> 01:11:15,810 Kaj kiam vi komencos kunlabori kun amikoj aŭ 1728 01:11:15,810 --> 01:11:19,010 kompanianoj aŭ kolegoj, vi povos skribi multe pli 1729 01:11:19,010 --> 01:11:22,910 amasa programoj per startanta por praktiki tiuj bazaj 1730 01:11:22,910 --> 01:11:23,990 konstruaĵo blokoj. 1731 01:11:23,990 --> 01:11:25,550 >> Do kun kiu diris, kial ni ne nomas ĝin tago? 1732 01:11:25,550 --> 01:11:27,190 Kaj ni vidos vin merkredon. 1733 01:11:27,190 --> 01:11:33,611 [Aplaŭdo]