1 00:00:00,000 --> 00:00:10,940 2 00:00:10,940 --> 00:00:13,060 >> DAVID J Malan: Vse desno, tako da je to CS50. 3 00:00:13,060 --> 00:00:15,040 In to je jasno petek. 4 00:00:15,040 --> 00:00:16,850 In to je konec enega tedna. 5 00:00:16,850 --> 00:00:21,020 Torej si lahko spomnimo, da smo končali, zadnji čas, z Cliffhanger razpoloženje. 6 00:00:21,020 --> 00:00:25,020 Pri čemer smo izpostaviti to laž, da ni glede na to, kaj ste bili učil narašča 7 00:00:25,020 --> 00:00:31,610 navzgor, 1 deljeno z 10 ni v Dejstvo, 0,1 ali 0,100 ali 0,10000. 8 00:00:31,610 --> 00:00:35,270 V bistvu, če bomo prevedite to Program, kot smo to storili včeraj, z, 9 00:00:35,270 --> 00:00:39,770 Znamka nenatančnosti, nato narediti piko, poševnica, nenatančnost, 10 00:00:39,770 --> 00:00:43,600 smo se naučili, da je to tisto, kar je 1 deljeno z 10 dejansko je. 11 00:00:43,600 --> 00:00:46,140 Tako, da to ni res čisto tako. 12 00:00:46,140 --> 00:00:49,014 Toda to počne namig na nekatere Temeljna omejitev računalnikov. 13 00:00:49,014 --> 00:00:50,930 In res, med Stvari bomo storili 14 00:00:50,930 --> 00:00:55,130 danes si oglejte, zakaj je to se je zgodilo, kakšne posledice ima to, 15 00:00:55,130 --> 00:00:58,430 kako je človeštvo uspelo da bi razumela to v nekaterih zelo 16 00:00:58,430 --> 00:01:00,410 resna situations-- rezultat od katerega 17 00:01:00,410 --> 00:01:03,141 je bil precej tragično in expensive-- ter 18 00:01:03,141 --> 00:01:04,849 si oglejte, kako smo lahko dejansko zagovarjajo 19 00:01:04,849 --> 00:01:06,530 pred temi vrstami omejitev. 20 00:01:06,530 --> 00:01:10,940 Torej intuitivno, morda, Zato je 1 deljeno z 10, 21 00:01:10,940 --> 00:01:15,480 po mojem računalniku tukaj, ne samo 1/10, 0,10? 22 00:01:15,480 --> 00:01:15,980 Ja. 23 00:01:15,980 --> 00:01:16,530 Kaj misliš? 24 00:01:16,530 --> 00:01:17,860 >> PUBLIKA članica: radix je drugačen? 25 00:01:17,860 --> 00:01:18,550 >> DAVID J Malan: The kaj je? 26 00:01:18,550 --> 00:01:19,730 Oh, radix je drugačen? 27 00:01:19,730 --> 00:01:20,720 Torej, ne povsem. 28 00:01:20,720 --> 00:01:23,200 To je dejansko bolj temeljnega pomena za strojno opremo. 29 00:01:23,200 --> 00:01:23,980 Druge misli? 30 00:01:23,980 --> 00:01:24,584 Ja. 31 00:01:24,584 --> 00:01:26,750 PUBLIKA DRŽAVA: Oni predstavljajo število drugače? 32 00:01:26,750 --> 00:01:27,880 DAVID J Malan: Torej they-- desno. 33 00:01:27,880 --> 00:01:29,338 Predstavljajo številk drugače. 34 00:01:29,338 --> 00:01:30,700 Napačno, očitno. 35 00:01:30,700 --> 00:01:33,190 Tako da is-- No, drugače od česa? 36 00:01:33,190 --> 00:01:34,490 Ali od koga? 37 00:01:34,490 --> 00:01:35,050 Od nas? 38 00:01:35,050 --> 00:01:35,966 PUBLIKA DRŽAVA: Ja. 39 00:01:35,966 --> 00:01:38,930 Oni ne uporabljajte decimalko sistem [neslišno]. 40 00:01:38,930 --> 00:01:39,680 DAVID J Malan: OK. 41 00:01:39,680 --> 00:01:41,560 Torej, na nek način, ki jih ne uporabite decimalni sistem. 42 00:01:41,560 --> 00:01:43,720 Pod pokrovom, Vse je res, binarni, 43 00:01:43,720 --> 00:01:45,510 in to je povezano, v resnici. 44 00:01:45,510 --> 00:01:48,135 Ampak to je še preprostejša razlaga kot to. 45 00:01:48,135 --> 00:01:48,635 Ja. 46 00:01:48,635 --> 00:01:49,970 >> PUBLIKA DRŽAVA: Oni samo toliko bitov. 47 00:01:49,970 --> 00:01:52,370 Prav tako lahko shranite le do določene obsegu, kot z decimalke. 48 00:01:52,370 --> 00:01:52,780 >> DAVID J Malan: Ja. 49 00:01:52,780 --> 00:01:54,420 To je tisto, kar je res že pri tem. 50 00:01:54,420 --> 00:01:57,180 Izkazalo se je, da so računalniki Značilno je, da je vedno le 51 00:01:57,180 --> 00:01:59,690 uporabljajo končno količino podatkov da predstavljajo nekaj. 52 00:01:59,690 --> 00:01:59,870 Prav? 53 00:01:59,870 --> 00:02:02,110 Navsezadnje imamo le fiksni količina prostora na trdem disku. 54 00:02:02,110 --> 00:02:04,210 Imamo le fiksni znesek RAM ali spomin računalnika. 55 00:02:04,210 --> 00:02:06,251 In če imate le fiksni znesek nečesa, 56 00:02:06,251 --> 00:02:09,611 zagotovo ne morete dejansko prešteti do neskončnosti ali katero koli številko, ki jo želite. 57 00:02:09,611 --> 00:02:11,610 Vi, vrsta, moral izbirati, kaj območje 58 00:02:11,610 --> 00:02:13,220 vrednot boš podpiral. 59 00:02:13,220 --> 00:02:18,100 >> In tako na primer, teden ali dva nazaj, ko smo govorili o ASCII, 60 00:02:18,100 --> 00:02:21,610 in smo se pogovarjali okoli 8 bitov, ali bajt, tako rekoč, 61 00:02:21,610 --> 00:02:26,360 največje število smo lahko predstavljajo z 8 bitov je bilo kaj? 62 00:02:26,360 --> 00:02:28,350 255. 63 00:02:28,350 --> 00:02:31,850 In bomo lahko predstavljajo 256 skupnih vrednosti vendar ne, če smo porabili eno od njih 64 00:02:31,850 --> 00:02:34,190 na 0-- No, če pa porabili eno od njih na 0, 65 00:02:34,190 --> 00:02:36,830 takrat največja številka je seveda, 255. 66 00:02:36,830 --> 00:02:39,410 >> Tako se je izkazalo, da je to velja tudi v tem kontekstu. 67 00:02:39,410 --> 00:02:42,350 Začeli smo govoriti, zadnji čas, o številu s plavajočo vejico, ki 68 00:02:42,350 --> 00:02:44,640 se razlikujejo od števil, pri da imajo decimalno vejico 69 00:02:44,640 --> 00:02:47,056 in upam, da nekatere številke po tem, vendar so preveč. 70 00:02:47,056 --> 00:02:51,730 Računalnik je samo običajno dogaja za uporabo 32 bitov, morda 64 bitov 71 00:02:51,730 --> 00:02:53,497 za zastopanje s plavajočo vejico vrednost. 72 00:02:53,497 --> 00:02:56,080 Torej, čeprav smo odraščali učenja matematike in poznavanje 73 00:02:56,080 --> 00:02:58,750 da lahko nujno imeti neskončno število številk 74 00:02:58,750 --> 00:03:01,650 decimalno vejico, ne če imate končno spomin. 75 00:03:01,650 --> 00:03:03,930 Vi, vrsta, moral zaokrožiti, ali pa izberete 76 00:03:03,930 --> 00:03:05,346 številke boš za zastopanje. 77 00:03:05,346 --> 00:03:08,710 In tako si lahko zamislite, v smislu, ker je to računalnik je najbližja 78 00:03:08,710 --> 00:03:14,050 približek vrednosti 1/10, ki je mogoče dobiti, s samo 32 ali tako bitov. 79 00:03:14,050 --> 00:03:15,300 In to ne samo 1/10. 80 00:03:15,300 --> 00:03:19,820 >> Na primer, če spremenim to 1/3, kar mislimo, da je še enostavnejše. 81 00:03:19,820 --> 00:03:21,300 Torej 1 deljeno s 3. 82 00:03:21,300 --> 00:03:22,355 Dovolite mi, da shranite datoteko. 83 00:03:22,355 --> 00:03:24,680 Naj gredo naprej in ga prevedem. 84 00:03:24,680 --> 00:03:25,820 In mi ga ponovno zagnati. 85 00:03:25,820 --> 00:03:30,000 Tudi tu, očitno, 1/3 ni 0.3 in potem neskončno število 3-ih 86 00:03:30,000 --> 00:03:30,770 zatem. 87 00:03:30,770 --> 00:03:32,540 Imate to nenatančnost na koncu. 88 00:03:32,540 --> 00:03:35,544 Torej smo ljudje pravilno, in kaj ste se naučili, v resnici, pravilni, 89 00:03:35,544 --> 00:03:37,460 vendar smo zaletavate up pred nekaterimi omejitvami. 90 00:03:37,460 --> 00:03:39,420 >> In tisto, kar sem mislil, mi bi storili danes, se začne 91 00:03:39,420 --> 00:03:42,190 ga gledaš, odkrito povedano se tragične posledice tega 92 00:03:42,190 --> 00:03:45,490 Včasih, ko je človeštvo ne povsem izvajati 93 00:03:45,490 --> 00:03:48,460 Za to realnost in teh omejitev. 94 00:03:48,460 --> 00:03:52,360 In bomo videli vrsto vinjet od History Channel, ki bo 95 00:03:52,360 --> 00:03:53,950 poglej, kako stvari so šle narobe. 96 00:03:53,950 --> 00:03:56,340 To je približno 8 minut, in se bomo vrnili po tem 97 00:03:56,340 --> 00:03:59,439 in si oglejte točno kaj lahko gre narobe. 98 00:03:59,439 --> 00:04:00,605 Če bi lahko zatemnite lights-- 99 00:04:00,605 --> 00:04:02,350 >> [VIDEO PREDVAJANJE] 100 00:04:02,350 --> 00:04:06,310 >> -Computers, Smo vsi prišli do sprejema se pogosto frustrirajuće težave, ki 101 00:04:06,310 --> 00:04:07,750 iti z njimi. 102 00:04:07,750 --> 00:04:11,370 Bugs, virusi in programska oprema glitches so majhne cene 103 00:04:11,370 --> 00:04:13,230 plačati za udobje. 104 00:04:13,230 --> 00:04:17,519 Toda v high-tech in visoke hitrosti vojaški in vesoljski program, aplikacije, 105 00:04:17,519 --> 00:04:22,130 najmanjši problem lahko se poveličuje v katastrofo. 106 00:04:22,130 --> 00:04:27,750 4. junija 1996, pripravili znanstveniki za začetek brez posadke Ariane 5 raketo. 107 00:04:27,750 --> 00:04:29,890 To izvajanje znanstveno bila sateliti zasnovan 108 00:04:29,890 --> 00:04:33,030 natančno, kako oblikovati Združljiva magnetno polje Zemlje 109 00:04:33,030 --> 00:04:35,600 s solarnimi vetrovi. 110 00:04:35,600 --> 00:04:37,930 Raketa je bila zgrajena za Evropska vesoljska agencija 111 00:04:37,930 --> 00:04:41,620 in dvignjen od njegovega objekta na obali Francoske Gvajane. 112 00:04:41,620 --> 00:04:44,924 >> In približno 30 sekund v let, so najprej 113 00:04:44,924 --> 00:04:46,340 Opazil je bilo nekaj narobe. 114 00:04:46,340 --> 00:04:49,280 Da šobe so vrtljiva na tak način, da res ne bi smela. 115 00:04:49,280 --> 00:04:53,042 Okoli 40 sekund v letalu, jasno je bilo vozilo v težavah, 116 00:04:53,042 --> 00:04:55,250 in da je, ko so naredili odločitev, da ga uničiti. 117 00:04:55,250 --> 00:04:58,970 Strelski Varnost z ogromno poguma, pritisnil na gumb, 118 00:04:58,970 --> 00:05:03,940 razneslo raketo, preden se lahko postala nevarnost za javno varnost. 119 00:05:03,940 --> 00:05:06,600 >> -To Je bila devica plovba Ariane 5, 120 00:05:06,600 --> 00:05:09,270 in njeno uničenje je postavite zaradi napako 121 00:05:09,270 --> 00:05:10,992 vgrajenih v programsko opremo, raketa je. 122 00:05:10,992 --> 00:05:12,700 -V Problem na Ariane je bilo, da obstaja 123 00:05:12,700 --> 00:05:15,370 je število, ki zahteva 64 bitov za izražanje, 124 00:05:15,370 --> 00:05:18,150 in želel spremeniti je na 16 bitno številko. 125 00:05:18,150 --> 00:05:21,160 Domnevali so, da je število ni bil nikoli bo zelo velik, 126 00:05:21,160 --> 00:05:25,020 da je večina teh številk v 64 bitna številka je bilo 0 jev. 127 00:05:25,020 --> 00:05:26,310 Da je bilo narobe. 128 00:05:26,310 --> 00:05:28,680 >> -V Nesposobnost ene program za sprejem 129 00:05:28,680 --> 00:05:32,820 vrsta števila ustvari druga pa je bila vzrok neuspeha. 130 00:05:32,820 --> 00:05:37,190 Razvoj programske opreme je postal Zelo drago del nove tehnologije. 131 00:05:37,190 --> 00:05:40,760 Ariane 4 raketa je bila zelo uspešen, tako da večina programja 132 00:05:40,760 --> 00:05:43,990 povzročajo, ker je bila prav uporablja na Ariane 5. 133 00:05:43,990 --> 00:05:49,750 >> -V Osnovni problem je bil, da je Ariane 5 je bil hitrejši, pospešen hitreje. 134 00:05:49,750 --> 00:05:53,000 In programske opreme ni imel predstavljali, da. 135 00:05:53,000 --> 00:05:56,330 >> -V Uničenje rakete je bila velika finančna katastrofa, 136 00:05:56,330 --> 00:05:59,670 vse zaradi napake na minuto programske opreme. 137 00:05:59,670 --> 00:06:01,990 Toda to ni bil prvi Težave pretvorbe podatkov čas 138 00:06:01,990 --> 00:06:05,310 je pestijo sodobno raketno tehnologijo. 139 00:06:05,310 --> 00:06:08,300 >> -in 1991 z začetkom od prve zalivske vojne, 140 00:06:08,300 --> 00:06:10,650 The Patriot projektil doživela podobno vrsto 141 00:06:10,650 --> 00:06:12,650 problem pretvorbe številka. 142 00:06:12,650 --> 00:06:15,620 Kot rezultat, 28 ljudi, 28 ameriških vojakov 143 00:06:15,620 --> 00:06:18,440 je bilo ubitih in okoli 100 drugi ranjen, 144 00:06:18,440 --> 00:06:21,900 ko Patriot, ki naj za zaščito pred dohodne rakete Scud, 145 00:06:21,900 --> 00:06:24,630 ni na ogenj izstrelkov. 146 00:06:24,630 --> 00:06:29,440 >> Kdaj Irak napadel Kuvajt in Ameriko začela Desert Storm v začetku leta 1991, 147 00:06:29,440 --> 00:06:33,800 Patriot raketne baterije so razporejeni zaščititi Savdsko Arabijo in Izrael 148 00:06:33,800 --> 00:06:37,000 od iraških raketnimi napadi Scud. 149 00:06:37,000 --> 00:06:40,610 The Patriot je v ZDA, srednje-range zemlja-zrak sistema 150 00:06:40,610 --> 00:06:43,010 ki jih podjetje Raytheon izdelan. 151 00:06:43,010 --> 00:06:49,080 >> -V Velikost Patriot prestreznik, sam, je približno, približno 20 metrov dolgo. 152 00:06:49,080 --> 00:06:51,250 In tehta približno 2000 kilogramov. 153 00:06:51,250 --> 00:06:55,195 In to nosi bojno glavo z about-- Mislim, da je približno 150 funtov. 154 00:06:55,195 --> 00:06:59,500 In bojno glavo, ki je sam, je visoko eksploziven, 155 00:06:59,500 --> 00:07:02,570 ki ima fragmente okoli njega. 156 00:07:02,570 --> 00:07:06,890 Ohišje bombo je zasnovan tako, da delujejo kot buckshot. 157 00:07:06,890 --> 00:07:09,130 >> -da Rakete so izvajajo, 4 na posodo, 158 00:07:09,130 --> 00:07:12,080 in se prevažajo s polpriklopnikom. 159 00:07:12,080 --> 00:07:19,100 >> -V Patriot anti raketni sistem sega zdaj vsaj 20 let. 160 00:07:19,100 --> 00:07:22,320 To je bila prvotno zasnovana kot obrambni izstrelki zraka 161 00:07:22,320 --> 00:07:24,180 sestrelili sovražnik letal. 162 00:07:24,180 --> 00:07:27,860 V prvi zalivski vojni, ko da je vojna prišla skupaj, 163 00:07:27,860 --> 00:07:32,745 Vojska je želel, da ga uporabi za sestrelili rakete Scud, ne letal. 164 00:07:32,745 --> 00:07:36,150 Iraški Force ni bilo toliko problem, 165 00:07:36,150 --> 00:07:39,110 ampak vojska je skrbelo rakete Scud. 166 00:07:39,110 --> 00:07:42,340 In tako so poskušali nadgraditi Patriot. 167 00:07:42,340 --> 00:07:44,760 >> -Intercepting Sovražnika projektil potujejo na mach pet 168 00:07:44,760 --> 00:07:47,250 je, da bo dovolj zahtevna. 169 00:07:47,250 --> 00:07:50,000 Toda, ko je Patriot je planila v službi, 170 00:07:50,000 --> 00:07:54,030 vojska ni vedela Iraški sprememba, ki je 171 00:07:54,030 --> 00:07:56,840 njihove rakete Scud skoraj nemogoče zadeti. 172 00:07:56,840 --> 00:08:01,020 >> Kaj se je zgodilo, je za rakete Scud da so prihajali v, so nestabilne, 173 00:08:01,020 --> 00:08:02,310 so bili wobbling. 174 00:08:02,310 --> 00:08:05,140 Razlog za to, je Iračanom, da 175 00:08:05,140 --> 00:08:09,450 da bi dobili 600 kilometrov od 300 kilometer razpon projektil, 176 00:08:09,450 --> 00:08:12,930 je masa iz sprednjega bojno glavo in so bojne glave vžigalnik. 177 00:08:12,930 --> 00:08:17,710 Torej sedaj, Patriot poskuša priti na Scud in večino časa, 178 00:08:17,710 --> 00:08:21,700 velika večina izmed čas, bi to samo letenje, ki jih Scud. 179 00:08:21,700 --> 00:08:25,700 >> -Ko Sistemskih operaterjev Patriot realiziran Patriot zgrešil svoj cilj, 180 00:08:25,700 --> 00:08:29,790 so eksplodirala Patriot je bojno glavo, da bi se izognili morebitnim žrtev, če je 181 00:08:29,790 --> 00:08:32,380 pustimo, da pade na tla. 182 00:08:32,380 --> 00:08:36,340 >> -To Je tisto, kar večina ljudi je videlo, tiste velike fireballs na nebu, 183 00:08:36,340 --> 00:08:41,289 in napačno razumljen kot prestreže v Oblaki bojnih glav. 184 00:08:41,289 --> 00:08:43,590 Čeprav je v noči nebo, Patriots pojavil 185 00:08:43,590 --> 00:08:47,020 da bo uspešno uničuje rakete Scud na Dhahran, 186 00:08:47,020 --> 00:08:49,730 ne more biti nobenega napaka o njegovi uspešnosti. 187 00:08:49,730 --> 00:08:53,990 Tam, radarski sistem Patriot izgubila sled dohodni Oblaki, 188 00:08:53,990 --> 00:08:56,650 in nikoli ni začela, zaradi programske razpoke. 189 00:08:56,650 --> 00:08:59,650 190 00:08:59,650 --> 00:09:04,100 To je bil Izraelcem, ki je prvi odkril da je več na sistem, 191 00:09:04,100 --> 00:09:07,510 čim večja je časovna razlika postal zaradi uro vgrajeni 192 00:09:07,510 --> 00:09:09,490 v računalniku sistema. 193 00:09:09,490 --> 00:09:12,670 >> -O 2 tedna pred tragedija v Dhahran, 194 00:09:12,670 --> 00:09:15,010 Izraelci poročali, da Oddelek za obrambo, 195 00:09:15,010 --> 00:09:17,940 da je sistem izgube časa, da se po približno 8 ur delovanja, 196 00:09:17,940 --> 00:09:21,410 so opazili, da je bil sistem postaja opazno manj natančna. 197 00:09:21,410 --> 00:09:25,290 Oddelek za obrambo odzvala z povedal vse Patriot baterij 198 00:09:25,290 --> 00:09:28,070 da ne pustite sistemov na že dalj časa. 199 00:09:28,070 --> 00:09:29,960 Oni nikoli rekel, kaj je bilo dolgo časa. 200 00:09:29,960 --> 00:09:30,460 8 ur? 201 00:09:30,460 --> 00:09:30,960 10 ur? 202 00:09:30,960 --> 00:09:31,870 1000 ur? 203 00:09:31,870 --> 00:09:33,734 Nihče ni vedel. 204 00:09:33,734 --> 00:09:35,650 -V Patriot baterije nameščene na vojašnici 205 00:09:35,650 --> 00:09:40,410 na Dhahran, in njegovo neustrezno notranjo ura, je bil na več kot 100 ur 206 00:09:40,410 --> 00:09:43,041 v noči na 25. februar. 207 00:09:43,041 --> 00:09:47,416 >> -To Gosenicami čas z natančnostjo približno 1/10 sekunde. 208 00:09:47,416 --> 00:09:49,290 Sedaj 1/10 sekunde je Zanimiva številka 209 00:09:49,290 --> 00:09:52,700 ker ne more biti izraženo v binarni, točno. 210 00:09:52,700 --> 00:09:54,820 Kar pomeni, da ne more se je izrazil, točno, 211 00:09:54,820 --> 00:09:57,420 v vsaki sodobni digitalni računalnik. 212 00:09:57,420 --> 00:10:01,460 Težko je verjeti, toda to uporabijo kot primer. 213 00:10:01,460 --> 00:10:03,520 Oglejmo številko, 1/3. 214 00:10:03,520 --> 00:10:07,110 1/3 ne more biti izraženo na decimalko točno. 215 00:10:07,110 --> 00:10:11,490 1/3 je 0,333 dogaja za neskončnost. 216 00:10:11,490 --> 00:10:15,486 Ni šans, da se ne da, z absolutna točnost, na decimalko. 217 00:10:15,486 --> 00:10:18,360 To je točno isto vrsto Problem, ki se je zgodilo v Patriot. 218 00:10:18,360 --> 00:10:22,510 Dlje sistem tekel je slabši čas napaka postala. 219 00:10:22,510 --> 00:10:28,420 >> -Po 100 urah delovanja, napaka V času je bil le približno 1/3 sekunde. 220 00:10:28,420 --> 00:10:31,830 Ampak v smislu ciljanje projektil potujejo na Mach 5, 221 00:10:31,830 --> 00:10:35,890 je povzročilo sledenje Napaka več kot 600 metrov. 222 00:10:35,890 --> 00:10:38,970 To bi bila usodna napaka za vojake na Dhahran. 223 00:10:38,970 --> 00:10:45,035 >> Kaj se je zgodilo, je začetek Scud je bil ki jih za zgodnje opozarjanje satelitov zazna, 224 00:10:45,035 --> 00:10:48,930 in so New da je Scud prihod v njihov splošni smeri. 225 00:10:48,930 --> 00:10:51,170 Niso vedeli, kje je prišel. 226 00:10:51,170 --> 00:10:53,990 >> -To Je zdaj do radarja sestavni del sistema Patriot, 227 00:10:53,990 --> 00:10:58,520 brani Dhahran, najti in obdržati tir dohodnega sovražnika raket. 228 00:10:58,520 --> 00:10:59,690 >> -V Radar je bil zelo pameten. 229 00:10:59,690 --> 00:11:01,710 To bi dejansko skladbo položaj Oblaki 230 00:11:01,710 --> 00:11:04,040 in nato napovedati, kje bi bilo verjetno, 231 00:11:04,040 --> 00:11:06,140 naslednjič, ko se je radar poslal pulz ven. 232 00:11:06,140 --> 00:11:07,660 Da je bila imenovana vrata območje. 233 00:11:07,660 --> 00:11:11,870 >> -Potem, Ko Patriot odloči dovolj časa ima 234 00:11:11,870 --> 00:11:16,280 minilo iti nazaj in preverite Naslednja lokacija za to zaznani predmet, 235 00:11:16,280 --> 00:11:17,280 gre nazaj. 236 00:11:17,280 --> 00:11:21,690 Torej, ko je šel nazaj v napačno mesto, potem ne vidi nobenega predmeta 237 00:11:21,690 --> 00:11:25,230 in se odloči, da ni bilo objekt, je bilo lažno odkrivanje, 238 00:11:25,230 --> 00:11:26,650 in pade na stezo. 239 00:11:26,650 --> 00:11:29,690 Prihodnje Scud izginil iz radarskega zaslona, 240 00:11:29,690 --> 00:11:32,670 in sekund kasneje, je trčil v vojašnice. 241 00:11:32,670 --> 00:11:38,100 Scud ubitih 28 in je bil zadnji ena odpustili med prvo zalivsko vojno. 242 00:11:38,100 --> 00:11:43,460 Tragično je, posodobljeno programsko opremo prispel na Dhahran naslednji dan. 243 00:11:43,460 --> 00:11:46,150 Napaka software imel bil določen, zapiranje 244 00:11:46,150 --> 00:11:48,940 eno poglavje v težavah Zgodovina Patriot raket. 245 00:11:48,940 --> 00:11:50,220 >> [END PREDVAJANJE] 246 00:11:50,220 --> 00:11:54,340 >> DAVID J Malan: Torej bomo si oglejte nekatere podobne omejitve v samo nekaj. 247 00:11:54,340 --> 00:11:58,470 Ampak najprej, kaj je Prehod na nekaj FYI je. 248 00:11:58,470 --> 00:12:01,575 Torej one-- ta vikend, tam bo super odseki, 249 00:12:01,575 --> 00:12:04,200 ki so namenjene izpodrivati Redno redni oddelki, ki 250 00:12:04,200 --> 00:12:05,460 bo začela teden torej. 251 00:12:05,460 --> 00:12:08,204 Oglejte si spletno stran CS50 je Za več informacij o teh. 252 00:12:08,204 --> 00:12:11,120 Jih tudi posneli, in ki bodo predvajale živeti za tiste, ki se ne more udeležiti. 253 00:12:11,120 --> 00:12:12,980 Problem komplet 1, je na Spletno mesto seveda že sedaj, 254 00:12:12,980 --> 00:12:15,105 in bomo si oglejte da samo malo. 255 00:12:15,105 --> 00:12:18,350 In uradnih ur preveč, bo postavljajte od ponedeljka do četrtka. 256 00:12:18,350 --> 00:12:20,960 >> Torej je bil to najbolj kanonično Program smo pogledal zadnjem času. 257 00:12:20,960 --> 00:12:23,590 To je kot najenostavnejši Program lahko pišete v C, 258 00:12:23,590 --> 00:12:25,250 in celo, da je malo drzna trditev. 259 00:12:25,250 --> 00:12:25,750 Prav? 260 00:12:25,750 --> 00:12:28,070 Zato, ker je veliko Navidezna zapletenost tega. 261 00:12:28,070 --> 00:12:30,445 Torej, kaj je na hitro pogledamo na kaj nekatere od teh elementov 262 00:12:30,445 --> 00:12:33,080 bili in nato poskušajo zagotoviti mentalni model, kako 263 00:12:33,080 --> 00:12:35,710 ti najenostavnejši programov delo, nato pa bomo začeli 264 00:12:35,710 --> 00:12:38,050 gledamo na stvari še bolj zapletene. 265 00:12:38,050 --> 00:12:41,280 Torej, ta črta tukaj poudaril zdaj, v rumeni barvi, kar smo rekli, zadnji čas, 266 00:12:41,280 --> 00:12:43,200 da to počne za nas? 267 00:12:43,200 --> 00:12:45,220 Kaj je namen služi? 268 00:12:45,220 --> 00:12:46,984 Vsakdo od dlje nazaj? 269 00:12:46,984 --> 00:12:47,483 Ja. 270 00:12:47,483 --> 00:12:48,649 >> PUBLIKA DRŽAVA: [neslišno] 271 00:12:48,649 --> 00:12:50,871 272 00:12:50,871 --> 00:12:51,704 DAVID J Malan: Dobro. 273 00:12:51,704 --> 00:12:53,537 Torej vam daje dostop na ukaze, ali dovolimo, 274 00:12:53,537 --> 00:12:56,750 funkcije jim pravite, da je nekdo še zapisal, da se je izjavil: 275 00:12:56,750 --> 00:12:58,350 tako rekoč v neki drugi datoteki. 276 00:12:58,350 --> 00:13:02,370 Torej bomo videli točno kaj .h datoteko je v primerjavi z .c datoteko, sčasoma. 277 00:13:02,370 --> 00:13:04,710 Ampak za zdaj, samo vem, da printf, na primer, 278 00:13:04,710 --> 00:13:08,370 je med funkcijami, ki so bile prijavljeni v nekem drugem spisu, nekje 279 00:13:08,370 --> 00:13:12,930 drugje na trdem disku oblaka, ki nam omogoča dostop do printf in jo uporabite 280 00:13:12,930 --> 00:13:15,240 ne da bi morali na novo izumiti da kolo sebe. 281 00:13:15,240 --> 00:13:16,930 Medtem, glavni. 282 00:13:16,930 --> 00:13:19,690 Kakšen je bil analogni glavnem, prejšnji teden? 283 00:13:19,690 --> 00:13:20,190 Ja. 284 00:13:20,190 --> 00:13:21,460 >> PUBLIKA DRŽAVA: Zelena zastava je kliknil. 285 00:13:21,460 --> 00:13:21,740 >> DAVID J Malan: Ja. 286 00:13:21,740 --> 00:13:23,490 Scratch-ih, ko je zelena zastava kliknili. 287 00:13:23,490 --> 00:13:25,560 To je kot puzzle kos da brcne stvari off. 288 00:13:25,560 --> 00:13:28,306 In tako podobno storil svet odločila, pred nekaj leti, da je v C, 289 00:13:28,306 --> 00:13:30,930 in kup drugih jezikov, Če želite napisati program, 290 00:13:30,930 --> 00:13:33,410 vaša prva naloga je se imenuje, glavni. 291 00:13:33,410 --> 00:13:34,641 In to je videti takole. 292 00:13:34,641 --> 00:13:36,640 Vendar se bomo vrnili, en čas, da kaj, int, 293 00:13:36,640 --> 00:13:38,690 in, nična, pomeni v tem kontekstu. 294 00:13:38,690 --> 00:13:42,860 Za zdaj so zaviti oklepaji so prijazni podobnega puzzle piece obliki Scratch je 295 00:13:42,860 --> 00:13:45,080 ki povzema neko število vrstic. 296 00:13:45,080 --> 00:13:47,070 In med na progah tukaj, je to ena tukaj. 297 00:13:47,070 --> 00:13:51,610 printf je funkcija, katere namen v življenje je natisniti formatiran niz. 298 00:13:51,610 --> 00:13:55,010 In formatiran, sem vam pomeni lahko priključite placeholder vrednot, 299 00:13:55,010 --> 00:13:58,360 in lahko določite, koliko decimalko točk, koliko številk za tiskanje 300 00:13:58,360 --> 00:14:00,040 po decimalno vejico in podobno. 301 00:14:00,040 --> 00:14:05,040 In printf, seveda, ima eno ali več argumentov ali parametrov, 302 00:14:05,040 --> 00:14:06,770 sicer znano, bolj preprosto, kot surovine. 303 00:14:06,770 --> 00:14:09,230 >> Torej printf, kot veliko Funkcije, traja vhode. 304 00:14:09,230 --> 00:14:12,730 In so ti vložki v objemu ki sta oklepajih tukaj. 305 00:14:12,730 --> 00:14:15,180 In znotraj teh je en vhod. 306 00:14:15,180 --> 00:14:18,600 To je niz, kot smo jo imenovali, ki je samo zaporedje znakov, 307 00:14:18,600 --> 00:14:22,310 kot besedo ali frazo, ali celote esej celo med dvojne narekovaje. 308 00:14:22,310 --> 00:14:25,712 In to je tisto, kar se dogaja, da vplivajo na Obnašanje printf ker seveda 309 00:14:25,712 --> 00:14:27,170 to je samo generično funkcijo tiskanja. 310 00:14:27,170 --> 00:14:29,600 To se ne dogaja, da vedo, kaj natisniti, razen če ga povem. 311 00:14:29,600 --> 00:14:31,000 In potem, nekateri minutiae. 312 00:14:31,000 --> 00:14:34,056 Kaj smo rekli, je to čudno sekvenca simbolov je? 313 00:14:34,056 --> 00:14:34,556 Ja. 314 00:14:34,556 --> 00:14:35,410 >> PUBLIKA DRŽAVA: Nova linija. 315 00:14:35,410 --> 00:14:35,990 >> DAVID J Malan: Nova linija. 316 00:14:35,990 --> 00:14:39,340 Tako se je izkazalo, ne moreš zadeti, vnesete, ko pišete program. 317 00:14:39,340 --> 00:14:42,590 Na splošno, prevajalnik bo dobil malo zmeden, kaj misliš. 318 00:14:42,590 --> 00:14:45,340 Namesto tega boste morali dobesedno pravijo, daj mi novo linijo tukaj. 319 00:14:45,340 --> 00:14:49,506 In tako / n je tisto, kar smo na splošno pokličite ubežni znak. 320 00:14:49,506 --> 00:14:50,870 Torej n, za novo linijo. 321 00:14:50,870 --> 00:14:53,810 In prevajalnik ve da ko vidi / n, 322 00:14:53,810 --> 00:14:57,420 to naj bi dejansko inducira računalnik, navsezadnje, ali printf, v tem primeru, 323 00:14:57,420 --> 00:15:00,260 natisniti dejansko Novo linije, kot so udarci, vnesite, 324 00:15:00,260 --> 00:15:01,480 tipka na tipkovnici. 325 00:15:01,480 --> 00:15:05,620 In nenazadnje, kaj smo rekli ta kos skladnje je za? 326 00:15:05,620 --> 00:15:06,591 Kaj predstavlja? 327 00:15:06,591 --> 00:15:07,090 Ja. 328 00:15:07,090 --> 00:15:07,490 >> PUBLIKA DRŽAVA: [neslišno] 329 00:15:07,490 --> 00:15:08,660 >> DAVID J Malan: To je samo Konec linije. 330 00:15:08,660 --> 00:15:09,909 To je konec izjave. 331 00:15:09,909 --> 00:15:11,890 In spoznali, da ne bomo jih dal povsod. 332 00:15:11,890 --> 00:15:13,900 Mi zagotovo jih ne dajo na koncu vsake vrstice. 333 00:15:13,900 --> 00:15:16,680 Na primer, obstaja nobena o prva linija, tam je nihče na progi 334 00:15:16,680 --> 00:15:18,680 s, glavno, da je nihče po zavitih oklepajev, 335 00:15:18,680 --> 00:15:21,740 vendar boste začeli videti in dobili seznanjeni s tem, kje je to zahteval. 336 00:15:21,740 --> 00:15:26,014 In to je skoraj vedno po funkciji pokličite ali izjava, nekateri ukrepi 337 00:15:26,014 --> 00:15:27,180 da ste dejansko pokazal. 338 00:15:27,180 --> 00:15:29,520 >> In sedaj vedeli, še posebej, če med tistimi manj udoben, 339 00:15:29,520 --> 00:15:32,540 To so vrste neumnih stvari da boste na koncu po naključju tolkel 340 00:15:32,540 --> 00:15:33,873 tvoja glava proti steni nad. 341 00:15:33,873 --> 00:15:36,107 Ker boste logično prepričani v nekem problemu 342 00:15:36,107 --> 00:15:38,440 ste jih rešili za problem set in prekleto stvar samo 343 00:15:38,440 --> 00:15:40,187 ne bo sestavil ali celo teči. 344 00:15:40,187 --> 00:15:43,270 In tako pogosto, že na začetku, da se bo zato, ker si zgrešil oklepajev, 345 00:15:43,270 --> 00:15:44,455 ali ste zamudili podpičje. 346 00:15:44,455 --> 00:15:46,547 In tako preprosto biti pozoren te vrste stvari, 347 00:15:46,547 --> 00:15:49,380 in poskusite ne priti do razočarane jim zaradi zelo hitro počne 348 00:15:49,380 --> 00:15:50,640 postal star klobuk. 349 00:15:50,640 --> 00:15:53,910 Ampak to je zelo enostavno priti uničen zgodaj, kot rezultat. 350 00:15:53,910 --> 00:15:57,020 >> Torej sedaj, pa si oglejte, kako Ta linija je dejansko deluje 351 00:15:57,020 --> 00:15:59,170 in potem poglej nekoliko bolj zapleten. 352 00:15:59,170 --> 00:16:02,017 Torej imamo tukaj je sposobnost, da pripravi na tem zaslonu. 353 00:16:02,017 --> 00:16:04,100 In kaj je domnevati, da to je moj računalnik zaslon, 354 00:16:04,100 --> 00:16:08,589 ampak pišem, zdravo programa, in nisem izvajal, printf. 355 00:16:08,589 --> 00:16:10,130 Nekdo drug je izvedel, printf. 356 00:16:10,130 --> 00:16:12,420 Kdo bi rad, da trdijo, da bili izvedeni, printf? 357 00:16:12,420 --> 00:16:12,920 Če bomo lahko? 358 00:16:12,920 --> 00:16:13,830 Vse je v redu, kako ti je ime? 359 00:16:13,830 --> 00:16:14,155 >> ŠTUDENTSKO 1: [? Kopal. ?] 360 00:16:14,155 --> 00:16:15,529 >> DAVID J Malan: Copal, pridi gor. 361 00:16:15,529 --> 00:16:16,430 Pridi gor. 362 00:16:16,430 --> 00:16:17,070 V redu. 363 00:16:17,070 --> 00:16:22,260 Torej imamo tukaj, nekaj ime oznake, saj bova malo igra to. 364 00:16:22,260 --> 00:16:26,270 In poklicali vas bomo, printf. 365 00:16:26,270 --> 00:16:30,170 In če želite, da pridejo tja, kaj sem pravkar sestavljen na zaslonu, 366 00:16:30,170 --> 00:16:32,340 to je povsem preprosto, da mi je to. 367 00:16:32,340 --> 00:16:35,550 >> Vse je v redu, tako, Pozdravljeni, moje ime je, printf, če bi rad dal, da na. 368 00:16:35,550 --> 00:16:35,740 V redu. 369 00:16:35,740 --> 00:16:37,360 In če lahko greste stojalo s zaslonu 370 00:16:37,360 --> 00:16:39,730 kot da ste funkcija, ki prišel s tem računalniškim sistemom. 371 00:16:39,730 --> 00:16:42,063 In vaš cilj v življenju je dejansko natisniti nekaj. 372 00:16:42,063 --> 00:16:44,560 Ampak podobno kot program smo Pravkar imel na zaslonu, tukaj, 373 00:16:44,560 --> 00:16:47,060 bomo morali dejansko vam nekaj vhod. 374 00:16:47,060 --> 00:16:51,810 >> In tako, če moj vložek, tukaj je očitno je, da tisto, kar se prenese na printf, 375 00:16:51,810 --> 00:16:53,730 dajmo nekako ga zasmehovali takole. 376 00:16:53,730 --> 00:16:58,720 Bom dobesedno pisati o kos papirja, "Hello, world" 377 00:16:58,720 --> 00:17:03,020 poševnica nazaj N. In da bo jasno, kaj Pravkar sem pripraviti na ta kos papirja, 378 00:17:03,020 --> 00:17:04,020 izgleda takole. 379 00:17:04,020 --> 00:17:08,730 Torej, ko sem teči ta program, in to rumena vrstica kode dobi izvršen, 380 00:17:08,730 --> 00:17:12,970 to je kot da I, program Pozdravljeni, sem deliti nekaj vhod off funkcijo 381 00:17:12,970 --> 00:17:13,970 da je nekdo drug napisal. 382 00:17:13,970 --> 00:17:16,595 >> In če vas, s prstom, lahko dejansko s prstom, 383 00:17:16,595 --> 00:17:21,520 pripravi na zaslonu karkoli je ste bili predani, 384 00:17:21,520 --> 00:17:27,465 učinek, v končni fazi, je natančno vidijo, da se na zaslonu. 385 00:17:27,465 --> 00:17:29,140 In Little primer kotiček tukaj. 386 00:17:29,140 --> 00:17:31,540 In dobro, da ne bi smeli videti , novo linijo, na tej točki. 387 00:17:31,540 --> 00:17:33,900 Bilo bi napačno za vas izrecno sestaviti novo vrstico. 388 00:17:33,900 --> 00:17:36,810 Ampak, če bomo redno pisanje besed na zaslon, bi se na koncu pod njo. 389 00:17:36,810 --> 00:17:39,560 >> Torej, najlepša hvala, ampak držijo tukaj okoli za samo en trenutek. 390 00:17:39,560 --> 00:17:42,860 Zdaj potrebujemo eno drugo prostovoljec, če bi lahko, 391 00:17:42,860 --> 00:17:46,830 da se dogaja, da morajo igrati vlogo of-- To je samo ljudi v orkestru 392 00:17:46,830 --> 00:17:47,355 sedaj. 393 00:17:47,355 --> 00:17:47,980 Kako about-- OK. 394 00:17:47,980 --> 00:17:48,480 Točno tukaj. 395 00:17:48,480 --> 00:17:49,180 Pridi gor. 396 00:17:49,180 --> 00:17:49,955 Kako ti je ime? 397 00:17:49,955 --> 00:17:50,922 >> STUDENT 2: [? Ivay. ?] 398 00:17:50,922 --> 00:17:51,796 DAVID J Malan: Oprostite? 399 00:17:51,796 --> 00:17:52,990 STUDENT 2: [? Ivay. ?] 400 00:17:52,990 --> 00:17:55,320 DAVID J Malan: Ethan, pridi gor. 401 00:17:55,320 --> 00:17:55,820 Ne? 402 00:17:55,820 --> 00:17:58,390 Sem dobil to narobe, celo po tem, ko si rekel dvakrat? 403 00:17:58,390 --> 00:17:58,890 Pridi gor. 404 00:17:58,890 --> 00:18:00,030 Težko je slišati tu gor. 405 00:18:00,030 --> 00:18:05,240 406 00:18:05,240 --> 00:18:05,740 V REDU. 407 00:18:05,740 --> 00:18:07,190 In žal mi je, kako ti je ime? 408 00:18:07,190 --> 00:18:07,680 >> STUDENT 2: [? Ivay. ?] 409 00:18:07,680 --> 00:18:08,790 >> [? DAVID J Malan: Ivay. ?] V REDU. 410 00:18:08,790 --> 00:18:10,430 Za zdaj, če ne Um, ste GetString. 411 00:18:10,430 --> 00:18:11,013 >> STUDENT 2: OK. 412 00:18:11,013 --> 00:18:11,797 Cool. 413 00:18:11,797 --> 00:18:14,630 DAVID J Malan: Torej, če bi želeli tukaj stati samo za trenutek, 414 00:18:14,630 --> 00:18:17,100 dajmo si oglejte na nekoliko bolj zapleten program, ki 415 00:18:17,100 --> 00:18:18,670 ima zdaj tri vrstice kode. 416 00:18:18,670 --> 00:18:24,080 Torej imamo eno, navesti svoje ime s pomočjo printf; dva, poziv k GetString, 417 00:18:24,080 --> 00:18:28,060 sledila uvrstitev v spremenljivka imenovan, niz s, ali imenovana s; 418 00:18:28,060 --> 00:18:31,260 nato pa še poziv, printf, vendar tokrat z dvema vhodoma. 419 00:18:31,260 --> 00:18:33,646 >> Torej smo že storili stanje vaše ime, ali bolje, smo jih 420 00:18:33,646 --> 00:18:34,770 že naredili printf klic. 421 00:18:34,770 --> 00:18:38,960 Torej bom napisal, svoje ime. 422 00:18:38,960 --> 00:18:42,089 In tako, kaj bom pass, printf, vsak trenutek, 423 00:18:42,089 --> 00:18:43,005 je preprosto, to. 424 00:18:43,005 --> 00:18:47,760 Torej, če želite, da gredo naprej in pripraviti to na zaslonu, da je vaš prispevek danes. 425 00:18:47,760 --> 00:18:48,260 V redu. 426 00:18:48,260 --> 00:18:51,160 In pozabi niz, imamo zdaj naša lastna linija kodo tukaj. 427 00:18:51,160 --> 00:18:54,470 Torej, GetString, moramo dejansko klic, GetString. 428 00:18:54,470 --> 00:18:57,920 Torej je vaš cilj v življenju je le sprehod ven v orkestru, če bi lahko, 429 00:18:57,920 --> 00:18:58,980 in dobili ime nekoga. 430 00:18:58,980 --> 00:19:00,860 Ampak kaj je vam dajejo nekaj, da ga na. 431 00:19:00,860 --> 00:19:02,908 Če želite, pojdite naprej in dobili niz, 432 00:19:02,908 --> 00:19:05,241 dobil ime nekoga o tem kos papirja, če bi lahko. 433 00:19:05,241 --> 00:19:12,940 434 00:19:12,940 --> 00:19:13,530 >> V redu. 435 00:19:13,530 --> 00:19:15,250 In bomo videli, v samo nekaj trenutkov, čigar ime smo dobili. 436 00:19:15,250 --> 00:19:17,630 Medtem, kaj bom imajo pripravljen, je prazno kos 437 00:19:17,630 --> 00:19:21,340 iz papirja, v katerem bom za shranjevanje karkoli vrednost je 438 00:19:21,340 --> 00:19:25,752 je, da GetString se vrača k meni, I, pri čemer je niz spremenljivka imenuje, y. 439 00:19:25,752 --> 00:19:26,252 V redu. 440 00:19:26,252 --> 00:19:27,293 Torej, kaj imaš tukaj? 441 00:19:27,293 --> 00:19:27,950 Nik. 442 00:19:27,950 --> 00:19:28,450 V redu. 443 00:19:28,450 --> 00:19:30,910 Torej imamo tu ime Nik je. 444 00:19:30,910 --> 00:19:33,750 Torej, to je tisto, kar dobesedno je bil vrnjen 445 00:19:33,750 --> 00:19:35,810 z mano, tako rekoč s GetString. 446 00:19:35,810 --> 00:19:38,720 >> I, zdaj bom izvršiti levi strani 447 00:19:38,720 --> 00:19:43,440 tega izraza, kjer sem preprosto prepišite, za današnje namene, Nik. 448 00:19:43,440 --> 00:19:46,470 Torej, zdaj, imam spremenljivko pozval, s, shranjevanje ime Nik je. 449 00:19:46,470 --> 00:19:49,520 Sem že prevzel printf, prejšnji argument. 450 00:19:49,520 --> 00:19:52,800 Toda v našem tretji in zadnji vrstici kodo, sem dejansko moral ročno printf 451 00:19:52,800 --> 00:19:58,500 nekaj malo different-- "Pozdravljeni,% s" poševnica nazaj n. 452 00:19:58,500 --> 00:20:01,510 >> In tako se zadnja vrstica grem da send-- zadnje, kar me 453 00:20:01,510 --> 00:20:03,060 dogaja zapisati zdaj, je to. 454 00:20:03,060 --> 00:20:06,310 Torej dve vrstic kode, ali namesto zadnji vrstici kode, 455 00:20:06,310 --> 00:20:10,690 poziva k dvema inputs-- ena je ta, in drugič, to. 456 00:20:10,690 --> 00:20:13,330 Torej, če je naš printf funkcija lahko zdaj ti kot vhod, 457 00:20:13,330 --> 00:20:16,000 Naj počistite zaslon za vas. 458 00:20:16,000 --> 00:20:17,250 No, lahko greš dejansko naprej. 459 00:20:17,250 --> 00:20:19,333 Bomo pusti gor, ker je na istem programu. 460 00:20:19,333 --> 00:20:21,760 461 00:20:21,760 --> 00:20:27,380 Morali bi videti, zdravo, Nik. 462 00:20:27,380 --> 00:20:27,880 V redu. 463 00:20:27,880 --> 00:20:29,670 Torej, to je bilo kar nekaj obroče za skok skozi, samo 464 00:20:29,670 --> 00:20:31,620 pisati, navesti vaš ime, in zdravo, Nik. 465 00:20:31,620 --> 00:20:37,210 Toda ta preprosta ideja pošiljanjem sporočil, vstopnega prehoda in izhodne sprejemanja, 466 00:20:37,210 --> 00:20:40,430 je točno model, da bomo imeli za celo najbolj kompleksnih funkcij. 467 00:20:40,430 --> 00:20:41,804 Torej, hvala ti za vaju. 468 00:20:41,804 --> 00:20:43,730 Imamo lep stres kroglični tukaj za vas. 469 00:20:43,730 --> 00:20:48,890 In hvala, da naši GetString in printf prostovoljci podobni. 470 00:20:48,890 --> 00:20:49,551 Hvala. 471 00:20:49,551 --> 00:20:50,050 V redu. 472 00:20:50,050 --> 00:20:50,966 Hvala za vaju. 473 00:20:50,966 --> 00:20:56,640 474 00:20:56,640 --> 00:21:00,430 >> Tako smo se pogovarjali o doslej, predvsem o strune. 475 00:21:00,430 --> 00:21:06,550 In se izkaže, da je C lahko dejansko razumeti nekaj različnih vrst podatkov. 476 00:21:06,550 --> 00:21:08,860 Dejstvo je, vzemimo poglej v teh tukaj. 477 00:21:08,860 --> 00:21:12,490 Torej, C, in veliko jezikov, razumeti stvari imenovane znakov. 478 00:21:12,490 --> 00:21:16,852 Char je na splošno enojna bajt, ali osem bitov. 479 00:21:16,852 --> 00:21:19,810 In to pomeni enojno značaj, kot črko A ali kapitala 480 00:21:19,810 --> 00:21:21,990 črka A, ali malo črko A, ali klicaj, 481 00:21:21,990 --> 00:21:25,440 ali kateri koli znakov, ki jih lahko vnesete na vaša tipkovnica, včasih celo več. 482 00:21:25,440 --> 00:21:26,795 Prav tako se zgodi, da vidite, plava. 483 00:21:26,795 --> 00:21:31,160 Plovec je, splošno je 32-bitna vrednost, ali štiri bajte 484 00:21:31,160 --> 00:21:33,660 ker spet en bajt je osem bitov. 485 00:21:33,660 --> 00:21:36,675 >> Torej Plovec je plavajoča vrednost točke, nekaj z decimalno vejico. 486 00:21:36,675 --> 00:21:38,550 In res, da je kaj Film je govoril 487 00:21:38,550 --> 00:21:42,240 o tem, kdaj sta govorila o plavajoče vrednosti kažejo nekateri določeno število bitov 488 00:21:42,240 --> 00:21:43,940 ki se uporablja, da predstavlja realno število. 489 00:21:43,940 --> 00:21:45,740 Ampak tam je tudi stvari, ki se imenuje podvoji. 490 00:21:45,740 --> 00:21:47,860 Ti obstajajo v Java, če ste sprejeti APC, 491 00:21:47,860 --> 00:21:51,540 in dvojna, kot že samo ime srečo pove, je dvakrat tako velika kot likvidna sredstva. 492 00:21:51,540 --> 00:21:54,540 To je še vedno realno število, to samo ima več bitov 493 00:21:54,540 --> 00:21:58,390 s katerim bi se še bolj natančno, ali da se shrani tudi večje število. 494 00:21:58,390 --> 00:21:58,890 int je enostavno. 495 00:21:58,890 --> 00:22:00,181 Pogovarjala sva se o tem zadnjem času. 496 00:22:00,181 --> 00:22:01,160 To je samo število. 497 00:22:01,160 --> 00:22:03,980 In to je običajno 32 bitov ali štiri bajte. 498 00:22:03,980 --> 00:22:07,850 >> In tako, če imate, da vidimo zdaj, 32 bits-- in to smo storili v tednu 0, 499 00:22:07,850 --> 00:22:10,820 kdaj tako briefly-- če imate 32 bitov, kar je največja 500 00:22:10,820 --> 00:22:13,580 Številka, ki jo lahko predstavlja kot celo število? 501 00:22:13,580 --> 00:22:16,080 Dati ali vzeti? 502 00:22:16,080 --> 00:22:18,380 To je kot 4 milijarde, in to je samo, če smo 503 00:22:18,380 --> 00:22:20,690 predstavlja samo pozitivne številke. 504 00:22:20,690 --> 00:22:23,930 Če imate 32 bitov, in želite predstavljajo negativne številke, kot tudi, 505 00:22:23,930 --> 00:22:27,100 vaše območje je v bistvu negativna 2 milijardi za pozitiven 2 milijardi. 506 00:22:27,100 --> 00:22:29,250 Ampak na splošno, bomo začetek pri 0 gredo do 4 milijarde. 507 00:22:29,250 --> 00:22:32,400 >> Nimate, da natančno vedo, ampak bomo lahko videli, v bistvu, če sem 508 00:22:32,400 --> 00:22:36,400 odpirajo malo kalkulator, tukaj. 509 00:22:36,400 --> 00:22:41,070 Jaz lahko naredim 2 na 32, in to je točno, kako velik, 510 00:22:41,070 --> 00:22:43,190 koliko vrednosti lahko predstavljajo z 32 bitov. 511 00:22:43,190 --> 00:22:44,442 In to je približno 4 milijarde. 512 00:22:44,442 --> 00:22:46,900 Zato bomo še naprej videli to številko v nekaj različnih krajih. 513 00:22:46,900 --> 00:22:48,890 Ampak, če boste potrebovali več številke, kot je, 514 00:22:48,890 --> 00:22:51,670 Izkazalo se tam nekaj, kar se imenuje dolgo dolgo. 515 00:22:51,670 --> 00:22:54,005 In dolgo dolgo je na splošno 64 bitov, ki 516 00:22:54,005 --> 00:22:56,380 pomeni, da je red velikosti celo večji od notr. 517 00:22:56,380 --> 00:22:59,510 >> Tako da ne morem niti izgovoriti največji Številka, ki jo lahko predstavlja, 518 00:22:59,510 --> 00:23:01,340 vendar je opazno večji. 519 00:23:01,340 --> 00:23:05,190 Zdaj kot prahi, zgodovinsko, če int je 32 bitov, 520 00:23:05,190 --> 00:23:12,780 in dolgo časa je 64 bitov, kako velik je dolg, ni dolgo časa? 521 00:23:12,780 --> 00:23:16,500 522 00:23:16,500 --> 00:23:20,330 Mislili bi, da je to več kot int vendar morda manj dolga kot dolgo dolgo, 523 00:23:20,330 --> 00:23:21,400 vendar je dejansko odvisna. 524 00:23:21,400 --> 00:23:23,400 >> In tako se je izkazalo, eno od frustracij preveč, 525 00:23:23,400 --> 00:23:26,830 s pisno kodo, na določenih sistemih, je, da niso vsi od teh podatkovnih tipov 526 00:23:26,830 --> 00:23:28,440 imajo vnaprej določenih vrednosti. 527 00:23:28,440 --> 00:23:29,771 Včasih je to veliko bitov. 528 00:23:29,771 --> 00:23:31,020 Včasih je to, da je veliko bitov. 529 00:23:31,020 --> 00:23:32,750 Torej si dejansko morali vedeti, včasih, kakšna strojna oprema 530 00:23:32,750 --> 00:23:34,083 delate svojo programsko opremo. 531 00:23:34,083 --> 00:23:36,960 K sreči, drugi jeziki in druge vrste podatkov, ki zdaj obstajajo, 532 00:23:36,960 --> 00:23:38,400 vam omogočajo, da se bolj natančno. 533 00:23:38,400 --> 00:23:41,220 No, bomo videli niz, in videli smo bool, preveč, 534 00:23:41,220 --> 00:23:43,960 vendar se izkaže, tiste pridejo samo s knjižnico CS50. 535 00:23:43,960 --> 00:23:46,240 Torej so tisti, ki niso zgrajene v C namesto Tisti, 536 00:23:46,240 --> 00:23:49,340 pridejo v tej datoteki CS50.h, da bomo na koncu 537 00:23:49,340 --> 00:23:51,831 olupimo nazaj plasti. 538 00:23:51,831 --> 00:23:53,830 Ampak za zdaj, oni so samo dodatne vrste podatkov. 539 00:23:53,830 --> 00:23:57,060 Bool je resničen ali neresničen, in Niz je zaporedje znakov, 540 00:23:57,060 --> 00:23:57,970 kot besede. 541 00:23:57,970 --> 00:24:01,690 Zdaj printf, smo videli, ima ograde,% s je ena. 542 00:24:01,690 --> 00:24:05,430 In boste morda lahko, da se zdaj, sklepamo iz teh drugih primerov, kako 543 00:24:05,430 --> 00:24:07,720 bi lahko imeli ogrado za različne vrste podatkov. 544 00:24:07,720 --> 00:24:11,150 Na primer, si ugibati, če vas želeli natisniti eno samo char uporabo 545 00:24:11,150 --> 00:24:15,270 printf, ograda je verjetno% c. 546 00:24:15,270 --> 00:24:19,650 In če želite natisniti celo z ograde,% i. 547 00:24:19,650 --> 00:24:25,150 % LLD je dolgo dolgo decimalno vrednost, vendar dolgo dolgo, tako da preslika na to. 548 00:24:25,150 --> 00:24:28,640 In potem je% f za plavajoče Vrednost točke ali za dvojno, 549 00:24:28,640 --> 00:24:31,270 tako da včasih oni ponovno uporabiti v različnih kontekstih. 550 00:24:31,270 --> 00:24:33,350 Tako, da bomo videli in uporabili nekateri od tistih, v daljšem časovnem obdobju. 551 00:24:33,350 --> 00:24:36,420 In printf in druge funkcije tudi zasilni izhod sekvence podporo drugim " 552 00:24:36,420 --> 00:24:38,080 in včasih so to potrebno. 553 00:24:38,080 --> 00:24:39,770 Torej poševnica nazaj n je nova linija. 554 00:24:39,770 --> 00:24:42,886 Poševnica nazaj t, pa nikomur želijo, da bi zabodel? 555 00:24:42,886 --> 00:24:43,760 PUBLIKA DRŽAVA: Tab. 556 00:24:43,760 --> 00:24:44,551 DAVID J Malan: Tab. 557 00:24:44,551 --> 00:24:46,810 Torej, če ste dejansko želijo natisniti zavihek, ne 558 00:24:46,810 --> 00:24:49,940 fiksno število mest, ampak dejansko Zavihek znak, da ne hit vaš, 559 00:24:49,940 --> 00:24:53,490 zanka, tipka na tipkovnici, na splošno, vi dejansko ne poševnica nazaj t. 560 00:24:53,490 --> 00:24:57,750 Poševnica nazaj dvojni narekovaj, zakaj bi jaz kdaj želeli, da je? 561 00:24:57,750 --> 00:24:58,250 Prav? 562 00:24:58,250 --> 00:25:00,417 Zakaj ne morem samo vtipkajte dvojni narekovaj na moji tipkovnici? 563 00:25:00,417 --> 00:25:02,124 OBČINSTVO DRŽAVE: Zato, ker v nasprotnem primeru je 564 00:25:02,124 --> 00:25:04,830 dogaja, da mislim, da je konec o radi tiskalno [? besedilo. ?] 565 00:25:04,830 --> 00:25:05,420 >> DAVID J Malan: Točno tako. 566 00:25:05,420 --> 00:25:07,211 Ne pozabite, da z našimi printf primeri, ko smo 567 00:25:07,211 --> 00:25:10,075 so bili kratki, da printf na vhodu, na levi strani tega vhodnega niza 568 00:25:10,075 --> 00:25:12,950 in o pravici do tega vnosa pomlad, seveda, je bil dvojni narekovaj. 569 00:25:12,950 --> 00:25:16,270 Če ima svoj vhod dvojna citat v sredini, da se 570 00:25:16,270 --> 00:25:18,920 računalnik morda potencialno zmedeni, kot da, 571 00:25:18,920 --> 00:25:20,760 Ali to dvojno citat sodijo v sredini? 572 00:25:20,760 --> 00:25:22,150 Ali pripada z levega? 573 00:25:22,150 --> 00:25:23,566 Ali pripada s pravega? 574 00:25:23,566 --> 00:25:26,780 In tako, če želite, da bi bilo super Jasno, vam poševnica nazaj dvojno ponudbo, 575 00:25:26,780 --> 00:25:30,480 tako da to je pobegnil, tako rekoč, in to ni združevali za nekaj drugega. 576 00:25:30,480 --> 00:25:34,400 In tu je še nekaj drugih tukaj, poševnica nazaj r, enoposteljne citati, 0, 577 00:25:34,400 --> 00:25:36,510 da bomo videli v daljšem časovnem obdobju, kot tudi. 578 00:25:36,510 --> 00:25:37,760 In zdaj, kaj o funkcijah? 579 00:25:37,760 --> 00:25:41,630 >> Torej ukrepov, ki jih lahko sprejmejo doslej v tem jeziku, C, dobro, smo videli, 580 00:25:41,630 --> 00:25:44,320 printf, seveda, in vse od drugih na zaslonu, 581 00:25:44,320 --> 00:25:47,140 tukaj, da bomo uporabili za samo Seveda je prvih nekaj tednov, 582 00:25:47,140 --> 00:25:48,485 pridejo, ko knjižnico CS50. 583 00:25:48,485 --> 00:25:51,850 In bi bilo veliko lažje, v C, bi dejansko dobili uporabnik vložek. 584 00:25:51,850 --> 00:25:54,200 Izkazalo se je, da je v C, in odkrito v nekaj jezikih, 585 00:25:54,200 --> 00:25:57,450 to je resnično bolečino v vratu storiti nekaj preprostega, kot je hitro uporabnika 586 00:25:57,450 --> 00:26:01,310 za tipkovnico, na svojem vhodu. 587 00:26:01,310 --> 00:26:03,240 In zato te naloge lažje. 588 00:26:03,240 --> 00:26:05,472 >> In ima tudi napako preverjanje v celotnem, 589 00:26:05,472 --> 00:26:07,180 tako da, če vas odpoklic v sredo, smo 590 00:26:07,180 --> 00:26:09,740 Videl, poskusite znova, opozorilo, ko nisem sodelovala, 591 00:26:09,740 --> 00:26:11,700 in sem tipkal besedo, namesto številke? 592 00:26:11,700 --> 00:26:15,402 Naredili smo dvigovanje težkih zgodaj o zagotoviti uporabnik sodeluje. 593 00:26:15,402 --> 00:26:17,860 Ampak to so samo trening kolesa, da bomo sčasoma, 594 00:26:17,860 --> 00:26:19,640 in hitro, vzlet. 595 00:26:19,640 --> 00:26:22,630 >> Torej, da povzamem, potem, kaj je na hitro pogledamo, 596 00:26:22,630 --> 00:26:26,620 podobno kot smo to storili z nič, na nekateri kanonske konstrukti v C. 597 00:26:26,620 --> 00:26:28,580 To pomeni, da, sortiranje o, je tornado turnejo, 598 00:26:28,580 --> 00:26:30,990 samo zato, da imate sklic in da ste videli stvari na prvi. 599 00:26:30,990 --> 00:26:34,100 Ampak potem bomo pogledali dejansko kodiranje uporabljati nekatere od teh gradnikov. 600 00:26:34,100 --> 00:26:36,710 Toliko kot v nič, ko smo izjave všeč, 601 00:26:36,710 --> 00:26:41,570 reči, ali počakati, v C pa imamo funkcije, kot tudi, kot printf. 602 00:26:41,570 --> 00:26:45,350 >> Če želimo izraziti pogoj v C, je to podobno, v duhu, 603 00:26:45,350 --> 00:26:47,840 s tem puzzle kos, ki Izgledalo je ta v nič. 604 00:26:47,840 --> 00:26:49,850 Toda namesto, smo dobesedno samo napisati, če. 605 00:26:49,850 --> 00:26:51,830 In potem, v oklepaju, postavimo pogoj, 606 00:26:51,830 --> 00:26:54,807 če je ta pogoj, kar bomo klic, spet, boolean izraz. 607 00:26:54,807 --> 00:26:56,390 In spet, to je nekako psevdokoda. 608 00:26:56,390 --> 00:26:58,830 In v resnici je // je komentar. 609 00:26:58,830 --> 00:27:00,550 To je le nekaj angleških besed k sebi. 610 00:27:00,550 --> 00:27:03,000 Toda to je splošno Ustroj, če jih stanju. 611 00:27:03,000 --> 00:27:05,220 Ampak bomo videli beton Primeri v samo trenutek. 612 00:27:05,220 --> 00:27:07,960 >> Če želite imeti dvosmerni odcepu, 613 00:27:07,960 --> 00:27:11,740 podobno kot smo to storili z našim prostovoljcem na Sreda, lahko imate, else if. 614 00:27:11,740 --> 00:27:16,020 In če želite imeti tretja in končno stanje, ali pa privzeto stanje, 615 00:27:16,020 --> 00:27:19,006 imate lahko le za drugega bloka, tam. 616 00:27:19,006 --> 00:27:21,880 In podobno, z matematičnih izrazov, lahko, in jih skupaj. 617 00:27:21,880 --> 00:27:24,296 In smo videli v sredo, da to ni ena ampersand, 618 00:27:24,296 --> 00:27:28,220 to je dva, iz razlogov, na nižji ravni, da bomo sčasoma videli in se igral z. 619 00:27:28,220 --> 00:27:30,410 Ali-ing stvari skupaj je 2 navpične črte. 620 00:27:30,410 --> 00:27:32,240 Na tipkovnici ZDA, ta Na splošno je ključ 621 00:27:32,240 --> 00:27:35,730 s tipko Shift zgoraj vaš tipko Enter ali Return ključ. 622 00:27:35,730 --> 00:27:38,620 >> Potem je tu še te stvari, da bomo uporabili morda enkrat ali dvakrat. 623 00:27:38,620 --> 00:27:42,570 So funkcionalno enakovreden kaj lahko narediš z an, če else if, 624 00:27:42,570 --> 00:27:44,950 else if drugega, gradnjo, ampak oni imenujejo stikalo. 625 00:27:44,950 --> 00:27:48,020 Izgledajo zelo različni, vendar bomo glej v nekaterih naših distribucije kode, 626 00:27:48,020 --> 00:27:51,890 za prihodnji problem niz, najverjetneje, da je včasih samo lepša 627 00:27:51,890 --> 00:27:54,060 način izražanja celoto kup pogojev, 628 00:27:54,060 --> 00:27:57,590 brez veliko zavitimi oklepaji in veliko oklepaji in vdolbine. 629 00:27:57,590 --> 00:28:01,910 Vendar pa nam ni več moči, kot smo že. 630 00:28:01,910 --> 00:28:02,550 In zdaj zank. 631 00:28:02,550 --> 00:28:05,020 In tale, bomo pogledali na malo počasneje. 632 00:28:05,020 --> 00:28:08,470 Potem pa bomo začeli uporabljati teh, še posebej za tiste, ki že poznajo. 633 00:28:08,470 --> 00:28:13,830 To je kanonično način, če neverjetno Skrivnosten način, da napišete zanka v C 634 00:28:13,830 --> 00:28:15,896 >> Sedaj je zanka v Scratch precej preprosta. 635 00:28:15,896 --> 00:28:17,020 Imate, večno, blok. 636 00:28:17,020 --> 00:28:19,760 Imate, ponavljam, blok z samo številko morate vnesti. 637 00:28:19,760 --> 00:28:22,220 In z, za zanko, lahko izvajati oba od teh idej, 638 00:28:22,220 --> 00:28:23,595 vendar je malo bolj tehnično. 639 00:28:23,595 --> 00:28:25,994 Ampak odkrito povedano, je tudi relativno enostavna. 640 00:28:25,994 --> 00:28:28,160 Ko veš vrstni red operacije, ki jih dobesedno 641 00:28:28,160 --> 00:28:30,910 so le, da bo vtič v vrednotah in povedal, računalnik, kaj storiti. 642 00:28:30,910 --> 00:28:32,800 Torej, tukaj je primer. 643 00:28:32,800 --> 00:28:38,040 To je zanka, da je precej preprosto, šteje od eno številko navzgor 644 00:28:38,040 --> 00:28:40,187 skozi drugo. 645 00:28:40,187 --> 00:28:42,020 In samo z pogledoval na to, tudi če imate 646 00:28:42,020 --> 00:28:44,660 brez predhodne izkušnje z ta jezik, kakšna številka 647 00:28:44,660 --> 00:28:46,920 se je verjetno začel meriti na? 648 00:28:46,920 --> 00:28:47,730 OK, 0. 649 00:28:47,730 --> 00:28:50,240 In jaz sem ugibati, da je zato, ker vas videli, da je int in i, 650 00:28:50,240 --> 00:28:51,073 ki je spremenljiva. 651 00:28:51,073 --> 00:28:52,390 To je inicializiran na 0. 652 00:28:52,390 --> 00:28:55,670 >> In kasneje, izgleda smo mimo printf, vrednost. 653 00:28:55,670 --> 00:28:58,000 In v resnici, sem se malo zatipkali tukaj. 654 00:28:58,000 --> 00:28:59,850 Ampak, da enostavno določi. 655 00:28:59,850 --> 00:29:02,390 Naj dodam, sem tukaj. 656 00:29:02,390 --> 00:29:06,150 Zdaj imamo printf počutje opravili to ograde vrednost. 657 00:29:06,150 --> 00:29:08,299 In kaj se dogaja, da računajo skozi? 658 00:29:08,299 --> 00:29:08,840 OBČINSTVO: 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 Torej, 50, se na prvi pogled zdi prav. 663 00:29:13,340 --> 00:29:16,990 Ampak, da se je izkazalo, se bo naš pogoj, da bomo sproti preverja. 664 00:29:16,990 --> 00:29:21,740 In bomo enkrat ustaviti i ni več manj kot 50. 665 00:29:21,740 --> 00:29:24,920 Torej, ta zanka, nasprotno, naj bi izvršiti, dokler i je manj kot 50. 666 00:29:24,920 --> 00:29:28,891 Ampak takoj, ko postane 50, ali 51, ali še huje, da bi moral samodejno ustavi. 667 00:29:28,891 --> 00:29:29,390 V redu. 668 00:29:29,390 --> 00:29:31,200 >> Torej, kaj se dejansko dogaja tukaj? 669 00:29:31,200 --> 00:29:33,160 Torej, to je vrstni red operacije za zanko. 670 00:29:33,160 --> 00:29:35,440 Ena, imate ti inicializacijo. 671 00:29:35,440 --> 00:29:38,264 To rumena poudarjeno chunk kode se najprej izvede, 672 00:29:38,264 --> 00:29:40,930 in ima za posledico, da na Sreda, si verjetno predstavljate. 673 00:29:40,930 --> 00:29:45,500 Ustvarja spremenljivka sem poklical in jo trgovin v tej spremenljivki vrednost 0. 674 00:29:45,500 --> 00:29:47,560 Torej, jaz je 0 na tej točki v zgodbi. 675 00:29:47,560 --> 00:29:49,680 >> Naslednja stvar, ki zgodi v tem konstrukta, 676 00:29:49,680 --> 00:29:51,540 je, da postane pogoj preveriti. 677 00:29:51,540 --> 00:29:54,325 Tako sem preveriti takoj, je i manj kot 50? 678 00:29:54,325 --> 00:29:57,700 In seveda, je odgovor Za zdaj je gotovo, da. 679 00:29:57,700 --> 00:30:00,710 Da, ker i je 0, in ki je gotovo manj kot 50. 680 00:30:00,710 --> 00:30:03,866 Potem, kaj se zgodi, da ta vrstica kode dobi usmrčen. 681 00:30:03,866 --> 00:30:06,740 In v resnici, če je multipla vrstic kode v teh zavitih oklepajev, 682 00:30:06,740 --> 00:30:09,020 vsi se izvede ena za drugo. 683 00:30:09,020 --> 00:30:11,450 >> In v smislu tukaj, je očitno, da natisnete 684 00:30:11,450 --> 00:30:15,365 število i, ki se bo biti 0 in 1 in nato 2. 685 00:30:15,365 --> 00:30:15,865 Ampak zakaj? 686 00:30:15,865 --> 00:30:17,410 Zakaj se to poveča? 687 00:30:17,410 --> 00:30:20,680 No, četrta stvar, ki se zgodi, da te skladnje 688 00:30:20,680 --> 00:30:22,610 dobi izvrši, po podpičjem. 689 00:30:22,610 --> 00:30:27,506 i ++ je okrajšava način rekel; vzemite vrednost I, in dodamo 1 do njega; 690 00:30:27,506 --> 00:30:30,380 in potem naslednji čas okrog dodamo 1 nanjo; in naslednjič, ko okoli, 691 00:30:30,380 --> 00:30:31,330 dodamo 1 do njega. 692 00:30:31,330 --> 00:30:33,640 >> Torej, če smo vedno dogaja, kaj se bo zgodilo 693 00:30:33,640 --> 00:30:35,890 naslednji pa je ne bom, da inicializacijo i nikoli več. 694 00:30:35,890 --> 00:30:38,290 Če sem ohranil inicializacijo i 0, ta primer 695 00:30:38,290 --> 00:30:41,110 Nikoli ne bi končala, ker i bi se zatakne na 0. 696 00:30:41,110 --> 00:30:43,870 Toda kaj se bo zgodilo, je da se bo stanje preveri, 697 00:30:43,870 --> 00:30:54,280 vrstica kode bodo dobili izvršen, i se poveča, 698 00:30:54,280 --> 00:30:56,970 Stanje se bo preverjala, koda bo dobil usmrčen. 699 00:30:56,970 --> 00:30:59,790 In to spet vodi kolesarjenje, in znova in znova, 700 00:30:59,790 --> 00:31:03,340 Dokler nisem ++ inducira vrednost 50. 701 00:31:03,340 --> 00:31:05,870 >> Pogoj pa pravi, je 50 manj kot 50? 702 00:31:05,870 --> 00:31:09,360 Odgovor je seveda ne, in tako da je celotna koda ustavi izvršitve. 703 00:31:09,360 --> 00:31:13,020 In če imate več kodo na ekranu spodaj navzdol, da je tisto, kar se bo zgodilo. 704 00:31:13,020 --> 00:31:17,530 To izskoči teh zavitimi oklepaji in še natisniti več po tem. 705 00:31:17,530 --> 00:31:20,470 >> Torej šala zdaj, od foxtrot, da boste morda zdaj razumete. 706 00:31:20,470 --> 00:31:30,810 707 00:31:30,810 --> 00:31:31,560 To je vedno smešno. 708 00:31:31,560 --> 00:31:34,110 To je tako kot smehlja vrsta pronica, 709 00:31:34,110 --> 00:31:38,370 in potem se zavedaš, da ne bi smeli se smejali humor, kot je ta. 710 00:31:38,370 --> 00:31:41,160 Vendar pa obstaja nekaj takeaway tukaj, pedagoško, preveč. 711 00:31:41,160 --> 00:31:43,577 Tako se izkaže, da sem manjkajoči košček sintakse, 712 00:31:43,577 --> 00:31:45,410 ali Foxtrot je manjka kos skladnje tukaj. 713 00:31:45,410 --> 00:31:48,076 Kaj manjka, da smo imeli V vsakem drugem primeru, torej daleč? 714 00:31:48,076 --> 00:31:51,599 715 00:31:51,599 --> 00:31:53,390 Return, je tam, tako to je nekaj drugega, 716 00:31:53,390 --> 00:31:54,440 da se bomo vrnili na že dolgo. 717 00:31:54,440 --> 00:31:55,398 Kaj manjka, čeprav? 718 00:31:55,398 --> 00:31:55,908 Ja. 719 00:31:55,908 --> 00:31:58,150 >> PUBLIKA članica: inicializacija [neslišno]. 720 00:31:58,150 --> 00:31:58,470 >> DAVID J Malan: OK. 721 00:31:58,470 --> 00:31:58,980 Torej, ja. 722 00:31:58,980 --> 00:32:03,210 Torej, dejansko, to is-- No, in je število inicializiran 723 00:32:03,210 --> 00:32:05,470 tam zgoraj, ali bolje, prijaviti do zgoraj. 724 00:32:05,470 --> 00:32:06,960 Torej je to še en način za to početje. 725 00:32:06,960 --> 00:32:08,685 Vendar ne v eni liniji, da je veljavna, čeprav. 726 00:32:08,685 --> 00:32:09,310 Kaj pa tukaj? 727 00:32:09,310 --> 00:32:10,196 >> PUBLIKA DRŽAVA: Je to so zaviti oklepaji? 728 00:32:10,196 --> 00:32:10,640 >> DAVID J Malan: Ja. 729 00:32:10,640 --> 00:32:12,080 Torej zaviti oklepaji manjkajo. 730 00:32:12,080 --> 00:32:15,495 Toda ta koda, mislim, da njihove kreditne, je pravzaprav, skladenjsko veljaven. 731 00:32:15,495 --> 00:32:17,610 Izkazalo se je, ne boste Potrebujemo zavite oklepaje 732 00:32:17,610 --> 00:32:21,691 Če imate le eno vrstico kode, ki si želeli izvršiti znotraj zanke. 733 00:32:21,691 --> 00:32:24,190 Zdaj smo vedno, v razredu in v vse naše distribucije kode, 734 00:32:24,190 --> 00:32:26,730 vključujejo zavite oklepaje vseeno, samo zaradi večje preglednosti. 735 00:32:26,730 --> 00:32:29,010 Ampak zavedati, da je v učbenikih in spletne primeri, 736 00:32:29,010 --> 00:32:31,300 lahko zelo dobro videti kodrasti naramnice manjka kdaj. 737 00:32:31,300 --> 00:32:34,850 In to je v redu, če kaj ste so zamaknjeni in so namenjeni 738 00:32:34,850 --> 00:32:38,650 je samo ena vrstica kode, in ne več vrstic kode, potencialno. 739 00:32:38,650 --> 00:32:39,150 V redu. 740 00:32:39,150 --> 00:32:44,500 Torej, povezano z vprašanjem nenatančnost, je vprašanje preliva, 741 00:32:44,500 --> 00:32:48,560 v smislu, da, podobno, ne cela števila imajo omejitve, ki so jim 742 00:32:48,560 --> 00:32:49,970 tako kot plavajočo vejico? 743 00:32:49,970 --> 00:32:53,120 V svetu s plavajočo vejico vrednote, smo lahko tako natančno le, 744 00:32:53,120 --> 00:32:55,710 nakar, včasih slabe stvari se lahko zgodi, 745 00:32:55,710 --> 00:32:57,760 in naši programi so lahko vozičkom in napake. 746 00:32:57,760 --> 00:33:00,050 Zdaj z števil, lahko naletijo na težave. 747 00:33:00,050 --> 00:33:03,820 Sedaj celo nima decimalno vejico ali številke po njej. 748 00:33:03,820 --> 00:33:07,130 To je samo naravno število, običajno. 749 00:33:07,130 --> 00:33:09,430 Torej, kaj bi lahko šlo narobe pri notr? 750 00:33:09,430 --> 00:33:12,210 Če sem z uporabo int k Fortuna kaj bi lahko šlo narobe? 751 00:33:12,210 --> 00:33:13,230 Zdi se veliko preprostejše. 752 00:33:13,230 --> 00:33:13,873 Ja. 753 00:33:13,873 --> 00:33:16,240 >> PUBLIKA DRŽAVA: Če Število dobi [neslišno] 754 00:33:16,240 --> 00:33:17,073 >> DAVID J Malan: Ja. 755 00:33:17,073 --> 00:33:20,820 Kaj pa, če šteješ tako visoko, da vas ne more izraziti, da je res veliko število. 756 00:33:20,820 --> 00:33:21,320 Prav? 757 00:33:21,320 --> 00:33:23,910 Na neki točki, boste presega meje 758 00:33:23,910 --> 00:33:27,077 za 32-bitne vrednosti ali 64-bitna vrednost. 759 00:33:27,077 --> 00:33:29,410 Zdaj pa še enkrat, nisem prepričan, kako izgovoriti 64-bitna vrednost, 760 00:33:29,410 --> 00:33:32,230 vendar vem, da s 32-bitno celo število, največja vrednost, ki jo lahko, 761 00:33:32,230 --> 00:33:35,490 če je edina pozitivna vrednosti, je približno 4 milijarde. 762 00:33:35,490 --> 00:33:39,000 Torej, če sem poskusil, da prešteje do 5 milijard EUR, kaj se bo zgodilo. 763 00:33:39,000 --> 00:33:41,050 Ampak poglejmo, kaj v resnici lahko zgodi. 764 00:33:41,050 --> 00:33:44,570 V svetu celo overflow, kjer ste, v smislu, 765 00:33:44,570 --> 00:33:48,270 overflow zmogljivostjo, celo, kaj se lahko zgodi? 766 00:33:48,270 --> 00:33:51,190 >> Torej, tukaj je binarno število, je Atavizam 0. 767 00:33:51,190 --> 00:33:54,630 To je vse 1 je, in ograd tam, so pooblastila 2, 768 00:33:54,630 --> 00:33:55,980 tako da je to binarno. 769 00:33:55,980 --> 00:33:59,416 To so torej 8, 1 bitov na zaslonu. 770 00:33:59,416 --> 00:34:01,290 In če se spomnimo ali hitro izračunate, 771 00:34:01,290 --> 00:34:06,074 kakšno vrednost, ki je zastopana tukaj s temi osmimi 1 bitov? 772 00:34:06,074 --> 00:34:06,950 255. 773 00:34:06,950 --> 00:34:09,260 In tudi če niste bili povsem prepričani, iz matematike, lahko to storite ven. 774 00:34:09,260 --> 00:34:10,550 Ali si lahko nekako razuma skozi njo, 775 00:34:10,550 --> 00:34:12,633 počakajte malo, če sem kar predstavlja 8 bitno vrednost je, 776 00:34:12,633 --> 00:34:17,750 in imam 256 možnih vrednosti, vendar je prvi od katerih je 0, 777 00:34:17,750 --> 00:34:19,909 Jaz samo vem, da je Največja se bo 255, 778 00:34:19,909 --> 00:34:21,510 in to je tisto, kar bi ta bila. 779 00:34:21,510 --> 00:34:26,060 >> Tako, da sem poskušal dodati 1 do te vrednosti. 780 00:34:26,060 --> 00:34:28,750 Kaj bi vi storili v razredu šola pri dodajanju 1, in 781 00:34:28,750 --> 00:34:31,139 v resnici ne ustreza, ker morate nositi 1? 782 00:34:31,139 --> 00:34:34,380 Kaj je ta številka bo postati, ko boste dodali 1? 783 00:34:34,380 --> 00:34:37,030 To se dogaja, da postanejo 0. 784 00:34:37,030 --> 00:34:37,530 Prav? 785 00:34:37,530 --> 00:34:41,139 Ker če bi imeli bolj bits-- in bom poskusite, vrsta, tip je iz here-- 786 00:34:41,139 --> 00:34:44,710 če bi imeli več bitov, kar smo lahko tukaj storiti je dodati 1, 787 00:34:44,710 --> 00:34:47,370 in potem sva to dobili. 788 00:34:47,370 --> 00:34:48,739 Ops. 789 00:34:48,739 --> 00:34:52,250 Radi bi imeli 1 bit vso pot tja. 790 00:34:52,250 --> 00:34:55,530 >> Ampak, če je to končna vrednost, saj je samo 8 bitov, 791 00:34:55,530 --> 00:34:57,480 in da je vnaprej določena z računalnikom, 792 00:34:57,480 --> 00:34:59,370 da 1. je dejansko ni. 793 00:34:59,370 --> 00:35:00,980 Samo nekako pade s pečine. 794 00:35:00,980 --> 00:35:05,480 In tako, če boste dodali 1 do 255, kar vrednosti si očitno dobil? 795 00:35:05,480 --> 00:35:06,180 0. 796 00:35:06,180 --> 00:35:09,700 In tako številk po naključju, in morda nenamerno, 797 00:35:09,700 --> 00:35:12,040 končajo ovije okoli takole. 798 00:35:12,040 --> 00:35:14,079 Torej, kaj so lahko posledice tega? 799 00:35:14,079 --> 00:35:15,620 No, tam je nekaj različnih stvari. 800 00:35:15,620 --> 00:35:18,751 Torej ena, se je na koncu videti kot 0, nenamerno, 801 00:35:18,751 --> 00:35:20,750 vendar lahko nekako videti, tudi v realnem svetu, 802 00:35:20,750 --> 00:35:23,416 za boljše ali slabše, manifestacije te ideje o meji. 803 00:35:23,416 --> 00:35:26,630 Na primer, kdo od vas, ki kdaj igral Lego Star Wars, 804 00:35:26,630 --> 00:35:28,880 Ali kdo slučajno veste največje število kovancev 805 00:35:28,880 --> 00:35:32,032 lahko zberete v Lego Star Wars? 806 00:35:32,032 --> 00:35:35,640 Ugani, ki temelji na današnjih vodilnih vprašanj. 807 00:35:35,640 --> 00:35:39,140 To je večje od 256 ali 255. 808 00:35:39,140 --> 00:35:40,330 To je 4 milijarde. 809 00:35:40,330 --> 00:35:42,080 Tako se izkaže, in tam je nekaj people-- 810 00:35:42,080 --> 00:35:46,080 nekaj googling potrdili zadnji night-- gotten 4 milijarde zlatih kovancev, 811 00:35:46,080 --> 00:35:47,730 ali malenkosti, v Lego Star Wars. 812 00:35:47,730 --> 00:35:49,860 Čeprav je očitno, da je način okrasti igro, 813 00:35:49,860 --> 00:35:53,222 tam je bug ali funkcija, ki vam omogoča samo nabirali veliko in veliko točk. 814 00:35:53,222 --> 00:35:54,930 Toda največji možni vrednost, po 815 00:35:54,930 --> 00:35:58,360 na ta zaslon strel od nekoga I najti na spletu, je res, 4 milijarde. 816 00:35:58,360 --> 00:35:59,240 >> Zdaj, zakaj je to? 817 00:35:59,240 --> 00:36:03,040 To je natanko 4 milijarde, verjetno zato, ker je nekdo odločil, da 818 00:36:03,040 --> 00:36:05,500 ki je pisal to igro, da lahko počnejo 4 milijarde, 819 00:36:05,500 --> 00:36:07,340 nekaj, nekaj, nekaj, kot vrednosti sem dal gor 820 00:36:07,340 --> 00:36:10,256 s kalkulatorjem prej, vendar to je samo malo čistilo za ljudi 821 00:36:10,256 --> 00:36:12,610 torej največje število od coins-- ali žeblji, 822 00:36:12,610 --> 00:36:14,860 kot pravijo them-- da vas lahko zbirajo, je 4 milijarde. 823 00:36:14,860 --> 00:36:16,290 In tako, zakaj je to? 824 00:36:16,290 --> 00:36:20,310 Kako je LEGO igra izvajanje števec 825 00:36:20,310 --> 00:36:23,420 da je sledenja število kovancev imate? 826 00:36:23,420 --> 00:36:24,266 Oni uporabljate kaj? 827 00:36:24,266 --> 00:36:26,390 PUBLIKA DRŽAVA: Ustavi Računamo po 4 milijarde. 828 00:36:26,390 --> 00:36:27,720 DAVID J Malan: Ustavi Računamo po 4 milijarde, 829 00:36:27,720 --> 00:36:29,525 ki jo pomeni lahko sklepati, kot programer, 830 00:36:29,525 --> 00:36:31,960 da oni verjetno uporabljate 32-bitno celo število. 831 00:36:31,960 --> 00:36:35,380 Tako kot programer dobesedno le tipkajo, int, v svojem kodeksu, 832 00:36:35,380 --> 00:36:39,620 in da je tip spremenljivke, ki oni uporabljate za shranjevanje kode nekoga. 833 00:36:39,620 --> 00:36:42,230 Tako da je tudi drugi znaki tovrstnih omejitev. 834 00:36:42,230 --> 00:36:45,063 >> Torej nisem igral to game-- in sem bil branju o zgodovini 835 00:36:45,063 --> 00:36:48,470 potrditi kot much-- vendar v Izvirna različica civilizacije, kjer 836 00:36:48,470 --> 00:36:53,240 si očitno interakcijo z vsako druga in lahko vojno ali mir, 837 00:36:53,240 --> 00:36:56,590 Gandhi naj bi bil eden izmed najbolj mirne znaki, kot sem 838 00:36:56,590 --> 00:36:59,280 razumem, v prvi različica civilizacije. 839 00:36:59,280 --> 00:37:03,250 In dejansko na lestvici od 1 do 10, njegova agresivnost je bil samo 1. 840 00:37:03,250 --> 00:37:05,620 Torej, kdaj tako milo agresiven, očitno. 841 00:37:05,620 --> 00:37:11,590 >> Ampak na neki točki, lahko očitno namestite demokracije v geografiji. 842 00:37:11,590 --> 00:37:14,900 In če ste namestili demokracije v svojo različico igre, 843 00:37:14,900 --> 00:37:17,320 potem vaša raven agresivnosti gre dol. 844 00:37:17,320 --> 00:37:18,460 To je dobra stvar. 845 00:37:18,460 --> 00:37:20,890 Ljudje so bolj umirjeno očitno je, da v tej situaciji. 846 00:37:20,890 --> 00:37:23,190 Ampak očitno je nekdo storil nimate, če jih pogoj 847 00:37:23,190 --> 00:37:24,780 V prvotni različici kodeksa. 848 00:37:24,780 --> 00:37:30,650 >> Torej je šel raven agresivnosti Gandhijevo od Pozitiven 1 minus 2, do negativnega 1, 849 00:37:30,650 --> 00:37:33,840 vendar igra ne razumeti negativne številke. 850 00:37:33,840 --> 00:37:38,680 Torej, kaj se je zgodilo Gandhijevo agresija šla raven od 1, 0, da negativna 1, 851 00:37:38,680 --> 00:37:40,900 kar je imelo za posledico zavijanje okoli, da bi 852 00:37:40,900 --> 00:37:44,690 najbolj agresiven značaj v igri, v vrednosti 255, 853 00:37:44,690 --> 00:37:46,630 na lestvici od 1 do 10. 854 00:37:46,630 --> 00:37:49,887 In od takrat, tam je bilo več inkarnacije tej igri, 855 00:37:49,887 --> 00:37:51,720 in oni ga hrani kot nekakšna Easter Egg, 856 00:37:51,720 --> 00:37:53,870 da Gandhi je očitno tako strašno agresiven. 857 00:37:53,870 --> 00:37:56,740 Ampak to je bil rezultat prijateljskega zelo preprosta za programiranje napaka 858 00:37:56,740 --> 00:37:58,630 V tej zgodnji različici igre. 859 00:37:58,630 --> 00:38:02,860 >> Zdaj bolj zaskrbljujoče, več Pred kratkim se je Boeing 787 860 00:38:02,860 --> 00:38:05,720 bila dokumentirana, kot imajo bug, ne pa vrsta naprave 861 00:38:05,720 --> 00:38:07,340 si predvsem želijo, da imajo napako. 862 00:38:07,340 --> 00:38:10,130 In simptomi, da bom prebral tu, iz članka na spletu, 863 00:38:10,130 --> 00:38:13,840 je to, model 787 letalo da je bil neprekinjeno napajanje 864 00:38:13,840 --> 00:38:18,030 za 248 dni, lahko izgubite vse izmenični tok, AC, 865 00:38:18,030 --> 00:38:20,850 električne energije, zaradi kontrolne generatorske enote, 866 00:38:20,850 --> 00:38:23,330 GCUs, hkrati gredo v okvari varnem načinu. 867 00:38:23,330 --> 00:38:26,790 Torej je bilo to opozorilo izdano ko se je ta problem odkril. 868 00:38:26,790 --> 00:38:28,750 Ta pogoj je posledica s števcem opremi 869 00:38:28,750 --> 00:38:32,230 Notranji do GCUs, tako celo število ali spremenljivka, 870 00:38:32,230 --> 00:38:36,850 da bo overflow po 248 dni stalne moči. 871 00:38:36,850 --> 00:38:40,350 Boeing je v procesu razvoj nadgradnjo GCU programske opreme, ki 872 00:38:40,350 --> 00:38:42,350 bodo odpravili nevarne razmere. 873 00:38:42,350 --> 00:38:44,226 >> Toliko kot projektil scenarij, označen 874 00:38:44,226 --> 00:38:46,850 so imeli neke vrste spremenljivke da je štetje in štetje, 875 00:38:46,850 --> 00:38:50,720 in štetje, ampak postopoma prepolno meje svoje sposobnosti, 876 00:38:50,720 --> 00:38:54,890 podobno naredil prekleto letalo imajo spremenljivo prelivno 877 00:38:54,890 --> 00:38:56,410 Po dovolj časa za tek. 878 00:38:56,410 --> 00:38:59,240 In tako pero-v-lice način delovnega okoli tega vprašanja 879 00:38:59,240 --> 00:39:04,400 je resnično, reboot, vaše letalo vsak 247 dni, tako da postane spomin uničena 880 00:39:04,400 --> 00:39:06,100 in spremenljivka gre nazaj na 0. 881 00:39:06,100 --> 00:39:09,410 Toda razumelo, da je to zelo Velik inkarnacija programske opreme, 882 00:39:09,410 --> 00:39:14,070 predvsem pa, kot smo slišali Apple operacijski sistemi gredo v avtomobile, 883 00:39:14,070 --> 00:39:18,030 in self-vožnja avtomobila od Googla, in poljubno število inkarnacij programske opreme 884 00:39:18,030 --> 00:39:21,000 v našem vsakdanjem življenju, televizorje in ure, in še več, 885 00:39:21,000 --> 00:39:24,950 spoznali smo obdani s programsko opremo, vsi, ki ga je napisal nas ljudeh. 886 00:39:24,950 --> 00:39:28,150 >> In kot bomo vsi kmalu odkrili, to je zelo enostavno in zelo značilna 887 00:39:28,150 --> 00:39:30,250 narediti napake pri pisanju programske opreme. 888 00:39:30,250 --> 00:39:32,745 In če jih ne ujamejo, nekaj slabih stvari se lahko zgodi. 889 00:39:32,745 --> 00:39:35,400 Zdaj včasih nekateri smešne stvari se lahko zgodi, 890 00:39:35,400 --> 00:39:38,280 ali vsaj včasih smo vem, da pričakujemo nekaj Zloća. 891 00:39:38,280 --> 00:39:41,550 Torej 0 deljeno z 0, od razreda šola, je na splošno slaba stvar. 892 00:39:41,550 --> 00:39:43,050 To je nedefinirana. 893 00:39:43,050 --> 00:39:46,440 In se izkaže out-- in da vidimo, če moj mic lahko poberem to up--, da je Apple 894 00:39:46,440 --> 00:39:47,790 je imel v zadnjem času nekaj zabave s tem. 895 00:39:47,790 --> 00:39:48,850 Torej imam iPhone tukaj. 896 00:39:48,850 --> 00:39:54,160 Grem se pogovoriti s Siri in jo vprašal da mi odgovor na 0 deljeno z 0. 897 00:39:54,160 --> 00:39:55,850 Kaj je 0 deljeno z 0? 898 00:39:55,850 --> 00:39:59,350 899 00:39:59,350 --> 00:40:02,230 >> SIRI: Predstavljajte si, da imate 0 piškotki, in jih razdeli enakomerno 900 00:40:02,230 --> 00:40:03,540 med 0 prijatelji. 901 00:40:03,540 --> 00:40:05,810 Koliko piškotki ne vsakdo dobil? 902 00:40:05,810 --> 00:40:06,350 Oglejte? 903 00:40:06,350 --> 00:40:07,660 To nima nobenega smisla. 904 00:40:07,660 --> 00:40:10,540 In Cookie Monster je žalostno da ne obstajajo piškotki. 905 00:40:10,540 --> 00:40:13,987 In ste žalostno, da nimate prijateljev. 906 00:40:13,987 --> 00:40:15,570 DAVID J Malan: To je nekako neprijeten. 907 00:40:15,570 --> 00:40:17,550 Torej, to je tisto, kar je bilo tam samo rekel. 908 00:40:17,550 --> 00:40:21,380 To je nedoločena, to ni opredeljen, in res, veliko programskih jezikov 909 00:40:21,380 --> 00:40:24,950 ali, v resnici, bo prevajalniki odkriti, ko je v programu, 910 00:40:24,950 --> 00:40:27,050 poskusite razdeliti 0 z 0. 911 00:40:27,050 --> 00:40:29,830 Bolj zabavno kot to pa je, da je očitno, Cookie Monster 912 00:40:29,830 --> 00:40:31,270 je na Twitterju v teh dneh. 913 00:40:31,270 --> 00:40:37,610 In on je odgovoril, da je to, s tem, ki je absolutno čudovit. 914 00:40:37,610 --> 00:40:40,110 Ampak kaj je na hitro pogledamo na Nekaj ​​drugih konstrukti, 915 00:40:40,110 --> 00:40:43,459 in potem dal malo tega koda za uporabo, v dobrih načinov. 916 00:40:43,459 --> 00:40:45,250 Tako se je izkazalo, poleg za zanke, tam je 917 00:40:45,250 --> 00:40:49,174 nekaj, kar se imenuje while zanko, da izgleda drugače in se izvaja 918 00:40:49,174 --> 00:40:51,590 malo differently-- in bomo sčasoma videli examples-- 919 00:40:51,590 --> 00:40:53,500 vendar v nekem smislu, je enostavnejša, ker je 920 00:40:53,500 --> 00:40:56,670 ne omogočajo inicializacijo in posodobi znotraj meja zanke. 921 00:40:56,670 --> 00:40:57,794 Lahko še vedno izvaja. 922 00:40:57,794 --> 00:41:01,219 Zato lahko naredite točno iste stvari z while, kot z zanko, 923 00:41:01,219 --> 00:41:03,260 ampak tvoja sintaksa, ultimately-- saj bomo na koncu 924 00:41:03,260 --> 00:41:04,551 see-- se dogaja, da je drugačen. 925 00:41:04,551 --> 00:41:07,450 Tam je tudi storila, medtem ko zanke, ki je pravzaprav malo drugačna, 926 00:41:07,450 --> 00:41:09,640 v tem ker je za zanko in medtem ko zanke vedno 927 00:41:09,640 --> 00:41:13,005 najprej preverite njihovo stanje, če ste prebrali ta stvar od vrha do dna, 928 00:41:13,005 --> 00:41:16,440 to nekako izgleda, da se dogaja, da preveriti, da je stanje nazadnje zato, ker je 929 00:41:16,440 --> 00:41:17,910 Resnično zadnja vrstica kode. 930 00:41:17,910 --> 00:41:20,580 In res, da se dogaja, da je koristno V nekaterih programih, ki jih pišejo, 931 00:41:20,580 --> 00:41:23,746 Če želite le slepo nekaj storiti in na koncu preverite stanje. 932 00:41:23,746 --> 00:41:25,205 To ni nujno slaba stvar. 933 00:41:25,205 --> 00:41:27,912 Če želimo spremenljivke, ne moremo storiti je v nekaj različnih načinov. 934 00:41:27,912 --> 00:41:30,290 In smo videli v Foxtrot risanka, eden od načinov za to početje, 935 00:41:30,290 --> 00:41:33,400 kjer se razglasi svojo spremenljivko, kot int števec podpičjem, 936 00:41:33,400 --> 00:41:36,570 in potem later-- morda naslednjič linija, morda 10 vrstic later-- 937 00:41:36,570 --> 00:41:37,800 ste dejansko inicializacijo. 938 00:41:37,800 --> 00:41:42,230 Torej ti 2 vrstic kode razglasi spremenljivko tipa int 939 00:41:42,230 --> 00:41:44,930 in ga imenujemo števec, tako da daje me dovolj bitov, da imajo int. 940 00:41:44,930 --> 00:41:48,230 In potem na koncu, postavlja vrednost 0 v spremenljivko. 941 00:41:48,230 --> 00:41:51,250 Ureja tudi v A 0 in 1 vzorec, da vemo, od prejšnjega tedna, 942 00:41:51,250 --> 00:41:53,260 predstavlja število poznamo kot 0. 943 00:41:53,260 --> 00:41:56,920 Ali povedano, lahko to stori veliko bolj na kratko, samo všeč. 944 00:41:56,920 --> 00:41:59,390 >> Zdaj smo tudi imeti Sposobnost za klic funkcije. 945 00:41:59,390 --> 00:42:03,070 In v resnici, tukaj je 2 vrstica Program, ali njen odlomek, 946 00:42:03,070 --> 00:42:06,157 ki nam omogoča, da dejansko napisati nekaj kode, ki 947 00:42:06,157 --> 00:42:08,990 dobi niz iz user-- veliko kot naš prostovoljec trenutek ago-- 948 00:42:08,990 --> 00:42:11,320 shranjevanja rezultata v spremenljivka imenovan ime, 949 00:42:11,320 --> 00:42:15,470 in then-- podobno kot z našim prostovoljcem z printf-- odtisi od teh vrednosti 950 00:42:15,470 --> 00:42:19,180 s prehodom v dveh argumentov niz, ki mu sledi spremenljivke 951 00:42:19,180 --> 00:42:20,781 imenuje, ime, sama. 952 00:42:20,781 --> 00:42:23,155 Torej, kaj si oglejte, preden smo prišli nazaj v Mario tam, 953 00:42:23,155 --> 00:42:26,010 na nekaj zdaj, primerov. 954 00:42:26,010 --> 00:42:30,537 >> Grem, da gredo naprej in odprt do, recimo, funkcija-0.c. 955 00:42:30,537 --> 00:42:33,120 In kot vedno, je ta koda na voljo na spletni strani predmeta je, 956 00:42:33,120 --> 00:42:35,660 tako da lahko igrajo skupaj na domov in se poglej kasneje. 957 00:42:35,660 --> 00:42:40,400 Ampak tukaj je program, v njem je Bistvo, iz vrstice 17 do 22. 958 00:42:40,400 --> 00:42:43,270 Glavni program je, če Program je vedno tekoč, da začnete. 959 00:42:43,270 --> 00:42:46,980 Ta program, očitno, se dogaja natisniti vaše ime, debelo črevo. 960 00:42:46,980 --> 00:42:50,320 To se potem dogaja, da pokličete GetString, tako kot smo to storili z našimi prostovoljci. 961 00:42:50,320 --> 00:42:53,365 In nato, to je zanimivo, to se dogaja, da pokličete PrintName. 962 00:42:53,365 --> 00:42:56,490 Izkazalo se je, ves ta čas pa Zdi se, da je funkcija imenuje PrintName. 963 00:42:56,490 --> 00:42:57,614 Da natisne ime nekoga. 964 00:42:57,614 --> 00:43:01,210 Mi ni bilo treba uporabiti printf od minulih dni, tam je PrintName. 965 00:43:01,210 --> 00:43:03,500 >> Ampak to je zavajajoče ker PrintName ne 966 00:43:03,500 --> 00:43:06,760 prihajajo z C. Ljudje niso jo izmislil pred približno 40 ali 50 let, 967 00:43:06,760 --> 00:43:07,990 Sem storil, namesto. 968 00:43:07,990 --> 00:43:10,330 In v resnici, če sem se pomaknete dol nadaljnjega, obvestila 969 00:43:10,330 --> 00:43:14,200 kako lahko pišem moja funkcije v C, da bomo sčasoma 970 00:43:14,200 --> 00:43:16,319 pojasniti, zakaj smo vedno rekel, nična, v nekaj mestih, 971 00:43:16,319 --> 00:43:18,110 ampak za danes, kaj je samo poglej imena. 972 00:43:18,110 --> 00:43:20,905 >> Na liniji 24, če želite, da ustvarite svojo funkcijo, 973 00:43:20,905 --> 00:43:22,780 ste dobesedno napisati ime funkcije. 974 00:43:22,780 --> 00:43:24,340 Izbral sem PrintName. 975 00:43:24,340 --> 00:43:26,159 V oklepaju, si Nato določite, katere vrste 976 00:43:26,159 --> 00:43:28,450 vhodov in koliko ste želite to funkcijo sprejeti. 977 00:43:28,450 --> 00:43:31,906 V tem primeru, želim, da bi 1 spremenljivka se imenuje, ime, 978 00:43:31,906 --> 00:43:34,030 in to se dogaja, da so vrsta, niz, tako da se bo 979 00:43:34,030 --> 00:43:35,780 da so nekateri zaporedje znakov. 980 00:43:35,780 --> 00:43:39,170 In potem je to program-- podobno kot v nič, 981 00:43:39,170 --> 00:43:42,590 imate lahko meri sestavljanko pieces-- se dogaja, da imajo to vedenje meri. 982 00:43:42,590 --> 00:43:46,760 To se dogaja, da pokličete printf poteka v, zdravo, ograda, 983 00:43:46,760 --> 00:43:49,110 in potem se dogaja, da priključite v kakršnikoli uporabnik poklical. 984 00:43:49,110 --> 00:43:51,450 >> Torej, to je primer, kaj računalniški znanstvenik bi 985 00:43:51,450 --> 00:43:55,090 klic abstrakcija ali funkcionalno razpada, ki so samo 986 00:43:55,090 --> 00:43:58,110 fancy načine za saying--, je, če vam je všeč ta ideja na visoki ravni, 987 00:43:58,110 --> 00:44:01,569 kot hočem funkcionalnost, ki natisne ime nekoga, popolnoma si 988 00:44:01,569 --> 00:44:04,360 Lahko dobesedno pisati printf in nato prenese na argumente, ki jih želite, 989 00:44:04,360 --> 00:44:07,340 in program bo deloval, saj ima od srede. 990 00:44:07,340 --> 00:44:10,510 Vendar lahko začnete abstraktna stran pojem tiskanje imena. 991 00:44:10,510 --> 00:44:13,270 Lahko bi to ime, kot PrintName, in to 992 00:44:13,270 --> 00:44:15,280 je ta ideja plastenje od tedna 0. 993 00:44:15,280 --> 00:44:19,910 >> Odslej sem in nimate vedeti ali pa zanima, kako se izvaja PrintName. 994 00:44:19,910 --> 00:44:22,470 Ja uporablja printf, morda je ne, kdo ve, kaj se uporablja? 995 00:44:22,470 --> 00:44:23,410 Koga briga? 996 00:44:23,410 --> 00:44:26,034 Zdaj govorim tu, namesto da tu dol. 997 00:44:26,034 --> 00:44:28,700 In res, kot bi dobili naši programi bolj napredne in zapletene, 998 00:44:28,700 --> 00:44:32,550 bomo, da vzamete za samoumevne da obstajajo nižje ravni kosov sestavljanke. 999 00:44:32,550 --> 00:44:34,780 Ker smo jih pisali ali kdo drug naredil, tako 1000 00:44:34,780 --> 00:44:36,910 da smo lahko nato zgradi na njih. 1001 00:44:36,910 --> 00:44:39,430 Oglejmo pogled na to varianta, eno od funkcij. 1002 00:44:39,430 --> 00:44:41,780 >> Torej, ta je malo bolj napreden, vendar se izkaže, 1003 00:44:41,780 --> 00:44:44,570 da se v knjižnici CS50 je, tam je samo funkcija GetInt. 1004 00:44:44,570 --> 00:44:47,720 Nismo ne mislim, pred leti, da izvajati funkcijo GetPositiveInt. 1005 00:44:47,720 --> 00:44:50,970 In to je malo nadležno, ker če vi pišete program čemer 1006 00:44:50,970 --> 00:44:53,325 želite, da bi dobili pozitiven celo število od uporabnika, 1007 00:44:53,325 --> 00:44:55,010 lahko popolnoma uporabite GetInt. 1008 00:44:55,010 --> 00:44:57,840 In lahko popolnoma preverite stanje in morda zanka 1009 00:44:57,840 --> 00:45:00,320 če je ta int večja od 0 in kričati na uporabnika 1010 00:45:00,320 --> 00:45:02,699 če on ali ona ne daje boste pozitivno število. 1011 00:45:02,699 --> 00:45:04,740 Ampak kaj je zgradil gradnik sebe a, 1012 00:45:04,740 --> 00:45:06,555 custom Scratch kos, če hočete. 1013 00:45:06,555 --> 00:45:08,680 Grem, da imajo program tu, da na koncu, sem 1014 00:45:08,680 --> 00:45:11,780 želijo imeti možnost, da pokličete GetPositiveInt, in želim, da bi 1015 00:45:11,780 --> 00:45:14,200 lahko natisnete karkoli to int je. 1016 00:45:14,200 --> 00:45:16,240 Ampak to odvzete stran zdaj. 1017 00:45:16,240 --> 00:45:19,050 To je bilo samo zaradi visoke stopnje Ime, ki pove, kaj počne, 1018 00:45:19,050 --> 00:45:21,780 ki je čudovito, ker je zelo intuitiven zdaj brati. 1019 00:45:21,780 --> 00:45:24,710 In če delam skrbi, kaj je pod njim napa, naj se pomaknite navzdol. 1020 00:45:24,710 --> 00:45:27,140 In to je malo zastrašujoče na eni strani, zlasti 1021 00:45:27,140 --> 00:45:29,470 Če je to vaš prvi program, vendar pa si poglej. 1022 00:45:29,470 --> 00:45:32,860 >> Jaz ne pravim, nična, ker se je izkazalo funkcije, 1023 00:45:32,860 --> 00:45:34,777 podobno kot GetString, lahko vrne vrednost k meni. 1024 00:45:34,777 --> 00:45:36,610 Nimajo samo še natisniti na zaslon, 1025 00:45:36,610 --> 00:45:38,410 lahko dejansko predajo me nekaj nazaj. 1026 00:45:38,410 --> 00:45:41,535 In ker je pred PrintName, Nisem potreboval ničesar nazaj. 1027 00:45:41,535 --> 00:45:44,160 Potrebna sem stranski učinek nekaj, kar prikazujejo na zaslonu, 1028 00:45:44,160 --> 00:45:46,570 vendar nisem potreboval človeka mi roko nekaj nazaj. 1029 00:45:46,570 --> 00:45:48,840 Tukaj, z GetPositiveInt, kot pri GetInt, 1030 00:45:48,840 --> 00:45:50,640 Rad bi se predali nekaj nazaj. 1031 00:45:50,640 --> 00:45:53,220 Tako da sem rekel ne, nična, na liniji 23, vendar int, 1032 00:45:53,220 --> 00:45:55,570 ki pravi, da je ta funkcija da pišem, 1033 00:45:55,570 --> 00:45:58,860 imenovano GetPositiveInt se dogaja, da Daj mi nazaj celo, ne nič, 1034 00:45:58,860 --> 00:45:59,890 ni nična. 1035 00:45:59,890 --> 00:46:03,280 >> Medtem pa se dogaja, da bi ne vhodi, tako da sem, vrsta, jo obrnil. 1036 00:46:03,280 --> 00:46:08,280 Jaz ne daje GetPositiveInt nobene vhod, hočem, da mi daj svojo proizvodnjo. 1037 00:46:08,280 --> 00:46:09,800 In potem kaj se bo zgodilo zdaj? 1038 00:46:09,800 --> 00:46:11,640 Torej, tukaj je, kako lahko razglasi spremenljivko. 1039 00:46:11,640 --> 00:46:15,090 To sem storil izven zanke, razlogov, da bomo na koncu videli, 1040 00:46:15,090 --> 00:46:17,700 vendar to samo daje mi 32 bitov imenovana, n, 1041 00:46:17,700 --> 00:46:20,952 in sem pre-določitev jih shranite celo število. 1042 00:46:20,952 --> 00:46:23,660 In tukaj je, da storijo, ko konstrukt, in to je razlog, zakaj je koristno. 1043 00:46:23,660 --> 00:46:26,700 Dobesedno to, pri čemer je n manjši od 1. 1044 00:46:26,700 --> 00:46:28,030 Torej, da vidimo, kaj se zgodi. 1045 00:46:28,030 --> 00:46:30,760 Sem izpisal, prosim daj mi pozitivno int. 1046 00:46:30,760 --> 00:46:34,300 Potem dobim int uporabo CS50 je delovanje in shranjeni v n. 1047 00:46:34,300 --> 00:46:38,990 >> In potem, kaj vrstica kode verjetno dobi izvrši naslednjo logično? 1048 00:46:38,990 --> 00:46:41,890 Kateri številka vrstice? 1049 00:46:41,890 --> 00:46:42,571 Ja, 31. 1050 00:46:42,571 --> 00:46:45,320 Saj ne bi vedeli, je to, dokler ste so povedali, ali nekako sam izpeljati, 1051 00:46:45,320 --> 00:46:45,986 ampak to je res. 1052 00:46:45,986 --> 00:46:48,280 Gre od zgoraj navzdol nato pa se ponavlja. 1053 00:46:48,280 --> 00:46:55,840 Torej, če sem tipkal v recimo, števila negativna 1, je n manj kot negativna 1? 1054 00:46:55,840 --> 00:46:56,340 Ja. 1055 00:46:56,340 --> 00:46:58,470 Ker negativna 1 je manjša od 1. 1056 00:46:58,470 --> 00:46:59,510 Torej, kaj bi se moralo zgoditi? 1057 00:46:59,510 --> 00:47:03,260 Jaz bom to naredil pri čemer je n manj kot 1, 1058 00:47:03,260 --> 00:47:05,760 tako da sem šel nazaj na linijo 28. 1059 00:47:05,760 --> 00:47:09,530 >> In vsaka time-- in kaj je teči this-- da funkcija 1, da ga pripravijo, 1060 00:47:09,530 --> 00:47:11,340 in zdaj dot poševnica funkcijo 1. 1061 00:47:11,340 --> 00:47:14,280 Če sem tip negativno 1, je dogaja, da kričiš name 1062 00:47:14,280 --> 00:47:17,530 dokler nisem sodelovala, ker vsak mojih vhodov je manj kot 1 1063 00:47:17,530 --> 00:47:20,070 in če je pa manj kot 1, Bom vztrajati početje to. 1064 00:47:20,070 --> 00:47:24,240 Če sem končno ji dati več kot 50 let, na srečo, pa pravi, hvala za 50. 1065 00:47:24,240 --> 00:47:24,970 Zakaj? 1066 00:47:24,970 --> 00:47:30,640 Ker takoj, ko je n najmanj 1, neham pridobivanje zaljubljen v to zanko, 1067 00:47:30,640 --> 00:47:33,840 in ta nova ključna beseda danes, donosnost, dobesedno počne. 1068 00:47:33,840 --> 00:47:36,800 Torej sem pravkar izvaja, je z Občutek, ekvivalent GetString, 1069 00:47:36,800 --> 00:47:40,590 kje sem ga odnesete nazaj Kdor me pomočjo, nekaj vrednosti. 1070 00:47:40,590 --> 00:47:42,820 To ni nujno, da je niz, to je int. 1071 00:47:42,820 --> 00:47:44,990 Torej preprost, hitro Primer, vendar bomo kmalu 1072 00:47:44,990 --> 00:47:47,930 videti nekaj bolj prefinjene različice miru. 1073 00:47:47,930 --> 00:47:53,882 Dejstvo je, vzemimo si na Številčna eden, ki se imenuje return.c. 1074 00:47:53,882 --> 00:47:55,590 In to je dejansko malo enostavnejše. 1075 00:47:55,590 --> 00:47:59,010 Torej, namen tega programa v life-- dajmo zbrati in jo vodijo, 1076 00:47:59,010 --> 00:48:03,090 zato poskrbite, donos, dot slash, return-- obvestilo 1077 00:48:03,090 --> 00:48:05,530 Program preprosto kocke vrednost 2. 1078 00:48:05,530 --> 00:48:08,410 To je precej neumno, da je težko koda, da ne bo nobenih vhodov, 1079 00:48:08,410 --> 00:48:12,220 vendar to ne dokaže drugega funkcija, ki sem jih sam napisal. 1080 00:48:12,220 --> 00:48:15,760 Torej, tukaj sem razglašena za spremenljivka, ki se imenuje x, tipa int, 1081 00:48:15,760 --> 00:48:17,840 enako številu 2, popolnoma samovoljno. 1082 00:48:17,840 --> 00:48:19,530 To je le nekaj puhasto tiskanje. 1083 00:48:19,530 --> 00:48:23,070 Piše x je sedaj tak in na primer, cubing dot dot dot. 1084 00:48:23,070 --> 00:48:26,390 In čarovnija je očitno v vrstici 21. 1085 00:48:26,390 --> 00:48:30,120 Kličem funkcijo imenovano, kocke, Jaz sem ga izroči list papirja 1086 00:48:30,120 --> 00:48:32,890 s številko 2, napisano na njej, in kakšno vrednost, matematično, 1087 00:48:32,890 --> 00:48:34,860 ne želim, da bi dobili od njega? 1088 00:48:34,860 --> 00:48:36,570 Samo kot preverjanje razumnosti? 1089 00:48:36,570 --> 00:48:37,070 8. 1090 00:48:37,070 --> 00:48:37,570 Prav? 1091 00:48:37,570 --> 00:48:40,160 Hočem 2 kubikov nazaj, od 2 do Moč 3, tako 8 nazaj. 1092 00:48:40,160 --> 00:48:42,570 >> Torej, če je kocka izvaja? 1093 00:48:42,570 --> 00:48:44,349 No, zaznali že izvaja tukaj. 1094 00:48:44,349 --> 00:48:47,140 In tako kot prej, je logično, čeprav sintaksa je verjetno 1095 00:48:47,140 --> 00:48:49,320 zelo nov, da mnogi izmed vas, Hočem to funkcijo 1096 00:48:49,320 --> 00:48:51,780 me vrniti polo Papir z notr na njej. 1097 00:48:51,780 --> 00:48:53,990 Torej imam int, na ime je poljubno, 1098 00:48:53,990 --> 00:48:55,530 vendar prikladno imenujemo kocka. 1099 00:48:55,530 --> 00:48:58,430 Vhodni nanjo, je n tip celo število, tako, da je 1100 00:48:58,430 --> 00:49:00,800 kako sem lahko preide v številu 2 na listu papirja. 1101 00:49:00,800 --> 00:49:03,910 In potem se izkaže, podpira C math, tako da ne boste imeli x je za čas, 1102 00:49:03,910 --> 00:49:06,680 samo uporabite zvezdico za množenje. 1103 00:49:06,680 --> 00:49:11,070 In ta vrne krat n krat n N, pri čemer je le vrednost kubikov. 1104 00:49:11,070 --> 00:49:12,840 >> Torej, kam se bomo z vsem tem? 1105 00:49:12,840 --> 00:49:14,570 To je vsekakor tornado turnejo, prepričani, 1106 00:49:14,570 --> 00:49:16,410 da v super odsekov in problem nastaviti 1, 1107 00:49:16,410 --> 00:49:18,368 se boste šli skozi vse to toliko bolj. 1108 00:49:18,368 --> 00:49:22,490 In problem je določil 1., bomo prehod iz grafičnega sveta Scratch 1109 00:49:22,490 --> 00:49:25,640 za nekaj več ukazno vrstico v C. Ampak bomo navdih 1110 00:49:25,640 --> 00:49:27,680 od te tukaj igri iz minulih, označen 1111 00:49:27,680 --> 00:49:31,591 uporabo C in standardni izdaji p set boste izvajati Mario piramido. 1112 00:49:31,591 --> 00:49:34,340 In v izdaji hacker od p set, če se tako odločijo, da izvolijo, 1113 00:49:34,340 --> 00:49:38,280 boste izvajati malo bolj izpodbijanje piramido z dvema vrhovoma. 1114 00:49:38,280 --> 00:49:41,239 Boste tudi izvajati algoritem, požrešen algoritem. 1115 00:49:41,239 --> 00:49:43,030 Izkazalo se je, tam je nekatera zanimiva logika 1116 00:49:43,030 --> 00:49:45,640 zadaj procesu teče postajo blagajna je 1117 00:49:45,640 --> 00:49:47,410 in dejansko predajo nekdo nazaj sprememba. 1118 00:49:47,410 --> 00:49:50,410 Obstaja algoritem, ki je dokaj enostavna, da boste morda celo 1119 00:49:50,410 --> 00:49:53,576 dojeti intuitivno, ko ste prvič prebrali it-- zavedajoč se, da je tisto, kar sem si vedno 1120 00:49:53,576 --> 00:49:57,110 storiti kadarkoli sem dati nekomu nekaj Denar back--, ki vam omogoča, da vedno 1121 00:49:57,110 --> 00:50:00,679 zmanjšanje števila papirnati bankovci ali kovinski kovanci 1122 00:50:00,679 --> 00:50:02,220 da ste predali nazaj uporabniku. 1123 00:50:02,220 --> 00:50:04,610 In to, seveda, je prepričljiv ker če greš v CVS ali malenkosti, 1124 00:50:04,610 --> 00:50:06,430 ne želite, da se izroči cel kup tistih, 1125 00:50:06,430 --> 00:50:07,596 ali pa cel kup penijev. 1126 00:50:07,596 --> 00:50:10,120 Hočeš, najmanj kovanci, verjetno je to mogoče. 1127 00:50:10,120 --> 00:50:13,070 >> Končno, boste mogoče izpodbijati tudi Praćakati v svetu vode 1128 00:50:13,070 --> 00:50:17,220 in dejansko dobili zahvalo za preslikavo med stopnjami pretoka, 1129 00:50:17,220 --> 00:50:19,890 izmed všeč, vodo v tuš, Samo koliko vode uporabimo. 1130 00:50:19,890 --> 00:50:22,640 In aluzija njem, bo ta posnetek tod 1131 00:50:22,640 --> 00:50:24,840 ki bomo na koncu na za le 60 sekund, da 1132 00:50:24,840 --> 00:50:29,070 naslika sliko nizko-flow tušev. 1133 00:50:29,070 --> 00:50:30,886 >> [VIDEO PREDVAJANJE] 1134 00:50:30,886 --> 00:50:31,385 -V redu. 1135 00:50:31,385 --> 00:50:32,774 Imam vse, kar je tukaj. 1136 00:50:32,774 --> 00:50:35,800 Imam Cyclone serije F, Hydra, Jetflow, Stockholm 1137 00:50:35,800 --> 00:50:37,660 Supersteam, kar hočete. 1138 00:50:37,660 --> 00:50:39,265 >> In kaj mi priporočate? 1139 00:50:39,265 --> 00:50:40,460 >> -Kaj iščeš? 1140 00:50:40,460 --> 00:50:41,300 >> Power človek. 1141 00:50:41,300 --> 00:50:42,285 Moč. 1142 00:50:42,285 --> 00:50:42,910 -Kot Silkwood. 1143 00:50:42,910 --> 00:50:44,520 -To Je za sevanje. 1144 00:50:44,520 --> 00:50:46,335 -Tako je. 1145 00:50:46,335 --> 00:50:48,275 -Zdaj, Kaj je to? 1146 00:50:48,275 --> 00:50:49,704 -To Je Commando 450. 1147 00:50:49,704 --> 00:50:50,620 Jaz ne prodajajo, da je eden. 1148 00:50:50,620 --> 00:50:51,700 >> Ampak to je tisto, kar želimo. 1149 00:50:51,700 --> 00:50:52,680 To je komandos 450. 1150 00:50:52,680 --> 00:50:53,882 >> -Ne Verjemi. 1151 00:50:53,882 --> 00:50:55,090 To se uporablja samo v cirkusu. 1152 00:50:55,090 --> 00:50:56,512 To je za slone. 1153 00:50:56,512 --> 00:50:59,356 >> -I'll Plačati ničesar. 1154 00:50:59,356 --> 00:51:01,252 >> Kaj pa Jerry? 1155 00:51:01,252 --> 00:51:02,760 >> -On Ni zmogel, da je. 1156 00:51:02,760 --> 00:51:04,910 On je nežen. 1157 00:51:04,910 --> 00:51:05,750 Oh ja. 1158 00:51:05,750 --> 00:51:36,737 1159 00:51:36,737 --> 00:51:37,320 [END PREDVAJANJE] 1160 00:51:37,320 --> 00:51:37,700 DAVID J Malan: V redu. 1161 00:51:37,700 --> 00:51:38,820 To je, če za CS50. 1162 00:51:38,820 --> 00:51:40,050 Se vidimo naslednji teden. 1163 00:51:40,050 --> 00:51:45,910 1164 00:51:45,910 --> 00:51:49,029 >> SPEAKER 1: [? Scully?] [? Ian,?] kolikor je to outro projekta, 1165 00:51:49,029 --> 00:51:50,362 kaj ste vi prišli do? 1166 00:51:50,362 --> 00:51:51,990 >> SPEAKER 2: No, smo zaradi je različne misli, 1167 00:51:51,990 --> 00:51:53,250 in menimo, da je najboljši način to-- 1168 00:51:53,250 --> 00:51:53,660 >> SPEAKER 3: maj jaz? 1169 00:51:53,660 --> 00:51:54,326 >> SPEAKER 2: Ja. 1170 00:51:54,326 --> 00:51:56,360 Z vsemi sredstvi, pravzaprav. 1171 00:51:56,360 --> 00:51:59,425 >> SPEAKER 3: Torej, jaz mislim, lahko povzamemo našo idejo 1172 00:51:59,425 --> 00:52:05,450 za outros z enim word-- nič. 1173 00:52:05,450 --> 00:52:08,950 1174 00:52:08,950 --> 00:52:10,409 >> DAVID J Malan: Nič? 1175 00:52:10,409 --> 00:52:11,200 SPEAKER 3: Nič. 1176 00:52:11,200 --> 00:52:12,990 DAVID J Malan: Kaj to pomeni? 1177 00:52:12,990 --> 00:52:16,260 SPEAKER 3: outros prišlo nič. 1178 00:52:16,260 --> 00:52:21,720 SPEAKER 2: No, mislim, v filozofiji, Mislim, nič ni vedno nekaj. 1179 00:52:21,720 --> 00:52:24,200 SPEAKER 1: Torej what's-- kaj je predpostavka? 1180 00:52:24,200 --> 00:52:25,720 SPEAKER 3: Torej, to je kot življenje. 1181 00:52:25,720 --> 00:52:26,680 V REDU. 1182 00:52:26,680 --> 00:52:28,294 Kaj si danes počel? 1183 00:52:28,294 --> 00:52:31,811 >> DAVID J Malan: Vstal sem imel zajtrk, in prišel na delo. 1184 00:52:31,811 --> 00:52:34,056 >> SPEAKER 3: To je outro. 1185 00:52:34,056 --> 00:52:36,806 SPEAKER 2: Ampak, mislim, ne bi smeli nekaj, kar se zgodi, da mu je na the-- 1186 00:52:36,806 --> 00:52:37,889 SPEAKER 3: Ne, ne, ne, ne. 1187 00:52:37,889 --> 00:52:40,220 Nič se ne zgodi. 1188 00:52:40,220 --> 00:52:42,910 >> SPEAKER 1: Torej, zakaj smo gledal? 1189 00:52:42,910 --> 00:52:46,956 >> SPEAKER 3: Ker to je outro za CS50. 1190 00:52:46,956 --> 00:52:48,652 >> DAVID J Malan: Ne še. 1191 00:52:48,652 --> 00:52:49,151