1 00:00:00,000 --> 00:00:10,940 2 00:00:10,940 --> 00:00:13,060 >> DAVID J Malan: Bone, do ĉi tiu estas CS50. 3 00:00:13,060 --> 00:00:15,040 Kaj tiu estas klare Vendredo. 4 00:00:15,040 --> 00:00:16,850 Kaj tiu estas la fino de semajno unu. 5 00:00:16,850 --> 00:00:21,020 Do vi eble memoras ke ni cxesis, lasta fojo, kun cliffhanger de specoj. 6 00:00:21,020 --> 00:00:25,020 Per kiu ni elmontri tiun mensogon, ke neniu gravi kion vi estis instruita kreskanta 7 00:00:25,020 --> 00:00:31,610 supren, 1 dividita per 10 ne estas, Fakte, 0.1 aŭ 0,100 aŭ 0,10000. 8 00:00:31,610 --> 00:00:35,270 Fakte, se ni kompili ĉi programo, kiel ni faris hieraŭ, kun, 9 00:00:35,270 --> 00:00:39,770 fari imprecision, kaj tiam fari streketo oblikvo, imprecision, 10 00:00:39,770 --> 00:00:43,600 ni lernis ke tio kio estas 1 dividita per 10 reale estas. 11 00:00:43,600 --> 00:00:46,140 Do tio ne estas vere sufiĉe la kazo. 12 00:00:46,140 --> 00:00:49,014 Sed ĉi faras aludon al iu fundamenta limigo de komputiloj. 13 00:00:49,014 --> 00:00:50,930 Kaj efektive, inter la aferojn ni tuj faros 14 00:00:50,930 --> 00:00:55,130 hodiaŭ estas preni rigardi kial ĉi havas okazis, kio implikaĵoj havas ĉi, 15 00:00:55,130 --> 00:00:58,430 kiom homaro malsukcesis ekteni tion en iu tre 16 00:00:58,430 --> 00:01:00,410 serioza situations-- la rezulto de la kiu 17 00:01:00,410 --> 00:01:03,141 estis sufiĉe tragedia kaj expensive-- kaj ankaŭ 18 00:01:03,141 --> 00:01:04,849 rigardu kiom ni povas reale defendas 19 00:01:04,849 --> 00:01:06,530 kontraŭ tiajn limigojn. 20 00:01:06,530 --> 00:01:10,940 Do intuicie, eble, kial 1 dividita per 10, 21 00:01:10,940 --> 00:01:15,480 laŭ mia komputilo tie, ne nur 1/10, 0.10? 22 00:01:15,480 --> 00:01:15,980 Yeah. 23 00:01:15,980 --> 00:01:16,530 Kion vi pensas? 24 00:01:16,530 --> 00:01:17,860 >> Spektantaro membro: La radix estas malsamaj? 25 00:01:17,860 --> 00:01:18,550 >> DAVID J Malan: La kio? 26 00:01:18,550 --> 00:01:19,730 Ho, la bazo estas malsamaj? 27 00:01:19,730 --> 00:01:20,720 Do ne tute. 28 00:01:20,720 --> 00:01:23,200 Ĝi estas fakte pli fundamenta por la aparataro. 29 00:01:23,200 --> 00:01:23,980 Aliaj pensoj? 30 00:01:23,980 --> 00:01:24,584 Yeah. 31 00:01:24,584 --> 00:01:26,750 Spektantaro membro: Ili reprezenti nombrojn malsame? 32 00:01:26,750 --> 00:01:27,880 DAVID J Malan: Do they-- Dekstra. 33 00:01:27,880 --> 00:01:29,338 Ili reprezentas numerojn malsame. 34 00:01:29,338 --> 00:01:30,700 Neĝuste, ŝajne. 35 00:01:30,700 --> 00:01:33,190 Por ke is-- Nu, alimaniere de kio? 36 00:01:33,190 --> 00:01:34,490 Aŭ de kiu? 37 00:01:34,490 --> 00:01:35,050 De ni? 38 00:01:35,050 --> 00:01:35,966 Spektantaro membro: Yeah. 39 00:01:35,966 --> 00:01:38,930 Ili ne uzas la dekuman sistemo al [inaudible]. 40 00:01:38,930 --> 00:01:39,680 DAVID J Malan: Bone. 41 00:01:39,680 --> 00:01:41,560 Do iusence, ili ne uzi la dekuma sistemo. 42 00:01:41,560 --> 00:01:43,720 Sub la kapuĉo, ĉio estas ja duuma, 43 00:01:43,720 --> 00:01:45,510 kaj tio estas rilatigitaj, fakte. 44 00:01:45,510 --> 00:01:48,135 Sed estas eĉ pli simpla klarigo ol tio. 45 00:01:48,135 --> 00:01:48,635 Yeah. 46 00:01:48,635 --> 00:01:49,970 >> Spektantaro membro: Ili nur havas tiom da bitoj. 47 00:01:49,970 --> 00:01:52,370 Ili povas nur stoki ĝis certa mezuro, kiel kun la glitpunktaj. 48 00:01:52,370 --> 00:01:52,780 >> DAVID J Malan: Yeah. 49 00:01:52,780 --> 00:01:54,420 Tiu estas kio vere atingi ĝin. 50 00:01:54,420 --> 00:01:57,180 Ĝi rezultas ke komputiloj tipe, volo ĉiam nur 51 00:01:57,180 --> 00:01:59,690 uzi finia kvanto de informo reprezenti ion. 52 00:01:59,690 --> 00:01:59,870 Dekstra? 53 00:01:59,870 --> 00:02:02,110 Post ĉiu, ni nur havas fiksan kvanto de malmola disko spaco. 54 00:02:02,110 --> 00:02:04,210 Ni nur havas fiksan kvanton de RAM, aŭ komputila memoro. 55 00:02:04,210 --> 00:02:06,251 Kaj se vi nur havas fiksa kvanto de io, 56 00:02:06,251 --> 00:02:09,611 Certe vi ne povas vere rakonti ĝis al malfinio aŭ ajna numero vi volas. 57 00:02:09,611 --> 00:02:11,610 Vi, ia, devi elekti kaj elekti kion gamo 58 00:02:11,610 --> 00:02:13,220 de valoroj vi tuj elportas. 59 00:02:13,220 --> 00:02:18,100 >> Do ekzemple, unu-du semajnoj antaŭlonge, kiam ni parolis pri ASCII, 60 00:02:18,100 --> 00:02:21,610 kaj ni parolis ĉirkaŭ 8 bitoj, aŭ bajto, por tiel diri, 61 00:02:21,610 --> 00:02:26,360 la plej granda nombro ni povis reprezenti kun 8 bitoj estis kio? 62 00:02:26,360 --> 00:02:28,350 255. 63 00:02:28,350 --> 00:02:31,850 Kaj ni povas reprezenti 256 entute valoroj sed ne se ni pasigas unu el ili 64 00:02:31,850 --> 00:02:34,190 sur 0-- Nu, sed se ni pasigi unu el ili sur 0, 65 00:02:34,190 --> 00:02:36,830 tiam la plej granda nombro estas, kompreneble, 255. 66 00:02:36,830 --> 00:02:39,410 >> Do rezultas, ke tiu estas la kazo ankaŭ, en tiu kunteksto. 67 00:02:39,410 --> 00:02:42,350 Ni komencis paroli, lastafoje, pri flosantaj-punktaj nombroj, kiuj 68 00:02:42,350 --> 00:02:44,640 estas malsamaj de entjeroj, en ke ili havas dekuman punkto 69 00:02:44,640 --> 00:02:47,056 kaj, espereble, iuj nombroj post tio, sed ili estas tro. 70 00:02:47,056 --> 00:02:51,730 Komputilo estas nur tipe irante uzi 32 bitojn, eble 64 bitoj 71 00:02:51,730 --> 00:02:53,497 reprezenti glitpunktaj valoro. 72 00:02:53,497 --> 00:02:56,080 Do kvankam ni plenkreska lerni matematikon kaj sciante 73 00:02:56,080 --> 00:02:58,750 ke vi povas havi absolute senfinan nombron de ciferoj 74 00:02:58,750 --> 00:03:01,650 post la dekuma punkto, ne se vi havas finia memoro. 75 00:03:01,650 --> 00:03:03,930 Vi, ia, havas rondigi, aŭ elekti kaj elekti kion 76 00:03:03,930 --> 00:03:05,346 numerojn vi tuj reprezenti. 77 00:03:05,346 --> 00:03:08,710 Kaj do vi povas pensi, iasence, tio estante la komputilo proksimaj 78 00:03:08,710 --> 00:03:14,050 proksimuma kalkulado al la valoro ke 1/10 ĝi povas atingi, kun nur 32 aŭ tiel bitoj. 79 00:03:14,050 --> 00:03:15,300 Kaj ne nur 1/10. 80 00:03:15,300 --> 00:03:19,820 >> Ekzemple, se mi ŝanĝi tion al 1/3, kiujn ni opinias estas eĉ pli simpla. 81 00:03:19,820 --> 00:03:21,300 Do 1 dividita per 3. 82 00:03:21,300 --> 00:03:22,355 Lasu min savi la dosieron. 83 00:03:22,355 --> 00:03:24,680 Lasu min kaj rekompili ĝin. 84 00:03:24,680 --> 00:03:25,820 Kaj lasu min re-ruli ĝin. 85 00:03:25,820 --> 00:03:30,000 Ĉi tie ankaŭ, ŝajne, 1/3 ne 0.3 kaj tiam malfinia nombro de 3 la 86 00:03:30,000 --> 00:03:30,770 poste. 87 00:03:30,770 --> 00:03:32,540 Vi havas ĉi imprecision fine. 88 00:03:32,540 --> 00:03:35,544 Do ni homoj estas korekta, kaj kio vi lernis estas, fakte, ĝentila, 89 00:03:35,544 --> 00:03:37,460 sed ni ekfrapanta supren kontraŭ iuj limigoj. 90 00:03:37,460 --> 00:03:39,420 >> Kaj kion mi pensis ni volas fari hodiaŭ, estas komenci 91 00:03:39,420 --> 00:03:42,190 rigardante, sincere, la tragikajn konsekvencojn 92 00:03:42,190 --> 00:03:45,490 foje, kiam la homaro ne sufiĉe efektivigi 93 00:03:45,490 --> 00:03:48,460 por ĉi realo kaj tiuj limigoj. 94 00:03:48,460 --> 00:03:52,360 Kaj ni vidos serion de vinjetoj el la Historio Kanalo kiu prenas 95 00:03:52,360 --> 00:03:53,950 rigardu kiel aferoj iris malbone. 96 00:03:53,950 --> 00:03:56,340 Ĝi estas ĉirkaŭ 8 minutoj longaj, kaj ni revenos post ĉi 97 00:03:56,340 --> 00:03:59,439 kaj rigardu precize Kio alia povas iri malbone. 98 00:03:59,439 --> 00:04:00,605 Se ni povus malheligi la lights-- 99 00:04:00,605 --> 00:04:02,350 >> [VIDEO reprodukto] 100 00:04:02,350 --> 00:04:06,310 >> -Computers, Ni ĉiuj venos akcepti la ofte frustrante problemoj kiuj 101 00:04:06,310 --> 00:04:07,750 kuniris. 102 00:04:07,750 --> 00:04:11,370 Cimoj, virusoj, kaj programaro problemetoj estas malgrandaj prezoj 103 00:04:11,370 --> 00:04:13,230 pagi por la komforto. 104 00:04:13,230 --> 00:04:17,519 Sed en altteknologia kaj altrapida milita kaj spaca programo aplikojn, 105 00:04:17,519 --> 00:04:22,130 la plej malgranda problemo povas glorata en katastrofo. 106 00:04:22,130 --> 00:04:27,750 La 4an de junio 1996, sciencistoj preparitaj lanĉi senpilotan Ariane 5 raketo. 107 00:04:27,750 --> 00:04:29,890 Ĝi portis sciencajn satelitoj desegnita 108 00:04:29,890 --> 00:04:33,030 establi precize kiel la Geomagnetiko interagas 109 00:04:33,030 --> 00:04:35,600 kun sunaj ventoj. 110 00:04:35,600 --> 00:04:37,930 La raketo estis konstruita por la Eŭropa Spaca Agentejo 111 00:04:37,930 --> 00:04:41,620 kaj levita for de lia facileco sur la marbordo de Franca Gvajanio. 112 00:04:41,620 --> 00:04:44,924 >> -Kaj Pri 30 sekundoj en la flugo, ili unue 113 00:04:44,924 --> 00:04:46,340 rimarkis ion tuj erara. 114 00:04:46,340 --> 00:04:49,280 Ke la nozzles estis swiveling en maniero ili vere ne devus. 115 00:04:49,280 --> 00:04:53,042 Ĉirkaŭ 40 sekundoj en la flugon, klare la veturilo estis en mizero, 116 00:04:53,042 --> 00:04:55,250 kaj tio estas kiam ili faris la decidon detrui gxin. 117 00:04:55,250 --> 00:04:58,970 A Range Safety Officer kun terura intestoj premis la butonon, 118 00:04:58,970 --> 00:05:03,940 eksplodigis la raketo antaŭ ol ĝi povis fariĝis danĝero al publika sekureco. 119 00:05:03,940 --> 00:05:06,600 >> -Ĉi Estis la knabino vojaĝo de la Ariane 5, 120 00:05:06,600 --> 00:05:09,270 kaj lia detruo prenis meti pro difekto 121 00:05:09,270 --> 00:05:10,992 enigita en la raketo programaro. 122 00:05:10,992 --> 00:05:12,700 -La Problemo de la Ariane estis ke 123 00:05:12,700 --> 00:05:15,370 Estis kelkaj kiuj postulis 64 bitoj por esprimi, 124 00:05:15,370 --> 00:05:18,150 kaj li volis konverti ĝin al 16 bita nombro. 125 00:05:18,150 --> 00:05:21,160 Ili supozis ke la nombro neniam tuj estos tre granda, 126 00:05:21,160 --> 00:05:25,020 ke plejparto de tiuj ciferoj en la 64 bita nombro estis 0-a. 127 00:05:25,020 --> 00:05:26,310 Ili eraris. 128 00:05:26,310 --> 00:05:28,680 >> -La Nekapablo de unu programaro programo akcepti 129 00:05:28,680 --> 00:05:32,820 la speco de nombro generita per alia estis ĉe la radiko de la misfunkciado. 130 00:05:32,820 --> 00:05:37,190 Softvarigo fariĝis tre multekosta parto de nova teknologio. 131 00:05:37,190 --> 00:05:40,760 La Ariane 4 raketo estis tre sukcesa, tiel de la programaro 132 00:05:40,760 --> 00:05:43,990 kreis por ĝi estis ankaŭ uzata sur la Ariane 5. 133 00:05:43,990 --> 00:05:49,750 >> -La Baza problemo estis ke la Ariane 5 estis pli rapida, akcelis pli rapide. 134 00:05:49,750 --> 00:05:53,000 Kaj la programaro devis ne konsistigis tion. 135 00:05:53,000 --> 00:05:56,330 >> -La Detruo de la raketo Estis grandega financa katastrofo, 136 00:05:56,330 --> 00:05:59,670 ĉiuj pro minuto programaro eraro. 137 00:05:59,670 --> 00:06:01,990 Sed tiu ne estis la unua tempo datumoj konvertiĝo problemoj 138 00:06:01,990 --> 00:06:05,310 estis plagita moderna raketo teknologio. 139 00:06:05,310 --> 00:06:08,300 >> -En 1991, kun la komenco de la Unua Golfa Milito, 140 00:06:08,300 --> 00:06:10,650 la Patriot misilo spertis similan specon 141 00:06:10,650 --> 00:06:12,650 de numero konvertiĝo problemo. 142 00:06:12,650 --> 00:06:15,620 Kiel rezulto, 28 personoj, 28 usonaj soldatoj 143 00:06:15,620 --> 00:06:18,440 estis mortigitaj kaj ĉirkaŭ 100 aliaj vundis, 144 00:06:18,440 --> 00:06:21,900 kiam la Patriot, kiu estis supozita protekti kontraŭ venonta Scuds, 145 00:06:21,900 --> 00:06:24,630 malsukcesis pafi misilo. 146 00:06:24,630 --> 00:06:29,440 >> -Kiam Irako invadis Kuvajton kaj Usono lanĉis Dezerto Ŝtormo en frua 1991, 147 00:06:29,440 --> 00:06:33,800 Patriot misilon piloj estis deplojitaj protekti Saŭda Arabio kaj Israelo 148 00:06:33,800 --> 00:06:37,000 de irakaj Scud misilon atakoj. 149 00:06:37,000 --> 00:06:40,610 The Patriot estas usona, meza intervalo surfaco-sistemo de aero 150 00:06:40,610 --> 00:06:43,010 fabrikita de la Raytheon kompanio. 151 00:06:43,010 --> 00:06:49,080 >> -La Grandeco de la Patriot interceptor, mem, estas pri, malglate 20 metrojn longa. 152 00:06:49,080 --> 00:06:51,250 Kaj ĝi pezas proksimume 2000 funtoj. 153 00:06:51,250 --> 00:06:55,195 Kaj portas kapon de about-- Mi kredas ke estas krude 150 funtoj. 154 00:06:55,195 --> 00:06:59,500 Kaj la kapo, sin, Estas alta explosivo, 155 00:06:59,500 --> 00:07:02,570 kiu havas fragmentoj ĉirkaŭ ĝi. 156 00:07:02,570 --> 00:07:06,890 La carcasa de la kapo estas desegnita por agi kiel Buckshot. 157 00:07:06,890 --> 00:07:09,130 >> -La Misiloj estas portata 4 po ujo, 158 00:07:09,130 --> 00:07:12,080 kaj estas transportitaj per duone-trailer. 159 00:07:12,080 --> 00:07:19,100 >> -La Patriot anti misilo sistemo superas almenaŭ 20 jaroj nun. 160 00:07:19,100 --> 00:07:22,320 Ĝi estis origine desegnita kiel aero defendo misilon 161 00:07:22,320 --> 00:07:24,180 malkonstrui aviadiloj malamikoj. 162 00:07:24,180 --> 00:07:27,860 En la Unua Golfa Milito, kiam tiu milito venis kune, 163 00:07:27,860 --> 00:07:32,745 la Armeo volis uzi ĝin por malkonstrui Scuds, ne aviadiloj. 164 00:07:32,745 --> 00:07:36,150 La iraka forto ne estis tiom multe de problemo, 165 00:07:36,150 --> 00:07:39,110 sed la Armeo estis maltrankviligita Scuds. 166 00:07:39,110 --> 00:07:42,340 Kaj tiel ili provis ĝisdatigi la Patriot. 167 00:07:42,340 --> 00:07:44,760 >> -Intercepting Malamiko misilo vojaĝante al Mach kvin 168 00:07:44,760 --> 00:07:47,250 tuj estos defianta sufiĉas. 169 00:07:47,250 --> 00:07:50,000 Sed kiam la Patriot estis fulmtransportita en servon, 170 00:07:50,000 --> 00:07:54,030 la Armeo ne estis konscia de Iraka modifo kiun faris 171 00:07:54,030 --> 00:07:56,840 ilia Scuds preskaŭ neeble batis. 172 00:07:56,840 --> 00:08:01,020 >> -Kio Okazis, estas la Scuds ke estis eniranta, estis malstabilaj, 173 00:08:01,020 --> 00:08:02,310 ili wobbling. 174 00:08:02,310 --> 00:08:05,140 La kialo por tio ĉi, estis la irakanoj, kun la celo 175 00:08:05,140 --> 00:08:09,450 akiri 600 kilometroj el 300 kilometro gamo misilo, 176 00:08:09,450 --> 00:08:12,930 prenis pezo el la antaŭa kapo kaj faris la kapo pli malpeza. 177 00:08:12,930 --> 00:08:17,710 Do nun, la Patriot prov veni ĉe la Scud, kaj la plimulto de la tempo, 178 00:08:17,710 --> 00:08:21,700 la grandega plimulto de la tempo, ĝi estus nur flugas per la Scud. 179 00:08:21,700 --> 00:08:25,700 >> -Once La Patriot sistemo operatoroj realigis la Patriot missed lia celo, 180 00:08:25,700 --> 00:08:29,790 ili detonado la Patriot la kapo, eviti eblajn viktimojn se 181 00:08:29,790 --> 00:08:32,380 estis permesita fali al la grundo. 182 00:08:32,380 --> 00:08:36,340 >> -Tio Estis kion multaj homoj vidis, tiuj grandaj buloj de fajro en la ĉielo, 183 00:08:36,340 --> 00:08:41,289 kaj miskomprenita kiel interkaptas de Scud kapoj. 184 00:08:41,289 --> 00:08:43,590 Kvankam en la nokto ĉieloj, Patriotoj ŝajnis 185 00:08:43,590 --> 00:08:47,020 esti sukcese detruante Scuds, ĉe Dhahran, 186 00:08:47,020 --> 00:08:49,730 tie povus esti eraro pri ĝia efikeco. 187 00:08:49,730 --> 00:08:53,990 Tie, la Patriota la radaro sistemo miskalkulis venonta Scud, 188 00:08:53,990 --> 00:08:56,650 kaj neniam lanĉita, pro softvara difekto. 189 00:08:56,650 --> 00:08:59,650 190 00:08:59,650 --> 00:09:04,100 Estis la israelanoj kiuj unue malkovris ke la pli longa la sistemo estis sur, 191 00:09:04,100 --> 00:09:07,510 La pli granda la tempo diferenco igis, pro horloĝo enigita en 192 00:09:07,510 --> 00:09:09,490 en la sistemo de komputilo. 193 00:09:09,490 --> 00:09:12,670 >> -About 2 semajnoj antaŭe la tragedio en Dhahran, 194 00:09:12,670 --> 00:09:15,010 la israelanoj raportoj la Defendo-Sekcio, 195 00:09:15,010 --> 00:09:17,940 ke la sistemo perdis tempon, ke post ĉirkaŭ 8 horoj de kurante, 196 00:09:17,940 --> 00:09:21,410 ili rimarkis ke la sistemo estis iĝante rimarkinde malpli precizaj. 197 00:09:21,410 --> 00:09:25,290 La Ministerio respondita rakontanta ĉiuj la Patriot pilojn 198 00:09:25,290 --> 00:09:28,070 por ne lasi la sistemoj dum longa tempo. 199 00:09:28,070 --> 00:09:29,960 Ili neniam diris kio longe estis. 200 00:09:29,960 --> 00:09:30,460 8 horoj? 201 00:09:30,460 --> 00:09:30,960 10 horoj? 202 00:09:30,960 --> 00:09:31,870 1000 horoj? 203 00:09:31,870 --> 00:09:33,734 Neniu sciis. 204 00:09:33,734 --> 00:09:35,650 -La Patriot pilo postenigitaj ĉe la kazernoj 205 00:09:35,650 --> 00:09:40,410 ĉe Dhahran kaj lia misa interna horloĝo, estis sur super 100 horoj 206 00:09:40,410 --> 00:09:43,041 sur la nokto de februaro 25. 207 00:09:43,041 --> 00:09:47,416 >> -ĝi Spurita tempo al precizeco de ĉirkaŭ 1/10 de sekundo. 208 00:09:47,416 --> 00:09:49,290 Nun 1/10 de sekundo estas interesa numero 209 00:09:49,290 --> 00:09:52,700 ĉar ĝi ne povas esti esprimita en duuma, precize. 210 00:09:52,700 --> 00:09:54,820 Kio signifas, ĝi ne povas esprimus, ekzakte, 211 00:09:54,820 --> 00:09:57,420 en ajna moderna cifereca komputilo. 212 00:09:57,420 --> 00:10:01,460 Estas malfacile kredi, sed uzi tion kiel ekzemplon. 213 00:10:01,460 --> 00:10:03,520 Ni prenu la nombron, 1/3. 214 00:10:03,520 --> 00:10:07,110 1/3 ne povas esti esprimita en dekuma, precize. 215 00:10:07,110 --> 00:10:11,490 1/3 estas 0,333 okazas por malfinio. 216 00:10:11,490 --> 00:10:15,486 Ne estas maniero por fari tion, kun absoluta precizeco, en dekuma. 217 00:10:15,486 --> 00:10:18,360 Tio estas ekzakte la sama speco de problemo kiu okazis en la Patriot. 218 00:10:18,360 --> 00:10:22,510 Ju pli longe la sistemo kuris, la malbona la tempo eraro fariĝis. 219 00:10:22,510 --> 00:10:28,420 >> -After 100 horoj de funkciado, la eraro en tempo estis nur proksimume 1/3 el sekundo. 220 00:10:28,420 --> 00:10:31,830 Sed en terminoj de celado misilo vojaĝante al Mach 5, 221 00:10:31,830 --> 00:10:35,890 ĝi rezultis en sekvado eraro de super 600 metroj. 222 00:10:35,890 --> 00:10:38,970 Estus fatala eraro por la soldatoj ĉe Dhahran. 223 00:10:38,970 --> 00:10:45,035 >> -Kio Okazis, estas Scud ĵeto estis detektita de frua averto satelitoj-, 224 00:10:45,035 --> 00:10:48,930 kaj ili nova kiu la Scud estis venon ilia ĝenerala direkto. 225 00:10:48,930 --> 00:10:51,170 Ili ne sciis kie estis venanta. 226 00:10:51,170 --> 00:10:53,990 >> -ĝi Estis nun ĝis la radaro komponanto de la Patriot sistemo, 227 00:10:53,990 --> 00:10:58,520 defendanta Dhahran, por loki kaj konservi trako de la venonta malamiko misilo. 228 00:10:58,520 --> 00:10:59,690 >> -La Radaro estis tre inteligenta. 229 00:10:59,690 --> 00:11:01,710 Estus fakte spuri la pozicio de la Scud 230 00:11:01,710 --> 00:11:04,040 kaj tiam antaŭdiri kie ĝi verŝajne estus, 231 00:11:04,040 --> 00:11:06,140 la venontan fojon, La radaro sendis premas eksteren. 232 00:11:06,140 --> 00:11:07,660 Tio estis nomita la gamo pordego. 233 00:11:07,660 --> 00:11:11,870 >> -Then, Tuj la Patriot decidas sufiĉan tempon havas 234 00:11:11,870 --> 00:11:16,280 pasis reiri kaj kontroli la venonta loko por ĉi detektis objekto, 235 00:11:16,280 --> 00:11:17,280 ĝi superas. 236 00:11:17,280 --> 00:11:21,690 Do kiam reiris al la malĝusta loko, tiam ne vidas kontestas 237 00:11:21,690 --> 00:11:25,230 kaj ĝi decidas ke forestas objekton, ĝi estis falsa detekto, 238 00:11:25,230 --> 00:11:26,650 kaj delasas la spuro. 239 00:11:26,650 --> 00:11:29,690 La venonta Scud malaperis de la radaro ekrano, 240 00:11:29,690 --> 00:11:32,670 kaj duaj poste, ĝi brufermis en la fortikajxon. 241 00:11:32,670 --> 00:11:38,100 La Scud mortigis 28 kaj estis la lasta unu pafita dum la Unua Golfa Milito. 242 00:11:38,100 --> 00:11:43,460 Tragike, la ĝisdatigita programaro alvenis al Dhahran la sekva tago. 243 00:11:43,460 --> 00:11:46,150 La programaro difekto havis estis riparita, fermante 244 00:11:46,150 --> 00:11:48,940 unu ĉapitro en la tumulta historio de la Patriot misilo. 245 00:11:48,940 --> 00:11:50,220 >> [FINO reprodukto] 246 00:11:50,220 --> 00:11:54,340 >> DAVID J Malan: Do ni rigardu kelkaj similaj limigoj en nur iom. 247 00:11:54,340 --> 00:11:58,470 Sed unue, ni transiro al kelkaj FYI estas. 248 00:11:58,470 --> 00:12:01,575 Do one-- tiu semajnfino, ekzistas estos súper sekcioj, 249 00:12:01,575 --> 00:12:04,200 kiuj celas forpuŝi regule planitaj sekcioj, kiuj 250 00:12:04,200 --> 00:12:05,460 funkciigos semajne cxi tie. 251 00:12:05,460 --> 00:12:08,204 Rigardu la CS50 la paĝaro por pliaj informoj pri tiuj. 252 00:12:08,204 --> 00:12:11,120 Ili ankaŭ estos filmado kaj eksudita vivas por tiuj nekapablaj ĉeesti. 253 00:12:11,120 --> 00:12:12,980 Problemo aro 1 estas sur la kurso de afiŝinto jam, 254 00:12:12,980 --> 00:12:15,105 kaj ni rigardu ke en nur iomete. 255 00:12:15,105 --> 00:12:18,350 Kaj oficejo horoj ankaŭ prenos meti ĉi lundo ĵaŭdo. 256 00:12:18,350 --> 00:12:20,960 >> Do tio estis la plej kanona programo ni rigardis lasta tempo. 257 00:12:20,960 --> 00:12:23,590 Estas kiel la plej simpla programon vi povas skribi en C, 258 00:12:23,590 --> 00:12:25,250 kaj eĉ tio estas iom de aŭdaca aserto. 259 00:12:25,250 --> 00:12:25,750 Dekstra? 260 00:12:25,750 --> 00:12:28,070 Ĉar ekzistas multe de ŝajnante komplekseco al ĉi. 261 00:12:28,070 --> 00:12:30,445 Do ni prenu rapidan rigardon al kio iuj de ĉi tiuj elementoj 262 00:12:30,445 --> 00:12:33,080 estis kaj poste provi provizi mensan modelon por kiel 263 00:12:33,080 --> 00:12:35,710 tiujn simplajn programojn labori, kaj tiam ni komencos 264 00:12:35,710 --> 00:12:38,050 rigardas aferojn ĉiam pli kompleksa. 265 00:12:38,050 --> 00:12:41,280 Do tiu linio tie, elstarigita nun, en flava, kion ni diras, lastafoje, 266 00:12:41,280 --> 00:12:43,200 ke tio faras por ni? 267 00:12:43,200 --> 00:12:45,220 Kio estas la celo ĝi servas? 268 00:12:45,220 --> 00:12:46,984 Iu ajn el pli for reen? 269 00:12:46,984 --> 00:12:47,483 Yeah. 270 00:12:47,483 --> 00:12:48,649 >> Spektantaro membro: [inaudible] 271 00:12:48,649 --> 00:12:50,871 272 00:12:50,871 --> 00:12:51,704 DAVID J Malan: Bonan. 273 00:12:51,704 --> 00:12:53,537 Do ĝi donas aliro al komandoj, aŭ ni 274 00:12:53,537 --> 00:12:56,750 nomu ilin funkcioj, ke iu alia skribis, ke estas deklarita, 275 00:12:56,750 --> 00:12:58,350 por tiel diri, en iuj aliaj dosieron. 276 00:12:58,350 --> 00:13:02,370 Do ni vidos precize kion .h dosieron Estas kontre a .c dosieron, eventuale. 277 00:13:02,370 --> 00:13:04,710 Sed nuntempe, nur scias ke printf, ekzemple, 278 00:13:04,710 --> 00:13:08,370 estas inter la funkcioj kiuj estis deklaris en iuj aliaj dosiero, ie 279 00:13:08,370 --> 00:13:12,930 alia sur la nubo malfacila stirado ke permesas al ni aliron printf kaj uzi ĝin 280 00:13:12,930 --> 00:13:15,240 sen devi reinventi ke rado mem. 281 00:13:15,240 --> 00:13:16,930 Dume, ĉefa. 282 00:13:16,930 --> 00:13:19,690 Kio estis la analoga de ĉefa, lasta semajno? 283 00:13:19,690 --> 00:13:20,190 Yeah. 284 00:13:20,190 --> 00:13:21,460 >> Spektantaro membro: Verda flago estas klakis. 285 00:13:21,460 --> 00:13:21,740 >> DAVID J Malan: Yeah. 286 00:13:21,740 --> 00:13:23,490 Scratch la, kiam verda flago clicked. 287 00:13:23,490 --> 00:13:25,560 Estas kiel la puzlo peco ke piedbatas aferojn ekstere. 288 00:13:25,560 --> 00:13:28,306 Kaj tiel simile, faris la mondon decidis antaŭ kelkaj jaroj ke en C, 289 00:13:28,306 --> 00:13:30,930 kaj faskon da aliaj lingvoj, se vi volas skribi programon, 290 00:13:30,930 --> 00:13:33,410 via unua funkcio devas esti nomata, ĉefa. 291 00:13:33,410 --> 00:13:34,641 Kaj ĝi devas aspekti ĉi. 292 00:13:34,641 --> 00:13:36,640 Sed ni revenos, alia tempo, por kio, int, 293 00:13:36,640 --> 00:13:38,690 kaj vakaj, signifas en tiu kunteksto. 294 00:13:38,690 --> 00:13:42,860 Nuntempe, la krispa krampoj estas speco de kiel Scratch la puzlo peco formo 295 00:13:42,860 --> 00:13:45,080 ke personigas iu nombro da linioj. 296 00:13:45,080 --> 00:13:47,070 Kaj inter la linioj tie, estas ĉi tie. 297 00:13:47,070 --> 00:13:51,610 printf estas funkcio kies celo en vivo estas presi formatan kordoj. 298 00:13:51,610 --> 00:13:55,010 Kaj apud formatita, mi volas diri al vi povas ŝtopi en lokokupilo valoroj, 299 00:13:55,010 --> 00:13:58,360 kaj vi povas specifi kiom dekuma poentoj, kiom da nombroj presi 300 00:13:58,360 --> 00:14:00,040 post dekuma punkto kaj similaj. 301 00:14:00,040 --> 00:14:05,040 Kaj printf, kompreneble, prenas unu aŭ pli argumentoj aŭ parametroj, 302 00:14:05,040 --> 00:14:06,770 alie konata, pli simple, kiel enigoj. 303 00:14:06,770 --> 00:14:09,230 >> Do printf, kiel multaj funkcioj, prenas enigoj. 304 00:14:09,230 --> 00:14:12,730 Kaj tiuj enigoj estas ampleksita per la du krampoj tie. 305 00:14:12,730 --> 00:14:15,180 Kaj ene de tiuj estas unu enigo. 306 00:14:15,180 --> 00:14:18,600 Estas kordoj, kiel ni nomas ĝin, kio estas nur vico de signoj, 307 00:14:18,600 --> 00:14:22,310 kiel vorto aŭ frazo, aŭ tutan eseo eĉ, en inter citiloj. 308 00:14:22,310 --> 00:14:25,712 Kaj tio estas kio okazas por influi la konduto de printf ĉar, kompreneble, 309 00:14:25,712 --> 00:14:27,170 ĝi estas nur genérico print funkcio. 310 00:14:27,170 --> 00:14:29,600 Oni ne tuj scii kion presi, se vi ne diros ĝin. 311 00:14:29,600 --> 00:14:31,000 Kaj poste, kelkaj minutiae. 312 00:14:31,000 --> 00:14:34,056 Kion ni diras tiun strangan sekvenco de simboloj estas? 313 00:14:34,056 --> 00:14:34,556 Yeah. 314 00:14:34,556 --> 00:14:35,410 >> Spektantaro membro: Nova linio. 315 00:14:35,410 --> 00:14:35,990 >> DAVID J Malan: Nova linio. 316 00:14:35,990 --> 00:14:39,340 Do rezultas, vi ne povas simple batis, eniri, kiam vi skribas la programo. 317 00:14:39,340 --> 00:14:42,590 Ĝenerale, la tradukilo tuj akiri iom konfuzita kiel al kio vi aludas. 318 00:14:42,590 --> 00:14:45,340 Prefere, vi devas laŭvorte diri, donu al mi novan linion tie. 319 00:14:45,340 --> 00:14:49,506 Kaj do / n estas kio ni ĝenerale voki ellasilo karaktero. 320 00:14:49,506 --> 00:14:50,870 Do n, por nova linio. 321 00:14:50,870 --> 00:14:53,810 Kaj la tradukilo scias ke kiam vidas / n, 322 00:14:53,810 --> 00:14:57,420 ĝi devus fakte indukti la komputilo, finfine, aŭ printf, ĉikaze, 323 00:14:57,420 --> 00:15:00,260 elprinti fakta nova linio, kiel bati la, eniri, 324 00:15:00,260 --> 00:15:01,480 klavon sur la klavaro. 325 00:15:01,480 --> 00:15:05,620 Kaj fine, kion faris ni diru tiu peco de sintakso estas por? 326 00:15:05,620 --> 00:15:06,591 Kion tio reprezentas? 327 00:15:06,591 --> 00:15:07,090 Yeah. 328 00:15:07,090 --> 00:15:07,490 >> Spektantaro membro: [inaudible] 329 00:15:07,490 --> 00:15:08,660 >> DAVID J Malan: Estas nur la fino de la linio. 330 00:15:08,660 --> 00:15:09,909 Estas la fino de la komunikaĵo. 331 00:15:09,909 --> 00:15:11,890 Kaj rimarki ke ni ne metis ilin ĉie. 332 00:15:11,890 --> 00:15:13,900 Ni certe ne metas ilin ĉe la finoj de ĉiu linio. 333 00:15:13,900 --> 00:15:16,680 Ekzemple, Tie estas neniu sur la unua linio, ekzistas neniu sur la linio 334 00:15:16,680 --> 00:15:18,680 kun, ĉefa, ekzistas neniu post la krispa krampoj, 335 00:15:18,680 --> 00:15:21,740 sed vi komencos vidi kaj akiri familiara kun kie ĝi nomiĝas por. 336 00:15:21,740 --> 00:15:26,014 Kaj ĝi estas preskaŭ ĉiam post funkcio voki aŭ deklaron, iu ago 337 00:15:26,014 --> 00:15:27,180 ke vi reale preni. 338 00:15:27,180 --> 00:15:29,520 >> Kaj scii nun, speciale se inter tiuj malpli komfortaj, 339 00:15:29,520 --> 00:15:32,540 tiuj estas la specoj de stultaj aferoj ke vi finas hazarde batante 340 00:15:32,540 --> 00:15:33,873 vian kapon kontraŭ la muro super. 341 00:15:33,873 --> 00:15:36,107 Ĉar vi estos logike certa en iu problemo 342 00:15:36,107 --> 00:15:38,440 vi jam solvita por problemo aro, kaj la malbenita afero nur 343 00:15:38,440 --> 00:15:40,187 ne kompili aŭ eĉ kuri. 344 00:15:40,187 --> 00:15:43,270 Kaj tiom ofte, frue, ĝi tuj ĉar vi maltrafis paréntesis, 345 00:15:43,270 --> 00:15:44,455 aŭ vi maltrafis punktokomo. 346 00:15:44,455 --> 00:15:46,547 Kaj tiel simple esti atenta de tiuj specoj de aferoj, 347 00:15:46,547 --> 00:15:49,380 kaj provu ne frustras per ilin ĉar tre rapide faras ĉi 348 00:15:49,380 --> 00:15:50,640 malnovigxis ĉapelo. 349 00:15:50,640 --> 00:15:53,910 Sed estas tre facile akiri frustritaj frue sur, kiel rezulto. 350 00:15:53,910 --> 00:15:57,020 >> Do nun, ni rigardu kiel tiu linio estas efektive laboranta 351 00:15:57,020 --> 00:15:59,170 kaj tiam rigardi iomete pli komplika. 352 00:15:59,170 --> 00:16:02,017 Do ni havas ĉi tie, la kapablon desegni sur tiu ekrano. 353 00:16:02,017 --> 00:16:04,100 Kaj ni supozu, ke tio estas mia komputila ekrano, 354 00:16:04,100 --> 00:16:08,589 sed mi skribas la, saluton programo, kaj mi ne plenumiĝis, printf. 355 00:16:08,589 --> 00:16:10,130 Iu alia implementado, printf. 356 00:16:10,130 --> 00:16:12,420 Kiu volus pretendi implementado, printf? 357 00:16:12,420 --> 00:16:12,920 Se ni rajtas? 358 00:16:12,920 --> 00:16:13,830 Bone, kio estas via nomo? 359 00:16:13,830 --> 00:16:14,155 >> Lernanto 1: [? Copal. ?] 360 00:16:14,155 --> 00:16:15,529 >> DAVID J Malan: Copal, venu supren. 361 00:16:15,529 --> 00:16:16,430 Venu supren. 362 00:16:16,430 --> 00:16:17,070 Bone. 363 00:16:17,070 --> 00:16:22,260 Do ni havas, tie, iu nomo etikedoj, ekde ni faros malgrandan ludon de tiu. 364 00:16:22,260 --> 00:16:26,270 Kaj ni vizitos vin, printf. 365 00:16:26,270 --> 00:16:30,170 Kaj se vi volas veni tien, kion mi ĵus tirita sur la ekrano, 366 00:16:30,170 --> 00:16:32,340 ĝi estas tute simple, estas mi tiu. 367 00:16:32,340 --> 00:16:35,550 >> Bone, do, saluton mia nomo estas, printf, se vi ŝatus enkalkulu en. 368 00:16:35,550 --> 00:16:35,740 Bone. 369 00:16:35,740 --> 00:16:37,360 Kaj se vi povas iri stando per la komputila ekrano 370 00:16:37,360 --> 00:16:39,730 kvazaŭ vi estas la funkcio kiu venis kun tiu komputila sistemo. 371 00:16:39,730 --> 00:16:42,063 Kaj via celo en vivo estas por fakte presi ion. 372 00:16:42,063 --> 00:16:44,560 Sed tre kiel la programo ni nur havis sur la ekrano, ĉi tie, 373 00:16:44,560 --> 00:16:47,060 ni tuj devas efektive donas vin kelkaj enigo. 374 00:16:47,060 --> 00:16:51,810 >> Kaj do, se mia enigo, tie, estas ŝajne, kio pasis al printf, 375 00:16:51,810 --> 00:16:53,730 ni ia moki ĝin tiel. 376 00:16:53,730 --> 00:16:58,720 Mi tuj laŭvorte skribi sur paperpeco, "saluton, mondo" 377 00:16:58,720 --> 00:17:03,020 backslash N. Kaj esti klaraj, kio Mi ĵus desegnita sur tiu peco de papero, 378 00:17:03,020 --> 00:17:04,020 aspektas jene. 379 00:17:04,020 --> 00:17:08,730 Do kiam mi kuros ĉi programo, kaj tiu flava linio de kodo gets ekzekutita, 380 00:17:08,730 --> 00:17:12,970 ĝi estas kvazaŭ mi, La saluton programo, am disdonanta iuj enigo for al funkcio 381 00:17:12,970 --> 00:17:13,970 ke iu alia skribis. 382 00:17:13,970 --> 00:17:16,595 >> Kaj se vi, kun via fingro, povis reale, kun via fingro, 383 00:17:16,595 --> 00:17:21,520 desegni sur la ekrano ajn ĝi estas vi estis enmanigis, 384 00:17:21,520 --> 00:17:27,465 la efiko, finfine, estas vidi ekzakte tion, sur la ekrano. 385 00:17:27,465 --> 00:17:29,140 Kaj iom angulo kazo ĉi tie. 386 00:17:29,140 --> 00:17:31,540 Kaj bone, ni ne vidos la, nova linio, ĉe tiu punkto. 387 00:17:31,540 --> 00:17:33,900 Estus malĝusta por vi eksplicite desegni la lino. 388 00:17:33,900 --> 00:17:36,810 Sed se ni restos skribas vortojn sur la ekrano, ili finus sub tiu. 389 00:17:36,810 --> 00:17:39,560 >> Do dankon, sed algluita ĉirkaŭ ĉi tie dum nur momento. 390 00:17:39,560 --> 00:17:42,860 Ni nun bezonas unu alia volontulo, se ni povus, 391 00:17:42,860 --> 00:17:46,830 ke tuj bezonos por ludi la rolon of-- Estas nuraj homoj en la orkestro 392 00:17:46,830 --> 00:17:47,355 nun. 393 00:17:47,355 --> 00:17:47,980 Kiel about-- OK. 394 00:17:47,980 --> 00:17:48,480 Dekstra tie. 395 00:17:48,480 --> 00:17:49,180 Venu supren. 396 00:17:49,180 --> 00:17:49,955 Kio estas via nomo? 397 00:17:49,955 --> 00:17:50,922 >> Lernanto 2: [? Ivay. ?] 398 00:17:50,922 --> 00:17:51,796 DAVID J Malan: Pardonu? 399 00:17:51,796 --> 00:17:52,990 Lernanto 2: [? Ivay. ?] 400 00:17:52,990 --> 00:17:55,320 DAVID J Malan: Etan, venu supren. 401 00:17:55,320 --> 00:17:55,820 Neniu? 402 00:17:55,820 --> 00:17:58,390 Ĉu mi akiras ke malpravas, eĉ post vi diris ĝin dufoje? 403 00:17:58,390 --> 00:17:58,890 Venu supren. 404 00:17:58,890 --> 00:18:00,030 Estas malfacile aŭdi tien. 405 00:18:00,030 --> 00:18:05,240 406 00:18:05,240 --> 00:18:05,740 OK. 407 00:18:05,740 --> 00:18:07,190 Mi bedaŭras, kio estas via nomo? 408 00:18:07,190 --> 00:18:07,680 >> Lernanto 2: [? Ivay. ?] 409 00:18:07,680 --> 00:18:08,790 >> [? DAVID J Malan: Ivay. ?] OK. 410 00:18:08,790 --> 00:18:10,430 Nuntempe, se vi ne faras menso, Vi estas GetString. 411 00:18:10,430 --> 00:18:11,013 >> Lernanto 2: OK. 412 00:18:11,013 --> 00:18:11,797 Malvarmeta. 413 00:18:11,797 --> 00:18:14,630 DAVID J Malan: Do se vi ŝatus stari tie dum nur momento, 414 00:18:14,630 --> 00:18:17,100 ni rigardu iomete pli kompleksa programo, kiun 415 00:18:17,100 --> 00:18:18,670 nun havas tri linioj de kodo. 416 00:18:18,670 --> 00:18:24,080 Do ni havas unu, deklari vian nomon uzante printf; du, alvokon al GetString, 417 00:18:24,080 --> 00:18:28,060 sekvata de asigno al ŝanĝiĝema nomita, kordoj s aŭ nomita s; 418 00:18:28,060 --> 00:18:31,260 kaj poste alia alvoko al, printf, sed ĉi tiu fojo kun du eniroj. 419 00:18:31,260 --> 00:18:33,646 >> Do ni jam faris stato via nomo, aŭ pli ĝuste, ni havas 420 00:18:33,646 --> 00:18:34,770 jam faris printf alvoko. 421 00:18:34,770 --> 00:18:38,960 Do mi tuj skribos, Deklaru vian nomon. 422 00:18:38,960 --> 00:18:42,089 Kaj do, kion mi tuj pasi, printf, en nur momente, 423 00:18:42,089 --> 00:18:43,005 Estas sufiĉe simple, tiu. 424 00:18:43,005 --> 00:18:47,760 Do se vi volas antaŭeniri kaj tiros tiun sur la ekrano, tio estas via enigo nun. 425 00:18:47,760 --> 00:18:48,260 Bone. 426 00:18:48,260 --> 00:18:51,160 Kaj forgesu kordo, ni nun havas nia propra linio de kodo tie. 427 00:18:51,160 --> 00:18:54,470 Do, GetString, ni bezonas por fakte nomi, GetString. 428 00:18:54,470 --> 00:18:57,920 Do via celo en la vivo estas nur piediri eksteren en la orkestro, se vi povus, 429 00:18:57,920 --> 00:18:58,980 kaj akiri ies nomon. 430 00:18:58,980 --> 00:19:00,860 Sed ni donu al vi io por meti ĝin sur. 431 00:19:00,860 --> 00:19:02,908 Se vi volas, iru antaŭen kaj akiri kordoj, 432 00:19:02,908 --> 00:19:05,241 akiri ies nomon sur tiu peco de papero, se vi povus. 433 00:19:05,241 --> 00:19:12,940 434 00:19:12,940 --> 00:19:13,530 >> Bone. 435 00:19:13,530 --> 00:19:15,250 Kaj ni vidos, en nur momente, kies nomo estas duumaj. 436 00:19:15,250 --> 00:19:17,630 Dume, kion mi tuj havas preta, estas sensigna peco 437 00:19:17,630 --> 00:19:21,340 el papero, en kiu, mi tuj stoki ajn valoro ĝi 438 00:19:21,340 --> 00:19:25,752 estas ke GetString revenas al mi, Mi, estante kordo variablo nomita, s. 439 00:19:25,752 --> 00:19:26,252 Bone. 440 00:19:26,252 --> 00:19:27,293 Do kion vi havas ĉi tie? 441 00:19:27,293 --> 00:19:27,950 Nik. 442 00:19:27,950 --> 00:19:28,450 Bone. 443 00:19:28,450 --> 00:19:30,910 Do ni havas Nik nomo tie. 444 00:19:30,910 --> 00:19:33,750 Do jen kion laŭvorte estis revenis 445 00:19:33,750 --> 00:19:35,810 al mi, por tiel diri, per GetString. 446 00:19:35,810 --> 00:19:38,720 >> Mi nun iras al ekzekuti la maldekstra flanko 447 00:19:38,720 --> 00:19:43,440 de tiu esprimo, kie mi simple kopii malsupren, por hodiaŭa celoj, Nik. 448 00:19:43,440 --> 00:19:46,470 Do nun, mi havas variablo nomita, s, stokante Nik nomo. 449 00:19:46,470 --> 00:19:49,520 Mi jam enmanigis al printf antaŭan argumenton. 450 00:19:49,520 --> 00:19:52,800 Sed en nia tria kaj lasta linio de kodo, mi fakte devas manon printf 451 00:19:52,800 --> 00:19:58,500 iu iom different-- "saluton,% s," backslash n. 452 00:19:58,500 --> 00:20:01,510 >> Kaj tiel la lasta linio mi iros al send-- la lasta afero mi estas 453 00:20:01,510 --> 00:20:03,060 verkos malsupreniros, estas tiu. 454 00:20:03,060 --> 00:20:06,310 Do la du linioj de kodo, aŭ prefere la lasta linio de kodo, 455 00:20:06,310 --> 00:20:10,690 alvokoj por du inputs-- unu, tiun, kaj du, ĉi. 456 00:20:10,690 --> 00:20:13,330 Do se nia printf funkcio nun povas preni tiujn kiel enigo, 457 00:20:13,330 --> 00:20:16,000 lasu min liberigi la ekrano por vi. 458 00:20:16,000 --> 00:20:17,250 Fakte ne, vi povas iri antaŭen. 459 00:20:17,250 --> 00:20:19,333 Ni lasos ĝin, ekde ĝi estas sur la sama programo. 460 00:20:19,333 --> 00:20:21,760 461 00:20:21,760 --> 00:20:27,380 Ni devus vidi, saluton, Nik. 462 00:20:27,380 --> 00:20:27,880 Bone. 463 00:20:27,880 --> 00:20:29,670 Do tiu estis tre kelkajn aros salti tra, simple 464 00:20:29,670 --> 00:20:31,620 skribi, deklari vian nomo, kaj, saluton, Nik. 465 00:20:31,620 --> 00:20:37,210 Sed ĉi tiu simpla ideo de mesaĝo forpaso de enigo kaj eligo forpaso akcepto, 466 00:20:37,210 --> 00:20:40,430 Estas ekzakte la modelon ni tuj devas ĉar eĉ la plej kompleksaj funkcioj. 467 00:20:40,430 --> 00:20:41,804 Do dankon tiel por vi ambaŭ. 468 00:20:41,804 --> 00:20:43,730 Ni havas belan streso pilko tie por vi. 469 00:20:43,730 --> 00:20:48,890 Kaj dankon al nia GetString kaj printf volontuloj egale. 470 00:20:48,890 --> 00:20:49,551 Dankon. 471 00:20:49,551 --> 00:20:50,050 Bone. 472 00:20:50,050 --> 00:20:50,966 Dankon al vi ambaŭ. 473 00:20:50,966 --> 00:20:56,640 474 00:20:56,640 --> 00:21:00,430 >> Do ni parolis pri ĝis nun, plejparte pri kordoj. 475 00:21:00,430 --> 00:21:06,550 Kaj ĝi rezultas ke C povas reale kompreni kelkaj malsamaj datumtipoj. 476 00:21:06,550 --> 00:21:08,860 Fakte, ni prenu Rigardu tiujn ĉi tie. 477 00:21:08,860 --> 00:21:12,490 Do C, kaj multajn lingvojn, kompreni aĵoj nomata signoj. 478 00:21:12,490 --> 00:21:16,852 A char estas ĝenerale sola bajto, aŭ ok bitoj. 479 00:21:16,852 --> 00:21:19,810 Kaj ĝi reprezentas ununuran karakteron, kiel la litero A, aŭ la ĉefurbo 480 00:21:19,810 --> 00:21:21,990 litero A, aŭ la minuskla litero A, aŭ ekkrion punkto, 481 00:21:21,990 --> 00:21:25,440 aŭ ajnan karakteron kiu vi povas tajpi sur via klavaro, kaj kelkfoje eĉ pli. 482 00:21:25,440 --> 00:21:26,795 Ni ankaŭ okazas vidi kaleŝegoj. 483 00:21:26,795 --> 00:21:31,160 Al kaleŝego estas, ĝenerale, 32-bita valoro, aŭ kvar bitokoj 484 00:21:31,160 --> 00:21:33,660 ĉar denove, unu bajto estas ok bitoj. 485 00:21:33,660 --> 00:21:36,675 >> Do kaleŝego estas glitpunktaj valoron, io kun dekuma punkto. 486 00:21:36,675 --> 00:21:38,550 Kaj efektive, jen kio la filmo estis parolanta 487 00:21:38,550 --> 00:21:42,240 pri kiam ili parolis pri flosantaj punkto valoroj, iu fiksita nombro da bitoj 488 00:21:42,240 --> 00:21:43,940 estanta uzita por reprezenti realan numeron. 489 00:21:43,940 --> 00:21:45,740 Sed estas ankaŭ aĵoj nomata duobloj. 490 00:21:45,740 --> 00:21:47,860 Tiuj ekzistas en Java, se vi prenis APCs, 491 00:21:47,860 --> 00:21:51,540 kaj duobla, kiel la nomo dankeme sugestas, estas duoble pli granda ol kaleŝego. 492 00:21:51,540 --> 00:21:54,540 Estas ankoraŭ realan numeron, ĝi simple havas pli bitoj 493 00:21:54,540 --> 00:21:58,390 kun kiu esti ĉiam pli precizaj, aŭ stoki eĉ pli grandaj nombroj. 494 00:21:58,390 --> 00:21:58,890 int estas facila. 495 00:21:58,890 --> 00:22:00,181 Ni parolis pri tiu lasta tempo. 496 00:22:00,181 --> 00:22:01,160 Estas nur entjero. 497 00:22:01,160 --> 00:22:03,980 Kaj ĝi estas ĝenerale 32 bitoj, aŭ kvar bitokoj. 498 00:22:03,980 --> 00:22:07,850 >> Kaj tiel, se vi havas, ni vidu nun, 32 bits-- kaj ni faris tiun en semajno 0, 499 00:22:07,850 --> 00:22:10,820 iam tiel briefly-- se vi havas 32 bitoj, kio estas la plej granda 500 00:22:10,820 --> 00:22:13,580 Nombro vi povas reprezenti kiel entjero? 501 00:22:13,580 --> 00:22:16,080 Donu aŭ preni? 502 00:22:16,080 --> 00:22:18,380 Estas kiel 4 miliardoj, kaj tio estas nur se ni estas 503 00:22:18,380 --> 00:22:20,690 reprezentanta pozitivaj nombroj nur. 504 00:22:20,690 --> 00:22:23,930 Se vi havas 32 bitoj, kaj vi volas reprezentas negativajn numerojn tiel, 505 00:22:23,930 --> 00:22:27,100 via atingo estas, esence, negativa 2 miliardo por pozitiva 2 miliardoj. 506 00:22:27,100 --> 00:22:29,250 Sed ĝenerale, ni komencos je 0 iri ĝis 4 miliardoj. 507 00:22:29,250 --> 00:22:32,400 >> Vi ne devas scii precize, sed ni povas vidi tiun, fakte, se mi nur 508 00:22:32,400 --> 00:22:36,400 malfermiĝi iom kalkulilo, ĉi tie. 509 00:22:36,400 --> 00:22:41,070 Mi povas fari 2 la 32, kaj tio estas ĝuste kiom granda, 510 00:22:41,070 --> 00:22:43,190 kiom valoroj povas reprezenti, kun 32 bitoj. 511 00:22:43,190 --> 00:22:44,442 Kaj estas proksimume 4 miliardoj. 512 00:22:44,442 --> 00:22:46,900 Do ni observu vidante ke nombro en kelkaj malsamaj lokoj. 513 00:22:46,900 --> 00:22:48,890 Sed se vi bezonas plu nombroj ol tio, 514 00:22:48,890 --> 00:22:51,670 rezultas ekzistas iu nomita longa longa. 515 00:22:51,670 --> 00:22:54,005 Kaj longa longa estas ĝenerale 64 bitoj, kiu 516 00:22:54,005 --> 00:22:56,380 signifas ĝi estas ordo de grando eĉ pli granda ol int. 517 00:22:56,380 --> 00:22:59,510 >> Do mi eĉ ne povas prononci la plej grandaj numero kiun vi povas reprezenti, 518 00:22:59,510 --> 00:23:01,340 sed estas notinde pli granda. 519 00:23:01,340 --> 00:23:05,190 Nun kiel flanken, historie, se int estas 32 bitoj, 520 00:23:05,190 --> 00:23:12,780 kaj longa longa estas 64 bitoj, kiel granda estas longa, ne longa tempo? 521 00:23:12,780 --> 00:23:16,500 522 00:23:16,500 --> 00:23:20,330 Oni kredus ke ĝi estas pli longa ol int sed eble malpli longe ol longa longa, 523 00:23:20,330 --> 00:23:21,400 sed reale dependas. 524 00:23:21,400 --> 00:23:23,400 >> Kaj tiel rezultas unu de la frustraciones tro, 525 00:23:23,400 --> 00:23:26,830 kun skribanta kodo sur certaj sistemoj, estas ke ne ĉiuj el tiuj datumtipoj 526 00:23:26,830 --> 00:23:28,440 havas pre-determinita valoroj. 527 00:23:28,440 --> 00:23:29,771 Kelkfoje ĝi estas tio multaj bitoj. 528 00:23:29,771 --> 00:23:31,020 Foje estas ke multaj bitoj. 529 00:23:31,020 --> 00:23:32,750 Do vi vere devas scii, kelkfoje, kio aparataro 530 00:23:32,750 --> 00:23:34,083 ke vi uzas viajn programaro sur. 531 00:23:34,083 --> 00:23:36,960 Feliĉe, aliaj lingvoj kaj aliaj datumtipoj kiuj nun ekzistas, 532 00:23:36,960 --> 00:23:38,400 permesos vin esti pli preciza. 533 00:23:38,400 --> 00:23:41,220 Nu, ni ekvidis ĉenon, kaj ni vidis bool, tro, 534 00:23:41,220 --> 00:23:43,960 sed rezultu tiuj venas nur kun la CS50 biblioteko. 535 00:23:43,960 --> 00:23:46,240 Do tiuj ne konstruita en C. Tiuj anstataŭe, 536 00:23:46,240 --> 00:23:49,340 venas en tiu dosiero nomata CS50.h, ke ni eventuale 537 00:23:49,340 --> 00:23:51,831 senŝeligas reen la tavolojn de. 538 00:23:51,831 --> 00:23:53,830 Sed nuntempe, ili estas nur aldona datumtipoj. 539 00:23:53,830 --> 00:23:57,060 Bool estas vera aŭ malvera, kaj kordo estas vico de signoj, 540 00:23:57,060 --> 00:23:57,970 kiel vorto. 541 00:23:57,970 --> 00:24:01,690 Nun printf, ni vidis, havas anstataŭaĵojn,% s estas unu. 542 00:24:01,690 --> 00:24:05,430 Kaj eble vi povos, por nun, konkludi el tiuj aliaj ekzemploj, kiamaniere 543 00:24:05,430 --> 00:24:07,720 vi povus havi lokokupilo por malsamaj datumtipoj. 544 00:24:07,720 --> 00:24:11,150 Ekzemple, preni divenon, se vi volis presi ununuran char uzante 545 00:24:11,150 --> 00:24:15,270 printf, la lokokupilo estas probable% c. 546 00:24:15,270 --> 00:24:19,650 Kaj se vi volas printi la entjero kun la lokokupilo,% i. 547 00:24:19,650 --> 00:24:25,150 % LLD estas longa longa dekuma valoro, sed longa longa, tiel ke mapoj al tio. 548 00:24:25,150 --> 00:24:28,640 Kaj tiam% f por flosanta punkto valoro aŭ por duobla, 549 00:24:28,640 --> 00:24:31,270 do kelkfoje ili estas recikligita en malsamaj kuntekstoj. 550 00:24:31,270 --> 00:24:33,350 Do ni vidos kaj uzi kelkaj el tiuj super tempo. 551 00:24:33,350 --> 00:24:36,420 Kaj printf kaj aliajn funkciojn ankaŭ subteno alies eskapo sekvencoj, 552 00:24:36,420 --> 00:24:38,080 kaj kelkfoje tiuj estas necesaj. 553 00:24:38,080 --> 00:24:39,770 Do backslash n estas nova linio. 554 00:24:39,770 --> 00:24:42,886 Backslash t, ĉu iu volas preni ponardopiko? 555 00:24:42,886 --> 00:24:43,760 Spektantaro membro: Tab. 556 00:24:43,760 --> 00:24:44,551 DAVID J Malan: Tab. 557 00:24:44,551 --> 00:24:46,810 Do se vi vere volas elprinti pestaña, ne 558 00:24:46,810 --> 00:24:49,940 fiksita nombro de spacoj sed fakta langeton karaktero, vi ne trafis viajn, 559 00:24:49,940 --> 00:24:53,490 tab, ŝlosilo sur la klavaro, ĝenerale, vi efektive faras backslash t. 560 00:24:53,490 --> 00:24:57,750 Backslash citilon, kial mi iam volas ke? 561 00:24:57,750 --> 00:24:58,250 Dekstra? 562 00:24:58,250 --> 00:25:00,417 Kial mi ne povas simple tajpi citilon sur mia klavaro? 563 00:25:00,417 --> 00:25:02,124 Spektantaro membro: Ĉar, alikaze, 564 00:25:02,124 --> 00:25:04,830 tuj kredas ke estas la fino de kiel viaj presaĵo [? tekston. ?] 565 00:25:04,830 --> 00:25:05,420 >> DAVID J Malan: Ĝuste. 566 00:25:05,420 --> 00:25:07,211 Memoru, kun niaj printf ekzemploj, kiam ni 567 00:25:07,211 --> 00:25:10,075 estis pasante por printf en enigo, maldekstre de tiu enigo kordoj 568 00:25:10,075 --> 00:25:12,950 kaj sur la dekstra de tiu enigo printempo, kompreneble, estis duobla citaĵo. 569 00:25:12,950 --> 00:25:16,270 Se via propra enigo havas duoblan citaĵo en la mezo de tiu, 570 00:25:16,270 --> 00:25:18,920 la komputilo povus potenciale get konfuzita, kiel al, 571 00:25:18,920 --> 00:25:20,760 faras tiun citilon apartenas en la mezo? 572 00:25:20,760 --> 00:25:22,150 Ĉu ĝi apartenas kun la maldekstra? 573 00:25:22,150 --> 00:25:23,566 Ĉu ĝi apartenas de la gxusta? 574 00:25:23,566 --> 00:25:26,780 Kaj do, se vi volas fari ĝin super klara, vi faras backslash citilon, 575 00:25:26,780 --> 00:25:30,480 tiel ke ĝi eskapis, por tiel diri, kaj ĝi ne conflated por io alia. 576 00:25:30,480 --> 00:25:34,400 Kaj estas kelkaj aliaj tie, backslash r, unuopaj citiloj, 0, 577 00:25:34,400 --> 00:25:36,510 ke ni vidu la tempo, ankaŭ. 578 00:25:36,510 --> 00:25:37,760 Kaj nun, kio pri funkcioj? 579 00:25:37,760 --> 00:25:41,630 >> Do agoj kiujn ni povas preni tiel longe en tiu lingvo, C, nu, ni vidis, 580 00:25:41,630 --> 00:25:44,320 printf, kompreneble, kaj ĉiuj de la aliaj sur la ekrano, 581 00:25:44,320 --> 00:25:47,140 tie, ke ni uzos por la Kompreneble la unuaj kelkaj semajnoj nur, 582 00:25:47,140 --> 00:25:48,485 venas kiam la CS50 biblioteko. 583 00:25:48,485 --> 00:25:51,850 Kaj ili faras ĝin multe pli facila, en C, por fakte akiri uzanto enigo. 584 00:25:51,850 --> 00:25:54,200 Ĝi rezultas ke en C, kaj sincere en kelkaj lingvoj, 585 00:25:54,200 --> 00:25:57,450 ĝi estas vera doloro en la kolo por fari ion simplan, kiel prompto la uzanto 586 00:25:57,450 --> 00:26:01,310 por klavaro, pro ties enigo. 587 00:26:01,310 --> 00:26:03,240 Do, tiuj funkcioj plifaciligi. 588 00:26:03,240 --> 00:26:05,472 >> Kaj ĝi ankaŭ havas eraran kontrolanta ĉie, 589 00:26:05,472 --> 00:26:07,180 tiel ke, kiam vi rememori merkrede, ni 590 00:26:07,180 --> 00:26:09,740 vidis la, reprovi, averton, kiam mi ne kunlaboris, 591 00:26:09,740 --> 00:26:11,700 kaj mi tajpis vorton, anstataŭ nombro? 592 00:26:11,700 --> 00:26:15,402 Ni jam faris la peza levanta frua sur certigi la uzanto kunlaboras. 593 00:26:15,402 --> 00:26:17,860 Sed tiuj estas nur trejnado radoj kiuj ni eventuale, 594 00:26:17,860 --> 00:26:19,640 kaj rapide, demetu. 595 00:26:19,640 --> 00:26:22,630 >> Do por recap, tiam, ni prenu rapidan rigardon, 596 00:26:22,630 --> 00:26:26,620 multe kiel ni faris kun Scratch, ĉe kelkaj kanonaj konstrukciojn en C. 597 00:26:26,620 --> 00:26:28,580 Tiu celas, varo de, esti ventego ĝiras, 598 00:26:28,580 --> 00:26:30,990 nur por ke vi havas referencon kaj ke vi vidis aferoj unue. 599 00:26:30,990 --> 00:26:34,100 Sed poste ni rigardu fakta kodigon uzi iuj de ĉi tiuj konstruelementoj. 600 00:26:34,100 --> 00:26:36,710 Tiel kiel en Scratch, kiam ni estis deklaroj ŝatas: 601 00:26:36,710 --> 00:26:41,570 diri aŭ, atendu, en C, ni havi funkcioj tiel, kiel printf. 602 00:26:41,570 --> 00:26:45,350 >> Se ni volas esprimi kondiĉo en C, estas simila, en spirito, 603 00:26:45,350 --> 00:26:47,840 al tiu enigmo flikaĵo similis tiun en Scratch. 604 00:26:47,840 --> 00:26:49,850 Sed anstataŭe, ni laŭvorte simple skribu, se. 605 00:26:49,850 --> 00:26:51,830 Kaj tiam, en krampoj, ni metu kondiĉon, 606 00:26:51,830 --> 00:26:54,807 kie tiu kondiĉo estas kion ni nomas, denove, bulea esprimo. 607 00:26:54,807 --> 00:26:56,390 Kaj denove, ĉi tiu estas speco de _pseudocode_. 608 00:26:56,390 --> 00:26:58,830 Kaj, fakte, la // estas komenton. 609 00:26:58,830 --> 00:27:00,550 Estas nur anglaj vortoj ol mi mem. 610 00:27:00,550 --> 00:27:03,000 Sed tio estas la ĝenerala strukturo de, se, kondiĉe. 611 00:27:03,000 --> 00:27:05,220 Sed ni vidos konkretan ekzemploj en nur momento. 612 00:27:05,220 --> 00:27:07,960 >> Se vi volas havi dudirekta forko en la vojo, 613 00:27:07,960 --> 00:27:11,740 multe kiel ni faris kun niaj volontuloj sur Merkredo, vi povas havi, alie se. 614 00:27:11,740 --> 00:27:16,020 Kaj se vi volas havi trian kaj finan kondiĉon, aŭ defaŭlta situacio, 615 00:27:16,020 --> 00:27:19,006 vi povas havi nur alia bloko, ekzistas. 616 00:27:19,006 --> 00:27:21,880 Kaj simile, kun buleaj esprimoj, vi povas, kaj, ilin kune. 617 00:27:21,880 --> 00:27:24,296 Kaj ni vidis merkrede, kiuj ĝi estas ne unu-simbolo, 618 00:27:24,296 --> 00:27:28,220 estas du, por malsupra-nivelaj kialoj ke ni eventuale vidi kaj ludi kun. 619 00:27:28,220 --> 00:27:30,410 Aŭ-ing aferojn kune estas 2 vertikalaj strioj. 620 00:27:30,410 --> 00:27:32,240 Sur usona klavaro, tiu Estas ĝenerale ŝlosilo 621 00:27:32,240 --> 00:27:35,730 kun la klavo Shift supre via Eniga klavo aŭ Reiri ŝlosilo. 622 00:27:35,730 --> 00:27:38,620 >> Tiam ekzistas tiuj aferoj ni uzos eble unufoje aŭ dufoje. 623 00:27:38,620 --> 00:27:42,570 Ili estas funkcie ekvivalenta al kion vi povas fari kun, se, alie se, 624 00:27:42,570 --> 00:27:44,950 alie se alie, konstrui, sed ili estas nomita ŝaltilo. 625 00:27:44,950 --> 00:27:48,020 Ili aspektos tre malsamaj, sed ni vidi en iuj de niaj dissendo kodo, 626 00:27:48,020 --> 00:27:51,890 por estonta problemo aro, plej verŝajne, ke ĝi estas kelkfoje nur pli bela 627 00:27:51,890 --> 00:27:54,060 maniero esprimi tuto faskon da kondiĉoj, 628 00:27:54,060 --> 00:27:57,590 sen devi multajn buklaj krampoj kaj multajn parentezoj kaj deŝovon. 629 00:27:57,590 --> 00:28:01,910 Sed donu al ni pli potenco ol ni havas jam. 630 00:28:01,910 --> 00:28:02,550 Kaj nun cikloj. 631 00:28:02,550 --> 00:28:05,020 Kaj ĉi tiu, ni povos rigardi ĉe iom pli malrapide. 632 00:28:05,020 --> 00:28:08,470 Sed tiam, ni ekuzas tiujn, speciale por tiuj jam konataj. 633 00:28:08,470 --> 00:28:13,830 Jen la kanona maniero, se nekredeble arcano vojo, skribi buklo en C. 634 00:28:13,830 --> 00:28:15,896 >> Nun buklo en Scratch estis bela simpla. 635 00:28:15,896 --> 00:28:17,020 Vi havas, por ĉiam, bloko. 636 00:28:17,020 --> 00:28:19,760 Vi havas, ripeto, bloko kun nur nombro vi devas tajpi en. 637 00:28:19,760 --> 00:28:22,220 Kaj kun la, por ciklo, vi povas implementan ambaŭ de tiuj ideoj, 638 00:28:22,220 --> 00:28:23,595 sed ĝi estas iom pli teknika. 639 00:28:23,595 --> 00:28:25,994 Sed sincere, ĝi estas ankaŭ relative simpla. 640 00:28:25,994 --> 00:28:28,160 Unufoje vi scias la ordon de operacioj, vi laŭlitere 641 00:28:28,160 --> 00:28:30,910 estas ĝuste tuj konekti valoroj kaj diri al la komputilo, kion fari. 642 00:28:30,910 --> 00:28:32,800 Do jen ekzemplo. 643 00:28:32,800 --> 00:28:38,040 Jen buklo kiu, tute simple, ĝi rakontas de unu nombro supren 644 00:28:38,040 --> 00:28:40,187 tra alia. 645 00:28:40,187 --> 00:28:42,020 Kaj kun nur rigardante ĉe ĝi, eĉ se vi havas 646 00:28:42,020 --> 00:28:44,660 neniun antaŭan sperton kun tiu lingvo, kiu nombro 647 00:28:44,660 --> 00:28:46,920 ĝi probable komenci kalkulon je? 648 00:28:46,920 --> 00:28:47,730 OK, 0. 649 00:28:47,730 --> 00:28:50,240 Kaj mi konjektas ke estas ĉar vi vidu ke ekzistas int kaj i, 650 00:28:50,240 --> 00:28:51,073 kiuj estas variablo. 651 00:28:51,073 --> 00:28:52,390 Oni pravalorizitaj al 0. 652 00:28:52,390 --> 00:28:55,670 >> Kaj tiam poste, ĝi aspektas kiel ni pasante printf, valoro. 653 00:28:55,670 --> 00:28:58,000 Kaj, fakte, mi faris iom tajperaro tie. 654 00:28:58,000 --> 00:28:59,850 Sed tio estas facile riparita. 655 00:28:59,850 --> 00:29:02,390 Mi aldonu en, i tie. 656 00:29:02,390 --> 00:29:06,150 Ni nun havas printf estaĵo pasis ke lokokupilo valoro. 657 00:29:06,150 --> 00:29:08,299 Kaj kio okazas al kalkuli tra? 658 00:29:08,299 --> 00:29:08,840 Publiko: 50. 659 00:29:08,840 --> 00:29:09,340 50. 660 00:29:09,340 --> 00:29:10,160 49. 661 00:29:10,160 --> 00:29:10,910 DAVID J Malan: 49. 662 00:29:10,910 --> 00:29:13,340 Do 50, unuavide, ŝajnas ĝusta. 663 00:29:13,340 --> 00:29:16,990 Sed tio, verŝajne, tuj estos nia kondiĉo ke ni tenas kontrolanta. 664 00:29:16,990 --> 00:29:21,740 Kaj ni tuj halti iam Mi ne plu estas malpli ol 50. 665 00:29:21,740 --> 00:29:24,920 Do tiu buklo, male, devus ekzekuti, tiel longe kiel i estas malpli ol 50. 666 00:29:24,920 --> 00:29:28,891 Sed tuj kiam ĝi fariĝas 50, aŭ 51, aŭ pli malbone, ĝi devus halti aŭtomate. 667 00:29:28,891 --> 00:29:29,390 Bone. 668 00:29:29,390 --> 00:29:31,200 >> Do kio vere okazas tie? 669 00:29:31,200 --> 00:29:33,160 Do tiu estas la ordo de operacioj por buklo. 670 00:29:33,160 --> 00:29:35,440 Unu, vi havas la tn inicialización. 671 00:29:35,440 --> 00:29:38,264 Tiu flava elstarigita chunk de kodo estas ekzekutita unua, 672 00:29:38,264 --> 00:29:40,930 kaj ĝi havas la efikon ke, po Merkredo, vi probable imagi. 673 00:29:40,930 --> 00:29:45,500 Ĝi kreas variablo nomis i kaj i tendencas en tiu variablo la valoron 0. 674 00:29:45,500 --> 00:29:47,560 Do i estas 0 ĉe tiu punkto en la rakonto. 675 00:29:47,560 --> 00:29:49,680 >> La sekva afero, kiun okazas en tiu konstrukcio, 676 00:29:49,680 --> 00:29:51,540 estas ke la kondiĉo gets kontrolis. 677 00:29:51,540 --> 00:29:54,325 Do mi kontroli tuj, estas mi malpli ol 50? 678 00:29:54,325 --> 00:29:57,700 Kaj kompreneble, la respondo cxar nun, verŝajne, jes. 679 00:29:57,700 --> 00:30:00,710 Jes, ĉar mi estas 0, kaj tio certe malpli ol 50. 680 00:30:00,710 --> 00:30:03,866 Tiam kio okazas, estas ke tiu linio de kodo gets ekzekutita. 681 00:30:03,866 --> 00:30:06,740 Kaj fakte, se ekzistas multoblaj linioj de kodo en tiuj buklaj krampoj, 682 00:30:06,740 --> 00:30:09,020 ili ĉiuj aplikiĝas unu post alia. 683 00:30:09,020 --> 00:30:11,450 >> Kaj en la efekto ĉi tie, estas ŝajne, presi 684 00:30:11,450 --> 00:30:15,365 la nombro i, kiu tuj esti 0, kaj tiam 1, kaj tiam 2. 685 00:30:15,365 --> 00:30:15,865 Sed kial? 686 00:30:15,865 --> 00:30:17,410 Kial ĝi akiras incremented? 687 00:30:17,410 --> 00:30:20,680 Nu, la kvara afero okazas estas kiu ĉi sintakso 688 00:30:20,680 --> 00:30:22,610 gets ekzekutita post la punktokomo. 689 00:30:22,610 --> 00:30:27,506 Mi ++ estas pli rapida maniero por diri; preni la valoron de i, kaj aldoni 1 al ĝi; 690 00:30:27,506 --> 00:30:30,380 kaj tiam la venontan fojon ĉirkaŭe, aldoni 1 al ĝi; kaj la proksima fojo ĉirkaŭe, 691 00:30:30,380 --> 00:30:31,330 aldonu 1 al ĝi. 692 00:30:31,330 --> 00:30:33,640 >> Do se ni dauxre iros, kio okazos 693 00:30:33,640 --> 00:30:35,890 sekva estas Mi ne tuj pravalorizi i iam denove. 694 00:30:35,890 --> 00:30:38,290 Se mi observas la inicialización i al 0, ĉi ekzemplo 695 00:30:38,290 --> 00:30:41,110 neniam finos ĉar Mi estus senmoviĝita ĉe 0. 696 00:30:41,110 --> 00:30:43,870 Sed kio okazos estas ke la kondiĉo estos kontrolata, 697 00:30:43,870 --> 00:30:54,280 la linio de kodo estos get ekzekutita, la i estos incremented, 698 00:30:54,280 --> 00:30:56,970 kondiĉo estos kontrolata, kodo estos get ekzekutita. 699 00:30:56,970 --> 00:30:59,790 Kaj gxi havis biciklado denove, kaj denove, kaj denove, 700 00:30:59,790 --> 00:31:03,340 ĝis i ++ konkludas valoro de 50. 701 00:31:03,340 --> 00:31:05,870 >> La kondiĉo tiam diras, estas 50 malpli ol 50? 702 00:31:05,870 --> 00:31:09,360 La respondo, kompreneble, estas ne, kaj Kaj la dauxro kodo detenas ekzekuti. 703 00:31:09,360 --> 00:31:13,020 Kaj se vi havas pli kodo sur la ekrano malsupre, jen kio okazas poste. 704 00:31:13,020 --> 00:31:17,530 Ĝi krevas el tiuj buklaj krampoj kaj daŭre presi pli poste. 705 00:31:17,530 --> 00:31:20,470 >> Do ŝerco nun, el Foxtrot, ke vi eble nun komprenas. 706 00:31:20,470 --> 00:31:30,810 707 00:31:30,810 --> 00:31:31,560 Ĉiam amuzaj. 708 00:31:31,560 --> 00:31:34,110 Estas kiel la sonoj ia percolate, 709 00:31:34,110 --> 00:31:38,370 kaj tiam vi rimarkas vi malakceptu esti priridas humuro ŝatas tion. 710 00:31:38,370 --> 00:31:41,160 Sed estas iuj takeaway tie, pedagogie, tro. 711 00:31:41,160 --> 00:31:43,577 Do rezultas ke mi estas mankanta peco de sintakso, 712 00:31:43,577 --> 00:31:45,410 aŭ Foxtrot la perdiĝanta peco de sintakso tie. 713 00:31:45,410 --> 00:31:48,076 Kio mankas, ke ni havis en ĉiu alia ekzemplo, ĝis nun? 714 00:31:48,076 --> 00:31:51,599 715 00:31:51,599 --> 00:31:53,390 Reveno, estas tie, do tio estas io alia, 716 00:31:53,390 --> 00:31:54,440 ke ni revenos al antaŭ longe. 717 00:31:54,440 --> 00:31:55,398 Kio mankas, kvankam? 718 00:31:55,398 --> 00:31:55,908 Yeah. 719 00:31:55,908 --> 00:31:58,150 >> Spektantaro membro: La inicialización de [inaudible]. 720 00:31:58,150 --> 00:31:58,470 >> DAVID J Malan: Bone. 721 00:31:58,470 --> 00:31:58,980 Do jes. 722 00:31:58,980 --> 00:32:03,210 Do fakte, ĉi is-- Nu, kaj grafo inicializa 723 00:32:03,210 --> 00:32:05,470 supren supre aux prefere, deklarita super. 724 00:32:05,470 --> 00:32:06,960 Do tiu estas alia maniero fari ĝin. 725 00:32:06,960 --> 00:32:08,685 Sed ne en unu linio estas valida tamen. 726 00:32:08,685 --> 00:32:09,310 Kion pri ĉi tie? 727 00:32:09,310 --> 00:32:10,196 >> Spektantaro membro: Ĉu la krispa krampoj? 728 00:32:10,196 --> 00:32:10,640 >> DAVID J Malan: Yeah. 729 00:32:10,640 --> 00:32:12,080 Do la krispa krampoj mankas. 730 00:32:12,080 --> 00:32:15,495 Sed tiu kodo, mi volas diri, al ilia kredito, Estas vere, sintakse valida. 731 00:32:15,495 --> 00:32:17,610 Rezultas, vi ne bezonas la krispa krampoj 732 00:32:17,610 --> 00:32:21,691 se vi nur havas unu linion de kodo ke vi volas ekzekuti ene de la buklo. 733 00:32:21,691 --> 00:32:24,190 Nun ni ĉiam, en klaso kaj en ĉiuj niaj dissendo kodo, 734 00:32:24,190 --> 00:32:26,730 inkluzivas la krispa krampoj ĉiuokaze, simple por klareco, kalkaj. 735 00:32:26,730 --> 00:32:29,010 Sed rimarkas ke en lernolibroj Tio ekzemploj, 736 00:32:29,010 --> 00:32:31,300 Vi povas tre bone vidi krispa krampoj mankas iam. 737 00:32:31,300 --> 00:32:34,850 Kaj tio estas bone, se kion vi esti dentado kaj intencita 738 00:32:34,850 --> 00:32:38,650 estas nur unu linion de kodo, kaj ne multoblaj linioj de kodo, potenciale. 739 00:32:38,650 --> 00:32:39,150 Bone. 740 00:32:39,150 --> 00:32:44,500 Do rilatajn al la temo de imprecision, estas temo de overflow, 741 00:32:44,500 --> 00:32:48,560 en la senco ke, simile, ĉu entjeroj havas limojn al ili 742 00:32:48,560 --> 00:32:49,970 samkiel glitpunktaj valoroj? 743 00:32:49,970 --> 00:32:53,120 En la mondo glitpunkta valoroj, ni povas esti nur tiel preciza, 744 00:32:53,120 --> 00:32:55,710 post kiu, kelkfoje malbonaj aferoj povas okazi, 745 00:32:55,710 --> 00:32:57,760 kaj niaj programoj povas esti kalesxon kaj eraro. 746 00:32:57,760 --> 00:33:00,050 Nun eĉ kun entjeroj, vi povas kolizii problemojn. 747 00:33:00,050 --> 00:33:03,820 Nun entjero ne havas dekuma punkto aŭ nombroj post tio. 748 00:33:03,820 --> 00:33:07,130 Estas nur natura nombro, tipe. 749 00:33:07,130 --> 00:33:09,430 Do kio povus iri malbone kun int? 750 00:33:09,430 --> 00:33:12,210 Se mi uzas int al Grafo, kio povus iri malbone? 751 00:33:12,210 --> 00:33:13,230 Ŝajnas multe pli simpla. 752 00:33:13,230 --> 00:33:13,873 Yeah. 753 00:33:13,873 --> 00:33:16,240 >> Spektantaro membro: Se la numeron ricevas [inaudible] 754 00:33:16,240 --> 00:33:17,073 >> DAVID J Malan: Yeah. 755 00:33:17,073 --> 00:33:20,820 Kio se vi kalkulas tiel alta, ke vi ne povas esprimi, ke vere granda nombro. 756 00:33:20,820 --> 00:33:21,320 Dekstra? 757 00:33:21,320 --> 00:33:23,910 En iu punkto, vi tuj superi la limojn 758 00:33:23,910 --> 00:33:27,077 de 32-bita valoro aŭ 64-bita valoro. 759 00:33:27,077 --> 00:33:29,410 Nun denove mi ne certas kiom prononci 64-bita valoro, 760 00:33:29,410 --> 00:33:32,230 sed mi scias kun 32-bita entjero, la plej granda valoro ne povas esti, 761 00:33:32,230 --> 00:33:35,490 se ĝi estas nur pozitivaj valoroj, estas proksimume 4 miliardoj. 762 00:33:35,490 --> 00:33:39,000 Do se mi provas kalkuli 5 Miliardo, io tuj okazos. 763 00:33:39,000 --> 00:33:41,050 Sed ni vidu kio, fakte, povas okazi. 764 00:33:41,050 --> 00:33:44,570 En la mondo de entjero superfluaĵo, kie vi, iasence, 765 00:33:44,570 --> 00:33:48,270 inundos la kapablo de entjero, kio povus okazi? 766 00:33:48,270 --> 00:33:51,190 >> Do jen duuma nombro, ĝi estas retroturniĝo al 0. 767 00:33:51,190 --> 00:33:54,630 Estas ĉio 1-a, kaj la anstataŭiloj tie, estas potencoj de 2, 768 00:33:54,630 --> 00:33:55,980 do tiu estas duuma. 769 00:33:55,980 --> 00:33:59,416 Do tiuj estas 8, 1 bitoj sur la ekrano. 770 00:33:59,416 --> 00:34:01,290 Kaj se vi memoras aŭ vi rapide faros la math, 771 00:34:01,290 --> 00:34:06,074 kio valoro estas reprezentitaj tie kun tiuj ok 1 bitoj? 772 00:34:06,074 --> 00:34:06,950 255. 773 00:34:06,950 --> 00:34:09,260 Kaj eĉ se vi ne estis tute certa de la matematiko, vi povus fari ĝin. 774 00:34:09,260 --> 00:34:10,550 Aŭ vi povus simple speco de racio tra ĝi, 775 00:34:10,550 --> 00:34:12,633 atendu momenton, se mi reprezentante 8 bita valoro, 776 00:34:12,633 --> 00:34:17,750 kaj mi havas 256 eblaj valoroj, sed la unua de kiuj estas 0, 777 00:34:17,750 --> 00:34:19,909 Mi nur scias ke la grandaj tuj estos 255, 778 00:34:19,909 --> 00:34:21,510 kaj tio estas kio ĉi tiu povus esti. 779 00:34:21,510 --> 00:34:26,060 >> Do supozu mi provas aldoni 1 al tiu valoro. 780 00:34:26,060 --> 00:34:28,750 Kion vi farus en lernojaro lernejo aldoninte 1, kaj ĝi 781 00:34:28,750 --> 00:34:31,139 ne vere taŭgas ĉar vi devos porti la 1? 782 00:34:31,139 --> 00:34:34,380 Kio estas tiu nombro iranta fariĝi kiam vi aldonas 1? 783 00:34:34,380 --> 00:34:37,030 Ĝi okazos al 0. 784 00:34:37,030 --> 00:34:37,530 Dekstra? 785 00:34:37,530 --> 00:34:41,139 Ĉar se vi havus pli bits-- kaj mi provu, ia, tajpu ĝin here-- 786 00:34:41,139 --> 00:34:44,710 se ni havis pli bitoj, kion ni povus fari tie estas aldoni la 1, 787 00:34:44,710 --> 00:34:47,370 kaj tiam ni akirus ĉi. 788 00:34:47,370 --> 00:34:48,739 Whoops. 789 00:34:48,739 --> 00:34:52,250 Ni havus 1 bito tuta vojo super tie. 790 00:34:52,250 --> 00:34:55,530 >> Sed se tiu estas finia valoro, ĝi estas nur 8 bitoj, 791 00:34:55,530 --> 00:34:57,480 kaj tio estas antaŭdestinita per la komputilo, 792 00:34:57,480 --> 00:34:59,370 ke 1 estas efektive ne ekzistas. 793 00:34:59,370 --> 00:35:00,980 Ĝi nur ia forfalas klifo. 794 00:35:00,980 --> 00:35:05,480 Kaj do se vi aldonas 1 al 255, kio valoro vi ŝajne ricevis? 795 00:35:05,480 --> 00:35:06,180 0. 796 00:35:06,180 --> 00:35:09,700 Kaj tiel nombroj hazarde, kaj eble senintence, 797 00:35:09,700 --> 00:35:12,040 finos envolvado ĉirkaŭ ŝatas tion. 798 00:35:12,040 --> 00:35:14,079 Do kio povas esti la implico de tio? 799 00:35:14,079 --> 00:35:15,620 Nu, ekzistas kelkaj malsamaj aĵoj. 800 00:35:15,620 --> 00:35:18,751 Do unu, ĝi finas serĉante kiel 0, senintence, 801 00:35:18,751 --> 00:35:20,750 sed vi povas ia vidi, eĉ en la reala mondo, 802 00:35:20,750 --> 00:35:23,416 por bone aŭ por malbone, demonstracioj de ĉi tiu ideo de limigo. 803 00:35:23,416 --> 00:35:26,630 Ekzemple, neniu el vi kiuj iam ludis Lego Star Wars, 804 00:35:26,630 --> 00:35:28,880 ĉu iu hazarde scias la maksimuma nombro da moneroj 805 00:35:28,880 --> 00:35:32,032 vi povas kolekti en Lego Star Wars? 806 00:35:32,032 --> 00:35:35,640 Prenu diveno bazita sur hodiaŭa gvida demandojn. 807 00:35:35,640 --> 00:35:39,140 Ĝi estas pli granda ol 256 aŭ 255. 808 00:35:39,140 --> 00:35:40,330 Ĝi estas 4 miliardoj. 809 00:35:40,330 --> 00:35:42,080 Do rezultas, kaj ekzistas iuj people-- 810 00:35:42,080 --> 00:35:46,080 iuj googling konfirmis lasta night-- akiris 4 miliardoj ormonerojn, 811 00:35:46,080 --> 00:35:47,730 aŭ whatnot, en Lego Star Wars. 812 00:35:47,730 --> 00:35:49,860 Kvankam ŝajne, ekzistas maniero trompi la ludo, 813 00:35:49,860 --> 00:35:53,222 ekzistas cimo aŭ trajto, kiu ebligas nur accrue partoj kaj multaj punktoj. 814 00:35:53,222 --> 00:35:54,930 Sed la plej granda ebla valoro, laŭ 815 00:35:54,930 --> 00:35:58,360 al tiu ekrankopio de iu mi trovis rete, estas ja, 4 miliardoj. 816 00:35:58,360 --> 00:35:59,240 >> Nun kial estas tio? 817 00:35:59,240 --> 00:36:03,040 Estas precize 4 miliardoj, probable ĉar iu decidis, 818 00:36:03,040 --> 00:36:05,500 kiu skribis ĉi ludo, ke ili povus fari 4 miliardoj, 819 00:36:05,500 --> 00:36:07,340 ion, ion, ion, kiel la valoro mi arangxis 820 00:36:07,340 --> 00:36:10,256 kun la kalkulilo pli frue, sed ĝi estas nur iom pli pura por homoj 821 00:36:10,256 --> 00:36:12,610 diri la maksimuma nombro de coins-- aŭ enkrustajxoj, 822 00:36:12,610 --> 00:36:14,860 kiel ili nomas them-- ke vi povas kolekti estas 4 miliardoj. 823 00:36:14,860 --> 00:36:16,290 Kaj do, kial estas tio? 824 00:36:16,290 --> 00:36:20,310 Kiom estas la LEGO ludo efektiviganta la vendotablo 825 00:36:20,310 --> 00:36:23,420 kiu estas konservanta trako de la numeron de moneroj vi havas? 826 00:36:23,420 --> 00:36:24,266 Ili uzas kio? 827 00:36:24,266 --> 00:36:26,390 Spektantaro membro: Ĉesas kalkulante post 4 miliardoj. 828 00:36:26,390 --> 00:36:27,720 DAVID J Malan: Ĉesas kalkulante post 4 miliardoj, 829 00:36:27,720 --> 00:36:29,525 kio signifas ke vi povas konkludi, kiel programisto, 830 00:36:29,525 --> 00:36:31,960 ke ili estas probable uzante 32 bita entjero. 831 00:36:31,960 --> 00:36:35,380 Kiel la programisto laŭvorte nur tajpita, int, en lia aŭ ŝia kodo, 832 00:36:35,380 --> 00:36:39,620 kaj tio estas la tipo de variablo kiu ili uzas por stoki ies kodon. 833 00:36:39,620 --> 00:36:42,230 Do ekzistas aliaj demonstracioj de tiuj specoj de limoj. 834 00:36:42,230 --> 00:36:45,063 >> Do mi ne ludis tiun game-- kaj mi legis sur la historio 835 00:36:45,063 --> 00:36:48,470 konfirmi kiel much-- sed en la originala versio de Civilizacio, kie 836 00:36:48,470 --> 00:36:53,240 vi ŝajne interagas kun ĉiu aliaj kaj povas militi aŭ havi pacon, 837 00:36:53,240 --> 00:36:56,590 Gandhi estis supozita esti unu el la plej paca karakteroj, kiel mi 838 00:36:56,590 --> 00:36:59,280 kompreni, en la unua versio de Civilizacio. 839 00:36:59,280 --> 00:37:03,250 Kaj fakte, en skalo de 1 al 10, lia agresividad estis nur 1. 840 00:37:03,250 --> 00:37:05,620 Do iam tiel milde agresema, ŝajne. 841 00:37:05,620 --> 00:37:11,590 >> Sed en iu momento, vi povas ŝajne instali demokration en via geografio. 842 00:37:11,590 --> 00:37:14,900 Kaj se vi instalas demokratio en via versio de la ludo, 843 00:37:14,900 --> 00:37:17,320 tiam via agreso nivelo iras malsupren. 844 00:37:17,320 --> 00:37:18,460 Ĝi estas bona afero. 845 00:37:18,460 --> 00:37:20,890 Homoj estas pli trankvila ŝajne, en tiu situacio. 846 00:37:20,890 --> 00:37:23,190 Sed ŝajne, iu faris ne havas, se, kondiĉe 847 00:37:23,190 --> 00:37:24,780 en la originala versio de la kodo. 848 00:37:24,780 --> 00:37:30,650 >> Do Gandhi agreso nivelo iradis de pozitivaj 1, minus 2, al negativa 1, 849 00:37:30,650 --> 00:37:33,840 sed la ludo ne kompreni negativaj nombroj. 850 00:37:33,840 --> 00:37:38,680 Do kio okazis estis Gandhi agreso nivelo eliris el la 1 al 0, al negativa 1, 851 00:37:38,680 --> 00:37:40,900 kiu havis la efikon de envolvado ĉirkaŭ esti 852 00:37:40,900 --> 00:37:44,690 la plej agresema karaktero en la ludo, ĉe valoro de 255, 853 00:37:44,690 --> 00:37:46,630 sur skalo de 1 ĝis 10. 854 00:37:46,630 --> 00:37:49,887 Kaj de tiam, tie jam pli personigoj de ĉi tiu ludo, 855 00:37:49,887 --> 00:37:51,720 kaj ili tenis ŝin kiel ia Paska ovo, 856 00:37:51,720 --> 00:37:53,870 ke Gandhi estas ŝajne tiel terure agresema. 857 00:37:53,870 --> 00:37:56,740 Sed estis la rezulto de tre simpla programado eraro 858 00:37:56,740 --> 00:37:58,630 Kaj en tiu frua versio de la ludo. 859 00:37:58,630 --> 00:38:02,860 >> Nun pli disturbingly, pli ĵus, la Boeing 787 860 00:38:02,860 --> 00:38:05,720 estis dokumentitaj kiel havante cimo, ne tia aparato 861 00:38:05,720 --> 00:38:07,340 vi aparte volas havi cimon. 862 00:38:07,340 --> 00:38:10,130 Kaj la simptomoj, kiujn mi legos tie, el artikolo rete, 863 00:38:10,130 --> 00:38:13,840 estis tiu, modelo 787 aviadilo kiu estis funkciigita ade 864 00:38:13,840 --> 00:38:18,030 por 248 tagoj povas perdi ĉiuj alterna fluo, alterna, 865 00:38:18,030 --> 00:38:20,850 elektra potenco, pro la generatoro kontrolo unuoj, 866 00:38:20,850 --> 00:38:23,330 GCUs, samtempe iro en Fail-sekura reĝimo. 867 00:38:23,330 --> 00:38:26,790 Do tiu estis averto eldonis kiam tiu problemo estis malkovrita. 868 00:38:26,790 --> 00:38:28,750 Tiu kondiĉo estas kaŭzita softvaron vendotablo, 869 00:38:28,750 --> 00:38:32,230 interna al la GCUs, do entjero aŭ variablon, 870 00:38:32,230 --> 00:38:36,850 ke volo superabundas post 248 tagoj de kontinua potenco. 871 00:38:36,850 --> 00:38:40,350 Boeing estas en la procezo de disvolvante GCU programaro upgrade ke 872 00:38:40,350 --> 00:38:42,350 estos remediar la nesekura kondiĉo. 873 00:38:42,350 --> 00:38:44,226 >> Tiel kiel la misilo scenaro, kien 874 00:38:44,226 --> 00:38:46,850 ili havis iun specon de variablo kiu rakonti, kaj kalkulante, 875 00:38:46,850 --> 00:38:50,720 kaj rakontante, sed laŭgrade disversxigxinta la limoj de lia kapablo, 876 00:38:50,720 --> 00:38:54,890 Simile faris la malbenita aviadilo havas variablo superfluaĵo 877 00:38:54,890 --> 00:38:56,410 post sufiĉa tempo de kurado. 878 00:38:56,410 --> 00:38:59,240 Kaj tial la lang-en-vanga maniero labori ĉirkaŭ tiu temo 879 00:38:59,240 --> 00:39:04,400 Estas vere, reboot, via ebeno ĉiun 247 tagoj, tiel ke la memoro gets viŝis 880 00:39:04,400 --> 00:39:06,100 kaj la variablo superas al 0. 881 00:39:06,100 --> 00:39:09,410 Sed realigi, tio estas tre granda personigo de programaro, 882 00:39:09,410 --> 00:39:14,070 sed precipe kiel ni aŭdas pri Apple operaciumoj iranta en aŭtoj, 883 00:39:14,070 --> 00:39:18,030 kaj mem-veturanta aŭtoj de Google, kaj ajn da enkarniĝoj de programaro 884 00:39:18,030 --> 00:39:21,000 en nia ĉiutaga vivo, televidoj kaj horloĝoj, kaj pli, 885 00:39:21,000 --> 00:39:24,950 realigi ĉirkaŭitajn de programaro, Ĉiuj de kiu estas skribita de ni homoj. 886 00:39:24,950 --> 00:39:28,150 >> Kaj kiel ni ĉiuj baldaŭ malkovros, ĝi estas tre facila kaj tre tipa 887 00:39:28,150 --> 00:39:30,250 fari erarojn kiam skribante softvaron. 888 00:39:30,250 --> 00:39:32,745 Kaj se vi ne kaptas ilin, kelkaj malbonaj aferoj povas okazi. 889 00:39:32,745 --> 00:39:35,400 Nun kelkfoje, iuj amuza aferoj povas okazi, 890 00:39:35,400 --> 00:39:38,280 aŭ almenaŭ foje ni scii atendi iuj malboneco. 891 00:39:38,280 --> 00:39:41,550 Do 0 dividitaj per 0, de grado lernejo, estas ĝenerale malbona afero. 892 00:39:41,550 --> 00:39:43,050 Ĝi estas nedefinita. 893 00:39:43,050 --> 00:39:46,440 Kaj ĝi rezultas fjordon kaj vidu se miaj mic povas elekti ĉi up-- ke Apple 894 00:39:46,440 --> 00:39:47,790 havis iun amuzon kun tiu ĵus. 895 00:39:47,790 --> 00:39:48,850 Do mi havas iPhone tie. 896 00:39:48,850 --> 00:39:54,160 Mi tuj parolos al Siri kaj petu ŝian doni al mi la respondon al 0 dividitaj per 0. 897 00:39:54,160 --> 00:39:55,850 Kio 0 dividitaj per 0? 898 00:39:55,850 --> 00:39:59,350 899 00:39:59,350 --> 00:40:02,230 >> Siri: Imagu ke vi havas 0 kuketojn, kaj vi fendi ilin pare 900 00:40:02,230 --> 00:40:03,540 inter 0 amikoj. 901 00:40:03,540 --> 00:40:05,810 Kiom da kuketoj does ĉiu persono ricevas? 902 00:40:05,810 --> 00:40:06,350 Vidu? 903 00:40:06,350 --> 00:40:07,660 Ĝi ne havas sencon. 904 00:40:07,660 --> 00:40:10,540 Kaj Cookie Monster estas malĝoja ke estas neniuj kuketojn. 905 00:40:10,540 --> 00:40:13,987 Kaj vi estas malĝoja ke vi ne havas amikojn. 906 00:40:13,987 --> 00:40:15,570 DAVID J Malan: Estas speco de malnormala. 907 00:40:15,570 --> 00:40:17,550 Do jen kion ĵus diris tie. 908 00:40:17,550 --> 00:40:21,380 Ĝi estas nedeterminita, ĝi ne estas difinita, kaj efektive, multaj programlingvoj 909 00:40:21,380 --> 00:40:24,950 aŭ, vere, kompililoj volo detekti kiam vi, en programo, 910 00:40:24,950 --> 00:40:27,050 provu dividi 0 per 0. 911 00:40:27,050 --> 00:40:29,830 Pli amuze ol ĉi tamen, estas kiu ŝajne, Cookie Monster 912 00:40:29,830 --> 00:40:31,270 estas sur Pepi tiuj tagoj. 913 00:40:31,270 --> 00:40:37,610 Kaj li respondis al tiu, kun tiu, kiu estas absolute adorable. 914 00:40:37,610 --> 00:40:40,110 Sed ni prenu rapidan rigardon al kelkaj aliaj konstruoj, 915 00:40:40,110 --> 00:40:43,459 kaj surmetu iom el tiu kodo por uzi, en bonaj manieroj. 916 00:40:43,459 --> 00:40:45,250 Do rezultas, krom por bukloj, ekzistas 917 00:40:45,250 --> 00:40:49,174 iu nomita dum buklo, ke aspektas malsamaj kaj estas implementado 918 00:40:49,174 --> 00:40:51,590 iom differently-- kaj ni eventuale vidi examples-- 919 00:40:51,590 --> 00:40:53,500 sed iusence, ĝi estas simpla ĉar ĝi 920 00:40:53,500 --> 00:40:56,670 ne permesas vin al pravalorizi kaj ĝisdatigi ene la limoj de la buklo. 921 00:40:56,670 --> 00:40:57,794 Vi povas ankoraŭ efektivigi ĝin. 922 00:40:57,794 --> 00:41:01,219 Do vi povas fari la ĝustan saman aferoj kun dum ciklo, kiel kun por ciklo, 923 00:41:01,219 --> 00:41:03,260 sed via sintakso, ultimately-- kiel ni eventuale 924 00:41:03,260 --> 00:41:04,551 Konsideru tuj estos malsama. 925 00:41:04,551 --> 00:41:07,450 Ekzistas eĉ fari dum buklo, kiu estas fakte iom malsama, 926 00:41:07,450 --> 00:41:09,640 en tiu dum kiu por buklo kaj dum buklo ĉiam 927 00:41:09,640 --> 00:41:13,005 kontroli lian kondiĉon unua, se vi legu tion supre sube, 928 00:41:13,005 --> 00:41:16,440 Ĉio aspektas kiel ĝi tuj kontrolu ĝia kondiĉo lasta ĉar ĝi estas 929 00:41:16,440 --> 00:41:17,910 vere la lasta linio de kodo. 930 00:41:17,910 --> 00:41:20,580 Kaj efektive, ke tuj estos utila en iuj programoj kiuj ni skribas, 931 00:41:20,580 --> 00:41:23,746 se vi volas simple blinde fari ion kaj eventuale kontroli la kondiĉo. 932 00:41:23,746 --> 00:41:25,205 Tio ne nepre estas malbona afero. 933 00:41:25,205 --> 00:41:27,912 Se ni volas variabloj, ni povas fari ĝin en paro de malsamaj manieroj. 934 00:41:27,912 --> 00:41:30,290 Kaj ni vidis en la Foxtrot karikaturo, unu maniero fari ĝin, 935 00:41:30,290 --> 00:41:33,400 kie vi deklari vian variablon, kiel int counter punktokomo, 936 00:41:33,400 --> 00:41:36,570 kaj tiam later-- eble la venontan linio, eble 10 linioj later-- 937 00:41:36,570 --> 00:41:37,800 vi fakte pravalorizi ĝin. 938 00:41:37,800 --> 00:41:42,230 Do tiuj 2 linioj de kodo deklari variablon de tipo int 939 00:41:42,230 --> 00:41:44,930 kaj nomas ĝin vendotablo, do ĝi donas min sufiĉe bitoj teni int. 940 00:41:44,930 --> 00:41:48,230 Kaj tiam poste, ĝi metas la valoro 0 en tiu variablo. 941 00:41:48,230 --> 00:41:51,250 Ĝi disponas la 0-aj kaj 1-oj en mastro, ke ni scias el pasintsemajne, 942 00:41:51,250 --> 00:41:53,260 reprezentas la numeron ni konas 0. 943 00:41:53,260 --> 00:41:56,920 Aŭ sincere, vi povas fari tion multe pli koncize, simple ŝatas tion. 944 00:41:56,920 --> 00:41:59,390 >> Nun ni havas ankaŭ la kapablo nomi funkcioj. 945 00:41:59,390 --> 00:42:03,070 Kaj fakte, ĉi tie estas 2 linio programo, aŭ ekstrakto gxiajn 946 00:42:03,070 --> 00:42:06,157 kiu nin permesas reale skribi iun kodon kiu 947 00:42:06,157 --> 00:42:08,990 ricevas cxeno el la user-- multe kiel nia volontulo momenton ago-- 948 00:42:08,990 --> 00:42:11,320 stokante la rezulton en ŝanĝiĝema nomita nomo, 949 00:42:11,320 --> 00:42:15,470 kaj then-- multe kiel kun nia volontulo kun printf-- presaĵoj el tiuj valoroj 950 00:42:15,470 --> 00:42:19,180 per pasante en du argumentoj, la kordo, sekvita de la variablo 951 00:42:19,180 --> 00:42:20,781 nomita, nomo, mem. 952 00:42:20,781 --> 00:42:23,155 Do ni rigardu, antaŭ ni revenos al Mario tie, 953 00:42:23,155 --> 00:42:26,010 ĉe kelkaj nun, ekzemploj de tio. 954 00:42:26,010 --> 00:42:30,537 >> Mi tuj iros antaŭen kaj malfermi ĝis, ni diru, funkcio-0.c. 955 00:42:30,537 --> 00:42:33,120 Kaj kiel ĉiam, tiu kodo estas havebla sur la kurson de afiŝinto, 956 00:42:33,120 --> 00:42:35,660 do vi povas ludi kune ĉe hejmo kaj rigardu ĝin poste. 957 00:42:35,660 --> 00:42:40,400 Sed jen la programo en ĝi estas esenco, de linio 17 al 22. 958 00:42:40,400 --> 00:42:43,270 La ĉefa programo estas kie la programo estas ĉiam tuj komenci. 959 00:42:43,270 --> 00:42:46,980 Tiu programo, ŝajne, tuj presi vian nomon, dupunkto. 960 00:42:46,980 --> 00:42:50,320 Ĝi estas tiam tuj nomas GetString, same kiel ni faris kun niaj volontuloj. 961 00:42:50,320 --> 00:42:53,365 Kaj tiam, tiu estas interesa, ĝi tuj nomas PrintName. 962 00:42:53,365 --> 00:42:56,490 Rezultas, ĉiuj ĉi tempo, ŝajnas esti funkcio nomita PrintName. 963 00:42:56,490 --> 00:42:57,614 Kiu presas ies nomon. 964 00:42:57,614 --> 00:43:01,210 Ni ne bezonas uzi printf el pasintaj tempoj, ekzistas PrintName. 965 00:43:01,210 --> 00:43:03,500 >> Sed tio estas iluzia ĉar PrintName ne 966 00:43:03,500 --> 00:43:06,760 venas kun C. popolo nenion elpensi ĝin iuj 40 aŭ 50 jaroj, 967 00:43:06,760 --> 00:43:07,990 Mi faris, anstataŭe. 968 00:43:07,990 --> 00:43:10,330 Kaj fakte, se mi rulumu malsupren plui, avizo 969 00:43:10,330 --> 00:43:14,200 kiel mi povas skribi mian propran funkcioj en C. ni eventuale 970 00:43:14,200 --> 00:43:16,319 ekspliki kial ni tenas diranta, malplenon, en kelkaj lokoj, 971 00:43:16,319 --> 00:43:18,110 Sed por hodiaŭ, ni nur rigardas la nomo. 972 00:43:18,110 --> 00:43:20,905 >> On line 24, se vi volas krei vian propran funkcion, 973 00:43:20,905 --> 00:43:22,780 vi laŭvorte skribi la nomo de la funkcio. 974 00:43:22,780 --> 00:43:24,340 Mi elektis PrintName. 975 00:43:24,340 --> 00:43:26,159 En krampoj, vi tiam specifi kion specoj 976 00:43:26,159 --> 00:43:28,450 de enigoj, kaj kiom da vi volas tiun funkcion por preni. 977 00:43:28,450 --> 00:43:31,906 En tiu kazo, mi volas preni 1 variablo nomita, nomo, 978 00:43:31,906 --> 00:43:34,030 kaj ĝi tuj estu tipo, kordoj, tiel estas tuj 979 00:43:34,030 --> 00:43:35,780 esti iu vico de karakteroj. 980 00:43:35,780 --> 00:43:39,170 Kaj tiam, tiu program-- multe kiel en Scratch, 981 00:43:39,170 --> 00:43:42,590 vi povas havi kutimon enigmo pieces-- tuj havos ĉi kutimo konduto. 982 00:43:42,590 --> 00:43:46,760 Ĝi tuj nomas printf pasante en, saluton, lokokupilo, 983 00:43:46,760 --> 00:43:49,110 kaj tiam tuj ŝtopi en kio ajn la uzanto nomita. 984 00:43:49,110 --> 00:43:51,450 >> Do tiu estas ekzemplo de kio komputila sciencisto 985 00:43:51,450 --> 00:43:55,090 alvoko abstraktado aŭ funkcia malkomponaĵo, kiu estas nur 986 00:43:55,090 --> 00:43:58,110 fancy manierojn saying-- Ĉu se vi ŝatas tiun altan nivelon ideo, 987 00:43:58,110 --> 00:44:01,569 kiel mi volas funcionalidad kiu presas ies nomon, absolute vin 988 00:44:01,569 --> 00:44:04,360 povas laŭvorte skribi printf kaj poste En la argumentoj vi volas, 989 00:44:04,360 --> 00:44:07,340 kaj la programo funkcios, kiel ĝi havas ekde merkredo. 990 00:44:07,340 --> 00:44:10,510 Sed vi povas komenci al abstrakta for la nocio de presado nomon. 991 00:44:10,510 --> 00:44:13,270 Vi povas doni al ĝi nomon, kiel PrintName kaj ĉi 992 00:44:13,270 --> 00:44:15,280 estas tiu ideo de layering de semajno 0. 993 00:44:15,280 --> 00:44:19,910 >> Nun, mi kaj vi ne devas scii aŭ zorgas kiom PrintName estas implementado. 994 00:44:19,910 --> 00:44:22,470 Jes uzas printf, eble ne, kiu scias kion uzas? 995 00:44:22,470 --> 00:44:23,410 Kiu zorgas? 996 00:44:23,410 --> 00:44:26,034 Nun mi parolas ĉi tien, anstataŭ malsupren tie. 997 00:44:26,034 --> 00:44:28,700 Kaj efektive, kiel niaj programoj akiri pli progresintaj kaj kompleksaj, 998 00:44:28,700 --> 00:44:32,550 ni tuj daŭre prenante por donita ke malalta nivelo enigmo pecoj ekzistas. 999 00:44:32,550 --> 00:44:34,780 Ĉar ni skribis ilin aŭ iu alia, tiel 1000 00:44:34,780 --> 00:44:36,910 ke ni povas tiam konstrui supre sur ili. 1001 00:44:36,910 --> 00:44:39,430 Ni rigardu tiun Varianto, funkcii unu. 1002 00:44:39,430 --> 00:44:41,780 >> Do ĉi tiu estas iom pli progresintaj, sed tio rezultas 1003 00:44:41,780 --> 00:44:44,570 ke en CS50 la biblioteko, ekzistas nur GetInt funkcio. 1004 00:44:44,570 --> 00:44:47,720 Ni ne pensas, jaroj, al praktikigi GetPositiveInt funkcio. 1005 00:44:47,720 --> 00:44:50,970 Kaj tio estas iom ĝena ĉar se you guys skribanta programon kien 1006 00:44:50,970 --> 00:44:53,325 vi volas ricevi pozitivan entjero de la uzanto, 1007 00:44:53,325 --> 00:44:55,010 vi povas absolute uzi GetInt. 1008 00:44:55,010 --> 00:44:57,840 Kaj vi povas absolute kontroli kun la kondiĉo kaj eble buklo 1009 00:44:57,840 --> 00:45:00,320 se tiu estas pli granda int ol 0 kaj krias al la uzanto 1010 00:45:00,320 --> 00:45:02,699 se li aŭ ŝi ne donu vi pozitiva nombro. 1011 00:45:02,699 --> 00:45:04,740 Sed ni konstruu tiun konstruaĵo blokas nin, a, 1012 00:45:04,740 --> 00:45:06,555 kutimo Scratch peco, se vi volas. 1013 00:45:06,555 --> 00:45:08,680 Mi tuj havi programon tie ke finfine, mi 1014 00:45:08,680 --> 00:45:11,780 volas povi nomi GetPositiveInt, kaj mi volas esti 1015 00:45:11,780 --> 00:45:14,200 povis presi kio ajn ke int estas. 1016 00:45:14,200 --> 00:45:16,240 Sed tiu estas distrita for nun. 1017 00:45:16,240 --> 00:45:19,050 Ĝi simple estis donita altan nivelon nomo kiu diras kion ĝi faras, 1018 00:45:19,050 --> 00:45:21,780 mirinda estas ĉar ĝi estas tre intuicia nun legi. 1019 00:45:21,780 --> 00:45:24,710 Kaj se mi faras zorgas kio estas sube la kapuĉo, lasu min rulumi malsupren. 1020 00:45:24,710 --> 00:45:27,140 Kaj ĝi estas iom timiga komence, speciale 1021 00:45:27,140 --> 00:45:29,470 se tio ĉi estas via unua programo, sed ni rigardu. 1022 00:45:29,470 --> 00:45:32,860 >> Mi ne plu dirante, malplenon, ĉar ĝi rezultas funkcioj, 1023 00:45:32,860 --> 00:45:34,777 multe kiel GetString, povas resendas valoron por mi. 1024 00:45:34,777 --> 00:45:36,610 Ili ne nur devas presi al la ekrano, 1025 00:45:36,610 --> 00:45:38,410 ili povas reale transdoni mi ion reen. 1026 00:45:38,410 --> 00:45:41,535 Kaj ke antaŭe PrintName, Mi ne bezonas ion reen. 1027 00:45:41,535 --> 00:45:44,160 Mi bezonis la kromefikon de io aperanta sur la ekrano, 1028 00:45:44,160 --> 00:45:46,570 sed mi ne bezonis homan transdoni al mi ion reen. 1029 00:45:46,570 --> 00:45:48,840 Tie, kun GetPositiveInt, kiel kun GetInt, 1030 00:45:48,840 --> 00:45:50,640 Mi volas esti enmanigis ion reen. 1031 00:45:50,640 --> 00:45:53,220 Do mi diras ne, malplenon, sur linio 23, sed int, 1032 00:45:53,220 --> 00:45:55,570 kiu diras, ĉi tiu funkcio ke mi estas skribanta, 1033 00:45:55,570 --> 00:45:58,860 nomata GetPositiveInt tuj transdonu min denove entjero, nenio, 1034 00:45:58,860 --> 00:45:59,890 Ne malplena. 1035 00:45:59,890 --> 00:46:03,280 >> Dume, ĝi estas tuj prenos neniu enigoj, tiel mi, ia, inversigis ĝin. 1036 00:46:03,280 --> 00:46:08,280 Mi ne donante GetPositiveInt ajnan enigo, mi volas ĝin doni al mi sian produktadon. 1037 00:46:08,280 --> 00:46:09,800 Kaj tiam kio okazas nun? 1038 00:46:09,800 --> 00:46:11,640 Do jen kiel mi povas deklari variablon. 1039 00:46:11,640 --> 00:46:15,090 Mi jam faris ekster la buklo, pro kialoj ni eventuale vidi, 1040 00:46:15,090 --> 00:46:17,700 sed ĉi nur donas mi 32 bitoj nomis, n, 1041 00:46:17,700 --> 00:46:20,952 kaj mi jam antaŭ- determinanta ili stoki entjero. 1042 00:46:20,952 --> 00:46:23,660 Kaj jen tio, do dum konstrukcio, kaj tio estas kial ĝi estas utila. 1043 00:46:23,660 --> 00:46:26,700 Laŭvorte fari tion, dum n estas malpli ol 1. 1044 00:46:26,700 --> 00:46:28,030 Do ni vidu kio okazas. 1045 00:46:28,030 --> 00:46:30,760 Mi presi, bonvolu donu al mi pozitiva int. 1046 00:46:30,760 --> 00:46:34,300 Mi tiam ricevas int, uzante CS50 funkcii kaj stokitaj en n. 1047 00:46:34,300 --> 00:46:38,990 >> Kaj tiam, kion linio de kodo probable gets ekzekutita sekva, logike? 1048 00:46:38,990 --> 00:46:41,890 Kiun linion nombro? 1049 00:46:41,890 --> 00:46:42,571 Jes, do 31. 1050 00:46:42,571 --> 00:46:45,320 Vi ne scias tion ĝis vi Oni diris aux ia konkludi ĝin, 1051 00:46:45,320 --> 00:46:45,986 sed tio estas vera. 1052 00:46:45,986 --> 00:46:48,280 Ĝi iras supre sube kaj tiam tenas ripetante. 1053 00:46:48,280 --> 00:46:55,840 Do se mi tajpis en ekzemple, la nombro negativa 1, estas n malpli ol 1 negativaj? 1054 00:46:55,840 --> 00:46:56,340 Yeah. 1055 00:46:56,340 --> 00:46:58,470 Ĉar negativa 1 estas malpli ol 1. 1056 00:46:58,470 --> 00:46:59,510 Do kio estos? 1057 00:46:59,510 --> 00:47:03,260 Mi tuj faros tiun dum n estas malpli ol 1, 1058 00:47:03,260 --> 00:47:05,760 do mi tuj reiri al linio 28. 1059 00:47:05,760 --> 00:47:09,530 >> Kaj ĉiu time-- kaj ni kuros this-- faras funkcio 1 kompili ĝin, 1060 00:47:09,530 --> 00:47:11,340 kaj nun dot oblikvo funkcio 1. 1061 00:47:11,340 --> 00:47:14,280 Se mi tajpas negativa 1, estas tuj daŭre kriante al mi 1062 00:47:14,280 --> 00:47:17,530 ĝis mi kunlaboras ĉar ĉiu de miaj enigoj estas malpli ol 1 1063 00:47:17,530 --> 00:47:20,070 kaj se ĝi estas dum malpli ol 1, Mi tuj daŭre fari tion. 1064 00:47:20,070 --> 00:47:24,240 Se mi fine doni nombro kiel 50, dankeme, ĝi diras, dankon pro la 50. 1065 00:47:24,240 --> 00:47:24,970 Kial? 1066 00:47:24,970 --> 00:47:30,640 Ĉar kiam n estas ne malpli ol 1, ĉesas akiranta senmoviĝita en tiu ciklo, 1067 00:47:30,640 --> 00:47:33,840 kaj tiu nova ŝlosilvorto hodiaŭ, reveno, laŭvorte faras tion. 1068 00:47:33,840 --> 00:47:36,800 Do mi ĵus implementado, en senco, la ekvivalento de GetString, 1069 00:47:36,800 --> 00:47:40,590 kie mi disdonanta al kiu uzas min, iu valoro. 1070 00:47:40,590 --> 00:47:42,820 Ĝi ne devas esti kordo, ĝi estas int. 1071 00:47:42,820 --> 00:47:44,990 Do simpla, rapida ekzemple, sed ni baldaŭ 1072 00:47:44,990 --> 00:47:47,930 vidi iujn pli malnaiva versioj ankoraŭ. 1073 00:47:47,930 --> 00:47:53,882 Fakte, ni prenu rigardu numera unu, nomata return.c. 1074 00:47:53,882 --> 00:47:55,590 Kaj ĉi tiu estas reale iom simpla. 1075 00:47:55,590 --> 00:47:59,010 Do tiu programo la celon en vivon, ni kompilos kaj kuras ĝi, 1076 00:47:59,010 --> 00:48:03,090 Tiel faro reveno, punktas oblikvo, return-- avizo 1077 00:48:03,090 --> 00:48:05,530 la programo simple kuboj la valoro 2. 1078 00:48:05,530 --> 00:48:08,410 Ĝi estas sufiĉe stulta, estas malfacile kodo, ĝi ne prenas ajnan enigoj, 1079 00:48:08,410 --> 00:48:12,220 sed jes pruvi alian funkcion kiu mi skribis mem. 1080 00:48:12,220 --> 00:48:15,760 Do jen, mi deklaris al variablo, nomita x, de tipo int, 1081 00:48:15,760 --> 00:48:17,840 egala al la numero 2, tute arbitra. 1082 00:48:17,840 --> 00:48:19,530 Tio estas nur kelkaj lanugaj printado. 1083 00:48:19,530 --> 00:48:23,070 Ĝi diras x estas nun, tia kaj tia, cubing dot dot dot. 1084 00:48:23,070 --> 00:48:26,390 Kaj la magio estas ŝajne en linio 21. 1085 00:48:26,390 --> 00:48:30,120 Mi vokas funkcio nomita, kubo, Mi transdonis gxin paperfolion 1086 00:48:30,120 --> 00:48:32,890 kun la numero 2 skribita sur ĝi, kaj kio valoro, matematike, 1087 00:48:32,890 --> 00:48:34,860 mi volas eliri el ĝi? 1088 00:48:34,860 --> 00:48:36,570 Kiel prudento ĉeko? 1089 00:48:36,570 --> 00:48:37,070 8. 1090 00:48:37,070 --> 00:48:37,570 Dekstra? 1091 00:48:37,570 --> 00:48:40,160 Mi volas 2 Cubed reen, 2 al la potenco de 3, do 8 reen. 1092 00:48:40,160 --> 00:48:42,570 >> Do kie estas kubo implementado? 1093 00:48:42,570 --> 00:48:44,349 Nu, rimarki ĝi estas implementado tie. 1094 00:48:44,349 --> 00:48:47,140 Kaj samkiel antaŭe, logike, kvankam la sintakso estas probable 1095 00:48:47,140 --> 00:48:49,320 tre nova por multaj de vi, Mi volas tiun funkcion 1096 00:48:49,320 --> 00:48:51,780 transdoni al mi reen folio de papero kun int sur ĝi. 1097 00:48:51,780 --> 00:48:53,990 Do mi havas int, la nomo estas arbitre, 1098 00:48:53,990 --> 00:48:55,530 sed oportune nomita kubo. 1099 00:48:55,530 --> 00:48:58,430 La enigo al ĝi, estas n de tajpi entjero, do tio estas 1100 00:48:58,430 --> 00:49:00,800 kiel mi povas pasi en la kvanto 2 sur paperfolion. 1101 00:49:00,800 --> 00:49:03,910 Kaj tiam ĝi rezultas C apogoj math, tial vi ne devas x-ojn por tempoj, 1102 00:49:03,910 --> 00:49:06,680 vi nur uzu la asterisko por multipliko. 1103 00:49:06,680 --> 00:49:11,070 Kaj tiu revenas n × n fojojn n, kiu estas simple Cubed valoro. 1104 00:49:11,070 --> 00:49:12,840 >> Do kie ni iras kun ĉio ĉi? 1105 00:49:12,840 --> 00:49:14,570 Tiu estas definitive ventego turneo, ripozi certigita, 1106 00:49:14,570 --> 00:49:16,410 ke en la super sekcioj kaj en problemo starigis 1, 1107 00:49:16,410 --> 00:49:18,368 vi estos promenis tra ĉiuj ĉi des pli. 1108 00:49:18,368 --> 00:49:22,490 Kaj en problemo starigis 1, ni transiro el la grafika mondo de Scratch 1109 00:49:22,490 --> 00:49:25,640 al io pli komandlinio en C. Sed ni inspiriĝi 1110 00:49:25,640 --> 00:49:27,680 de ĉi tie ludo el pasintaj tempoj, kio 1111 00:49:27,680 --> 00:49:31,591 uzante C kaj la normeldono de la p aro vi efektivigu Mario piramido. 1112 00:49:31,591 --> 00:49:34,340 Kaj en la hacker eldono de la p aro, se vi tiel elektas elektito, 1113 00:49:34,340 --> 00:49:38,280 vi efektivigos iom pli defianta piramido kun du pintoj. 1114 00:49:38,280 --> 00:49:41,239 Vi ankaŭ implementar algoritmo, avida algoritmo. 1115 00:49:41,239 --> 00:49:43,030 Ĝi rezultas tie estas iuj interesaj logiko 1116 00:49:43,030 --> 00:49:45,640 malantaŭ la procezo de kuranta kasisto stacio 1117 00:49:45,640 --> 00:49:47,410 kaj fakte disdonanta iu reen ŝanĝo. 1118 00:49:47,410 --> 00:49:50,410 Tie estas algoritmo kiu estas sufiĉe simpla, ke vi eble eĉ 1119 00:49:50,410 --> 00:49:53,576 kompreni intuicie kiam vi unue legi it-- rimarki ke pri tio mi ĉiam 1120 00:49:53,576 --> 00:49:57,110 farita iam mi donis iun iuj mono back-- kiu permesas ĉiam 1121 00:49:57,110 --> 00:50:00,679 minimumigi la nombron de papero notoj aŭ metalaj moneroj 1122 00:50:00,679 --> 00:50:02,220 ke vi disdonanta reen al la uzanto. 1123 00:50:02,220 --> 00:50:04,610 Kaj tio, kompreneble, estas konvinka ĉar se vi iros al CVS aŭ whatnot, 1124 00:50:04,610 --> 00:50:06,430 vi ne volas esti handed tuta amaso de aĵoj 1125 00:50:06,430 --> 00:50:07,596 aŭ tutan faskon da pencoj. 1126 00:50:07,596 --> 00:50:10,120 Vi volas la plej malmultaj moneroj, probable, ebla. 1127 00:50:10,120 --> 00:50:13,070 >> Fine, vi ankaŭ esti defiita dabble en la mondo de akvo 1128 00:50:13,070 --> 00:50:17,220 kaj reale preni dankeco por surĵeto inter tarifoj de fluo, 1129 00:50:17,220 --> 00:50:19,890 de ŝati, akvo en duŝejo, nur kiom akvo estas uzata. 1130 00:50:19,890 --> 00:50:22,640 Kaj la aludo en ĝi, Estos ĉi klipo tie, 1131 00:50:22,640 --> 00:50:24,840 kiun ni finos dum nur 60 sekundoj, kiuj 1132 00:50:24,840 --> 00:50:29,070 pentras portreton de malalta fluo duŝo kapojn. 1133 00:50:29,070 --> 00:50:30,886 >> [VIDEO reprodukto] 1134 00:50:30,886 --> 00:50:31,385 -All Pravas. 1135 00:50:31,385 --> 00:50:32,774 Mi ĉion ĉi tie. 1136 00:50:32,774 --> 00:50:35,800 Mi ekhavis la Ciklono F Serio, Hydra, Jetflow, Stokholmo 1137 00:50:35,800 --> 00:50:37,660 Supersteam, io ajn. 1138 00:50:37,660 --> 00:50:39,265 >> -Kaj Kion vi rekomendas? 1139 00:50:39,265 --> 00:50:40,460 >> -Kion Vi serĉas? 1140 00:50:40,460 --> 00:50:41,300 >> -Power Viro. 1141 00:50:41,300 --> 00:50:42,285 Potenco. 1142 00:50:42,285 --> 00:50:42,910 Komenius Silkwood. 1143 00:50:42,910 --> 00:50:44,520 -Tio Estas por radiado. 1144 00:50:44,520 --> 00:50:46,335 -Tio Pravas. 1145 00:50:46,335 --> 00:50:48,275 -Now Kio estas tio? 1146 00:50:48,275 --> 00:50:49,704 -Tio Estas la Comando 450. 1147 00:50:49,704 --> 00:50:50,620 Mi ne vendos tiu. 1148 00:50:50,620 --> 00:50:51,700 >> -Sed Tio estas kion ni volas. 1149 00:50:51,700 --> 00:50:52,680 Estas comando 450. 1150 00:50:52,680 --> 00:50:53,882 >> -No Kredi min. 1151 00:50:53,882 --> 00:50:55,090 Ĝi estas uzata nur en la cirko. 1152 00:50:55,090 --> 00:50:56,512 Ĝi estas por elefantoj. 1153 00:50:56,512 --> 00:50:59,356 >> -I'll Pagi nenion. 1154 00:50:59,356 --> 00:51:01,252 >> -Kio Pri Jerry? 1155 00:51:01,252 --> 00:51:02,760 >> -Li Ne povis manipuli tion. 1156 00:51:02,760 --> 00:51:04,910 Li estas dorlotata. 1157 00:51:04,910 --> 00:51:05,750 Oh yeah. 1158 00:51:05,750 --> 00:51:36,737 1159 00:51:36,737 --> 00:51:37,320 [FINO reprodukto] 1160 00:51:37,320 --> 00:51:37,700 DAVID J Malan: Bone. 1161 00:51:37,700 --> 00:51:38,820 Tio se por CS50. 1162 00:51:38,820 --> 00:51:40,050 Ni vidos vin proksima semajno. 1163 00:51:40,050 --> 00:51:45,910 1164 00:51:45,910 --> 00:51:49,029 >> Parolanto 1: [? Scully?], [? Ian,?] ĝis ĉi outro projekto, 1165 00:51:49,029 --> 00:51:50,362 Kion vi uloj elpensi? 1166 00:51:50,362 --> 00:51:51,990 >> Parolanto 2: Nu, ni donita ĝi vario de penso, 1167 00:51:51,990 --> 00:51:53,250 kaj ni pensas ke la plej bona maniero to-- 1168 00:51:53,250 --> 00:51:53,660 >> Parolanto 3: May I? 1169 00:51:53,660 --> 00:51:54,326 >> Parolanto 2: Yeah. 1170 00:51:54,326 --> 00:51:56,360 Por supozita, fakte. 1171 00:51:56,360 --> 00:51:59,425 >> Parolanto 3: Do mi pensas Ni povas resumi nia ideo 1172 00:51:59,425 --> 00:52:05,450 por la outros kun unu word-- nenion. 1173 00:52:05,450 --> 00:52:08,950 1174 00:52:08,950 --> 00:52:10,409 >> DAVID J Malan: Nenio? 1175 00:52:10,409 --> 00:52:11,200 Parolanto 3: Nenio. 1176 00:52:11,200 --> 00:52:12,990 DAVID J Malan: Kion tio signifas? 1177 00:52:12,990 --> 00:52:16,260 Parolanto 3: La outros cxirkauxas nenion. 1178 00:52:16,260 --> 00:52:21,720 Parolanto 2: Nu, mi volas diri, en filozofio, Mi volas diri, nenio estas ĉiam io. 1179 00:52:21,720 --> 00:52:24,200 Parolanto 1: Do what's-- kio estas la premiso? 1180 00:52:24,200 --> 00:52:25,720 Parolanto 3: Do estas kiel vivo. 1181 00:52:25,720 --> 00:52:26,680 OK. 1182 00:52:26,680 --> 00:52:28,294 Kion vi faris hodiaŭ? 1183 00:52:28,294 --> 00:52:31,811 >> DAVID J Malan: mi leviĝis, devis matenmanĝon, kaj venis labori. 1184 00:52:31,811 --> 00:52:34,056 >> Parolanto 3: Tio estas outro. 1185 00:52:34,056 --> 00:52:36,806 Parolanto 2: Sed, mi volas diri, ĉu ne io okazus al li sur the-- 1186 00:52:36,806 --> 00:52:37,889 Parolanto 3: Ne, ne, ne, ne. 1187 00:52:37,889 --> 00:52:40,220 Nenio okazas. 1188 00:52:40,220 --> 00:52:42,910 >> Parolanto 1: Do kial ni rigardas? 1189 00:52:42,910 --> 00:52:46,956 >> Parolanto 3: Pro ĝi estas outro por CS50. 1190 00:52:46,956 --> 00:52:48,652 >> DAVID J Malan: Ankoraŭ ne. 1191 00:52:48,652 --> 00:52:49,151