1 00:00:07,590 --> 00:00:09,920 [Powered by Google Translate] David J. MALAN: U redu, ovo je CS50 i to je 2 00:00:09,920 --> 00:00:15,250 kraj tjedna 1, pa studijskih kartice su i ukupni broj 3 00:00:15,250 --> 00:00:18,640 kolege koje su u ovoj godini je 745. 4 00:00:18,640 --> 00:00:20,920 A mi tako smo oduševljeni da su mnogi od vas u tijeku 5 00:00:20,920 --> 00:00:23,680 ovaj semestar, ali iako je ovaj tečaj je toliko velika, 6 00:00:23,680 --> 00:00:26,090 shvatiti da je ove stvari poput petak ručkove, poput 7 00:00:26,090 --> 00:00:29,020 radno vrijeme, 15-osoba sekcije, i tako dalje da 8 00:00:29,020 --> 00:00:30,590 su zapravo značilo stvoriti ovo intimnije 9 00:00:30,590 --> 00:00:31,140 okoliš. 10 00:00:31,140 --> 00:00:34,070 Dakle, iako možemo skupiti jednom ili dvaput tjedno, ovdje u 11 00:00:34,070 --> 00:00:36,420 Sanders, znam da velik dio svog iskustva u ovom tečaju 12 00:00:36,420 --> 00:00:39,330 će biti jako puno hands-on na uz svoje kolege 13 00:00:39,330 --> 00:00:40,730 i nastavno osoblje. 14 00:00:40,730 --> 00:00:43,960 >> Dakle, ovdje mi ići, Jesen 2012. 15 00:00:43,960 --> 00:00:47,530 Dakle podsjetiti da smo zadnji put završila na note 16 00:00:47,530 --> 00:00:50,460 nepreciznost, govori o zastupljenosti brojeva. 17 00:00:50,460 --> 00:00:52,950 I mi smo gledali jedan od propusta koji su se dogodili, u 18 00:00:52,950 --> 00:00:54,920 stvarnom svijetu, kada je došao do nesporazuma 19 00:00:54,920 --> 00:00:55,890 kako računala rade. 20 00:00:55,890 --> 00:00:58,590 Pa, danas ćemo ponovno jedan od onih ideja kao 21 00:00:58,590 --> 00:01:01,410 te nastaviti našu raspravu o CS50 klijenta 22 00:01:01,410 --> 00:01:04,090 i C i što to znači da stvarno programu. 23 00:01:04,090 --> 00:01:06,430 Ali prvo, samo par vihoru najavama. 24 00:01:06,430 --> 00:01:08,930 >> Sekcije početi ove nedjelje, a prvi tjedan je uvijek 25 00:01:08,930 --> 00:01:11,030 malo brzog starta, jer smo upravo dobili u 26 00:01:11,030 --> 00:01:12,620 Vaši sekcija forme. 27 00:01:12,620 --> 00:01:14,450 Mi radimo isto, sada, s nastavnim bližnjima, sada 28 00:01:14,450 --> 00:01:16,410 da znaju svoje rasporede, tako da smo s ciljem, prema 29 00:01:16,410 --> 00:01:19,380 Subotnje jutro, pratiti s vama s vašim dijelu 30 00:01:19,380 --> 00:01:20,760 Raspored i TF. 31 00:01:20,760 --> 00:01:22,770 Shvatite da će početi sljedeći dan, nedjelja 32 00:01:22,770 --> 00:01:24,510 ili ponedjeljak ili utorak. 33 00:01:24,510 --> 00:01:27,730 A onda ćemo ugostiti sekcija promjene kao što su nastali 34 00:01:27,730 --> 00:01:28,690 u danima koji dolaze. 35 00:01:28,690 --> 00:01:31,590 Radno vrijeme, u međuvremenu, su, opet, večeras, 8:00 do 11, u 36 00:01:31,590 --> 00:01:33,740 Annenberg, kao sutra. 37 00:01:33,740 --> 00:01:36,150 Iako se problem setovi su uglavnom zbog četvrtkom 38 00:01:36,150 --> 00:01:39,020 u podne, shvatite da ste i do pet dana kasni provesti, 39 00:01:39,020 --> 00:01:42,430 stoga dostupnost radnog vremena četvrtkom ako 40 00:01:42,430 --> 00:01:45,930 ste novac u jednom od tih kasnih dana, a time i dostaviti 41 00:01:45,930 --> 00:01:47,070 nešto je u petak. 42 00:01:47,070 --> 00:01:50,850 Dopustite mi sugeriraju da Scratch je među više zabave, među 43 00:01:50,850 --> 00:01:52,390 više niske ključni problem seta. 44 00:01:52,390 --> 00:01:55,160 I ja bih objesiti na tim kasnim dana, strateški, samo 45 00:01:55,160 --> 00:01:57,380 za kasnije u semestru kad život počinje da se na putu 46 00:01:57,380 --> 00:01:59,470 s midterms i druge klase. 47 00:01:59,470 --> 00:02:01,580 Problem Set 1, u međuvremenu, će biti objavljen na tečaj je 48 00:02:01,580 --> 00:02:06,080 Web stranica ovog petka, kao što će biti u toku hoda 49 00:02:06,080 --> 00:02:08,789 kroz video, koji će biti sniman u 14:30 u petak 50 00:02:08,789 --> 00:02:11,890 , a zatim objavljena putem sljedećeg dana. 51 00:02:11,890 --> 00:02:13,880 >> Tako smo završili u ponedjeljak. 52 00:02:13,880 --> 00:02:15,450 Želim - zapravo, jedan napomenuti ovdje. 53 00:02:15,450 --> 00:02:18,870 Budući da su razredi - jer Sanders nije točno posuditi 54 00:02:18,870 --> 00:02:22,220 sama povremeni Q & A natrag i naprijed strašno dobro, mi smo 55 00:02:22,220 --> 00:02:24,030 će pokušati nešto malo novo u ovoj godini, pri čemu 56 00:02:24,030 --> 00:02:26,160 ako nisi ugodno podizanje ruku ili ste samo 57 00:02:26,160 --> 00:02:28,800 radije ne digne ruku u sobi kao što je ovaj, 58 00:02:28,800 --> 00:02:30,710 idemo da imaju neke od nastavnih bližnjima i CAS 59 00:02:30,710 --> 00:02:33,260 popunu cs50.net/discuss tijekom predavanja. 60 00:02:33,260 --> 00:02:35,440 Dakle, ako imate pitanje, jer sam bio posve 61 00:02:35,440 --> 00:02:37,510 nejasno o nečemu ili vas zanima o nekim 62 00:02:37,510 --> 00:02:39,640 tema, pokušajte ga posting postoji. 63 00:02:39,640 --> 00:02:42,670 Tag ga s oznakom Predavanje, a mi ćemo se potruditi 64 00:02:42,670 --> 00:02:45,430 danas i sljedeći tjedan - hrapavi pokušati ovo - to teren 65 00:02:45,430 --> 00:02:47,990 ili elektronski, on-line, ili ako se osjeća kao da smo trebali 66 00:02:47,990 --> 00:02:50,430 stvarno baviti masovno, jedna od nastavnih bližnjima ili 67 00:02:50,430 --> 00:02:52,080 CA će podići svoju ruku i pitati 68 00:02:52,080 --> 00:02:53,480 anonimno na vaše ime. 69 00:02:53,480 --> 00:02:55,650 Dakle, mi ćemo dati ovo probati i vidjeti koliko dobro to radi. 70 00:02:55,650 --> 00:02:58,540 No, svim sredstvima, i dalje podizati ruke kao što ste željeli. 71 00:02:58,540 --> 00:03:11,420 >> Dakle, zadnji put kad smo otkrili da je 10% ili jednu desetinu nije, u 72 00:03:11,420 --> 00:03:13,840 Činjenica, 0.1, kao što su nas učili prije mnogo godina. 73 00:03:13,840 --> 00:03:15,390 To je u stvari, kao što je to vrijednost. 74 00:03:15,390 --> 00:03:16,970 No, to nije u potpunosti točno, zar ne? 75 00:03:16,970 --> 00:03:19,585 Moramo samo ovo ograničenje u računala pri čemu, ako 76 00:03:19,585 --> 00:03:22,450 samo imaju ograničen količinu memorije, RAM, ili više 77 00:03:22,450 --> 00:03:25,220 posebno bita, dobro, postoji samo konačan broj 78 00:03:25,220 --> 00:03:26,980 stvari koje mogu predstavljati. 79 00:03:26,980 --> 00:03:29,780 Na primjer, ako imamo broj nula, a mi želimo da 80 00:03:29,780 --> 00:03:32,790 predstavljaju u binarnom pomoću osam bitova, gdje je malo, 81 00:03:32,790 --> 00:03:34,710 opet, nula ili jedan, možemo 82 00:03:34,710 --> 00:03:39,240 ga predstavljaju kao 00000000. 83 00:03:39,240 --> 00:03:41,160 I to je nešto nepotrebno preopširan. 84 00:03:41,160 --> 00:03:43,700 Baš kao u decimalnom sustavu u stvarnom svijetu, 85 00:03:43,700 --> 00:03:47,040 općenito, ako želite napisati broj 123, što 86 00:03:47,040 --> 00:03:52,240 ljudi vjerojatno ne pisati 00000123 iako, 87 00:03:52,240 --> 00:03:53,940 funkcionalno, to je isti broj. 88 00:03:53,940 --> 00:03:56,580 Mi samo kap vodeće nule, da se tako izrazim. 89 00:03:56,580 --> 00:03:58,270 >> U binarnom, možemo učiniti isto. 90 00:03:58,270 --> 00:04:01,440 Binarni i nula, nula i binarni je samo nula. 91 00:04:01,440 --> 00:04:02,870 Vi samo trebate jedan malo. 92 00:04:02,870 --> 00:04:05,020 Ali opet, najčešći jedinica mjere u svijetu 93 00:04:05,020 --> 00:04:07,820 računalstva je bajtova, osam bita. 94 00:04:07,820 --> 00:04:09,720 Samo zato što jedan zalogaj, prilično beskoristan. 95 00:04:09,720 --> 00:04:12,020 Osam bitova, nije strašno korisno, ali barem to je više 96 00:04:12,020 --> 00:04:14,280 korisniji od jedne mjerne jedinice. 97 00:04:14,280 --> 00:04:17,100 Tako je s osam bita, obično ćete predstavljaju binarni. 98 00:04:17,100 --> 00:04:20,459 Dakle, ovdje imamo brojeve nula, jedan, dva, a onda, kao 99 00:04:20,459 --> 00:04:24,200 Nate je učinio u našem videu prošle srijede, možemo nastaviti 100 00:04:24,200 --> 00:04:25,940 računajući do sedam, osam. 101 00:04:25,940 --> 00:04:27,860 A onda, ako ćemo koristiti sve više i više bitova, mi 102 00:04:27,860 --> 00:04:29,880 može računati do beskonačnosti. 103 00:04:29,880 --> 00:04:32,800 Ali ako imate samo ograničen broj tih bitova, kao što je 104 00:04:32,800 --> 00:04:35,030 slučaj u bilo kojem računalnom sustavu ili čak raketa 105 00:04:35,030 --> 00:04:36,670 sustav, dobro, doista imate samo 106 00:04:36,670 --> 00:04:37,900 konačnih iznosa preciznosti. 107 00:04:37,900 --> 00:04:41,290 Dakle, ako želite da predstavljaju broj kao 0,1, dobro, 108 00:04:41,290 --> 00:04:43,410 Računalo mora izabrati. 109 00:04:43,410 --> 00:04:45,970 A ako ima samo konačan broj brojeva što može 110 00:04:45,970 --> 00:04:50,490 predstavljaju, može doći blizu 0,1 za vas, ali to ne može 111 00:04:50,490 --> 00:04:53,730 nužno dati vam točno vrijednost koju želite. 112 00:04:53,730 --> 00:04:55,660 A to je samo jedan od izazova računala, 113 00:04:55,660 --> 00:04:57,090 ispod poklopca motora, srećom. 114 00:04:57,090 --> 00:04:59,110 >> Kao što smo krenuti dalje u semestru, te niža razina 115 00:04:59,110 --> 00:05:02,310 Detalji postao mnogo manje zanimljiva, ali sigurno 116 00:05:02,310 --> 00:05:05,700 primjena tih ideja može imati neki vrlo stvarni svijet 117 00:05:05,700 --> 00:05:06,760 posljedice. 118 00:05:06,760 --> 00:05:08,190 Jedan od njih je malo zabavno. 119 00:05:08,190 --> 00:05:12,150 Kako mnogi od vas su vidjeli iznenađujuće Space film Office? 120 00:05:12,150 --> 00:05:13,620 Ako niste, to je vaš neslužbeni 121 00:05:13,620 --> 00:05:14,370 zadaća za tjedan dana. 122 00:05:14,370 --> 00:05:16,730 No, u uredski prostor, na novaci u tom filmu uzeti 123 00:05:16,730 --> 00:05:19,900 Prednost upravo ovom idejom, ali oni zapravo ukrao 124 00:05:19,900 --> 00:05:21,270 ona iz drugog filma koji bi mogli imati 125 00:05:21,270 --> 00:05:22,760 vidio, čak i godinama prije. 126 00:05:22,760 --> 00:05:24,920 Pa neka mi vam dati nekoliko sekundi ovog prikolicu od 127 00:05:24,920 --> 00:05:27,470 Ova nevjerojatna film i to je jako puno 128 00:05:27,470 --> 00:05:28,340 akademski relevantno. 129 00:05:28,340 --> 00:05:30,310 >> [Igra film] 130 00:05:30,310 --> 00:05:32,240 Zapravo sam se promovirala. 131 00:05:32,240 --> 00:05:33,360 Ja mogu programirati virus koji će parati da 132 00:05:33,360 --> 00:05:34,460 stavljajte off veliki put. 133 00:05:34,460 --> 00:05:35,770 Pa, kako se to radi? 134 00:05:35,770 --> 00:05:37,836 Svaki put ima bankovne transakcije u kojoj je interes 135 00:05:37,836 --> 00:05:40,154 kompjutorska, postoje tisuće dan, računalo završi 136 00:05:40,154 --> 00:05:41,040 s tim frakcija centa. 137 00:05:41,040 --> 00:05:43,050 Ali neću to učiniti ništa protuzakonito. 138 00:05:43,050 --> 00:05:46,730 Ilegalna? Samir, ovo je Amerika. 139 00:05:46,730 --> 00:05:48,010 Morate Kunem se Bogom. 140 00:05:48,010 --> 00:05:51,870 Ako nitko ne zna o tome, ali nas, u redu? No članovi obitelji, nema 141 00:05:51,870 --> 00:05:52,490 djevojke, nitko. 142 00:05:52,490 --> 00:05:53,882 [Nečujan]. 143 00:05:53,882 --> 00:05:57,594 Ne brinite, čovječe, neću nikome reći bilo. 144 00:05:57,594 --> 00:05:59,680 [MOVIE ZAVRŠAVA] 145 00:05:59,680 --> 00:06:01,900 >> U redu, pa možda sam pronašao ovaj film bolji od većine 146 00:06:01,900 --> 00:06:05,530 ljudi ovdje, ali u svakom slučaju, virus koji su bili 147 00:06:05,530 --> 00:06:06,400 pokušava stvoriti - 148 00:06:06,400 --> 00:06:08,410 te u filmovima, bilo da bih nazvati nešto virusa, 149 00:06:08,410 --> 00:06:09,770 to je općenito nije zapravo virus. 150 00:06:09,770 --> 00:06:11,600 To je samo program koji je netko napisao nešto učiniti. 151 00:06:11,600 --> 00:06:13,800 I u ovom slučaju, dečki su pokušali napisati program 152 00:06:13,800 --> 00:06:16,610 da je iskoristio svoju tvrtku pod nazivom Innotech je 153 00:06:16,610 --> 00:06:19,740 računalni sustav, pri čemu Računala, također, čak i kada je to 154 00:06:19,740 --> 00:06:21,350 dolazi do novca, ne može nužno 155 00:06:21,350 --> 00:06:23,490 predstavljaju novac precizno. 156 00:06:23,490 --> 00:06:27,630 Dakle, iako ste možda 0,10 dolara u svoj bankovni račun, 157 00:06:27,630 --> 00:06:31,060 0,10, dobro, računalo zapravo možda mislite da imate 158 00:06:31,060 --> 00:06:33,560 to mnogi centi u svoj bankovni račun. 159 00:06:33,560 --> 00:06:35,750 I tako ono što ti dečki su teže učiniti - i oni 160 00:06:35,750 --> 00:06:38,240 ukrao ideju, ispada iz Superman III, gdje 161 00:06:38,240 --> 00:06:41,210 Richard Pryor učinio istu stvar - oni su u suštini 162 00:06:41,210 --> 00:06:44,880 pisanje programa koji teže da se svi prateći 163 00:06:44,880 --> 00:06:46,930 brojevi, svi od sitnih, sitnih, sitnih frakcija 164 00:06:46,930 --> 00:06:50,160 penija, i siphoning one off, tako da su ljudi samo 165 00:06:50,160 --> 00:06:52,620 misao, oh, to je samo 0,10 dolara tamo, ali sve one 166 00:06:52,620 --> 00:06:54,410 prateći brojevi na kraju zbrojiti. 167 00:06:54,410 --> 00:06:57,490 Dakle prekrasnom idejom i osvetio urnebesno u tome 168 00:06:57,490 --> 00:06:58,250 posebno film. 169 00:06:58,250 --> 00:07:01,800 >> No, u stvarnom svijetu, također, postoji puno više u vezi 170 00:07:01,800 --> 00:07:03,190 implikacije ovih svašta. 171 00:07:03,190 --> 00:07:05,450 A jedan od razloga da se upustim u području računala 172 00:07:05,450 --> 00:07:07,620 Znanost je, opet, njezina primjenjivost ne 173 00:07:07,620 --> 00:07:09,740 tehničkih znanosti sama, ali samo za 174 00:07:09,740 --> 00:07:10,650 druga područja. 175 00:07:10,650 --> 00:07:14,760 Dakle, ovo je manje raspoložen pogled na ono što može poći po zlu, ali 176 00:07:14,760 --> 00:07:17,630 to je također prilično otvara oči, mislim, kad je u pitanju 177 00:07:17,630 --> 00:07:20,760 razumijevanje kako točno sveprisutna tehnologija poput 178 00:07:20,760 --> 00:07:22,870 računala i programiranje i ovih dana, 179 00:07:22,870 --> 00:07:23,930 u obliku softvera. 180 00:07:23,930 --> 00:07:26,500 Dakle, ovo Sljedeći isječak je samo oko šest minuta, nastavlja 181 00:07:26,500 --> 00:07:30,320 gdje smo stali zadnji put, ali nam omogućuje da pogledate malo 182 00:07:30,320 --> 00:07:33,370 više u dubinu na jednom takvom od tih pitanja. 183 00:07:33,370 --> 00:07:35,270 Dopustite mi da preskočite naprijed tamo gdje smo stali, 184 00:07:35,270 --> 00:07:37,780 koji je bio ovdje. 185 00:07:37,780 --> 00:07:41,580 I mi smo dio dva od dva, za oko šest minuta ovdje. 186 00:07:41,580 --> 00:07:41,980 >> [PLAY MOVIE] 187 00:07:41,980 --> 00:07:45,430 Udario moderne raketne tehnologije. 188 00:07:45,430 --> 00:07:49,280 Godine 1991, s početkom prvog Zaljevskog rata, Patriot 189 00:07:49,280 --> 00:07:51,350 raketa doživjeli sličnu vrstu 190 00:07:51,350 --> 00:07:52,645 Broj pretvorbe problem. 191 00:07:52,645 --> 00:07:57,460 I kao rezultat toga, 20 osoba, 20 američkih vojnika, ubijeno 192 00:07:57,460 --> 00:08:01,130 a oko 100 ranjeno, kada Patriot, koji je trebao 193 00:08:01,130 --> 00:08:03,400 za zaštitu od dolaznih Scuds, 194 00:08:03,400 --> 00:08:06,020 nije uspio ispaliti projektil. 195 00:08:06,020 --> 00:08:09,350 >> Kad Irak napao Kuvajt i Amerika pokrenula Desert 196 00:08:09,350 --> 00:08:13,530 Oluja je početkom 1991, Patriot raketne baterije su 197 00:08:13,530 --> 00:08:16,970 razmještene kako bi zaštitili Saudijsku Arabiju i Izrael iz Irački 198 00:08:16,970 --> 00:08:19,810 Scud raketnih napada. 199 00:08:19,810 --> 00:08:23,740 Patriot je američki srednjeg dometa zemlja-zrak sustav, 200 00:08:23,740 --> 00:08:26,370 proizveden od strane tvrtke Raytheon. 201 00:08:26,370 --> 00:08:30,860 Veličina Patriot interceptor sama, riječ je o 202 00:08:30,860 --> 00:08:35,650 otprilike 20 metara dug i težak oko 2.000 kilograma. 203 00:08:35,650 --> 00:08:38,809 I to nosi bojevu glavu od oko - Mislim da je to otprilike 204 00:08:38,809 --> 00:08:40,169 150 £. 205 00:08:40,169 --> 00:08:45,820 A bojne glave sama je visoka eksploziv koji ima 206 00:08:45,820 --> 00:08:48,120 Fragmenti oko njega. 207 00:08:48,120 --> 00:08:51,870 Kućište glavom je zamišljen kao sačma. 208 00:08:51,870 --> 00:08:54,920 Rakete su provedena četiri po kontejneru i 209 00:08:54,920 --> 00:08:57,850 prevezeno polu prikolicu. 210 00:08:57,850 --> 00:09:02,940 >> Patriot proturaketni sustav seže barem do 211 00:09:02,940 --> 00:09:05,530 20 godina. 212 00:09:05,530 --> 00:09:09,150 To je bio izvorno zamišljen kao raketa protuzračne obrane na 213 00:09:09,150 --> 00:09:12,920 pucati dolje neprijateljske zrakoplove, u prvom Zaljevskom ratu. 214 00:09:12,920 --> 00:09:17,700 Kada je taj rat došao zajedno, vojska želi da ga koristiti za pucanje 215 00:09:17,700 --> 00:09:19,880 dolje Scuds, a ne zrakoplova. 216 00:09:19,880 --> 00:09:24,860 Air Force Irački nije toliko problem, ali vojska 217 00:09:24,860 --> 00:09:27,260 bio zabrinut Scuds. 218 00:09:27,260 --> 00:09:30,810 I tako su pokušali nadograditi Patriot. 219 00:09:30,810 --> 00:09:33,770 Presretanje raketa neprijatelj putuju na MACH 5 ide 220 00:09:33,770 --> 00:09:35,790 se dovoljno izazovan. 221 00:09:35,790 --> 00:09:39,460 No, kada je Patriot je prevezena u službu, vojska 222 00:09:39,460 --> 00:09:43,730 nije bio svjestan nekog iračkog izmjene koje je napravio njihov 223 00:09:43,730 --> 00:09:46,510 Scuds gotovo nemoguće pogoditi. 224 00:09:46,510 --> 00:09:50,040 >> Ono što se dogodilo je Scuds koje su 225 00:09:50,040 --> 00:09:51,360 dolaze u bilo nestabilno. 226 00:09:51,360 --> 00:09:52,266 Oni su klimatav. 227 00:09:52,266 --> 00:09:56,300 Razlog za to je bio Iračani, kako bi dobili 600 228 00:09:56,300 --> 00:10:00,650 kilometara iz 300km raspon projektila, uzeo 229 00:10:00,650 --> 00:10:02,423 težina od prednjeg glavom i 230 00:10:02,423 --> 00:10:03,990 napravio bojne glave upaljač. 231 00:10:03,990 --> 00:10:08,700 Tako sada Patriot pokušava doći na Scud, a većina 232 00:10:08,700 --> 00:10:11,192 vrijeme, velika većina vremena, to bi 233 00:10:11,192 --> 00:10:13,450 samo lete po Scud. 234 00:10:13,450 --> 00:10:16,300 Nakon Patriot sustava operateri shvatili Patriot 235 00:10:16,300 --> 00:10:20,160 promašio svoj cilj, oni detonirao Patriot bojevu glavu. 236 00:10:20,160 --> 00:10:22,760 Da biste izbjegli moguće gubitke, to je dozvoljeno 237 00:10:22,760 --> 00:10:25,100 da padne na tlo. 238 00:10:25,100 --> 00:10:29,400 To je ono što većina ljudi vidjeli, kao velike vatrene kugle na nebu, 239 00:10:29,400 --> 00:10:34,930 i neshvaćen kao presreće od Scud bojevih glava. 240 00:10:34,930 --> 00:10:37,490 >> Iako, na noćnom nebu, Patriotsi pojavio se 241 00:10:37,490 --> 00:10:41,570 uspješno uništili Scuds, na Dhahran, nije moglo biti 242 00:10:41,570 --> 00:10:43,730 pogreška o njegovu učinkovitost. 243 00:10:43,730 --> 00:10:46,370 Tu, Patriot je radarski sustav izgubio trag 244 00:10:46,370 --> 00:10:50,090 dolazni Scud i nikada pokrenut zbog 245 00:10:50,090 --> 00:10:51,340 do programskog mana. 246 00:10:54,030 --> 00:10:57,050 To je bio Izraelci koji je prvi otkrio da je više 247 00:10:57,050 --> 00:11:02,000 Sustav je uključen, to je veća diskrepancija vrijeme postao, 248 00:11:02,000 --> 00:11:05,530 zbog sat ugrađen u sustavu računala. 249 00:11:05,530 --> 00:11:09,060 Oko dva tjedna prije tragedije u Dhahran, The 250 00:11:09,060 --> 00:11:11,730 Izraelci izvijestio da Ministarstvo obrane da je 251 00:11:11,730 --> 00:11:13,250 Sustav je gubljenje vremena. 252 00:11:13,250 --> 00:11:15,610 Nakon što je oko osam sati rada, oni su primijetili da 253 00:11:15,610 --> 00:11:18,330 Sustav je postao osjetno manje točne. 254 00:11:18,330 --> 00:11:20,910 Ministarstvo obrane je reagirao rekavši sve 255 00:11:20,910 --> 00:11:23,710 baterije Patriot da ne napuštaju sustave 256 00:11:23,710 --> 00:11:25,450 na dulje vrijeme. 257 00:11:25,450 --> 00:11:28,010 Oni nikada nije rekao ono što je dugo vremena bio - 8 sati, 10 258 00:11:28,010 --> 00:11:29,690 sati, 1000 sati. 259 00:11:29,690 --> 00:11:31,940 Nitko nije znao. 260 00:11:31,940 --> 00:11:35,020 >> Patriot baterija stacioniran u vojarni u Dhahran 261 00:11:35,020 --> 00:11:39,030 i njegov manjkav unutarnji sat je bio na više od 100 sati na 262 00:11:39,030 --> 00:11:42,240 noć 25. veljače. 263 00:11:42,240 --> 00:11:46,580 To prati vrijeme do točnosti od oko desetine sekunde. 264 00:11:46,580 --> 00:11:48,830 Sada desetina drugi je zanimljiv jer je broj 265 00:11:48,830 --> 00:11:52,660 to se ne može izraziti u binarnom, točno, što znači 266 00:11:52,660 --> 00:11:54,940 to se ne može izraziti točno u bilo 267 00:11:54,940 --> 00:11:57,330 Suvremeni digitalni računalo. 268 00:11:57,330 --> 00:11:59,130 To je teško vjerovati. 269 00:11:59,130 --> 00:12:01,720 Ali ovo koristiti kao primjer. 270 00:12:01,720 --> 00:12:04,090 >> Ajmo uzeti broj trećine. 271 00:12:04,090 --> 00:12:07,950 Jedna trećina ne može izraziti u decimalnom, točno. 272 00:12:07,950 --> 00:12:12,710 Jedna trećina je 0,333 za odlazak na beskonačnost. 273 00:12:12,710 --> 00:12:17,050 Nema načina da to učinite s apsolutnom točnošću u decimalama. 274 00:12:17,050 --> 00:12:19,340 To je točno ista vrsta problema koje se dogodilo u 275 00:12:19,340 --> 00:12:20,190 Patriot. 276 00:12:20,190 --> 00:12:24,680 Što duže sustav trčao, što je još gore vrijeme pogreška postala. 277 00:12:24,680 --> 00:12:28,640 Nakon 100 sati rada, pogreške u to vrijeme bio samo 278 00:12:28,640 --> 00:12:29,870 oko jedne trećine drugi. 279 00:12:29,870 --> 00:12:34,790 No, u smislu cilja projektil putuje na MACH 5, 280 00:12:34,790 --> 00:12:39,140 to je rezultiralo praćenje pogrešaka više od 600 metara. 281 00:12:39,140 --> 00:12:42,510 To će biti fatalna pogreška za vojnicima na Dhahran. 282 00:12:42,510 --> 00:12:48,680 >> Ono što se dogodilo je Scud lansiranje je otkriven rano upozorenje 283 00:12:48,680 --> 00:12:52,440 sateliti i oni znali da je Scud je dolazio u njihovom 284 00:12:52,440 --> 00:12:53,350 opći smjer. 285 00:12:53,350 --> 00:12:55,470 Oni nisu znali gdje je dolazio. 286 00:12:55,470 --> 00:12:58,210 To je sada do radarske komponente Patriot 287 00:12:58,210 --> 00:13:01,920 sustav, braneći Dhahran, locirati i pratiti 288 00:13:01,920 --> 00:13:03,700 dolazni neprijatelj projektila. 289 00:13:03,700 --> 00:13:05,390 Radar je jako pametna. 290 00:13:05,390 --> 00:13:07,570 Ti bi zapravo pratiti položaj Scud, a zatim 291 00:13:07,570 --> 00:13:10,340 predvidjeti gdje će vjerojatno biti sljedeći put 292 00:13:10,340 --> 00:13:12,040 radarski poslao puls van. 293 00:13:12,040 --> 00:13:13,730 To je bio pozvan u rasponu vrata. 294 00:13:13,730 --> 00:13:18,820 Zatim, nakon što je Patriot odluči dovoljno je vremena prošlo da ide 295 00:13:18,820 --> 00:13:22,600 natrag i provjerite sljedeću lokaciju za to otkriven 296 00:13:22,600 --> 00:13:24,190 objekt, to ide natrag. 297 00:13:24,190 --> 00:13:27,940 Dakle, kada se vratio na krivom mjestu, onda ne vidi 298 00:13:27,940 --> 00:13:31,000 prigovoriti, i to odluči da nema objekt. 299 00:13:31,000 --> 00:13:34,370 To je lažna detekcija i padne sa staze. 300 00:13:34,370 --> 00:13:37,630 >> Dolazni Scud nestao iz radaru. 301 00:13:37,630 --> 00:13:41,300 I sekundi kasnije, udario u vojarni. The Scud 302 00:13:41,300 --> 00:13:44,730 ubili 28, a bio je posljednji otkaz tijekom 303 00:13:44,730 --> 00:13:46,450 prvi Zaljevskog rata. 304 00:13:46,450 --> 00:13:50,570 Tragično, ažurirani softver stigao u Dhahran 305 00:13:50,570 --> 00:13:52,060 sljedećeg dana. 306 00:13:52,060 --> 00:13:56,210 A softver mana je fiksna, zatvaranje jednog poglavlja u 307 00:13:56,210 --> 00:13:58,370 uznemiri povijest Patriot rakete. 308 00:14:01,790 --> 00:14:04,990 Patriot je zapravo skraćenica za "phased Array praćenje 309 00:14:04,990 --> 00:14:08,516 Presresti od Target. " 310 00:14:08,516 --> 00:14:13,390 >> U redu, tako mnogo žalosni ishod nije sasvim 311 00:14:13,390 --> 00:14:14,430 razumijevanje ovaj svijet. 312 00:14:14,430 --> 00:14:18,180 I takeaway, stvarno, iz filma je da rješenje 313 00:14:18,180 --> 00:14:20,790 tamo je ponovno pokrenuti sustav obrane proturaketne 314 00:14:20,790 --> 00:14:21,770 svako jednom u neko vrijeme. 315 00:14:21,770 --> 00:14:24,280 I tako opet, jedan od ciljeva ovog kolegija, svakako 316 00:14:24,280 --> 00:14:26,900 na više skromnom skali od tih aplikacija, je 317 00:14:26,900 --> 00:14:30,710 stvarno otvori svačiji oči na točno kako idete o 318 00:14:30,710 --> 00:14:34,380 Strojevi za izradu učiniti ono što želite ih učiniti i kako idete 319 00:14:34,380 --> 00:14:37,180 o da radi ispravno, a usput radi 320 00:14:37,180 --> 00:14:38,810 dobro, elegantno, i tako dalje. 321 00:14:38,810 --> 00:14:41,680 I tako danas, ajmo zaroniti malo više od toga, ali 322 00:14:41,680 --> 00:14:44,210 tako da mi ne ide prebrzo, posebice za one manje 323 00:14:44,210 --> 00:14:46,590 ugodno, ali isto tako da možemo zadržati interes 324 00:14:46,590 --> 00:14:49,390 one ugodnije, neka je samo brzo početi s malo 325 00:14:49,390 --> 00:14:50,970 od rekapitulacija neke od tih ideja. 326 00:14:50,970 --> 00:14:53,710 I opet, pitajte dalje, kako u osobi ili online, ako imate 327 00:14:53,710 --> 00:14:56,320 pitanja tako da možemo zadržati sve na istoj stranici. 328 00:14:56,320 --> 00:14:58,820 >> Dakle CS50 aparati, brz korak natrag, je 329 00:14:58,820 --> 00:15:02,360 ono, u svojim riječima? 330 00:15:02,360 --> 00:15:06,454 To je u redu ako nemate pojma što te riječi mogu biti još. 331 00:15:06,454 --> 00:15:07,830 [Nečujan] 332 00:15:07,830 --> 00:15:10,950 Ok, tako univerzalno sučelje za - 333 00:15:10,950 --> 00:15:11,900 da možemo sve dijeliti. 334 00:15:11,900 --> 00:15:12,470 Apsolutno. 335 00:15:12,470 --> 00:15:14,840 Tako smo mogli, na primjer, reći da ide na neke 336 00:15:14,840 --> 00:15:16,910 web stranica, preuzimanje datoteka ovaj softver za Mac OS. 337 00:15:16,910 --> 00:15:19,140 Preuzmite ovaj softver za Windows, konfigurirati u 338 00:15:19,140 --> 00:15:20,100 na taj način i da. 339 00:15:20,100 --> 00:15:22,370 No, stvarnost je tada ćemo izvoditi u bezbroj tehničke 340 00:15:22,370 --> 00:15:23,200 podržavaju pitanja. 341 00:15:23,200 --> 00:15:26,630 I također ovih dana, mnogo od onoga što je učinjeno strani poslužitelja, 342 00:15:26,630 --> 00:15:28,490 u svijetu računalstva, posebno kada je u pitanju 343 00:15:28,490 --> 00:15:31,460 web development i web aplikacije temeljene, zapravo 344 00:15:31,460 --> 00:15:35,110 vrlo često radi na Unix ili Linux računala, za razliku od 345 00:15:35,110 --> 00:15:36,800 Macovi ili Windows računala. 346 00:15:36,800 --> 00:15:39,240 >> Dakle, među odlika, onda, koristeći ovu stvar zove 347 00:15:39,240 --> 00:15:41,500 CS50 Appliance je svi ćemo imati istu okolinu. 348 00:15:41,500 --> 00:15:43,670 Dakle, svatko je na istoj stranici bez obzira na hardveru koji vam 349 00:15:43,670 --> 00:15:46,650 došao na kampusu s, ali će također biti brbljanje u točno 350 00:15:46,650 --> 00:15:48,230 Isto okruženje koje ćete koristiti prema 351 00:15:48,230 --> 00:15:51,080 Semestar je kraj, kao i za izradu web stranica, kao iu 352 00:15:51,080 --> 00:15:53,580 Budućnost za stvarnim aplikacijama istih. 353 00:15:53,580 --> 00:15:56,350 Dakle, konkretno, CS50 Appliance je besplatno komad 354 00:15:56,350 --> 00:15:59,400 softver koji vam omogućuje da pokrenete drugi operativni sustav, 355 00:15:59,400 --> 00:16:02,670 Linux, u ovom slučaju, na vašem računalu, u prozoru. 356 00:16:02,670 --> 00:16:04,750 Sada ne možete samo preuzeti aparat. 357 00:16:04,750 --> 00:16:08,170 Trebate program s kojim se igraju ili pokrenuti uređaj. 358 00:16:08,170 --> 00:16:11,220 A taj komad softvera je općenito poznat kao 359 00:16:11,220 --> 00:16:11,520 hypervisor. 360 00:16:11,520 --> 00:16:14,050 Hipervizorskog dolaze u obliku proizvoda kao što su VMware, 361 00:16:14,050 --> 00:16:15,820 Virtualni Box, Paralele. 362 00:16:15,820 --> 00:16:18,390 Sve vrste tvrtki čine softver, i slobodan i 363 00:16:18,390 --> 00:16:19,310 komercijalne, podjednako. 364 00:16:19,310 --> 00:16:21,480 Što ćete vidjeti u problemu Set 1 su upute o tome kako 365 00:16:21,480 --> 00:16:23,440 dobiti besplatni softver s kojim se 366 00:16:23,440 --> 00:16:25,000 pokrenuti CS50 Appliance. 367 00:16:25,000 --> 00:16:28,060 A kada to učinite, imat ćete, u prozoru na vašem Mac ili PC, 368 00:16:28,060 --> 00:16:30,710 desktop okruženje koje izgleda baš tako, gdje je 369 00:16:30,710 --> 00:16:33,100 ima početni izbornik poput stvar 370 00:16:33,100 --> 00:16:34,510 donji lijevi kut. 371 00:16:34,510 --> 00:16:38,030 To je u kući mapu, ili home direktorij, u gornjem lijevom 372 00:16:38,030 --> 00:16:40,280 postoji, kanta za smeće, i tako dalje. 373 00:16:40,280 --> 00:16:43,450 Tako ćemo zafrkavati osim potrebne pojedinosti što idemo. 374 00:16:43,450 --> 00:16:46,430 >> Ali sada počnimo zaroniti u C. 375 00:16:46,430 --> 00:16:49,200 Dakle, C je ovo programski jezik, sličan u duhu 376 00:16:49,200 --> 00:16:52,390 Scratch, ali daleko manje grafički, ali ironično, daleko 377 00:16:52,390 --> 00:16:54,730 snažnije jednom kad se pamet s njom. 378 00:16:54,730 --> 00:16:58,970 Dakle, u C, pišemo programe pisanjem izvornog koda, što je 379 00:16:58,970 --> 00:17:01,640 ovo Engleski poput sintakse, slično čarape 380 00:17:01,640 --> 00:17:05,609 dokaz da smo zadnji put koji vam omogućuje da 381 00:17:05,609 --> 00:17:07,910 izraziti sebe dosta precizno, ako 382 00:17:07,910 --> 00:17:09,760 arcanely, na računalo. 383 00:17:09,760 --> 00:17:11,960 >> Pa kakav proizvoda softvera ti zapravo treba 384 00:17:11,960 --> 00:17:15,520 pisati programe na jeziku poput C, na temelju naših 385 00:17:15,520 --> 00:17:17,492 razgovor u ponedjeljak? 386 00:17:17,492 --> 00:17:19,650 [Nečujan] 387 00:17:19,650 --> 00:17:21,079 OK, trebate samo tekst editor. 388 00:17:21,079 --> 00:17:22,890 Ne trebate bilo koji poseban softver 389 00:17:22,890 --> 00:17:24,460 po sebi pisati programe. 390 00:17:24,460 --> 00:17:27,220 Vi samo trebate tekst editor kao što je Notepad, na Windowsima, 391 00:17:27,220 --> 00:17:30,450 TextEdit na Mac, ili nešto što se zove gedit, u svijetu 392 00:17:30,450 --> 00:17:32,020 Linux, koji ćemo koristiti ovdje. 393 00:17:32,020 --> 00:17:33,750 I to je to, pisati programe. 394 00:17:33,750 --> 00:17:35,480 >> No pisanje je samo polovicu jednadžbe. 395 00:17:35,480 --> 00:17:36,630 Nakon toga je potrebno da ih pokrenuti. 396 00:17:36,630 --> 00:17:38,320 No, kako bi se pokrenuti programe - 397 00:17:38,320 --> 00:17:39,600 ne možete pokrenuti izvorni kod. 398 00:17:39,600 --> 00:17:41,500 Umjesto toga morate učiniti ono što za njega prvi? 399 00:17:41,500 --> 00:17:41,900 Da. 400 00:17:41,900 --> 00:17:43,200 David J. MALAN: Morate 401 00:17:43,200 --> 00:17:44,130 prevesti ga. 402 00:17:44,130 --> 00:17:49,010 A, netko drugi, sastavljanje izvornog koda znači - 403 00:17:49,010 --> 00:17:50,260 [Nečujan] 404 00:17:52,300 --> 00:17:52,700 David J. MALAN: Točno. 405 00:17:52,700 --> 00:17:54,430 Ga Prevođenje na nula i one. 406 00:17:54,430 --> 00:17:57,150 Zbog svih nas, ovih dana, imaju računala koja imaju CPU, 407 00:17:57,150 --> 00:18:00,350 Gotovo svi koji su napravljeni od strane tvrtke pod nazivom Intel i 408 00:18:00,350 --> 00:18:03,320 Intel Inside, znači da je to mozak unutar vašeg 409 00:18:03,320 --> 00:18:04,990 računalo, poznat kao CPU-a. 410 00:18:04,990 --> 00:18:07,570 A jedna od stvari koje činimo da mozak, to zna 411 00:18:07,570 --> 00:18:10,390 kako razumjeti obrasce nula i one. 412 00:18:10,390 --> 00:18:13,240 To zna što uzorak bitova predstavlja dodatak, što 413 00:18:13,240 --> 00:18:15,500 uzorak predstavlja oduzimanja, ono uzorak 414 00:18:15,500 --> 00:18:18,890 bitovi predstavljaju ispis i stvaranje zvučnim zvuk. 415 00:18:18,890 --> 00:18:22,450 >> Dakle, u kratko, CPU, zajedno s operativnim sustavom, 416 00:18:22,450 --> 00:18:25,230 što je komad softvera koji radi na vrhu CPU, 417 00:18:25,230 --> 00:18:26,050 da se tako izrazim. 418 00:18:26,050 --> 00:18:29,850 Zajedno, ta dva komada znati kako pokrenuti programe koji 419 00:18:29,850 --> 00:18:31,070 mi ljudi pisati. 420 00:18:31,070 --> 00:18:34,040 >> Dakle, ako sam otići u CS50 Appliance ovdje, moram otvoriti 421 00:18:34,040 --> 00:18:35,660 gore tekst editor, a ja mogu pristupiti ovo 422 00:18:35,660 --> 00:18:36,560 u nekoliko načina. 423 00:18:36,560 --> 00:18:39,060 Ja mogu ili ići na Izbornik, Programiranje, 424 00:18:39,060 --> 00:18:40,230 i onda mogu odabrati - 425 00:18:40,230 --> 00:18:40,810 Nope, ne da izbornik. 426 00:18:40,810 --> 00:18:43,860 Ja mogu ići na Accessories / gedit ovdje otvoriti 427 00:18:43,860 --> 00:18:45,090 moj mali tekst editor. 428 00:18:45,090 --> 00:18:48,030 Ili jednostavno, ja mogu kliknite ovaj mali ikonu na dnu 429 00:18:48,030 --> 00:18:48,970 lijevom kutu. 430 00:18:48,970 --> 00:18:50,430 A sada ću dobiti ovu sredinu ovdje. 431 00:18:50,430 --> 00:18:52,590 To je prilično podsjeća na jednostavan tekst editor, sa samo 432 00:18:52,590 --> 00:18:53,820 jedan ili dva razlike. 433 00:18:53,820 --> 00:18:56,420 U vrhu, gdje je kursor treperi sada, ovo je mjesto gdje 434 00:18:56,420 --> 00:18:57,900 Ja mogu početi pisati svoj kod. 435 00:18:57,900 --> 00:19:00,415 U dnu je ta stvar zove prozor terminala. 436 00:19:00,415 --> 00:19:03,400 A što vrste stvari mogu učiniti u ovom 437 00:19:03,400 --> 00:19:04,960 takozvani terminal prozor? 438 00:19:04,960 --> 00:19:06,680 [Nečujan] 439 00:19:06,680 --> 00:19:07,890 >> Ok, tako ću pokrenuti naredbe. 440 00:19:07,890 --> 00:19:10,300 A neke od naredbi smo vodili u ponedjeljak bili malo 441 00:19:10,300 --> 00:19:15,070 grobni na prvi, ali li za popis, cd za promjenu direktorija, 442 00:19:15,070 --> 00:19:16,540 rm, za uklanjanje. 443 00:19:16,540 --> 00:19:19,680 Dakle, to je svojevrsna old-school način Kretanje 444 00:19:19,680 --> 00:19:22,310 računalo, koristeći samo tipkovnicu i tekstualnih naredbi, 445 00:19:22,310 --> 00:19:24,130 a ne, općenito, pomoću miša. 446 00:19:24,130 --> 00:19:25,960 No, vidjet ćemo, prije dugo, to zapravo nam daje 447 00:19:25,960 --> 00:19:28,520 malo više snage i malo više preciznosti s kojom 448 00:19:28,520 --> 00:19:29,600 se izraziti. 449 00:19:29,600 --> 00:19:31,330 I onda ovdje na lijevoj strani, samo mi ćemo vidjeti, 450 00:19:31,330 --> 00:19:34,360 kao što smo početi pisanje softvera, malo sažetak 451 00:19:34,360 --> 00:19:36,350 Program koji smo napisana na gornjem lijevom kutu. 452 00:19:36,350 --> 00:19:38,360 No, vidjet ćemo da je opet ne zadugo. 453 00:19:38,360 --> 00:19:40,050 >> Tako ćemo učiniti nešto prilično jednostavan ovdje. 454 00:19:40,050 --> 00:19:43,440 Neka me prvi ići naprijed i idite na File, Save, a ja sam samo 455 00:19:43,440 --> 00:19:45,970 ide kliknuti na jharvard ovdje, više na lijevoj strani, a 456 00:19:45,970 --> 00:19:48,930 jharvard je, opet, ime za moj dom mapu, moje 457 00:19:48,930 --> 00:19:52,110 osobne datoteke, mene, sada je John Harvard, kao i sve vas 458 00:19:52,110 --> 00:19:54,230 uskoro će biti John Harvard u ovom okruženju. 459 00:19:54,230 --> 00:19:57,360 On je dobio ovu Home imenik, Moji dokumenti i tako dalje, 460 00:19:57,360 --> 00:19:58,900 da želim spasiti, sada, ova datoteka u. 461 00:19:58,900 --> 00:20:01,520 Dakle, ja ću to nazvati hello.c. Onda ću otići 462 00:20:01,520 --> 00:20:05,770 naprijed i kliknite Spremi, a što sad imam ovdje je kartica 463 00:20:05,770 --> 00:20:09,440 zove hello.c, toliko kao drugi tip urednika. 464 00:20:09,440 --> 00:20:11,760 >> Pa sada neka mi ići naprijed i početi pisati program. 465 00:20:11,760 --> 00:20:14,440 int main (void). 466 00:20:14,440 --> 00:20:18,150 A onda sam učinio zadnji put, printf, za ispis formatiran, 467 00:20:18,150 --> 00:20:22,120 ("Hello, World!" 468 00:20:22,120 --> 00:20:24,500 );. 469 00:20:24,500 --> 00:20:25,630 Gotovo završiti. 470 00:20:25,630 --> 00:20:27,130 Ali ja sam nedostaje nekoliko detalja. 471 00:20:27,130 --> 00:20:30,210 Ono što nedostaje iz ovog programa da sam stvarno potrebno za 472 00:20:30,210 --> 00:20:31,890 to je zapravo sastaviti? 473 00:20:31,890 --> 00:20:32,130 Da. 474 00:20:32,130 --> 00:20:33,980 [Nečujan]? 475 00:20:33,980 --> 00:20:35,770 >> David J. MALAN: Da, pa trebam uključiti standard 476 00:20:35,770 --> 00:20:36,700 I / O biblioteka. 477 00:20:36,700 --> 00:20:39,470 Dakle, to treba ići iznad glavni, tako da sam samo ću 478 00:20:39,470 --> 00:20:40,790 napraviti neki prostor za njega tamo. 479 00:20:40,790 --> 00:20:44,420 I ja ću to učiniti # include . 480 00:20:44,420 --> 00:20:46,570 I primijetiti angled zagrade tamo. 481 00:20:46,570 --> 00:20:49,410 I kao stranu, gedit je malo user friendly, ako 482 00:20:49,410 --> 00:20:52,420 ponekad malo konfuzno, u smislu da pokušava pomoći vašem 483 00:20:52,420 --> 00:20:54,770 Oči primijetiti ono linije s kojim. 484 00:20:54,770 --> 00:20:57,760 Dakle, činjenica da je moj kursor je tik do ove kutno 485 00:20:57,760 --> 00:21:00,600 Nosač, primijetiti kako se to isticanje drugog kutno 486 00:21:00,600 --> 00:21:01,920 Nosač plus ovo. 487 00:21:01,920 --> 00:21:03,770 A to je samo privući moju pozornost na činjenicu da sam 488 00:21:03,770 --> 00:21:04,460 imaju simetriju. 489 00:21:04,460 --> 00:21:07,010 I simetrija u programiranju je općenito dobra stvar. 490 00:21:07,010 --> 00:21:10,270 Isto tako, ako sam premjestiti moj kursor do kraja, primijetiti kako 491 00:21:10,270 --> 00:21:13,630 vitičastih zagrada redati pokazati da, da, imam otvoren jedan 492 00:21:13,630 --> 00:21:15,160 i zatvoreni jedan, da tako kažemo. 493 00:21:15,160 --> 00:21:16,640 >> U redu, a ja mogu napraviti jednu drugu stvar. 494 00:21:16,640 --> 00:21:20,090 To nije strogo potrebno, ali dobra praksa, kako kažu 495 00:21:20,090 --> 00:21:21,250 povratak 0. 496 00:21:21,250 --> 00:21:24,140 A povratak 0 ne ono što za nas ovdje? 497 00:21:24,140 --> 00:21:25,584 Ili znači što? 498 00:21:25,584 --> 00:21:27,480 [Nečujan] 499 00:21:27,480 --> 00:21:28,300 David J. MALAN: Ali ništa ne valja. 500 00:21:28,300 --> 00:21:30,280 I iskreno to je teško za mnogo pogriješiti u 501 00:21:30,280 --> 00:21:31,250 programirati ovaj kratki. 502 00:21:31,250 --> 00:21:33,930 Dakle, ja sam samo biće super eksplicitno da je sve dobro. 503 00:21:33,930 --> 00:21:36,740 Ja, čovjek, kad sam pokrenuti ovaj program, vjerojatno neće nikada 504 00:21:36,740 --> 00:21:38,150 vidim da 0. 505 00:21:38,150 --> 00:21:41,070 Općenito, ovi brojevi koji su se vratili iz glavne 506 00:21:41,070 --> 00:21:43,540 samo stražnji glave prema ljudima kada 507 00:21:43,540 --> 00:21:44,360 nešto pođe po zlu. 508 00:21:44,360 --> 00:21:46,640 A ti se malo pop-up rekavši pogreške sustava, jedan, 509 00:21:46,640 --> 00:21:48,760 dva, tri, ili bez obzira na broj je da 510 00:21:48,760 --> 00:21:50,100 je zapravo vratio. 511 00:21:50,100 --> 00:21:52,870 Tako nešto drugo krivo s tim? 512 00:21:52,870 --> 00:21:55,300 [Nečujan] 513 00:21:55,300 --> 00:21:58,100 >> David J. MALAN: Dakle, to nije toliko funkcionalna pogreška 514 00:21:58,100 --> 00:21:59,240 ali estetski jedan. 515 00:21:59,240 --> 00:22:02,340 Vjerojatno sam trebao staviti u newline karaktera tamo 516 00:22:02,340 --> 00:22:05,240 kraj ovog niza, tako da smo zapravo pomicanje kursora 517 00:22:05,240 --> 00:22:08,340 sljedeći redak, a program samo izgleda malo ljepše. 518 00:22:08,340 --> 00:22:10,340 >> Dakle, sada me pusti do mog prozora terminala 519 00:22:10,340 --> 00:22:11,490 i zoom natrag u. 520 00:22:11,490 --> 00:22:13,390 A ova stvar ovdje, to se zove brz. 521 00:22:13,390 --> 00:22:16,760 To samo me podsjeća tko sam ja, jharvard @ aparata, gdje 522 00:22:16,760 --> 00:22:18,850 Uređaj je naziv računala sam na. 523 00:22:18,850 --> 00:22:22,380 U zagradama je to tilda, migoljiti simbol, koji 524 00:22:22,380 --> 00:22:24,160 predstavlja što? 525 00:22:24,160 --> 00:22:25,590 PUBLIKA: Početna katalog. 526 00:22:25,590 --> 00:22:26,350 David J. MALAN: Početna katalog. 527 00:22:26,350 --> 00:22:29,350 Dakle, to je samo skraćeni zapis za reći da su u 528 00:22:29,350 --> 00:22:32,780 vaš osobni folder gdje sve svoje datoteke ići po defaultu. 529 00:22:32,780 --> 00:22:36,080 Tako sada, ovdje, ja mogu upisati ls za popis. 530 00:22:36,080 --> 00:22:40,020 I jedino što ovdje vidim u ovom trenutku je hello.c. 531 00:22:40,020 --> 00:22:41,770 I to je dobro, jer sam upravo to napisao. 532 00:22:41,770 --> 00:22:44,380 >> Pa neka mi ići naprijed i ne bi pozdraviti. 533 00:22:44,380 --> 00:22:46,830 I primjetiti nisam tipkati napraviti hello.c. 534 00:22:46,830 --> 00:22:50,300 Umjesto toga, ja sam samo tipkati osnovni naziv datoteke, halo. 535 00:22:50,300 --> 00:22:53,690 I da, kao što smo vidjeli u ponedjeljak, samo će zaključiti da želim 536 00:22:53,690 --> 00:22:54,920 c. datoteka. 537 00:22:54,920 --> 00:22:56,820 Dakle, sada sam upisali bi pozdravio. 538 00:22:56,820 --> 00:22:59,280 Sada vidim ovu prilično dugo naredbu, a nastavit će 539 00:22:59,280 --> 00:23:00,480 Vidjevši to ponovo i ponovo. 540 00:23:00,480 --> 00:23:03,620 Ali da bude jasno, zveka, riječ koja je upravo pojavio, 541 00:23:03,620 --> 00:23:05,340 da je stvarna prevodilac. 542 00:23:05,340 --> 00:23:08,200 Provjerite je samo graditi alat. 543 00:23:08,200 --> 00:23:11,900 To je samo više user friendly program koji me spašava, u 544 00:23:11,900 --> 00:23:15,310 dugoročno, iz potrebe da tip iz nevjerojatno dosadan dugo 545 00:23:15,310 --> 00:23:17,020 naredbe kao što je to jednom. 546 00:23:17,020 --> 00:23:18,950 Dakle, da bi mogao pokrenuti zveka ručno. 547 00:23:18,950 --> 00:23:20,530 Ti bi mogao upisati sve to ručno. 548 00:23:20,530 --> 00:23:21,580 Samo se jako dosadan. 549 00:23:21,580 --> 00:23:24,720 I tako bi je samo program koji pojednostavljuje naš život i 550 00:23:24,720 --> 00:23:27,120 radi složenije naredbe za nas. 551 00:23:27,120 --> 00:23:29,410 >> U redu, tako da sada ono što bi datoteka trebala sam 552 00:23:29,410 --> 00:23:31,540 u mom trenutnom direktoriju? 553 00:23:31,540 --> 00:23:36,310 Ne samo hello.c, ali i bok. 554 00:23:36,310 --> 00:23:39,710 Dakle, ako želim pokrenuti halo, podsjetiti da kažem dot crtu, 555 00:23:39,710 --> 00:23:42,220 gdje dot znači ići u trenutačnoj mapi, gdje god 556 00:23:42,220 --> 00:23:46,060 su, a zatim pokrenuti program pod nazivom Pozdrav, i doista, sada, 557 00:23:46,060 --> 00:23:48,080 Imam Hello World. 558 00:23:48,080 --> 00:23:51,640 U redu, bilo kakva pitanja na tijek ili sintaksa 559 00:23:51,640 --> 00:23:52,890 ono što smo upravo učinili? 560 00:23:55,380 --> 00:23:57,040 >> U redu, tako da ćemo uzeti stvari u usjek opet. 561 00:23:57,040 --> 00:24:00,430 Dakle, ovo je underwhelming samo napisati program koji samo 562 00:24:00,430 --> 00:24:01,790 ikada kaže halo, svijet. 563 00:24:01,790 --> 00:24:03,920 Tako smo ga mijenjali, u ponedjeljak, kako kažu, halo, David. 564 00:24:03,920 --> 00:24:06,560 To je malo više osobni, ali jednako teško kodirana kao 565 00:24:06,560 --> 00:24:07,410 Prva verzija. 566 00:24:07,410 --> 00:24:08,780 Dakle, nije sve što je uvjerljiv. 567 00:24:08,780 --> 00:24:13,120 Ali postoji, u C, funkcije sigurno osim 568 00:24:13,120 --> 00:24:15,700 ispis, funkcije koje vam doći korisničkog unosa. 569 00:24:15,700 --> 00:24:17,990 I način na koji smo to učinili, drugi dan, bio je kako slijedi. 570 00:24:17,990 --> 00:24:21,440 Prije nego što sam zapravo isprintati nešto, prvo sam dobio 571 00:24:21,440 --> 00:24:22,410 nešto od korisnika. 572 00:24:22,410 --> 00:24:23,370 Pa neka mi to učiniti opet. 573 00:24:23,370 --> 00:24:26,580 >> Gudački a, gdje je samo proizvoljna ime, ovdje, za 574 00:24:26,580 --> 00:24:30,600 string, jednako GetString. 575 00:24:30,600 --> 00:24:32,070 Dakle, ono što je GetString? 576 00:24:32,070 --> 00:24:34,630 To je očito dobiva niz, na temelju svoje ime. 577 00:24:34,630 --> 00:24:37,560 Ali što je to, više tehnički? 578 00:24:37,560 --> 00:24:38,440 To je funkcija. 579 00:24:38,440 --> 00:24:41,790 Dakle, to je funkcija koja ne dolazi s C po sebi. 580 00:24:41,790 --> 00:24:43,660 CS50 osoblje to napisao. 581 00:24:43,660 --> 00:24:46,940 I tako bi koristili ovu, ne možete samo su stdio.h, 582 00:24:46,940 --> 00:24:49,630 Također je potrebno uključiti što? 583 00:24:49,630 --> 00:24:50,060 Da. 584 00:24:50,060 --> 00:24:54,210 Dakle cs50.h, što je samo datoteka smo pisali prije nekoliko godina. 585 00:24:54,210 --> 00:24:57,130 Mi ga instalirali na aparatu za vas uz 586 00:24:57,130 --> 00:24:58,490 sve standardne datoteke. 587 00:24:58,490 --> 00:25:00,500 I tako u ovih prvih nekoliko tjedana razreda, koristit ćemo 588 00:25:00,500 --> 00:25:02,820 to samo kako bi se pojednostavio proces radi vrlo osnovni 589 00:25:02,820 --> 00:25:04,600 stvari kao što je dobivanje korisničkog unosa. 590 00:25:04,600 --> 00:25:07,370 Jer kao što ćemo vidjeti u nekoliko tjedana, uzimajući korisnički unos u 591 00:25:07,370 --> 00:25:10,180 jezik kao C je zapravo iznenađujuće složena, 592 00:25:10,180 --> 00:25:14,360 Posebno zato što ne znaju unaprijed, obično, kako 593 00:25:14,360 --> 00:25:17,030 puno stvari korisnik će se upisati u. 594 00:25:17,030 --> 00:25:20,340 A kad ne znaš koliko podataka za očekivati, ne znaš 595 00:25:20,340 --> 00:25:22,380 znati koliko je memorije izdvojiti. 596 00:25:22,380 --> 00:25:25,480 A ako zaista imati optužni korisniku koji je pokušavao 597 00:25:25,480 --> 00:25:28,180 zasjeći svoj sustav, srušiti računalo, dobro, 598 00:25:28,180 --> 00:25:31,600 općenito prva metoda napada je, baš kao što sam učinio na 599 00:25:31,600 --> 00:25:34,950 Ponedjeljak, upišite cijeli dug niz slučajnih znakova, 600 00:25:34,950 --> 00:25:37,020 Unesite hit, i vidjeti što razbija. 601 00:25:37,020 --> 00:25:40,800 Jer općenito, ako program pauze, koja nagovještava 602 00:25:40,800 --> 00:25:42,650 sigurnosni propust, potencijalno. 603 00:25:42,650 --> 00:25:45,250 To svakako nagovještava vas, programer, nakon što je 604 00:25:45,250 --> 00:25:49,050 pogreška, ali više opasno, možda ste napravili 605 00:25:49,050 --> 00:25:52,430 sigurnosti vezane pogreška, i općenito vidjet ćemo da 606 00:25:52,430 --> 00:25:54,840 to je kako su strojevi ugrožena na ovaj dan, oboje 607 00:25:54,840 --> 00:25:56,620 u svijetu weba i programa na 608 00:25:56,620 --> 00:25:58,070 naredbenog retka, kao što je ovaj. 609 00:25:58,070 --> 00:25:58,350 >> U redu. 610 00:25:58,350 --> 00:26:00,460 Dakle, niz je jednak GetString. 611 00:26:00,460 --> 00:26:03,380 Dakle, konkretno sada, što znači linija 6 učiniti ovdje? 612 00:26:03,380 --> 00:26:05,640 Dakle, funkcija na desnoj strani dobiva niz, 613 00:26:05,640 --> 00:26:06,890 traje koliko argumenti? 614 00:26:09,458 --> 00:26:09,900 Ok. 615 00:26:09,900 --> 00:26:10,400 Dakle, nitko. 616 00:26:10,400 --> 00:26:11,360 Malo razum ček. 617 00:26:11,360 --> 00:26:15,380 Argument, opet, samo ulaz u funkciji mijenjati 618 00:26:15,380 --> 00:26:17,250 njegova zadano ponašanje na neki način. 619 00:26:17,250 --> 00:26:19,540 No, u ovom slučaju, ne želim mijenjati 620 00:26:19,540 --> 00:26:20,650 ponašanje GetString. 621 00:26:20,650 --> 00:26:22,430 Samo sam htjela da biste dobili niz. 622 00:26:22,430 --> 00:26:25,190 Pa sam stavio ništa u zagradama, a zatim sam stavio 623 00:26:25,190 --> 00:26:27,550 zarez markiranja kraj retka koda. 624 00:26:27,550 --> 00:26:29,840 Sada, znaka jednakosti ne znači jednak, sama po sebi. 625 00:26:29,840 --> 00:26:32,690 To znači da zadatak, što znači staviti što god dobiva 626 00:26:32,690 --> 00:26:36,060 outputted na desnoj unutarnjoj god je na lijevoj strani. 627 00:26:36,060 --> 00:26:39,400 >> Dakle, na lijevoj strani, možemo reći da smo proglasio 628 00:26:39,400 --> 00:26:41,630 Niz se zove e. 629 00:26:41,630 --> 00:26:44,240 I točnije, mi smo dodjeljuje memoriju unutar 630 00:26:44,240 --> 00:26:46,340 koje ćemo staviti bitova koji predstavlja slijed 631 00:26:46,340 --> 00:26:46,850 likovi. 632 00:26:46,850 --> 00:26:49,400 No, za danas smo izdvojili 633 00:26:49,400 --> 00:26:51,450 ili proglašen niz. 634 00:26:51,450 --> 00:26:51,790 U redu. 635 00:26:51,790 --> 00:26:54,760 Dakle, sada kada sam to učinio, želim priključiti u vrijednosti 636 00:26:54,760 --> 00:26:56,535 e, a ne vrijednost Davida. 637 00:26:56,535 --> 00:27:00,200 Dakle, to je krivo zašto? 638 00:27:03,060 --> 00:27:04,870 Dakle, ovo je samo doslovno teško kodirana je. 639 00:27:04,870 --> 00:27:06,870 To je za reći "bok, a", što nije ono što ja želim. 640 00:27:06,870 --> 00:27:07,790 Dakle, ja to mogu. 641 00:27:07,790 --> 00:27:10,330 Posto znak je rezervirano, ali sada moram 642 00:27:10,330 --> 00:27:12,520 proći u ispisati drugi argument. 643 00:27:12,520 --> 00:27:15,160 Sjetite se da su argumenti funkcije odvojeni 644 00:27:15,160 --> 00:27:20,300 zarezi, pa sljedeći zarez ovdje sam stavio nakon toga pismo je. 645 00:27:20,300 --> 00:27:23,740 I u tom kontekstu sada, a je varijabla, i printf, 646 00:27:23,740 --> 00:27:25,550 Po primitku ta dva ulaza - 647 00:27:25,550 --> 00:27:29,440 string na lijevoj i ime varijable s. na desno - 648 00:27:29,440 --> 00:27:32,750 to će se priključiti potonji u bivši za nas, a 649 00:27:32,750 --> 00:27:34,600 samo isprintati lijep lijep niz koji sadrži 650 00:27:34,600 --> 00:27:36,770 bez obzira na to je da smo upisali u. 651 00:27:36,770 --> 00:27:37,560 >> Dakle, pokušajmo to. 652 00:27:37,560 --> 00:27:38,860 Idete ići naprijed i smanjivanje, natrag 653 00:27:38,860 --> 00:27:40,250 na moj prozor terminala. 654 00:27:40,250 --> 00:27:41,840 Povećavanje na dnu ovdje. 655 00:27:41,840 --> 00:27:44,070 Ponovno bi pozdravio. 656 00:27:44,070 --> 00:27:45,870 Jeka Čini se da su reprizu. 657 00:27:45,870 --> 00:27:49,280 Ja ću upisati. / Halo, Enter. 658 00:27:49,280 --> 00:27:52,145 Ništa se čini da se događa, no to je u ovom retku 659 00:27:52,145 --> 00:27:55,700 da mogu upisati nešto poput Natea, Enter, a sada imamo 660 00:27:55,700 --> 00:27:56,380 Pozdrav, Nate. 661 00:27:56,380 --> 00:27:59,600 I ja mogu to učiniti opet s Rob, i tako dalje. 662 00:27:59,600 --> 00:28:03,410 Dakle, nadamo se da sada ovaj program se ponaša kao ja namjeravam. 663 00:28:03,410 --> 00:28:05,720 >> Sada, nije sve što je user friendly. 664 00:28:05,720 --> 00:28:07,930 Nemam pojma što se očekuje od mene. 665 00:28:07,930 --> 00:28:09,620 Dakle, mi sigurno može počistiti ovo gore malo. 666 00:28:09,620 --> 00:28:13,270 Dopustite mi vratiti se ovdje, i umjesto da samo ronjenje i 667 00:28:13,270 --> 00:28:16,480 pita korisnika za niz, dopustite mi reći izričito 668 00:28:16,480 --> 00:28:17,750 Korisnik ono što sam očekivao. 669 00:28:17,750 --> 00:28:21,610 Dakle printf ("Unesite string:" 670 00:28:21,610 --> 00:28:24,080 ); 671 00:28:24,080 --> 00:28:25,510 Dakle, nema varijable ovdje. 672 00:28:25,510 --> 00:28:26,750 No posto znakovi. 673 00:28:26,750 --> 00:28:28,550 Samo jednostavna engleski izraz. 674 00:28:28,550 --> 00:28:34,030 Dopustite mi sada ići na dno i ovdje ponoviti moj program. 675 00:28:34,030 --> 00:28:35,380 Ali ništa ne čini da su se promijenile. 676 00:28:35,380 --> 00:28:37,350 Zašto? 677 00:28:37,350 --> 00:28:38,380 Moram ga rekompiliranje. 678 00:28:38,380 --> 00:28:39,570 Tako jednostavno pogreška za napraviti. 679 00:28:39,570 --> 00:28:41,700 No, morate ne samo spremiti datoteku, ali 680 00:28:41,700 --> 00:28:43,260 rekompiliranje program. 681 00:28:43,260 --> 00:28:46,640 I tako, ako sam ponovno pokrenuti čine halo, sada zveka radi. 682 00:28:46,640 --> 00:28:51,800 Sada mogu trčati. / Bok. I sada vidim "Unesite string:". 683 00:28:51,800 --> 00:28:52,050 Ok. 684 00:28:52,050 --> 00:28:53,440 Sada je malo više user-friendly. 685 00:28:53,440 --> 00:28:55,850 Nate, Enter, halo, Natea. 686 00:28:55,850 --> 00:28:57,310 >> Pa, ajmo probati ovo opet i početi razmišljati 687 00:28:57,310 --> 00:28:58,080 o kutu slučajevima. 688 00:28:58,080 --> 00:29:00,520 Dakle, baš kao u nule, ti si potaknuo ili su se 689 00:29:00,520 --> 00:29:03,180 poticati u spec. da vrsta razmišljati o tome što bi moglo ići 690 00:29:03,180 --> 00:29:06,610 krivo ako ne predviđaju sve korisnik može učiniti. 691 00:29:06,610 --> 00:29:08,050 Nedostaci, dakle, moglo uslijediti. 692 00:29:08,050 --> 00:29:09,710 Dakle, unesite string - 693 00:29:09,710 --> 00:29:11,130 što je kutak ovdje slučaj? 694 00:29:11,130 --> 00:29:13,320 Što je scenarij da sam, programer, možda neće imati 695 00:29:13,320 --> 00:29:16,070 Predviđeno? 696 00:29:16,070 --> 00:29:17,600 Da. 697 00:29:17,600 --> 00:29:17,920 Ok. 698 00:29:17,920 --> 00:29:22,060 Pa što ako sam upisati u velikom broju kao što je ovaj? 699 00:29:22,060 --> 00:29:22,500 U redu. 700 00:29:22,500 --> 00:29:24,490 Dakle, to još uvijek radi. 701 00:29:24,490 --> 00:29:25,880 Gramatically nema smisla. 702 00:29:25,880 --> 00:29:27,180 Ali barem program radi. 703 00:29:27,180 --> 00:29:28,650 >> Što je još kutak slučaj? 704 00:29:28,650 --> 00:29:29,610 Nešto nisam očekivao. 705 00:29:29,610 --> 00:29:31,590 Da? 706 00:29:31,590 --> 00:29:31,940 Ok. 707 00:29:31,940 --> 00:29:34,950 Tako smo mogli učiniti nešto poput jako, jako velikom broju. 708 00:29:34,950 --> 00:29:37,270 Dakle, neka je to učiniti ovdje. 709 00:29:37,270 --> 00:29:40,880 Dopustite mi smanjili za drugi, neka mi istaknuti. 710 00:29:40,880 --> 00:29:42,250 Ne možete kopirati i zalijepiti ovdje dolje. 711 00:29:42,250 --> 00:29:42,470 U redu. 712 00:29:42,470 --> 00:29:44,440 Dakle, ja ne mogu kopirati i zalijepiti u ovom terminalu prozora, pa ćemo 713 00:29:44,440 --> 00:29:46,950 samo ga simulirati. 714 00:29:46,950 --> 00:29:51,340 Dopustite mi da smanjivanje, idući u obaviti. 715 00:29:51,340 --> 00:29:52,700 Neću to učiniti za predugo, jer to neće 716 00:29:52,700 --> 00:29:54,440 zapravo break u ovom programu. 717 00:29:54,440 --> 00:29:55,260 Ali, to bi mogao. 718 00:29:55,260 --> 00:29:55,830 Upišite. 719 00:29:55,830 --> 00:29:56,580 Ali to nije. 720 00:29:56,580 --> 00:29:57,050 U redu. 721 00:29:57,050 --> 00:29:58,440 No, to je pravi kut slučaj. 722 00:29:58,440 --> 00:30:01,610 I jedini razlog da ponašao korektno, tako da 723 00:30:01,610 --> 00:30:05,820 govoriti, jer CS50 funkcija GetString je zapravo 724 00:30:05,820 --> 00:30:08,040 dizajniran ispod haube, kao što ćemo vidjeti u nekoliko tjedana, 725 00:30:08,040 --> 00:30:11,570 automatski dodijeliti više i više RAM-a, sve više i više 726 00:30:11,570 --> 00:30:14,330 memorije od operativnog sustava, kada to shvati, vau, 727 00:30:14,330 --> 00:30:16,670 stvarno ste upisali u nešto prilično dugo. 728 00:30:16,670 --> 00:30:18,500 Sada, to je malo bijelog laži. 729 00:30:18,500 --> 00:30:22,020 Ako mi zapravo zastao već neko vrijeme i ja upisali u 730 00:30:22,020 --> 00:30:24,640 nešto poput 5000000000 znakova na tipkovnici 731 00:30:24,640 --> 00:30:28,060 ovdje, ili stvarno hit copy-paste dosta smo vrlo vjerojatno 732 00:30:28,060 --> 00:30:29,730 mogla prouzročiti da se program za srušiti. 733 00:30:29,730 --> 00:30:32,130 Samo malo teže simulirati da je s konačnim 734 00:30:32,130 --> 00:30:33,740 iznos od vrijeme. 735 00:30:33,740 --> 00:30:37,320 >> Što je još kutak slučaju možemo pokušati? 736 00:30:37,320 --> 00:30:38,730 Da? 737 00:30:38,730 --> 00:30:39,020 Da. 738 00:30:39,020 --> 00:30:40,360 Pa zašto ne bismo odgovorili ništa? 739 00:30:40,360 --> 00:30:43,130 Dakle, mi zapravo moramo nešto poduzeti, jer inače 740 00:30:43,130 --> 00:30:45,060 Program će sjediti tamo treperi cijeli dan. 741 00:30:45,060 --> 00:30:46,860 Ali ako sam samo pritisnite Enter - 742 00:30:46,860 --> 00:30:48,780 OK, sada, još uvijek izgleda u redu. 743 00:30:48,780 --> 00:30:51,670 Nije li srušiti, ali možda tu je sada prilika da se 744 00:30:51,670 --> 00:30:54,190 početi provoditi strože programa 745 00:30:54,190 --> 00:30:55,290 koji zapravo provjerava. 746 00:30:55,290 --> 00:30:57,640 A ako je string, rečenica, riječ da sam 747 00:30:57,640 --> 00:31:00,890 upisali u ima dužinu 0, dobro, možda sam trebao vikati na 748 00:31:00,890 --> 00:31:03,770 korisnik, ili mu reći ili joj unijeti string opet, tako da je 749 00:31:03,770 --> 00:31:06,560 mi smo zapravo dobili ono što izgleda kao ispravno ponašanje, a ne 750 00:31:06,560 --> 00:31:08,570 Samo potpuni nadzor na moj dio. 751 00:31:08,570 --> 00:31:11,130 >> Pitanje u leđa? 752 00:31:11,130 --> 00:31:11,970 Decimalni broj. 753 00:31:11,970 --> 00:31:13,120 Tako bismo mogli pokušati da, previše. 754 00:31:13,120 --> 00:31:16,840 1,10000005. 755 00:31:16,840 --> 00:31:19,470 Čini se kao da će se raditi samo zapravo ok. 756 00:31:19,470 --> 00:31:21,160 I to je zapravo očekuje. 757 00:31:21,160 --> 00:31:24,550 Iako možda smo upisali taj broj postoji, ili 758 00:31:24,550 --> 00:31:28,200 veći broj ranije, shvatiti da kad smo tipkati korisnika 759 00:31:28,200 --> 00:31:31,070 ulaz, a mi smo pomoću GetString funkciju, ne 760 00:31:31,070 --> 00:31:34,380 obzira da li ono što sam tipkati izgleda kao broj. 761 00:31:34,380 --> 00:31:36,720 Podsjetimo da je prema ASCII, sve na svom 762 00:31:36,720 --> 00:31:39,920 Tipkovnica ima brojčanu vrijednost koja se može preslikati na 763 00:31:39,920 --> 00:31:41,480 lik, char. 764 00:31:41,480 --> 00:31:44,490 Dakle, u ovom slučaju, iako sam možda upisati broj, 765 00:31:44,490 --> 00:31:48,190 Računalo će se razmišljati o tome, da se tako izrazim, kao niz - 766 00:31:48,190 --> 00:31:49,870 nešto što izgleda kao broj, ali je 767 00:31:49,870 --> 00:31:51,090 zapravo ne broj. 768 00:31:51,090 --> 00:31:53,450 No, to je zapravo savršen segue, jer sada možemo 769 00:31:53,450 --> 00:31:55,450 zapravo prijelaz na pisanje programa koji 770 00:31:55,450 --> 00:31:56,730 koristiti i druge vrste podataka. 771 00:31:56,730 --> 00:32:01,840 >> Dakle, osim pomoću znakova, odnosno, osim pomoću žice, 772 00:32:01,840 --> 00:32:04,510 shvatiti da imamo i druge vrste podataka u C, kao iu 773 00:32:04,510 --> 00:32:05,230 drugi jezici. 774 00:32:05,230 --> 00:32:08,480 Char, kao ime sugerira, je samo jedan znak. 775 00:32:08,480 --> 00:32:12,150 Plovak je Krajnja vrijednost, a to je samo fantazija 776 00:32:12,150 --> 00:32:14,470 način da se kaže pravi broj - nešto što ima decimale 777 00:32:14,470 --> 00:32:17,410 točka u njoj s nekim brojevima na lijevo i / ili desno. 778 00:32:17,410 --> 00:32:21,370 Int je cijeli broj, koji je samo broj kao 123. 779 00:32:21,370 --> 00:32:24,170 I sada više zanimljivo su stvari poput kontre. 780 00:32:24,170 --> 00:32:28,540 Što ćemo reći dvaput bio zadnji put? 781 00:32:28,540 --> 00:32:30,050 To je 64, u pravu. 782 00:32:30,050 --> 00:32:33,560 Dakle, dok je obično float je 32-bitni - 783 00:32:33,560 --> 00:32:37,340 tako da je ovo dugo u sjećanju, koristi 32 nula i one na 784 00:32:37,340 --> 00:32:40,530 predstavljaju vrijednosti - dvostruka doslovno dvostruko, što 785 00:32:40,530 --> 00:32:43,810 znači da možete ili predstavljaju veći broj, ili 786 00:32:43,810 --> 00:32:45,810 možete predstavljaju preciznije brojeve. 787 00:32:45,810 --> 00:32:48,690 Dakle, možete imati više brojeva nakon decimalne točke, ali 788 00:32:48,690 --> 00:32:51,520 kao kolega rekao u videu, čak i nešto jednostavno 789 00:32:51,520 --> 00:32:55,360 konceptualno kao trećina ne može predstavljati upravo 790 00:32:55,360 --> 00:32:58,330 računalo, jer na kraju vam ponestane bita, a 791 00:32:58,330 --> 00:33:02,510 Stoga možete učiniti samo .33333333 toliko puta, na 792 00:33:02,510 --> 00:33:05,050 kojem trenutku imate samo reći da sam iz reprezentacije 793 00:33:05,050 --> 00:33:08,120 prostor, moram samo nazvati dan i zastupanje 794 00:33:08,120 --> 00:33:10,200 pomalo neprecizno sviđa. 795 00:33:10,200 --> 00:33:11,110 I dugo dugo - 796 00:33:11,110 --> 00:33:13,880 glupo ime, ali to je zato što je vrsta podataka poznat kao 797 00:33:13,880 --> 00:33:19,350 dugo u C koji slučajno je često 32 bita, baš kao i 798 00:33:19,350 --> 00:33:21,670 int je 32 bita, ali dugo dugo je 799 00:33:21,670 --> 00:33:23,560 općenito 64 bita. 800 00:33:23,560 --> 00:33:25,740 Dakle, to samo znači da može predstavljati veći 801 00:33:25,740 --> 00:33:26,990 brojevi od toga. 802 00:33:26,990 --> 00:33:27,410 >> U redu. 803 00:33:27,410 --> 00:33:29,390 Dakle, ako smo zapravo žele započeti predstavljajući stvari, mi 804 00:33:29,390 --> 00:33:31,030 Možda ćete morati više sofisticirane vrste, i 805 00:33:31,030 --> 00:33:32,340 to je razlog zašto smo niz. 806 00:33:32,340 --> 00:33:36,450 Dakle, u CS50 knjižnici, da datoteka zove cs50.h, mi smo 807 00:33:36,450 --> 00:33:41,110 zapravo proglasio vrsta podataka, da se tako izrazim, zove string, 808 00:33:41,110 --> 00:33:42,710 ali niz zapravo ne postoji. 809 00:33:42,710 --> 00:33:44,780 To je, opet, jedan od tih slojeva idemo oguliti 810 00:33:44,780 --> 00:33:47,490 natrag u tjedan ili dva i baciti ga daleko, a zapravo 811 00:33:47,490 --> 00:33:49,640 pogledajte ispod haube na ono string zapravo, i 812 00:33:49,640 --> 00:33:50,840 kako se to predstavlja. 813 00:33:50,840 --> 00:33:53,520 Mi također idemo pogledati Boolean vrijednosti. 814 00:33:53,520 --> 00:33:56,040 >> Dakle, ono što je bool u kontekstu Scratch? 815 00:33:59,154 --> 00:34:00,300 To je istinita ili lažna. 816 00:34:00,300 --> 00:34:03,900 Dakle, to je samo vrijednost koja je istinita ili lažna, ili isključiti, 1 ili 817 00:34:03,900 --> 00:34:06,140 0, međutim želite vidjeti svijet. 818 00:34:06,140 --> 00:34:09,739 Dakle, u C, zahvaljujući CS50 knjižnici, što pak 819 00:34:09,739 --> 00:34:12,179 uključuje još biblioteku ispod haube, imamo 820 00:34:12,179 --> 00:34:14,909 pristup bogatu tipa koji se zove bool, koji će 821 00:34:14,909 --> 00:34:18,730 doslovno nam omogućiti da dodijeliti vrijednosti true ili false da 822 00:34:18,730 --> 00:34:20,219 stvari u programu. 823 00:34:20,219 --> 00:34:23,880 >> Dakle, idemo naprijed i ovdje napisati mali program koji 824 00:34:23,880 --> 00:34:26,330 učini nešto uključuje brojeve umjesto. 825 00:34:26,330 --> 00:34:29,840 Dakle, neka mi se vratiti na CS50 Appliance, pusti me naprijed i 826 00:34:29,840 --> 00:34:32,770 stvoriti novu datoteku ovdje zove - 827 00:34:32,770 --> 00:34:35,460 recimo samo da nešto jednostavno, poput math.c. 828 00:34:38,270 --> 00:34:38,710 U redu. 829 00:34:38,710 --> 00:34:41,600 A sada idi gore na vrhu moj program, ja sam 830 00:34:41,600 --> 00:34:42,510 će učiniti i obično - 831 00:34:42,510 --> 00:34:44,780 # Include , tako da ja mogu koristiti 832 00:34:44,780 --> 00:34:46,860 printf, int main (void) - 833 00:34:46,860 --> 00:34:49,270 vratit ćemo se, na kraju, ono što int znači 834 00:34:49,270 --> 00:34:52,389 ovdje, što znači void ovdje, ali za sada, samo znam da je 835 00:34:52,389 --> 00:34:54,270 morate pokrenuti programe kao što je ovaj. 836 00:34:54,270 --> 00:34:56,280 Sada ću ići naprijed i reći nešto malo 837 00:34:56,280 --> 00:35:02,110 drugačije - printf ("Daj mi broj:" 838 00:35:02,110 --> 00:35:03,570 );. 839 00:35:03,570 --> 00:35:09,220 Tada ću učiniti int n = GetInt, jer 840 00:35:09,220 --> 00:35:12,770 Ispada GetInt je još jedna funkcija u CS50 knjižnici 841 00:35:12,770 --> 00:35:14,060 osim GetString. 842 00:35:14,060 --> 00:35:17,340 A sada ću učiniti nešto glupo, kao što je "zahvaljujući 843 00:35:17,340 --> 00:35:25,760 za% d, "za decimalni broj, a zatim zarez n i 844 00:35:25,760 --> 00:35:26,620 zatim se vratiti 0. 845 00:35:26,620 --> 00:35:28,940 Pa opet, povratak 0 ima veze s brojem ja sam 846 00:35:28,940 --> 00:35:30,080 pita korisnika za. 847 00:35:30,080 --> 00:35:33,620 Samo znači na kraju da su svi, vjerojatno, je dobro. 848 00:35:33,620 --> 00:35:36,290 >> Tako da me pusti do mog prozora terminala ovdje. 849 00:35:36,290 --> 00:35:39,590 Dopustite mi upišite napraviti matematiku, ući. 850 00:35:39,590 --> 00:35:41,360 I nešto nije u redu. 851 00:35:41,360 --> 00:35:44,620 Napravite matematika nije uspjelo. 852 00:35:44,620 --> 00:35:46,170 Evo prvi od naših poruka. 853 00:35:46,170 --> 00:35:46,570 Zašto? 854 00:35:46,570 --> 00:35:49,720 Malo zagonetan, ali - 855 00:35:49,720 --> 00:35:50,060 Da. 856 00:35:50,060 --> 00:35:51,240 Dakle cs50.h. 857 00:35:51,240 --> 00:35:53,900 Pa opet, pogotovo u početku, vi ćete napisati svoj prvi 858 00:35:53,900 --> 00:35:56,590 program za pset 1 u dijelovima, u uredu sata, a 859 00:35:56,590 --> 00:35:59,050 Iskreno, to će biti velika ponekad ono što ove stvari 860 00:35:59,050 --> 00:36:00,000 zapravo govore. 861 00:36:00,000 --> 00:36:01,890 Ali shvatit ćete vrlo brzo počnu padati 862 00:36:01,890 --> 00:36:06,120 u ćelije pri čemu ovo znači da ste stali jedan 863 00:36:06,120 --> 00:36:08,290 od # uključuje na vrhu datoteke. 864 00:36:08,290 --> 00:36:10,960 I zveka, prevodilac, vas obavijestili o to 865 00:36:10,960 --> 00:36:14,090 govoreći, prilično maštovito, implicitno deklaracija 866 00:36:14,090 --> 00:36:15,990 Funkcija GetInt je nevažeći. 867 00:36:15,990 --> 00:36:16,310 >> U redu. 868 00:36:16,310 --> 00:36:17,520 Dakle, što to znači? 869 00:36:17,520 --> 00:36:22,080 To samo znači da ste implicitno proglasio GetInt u 870 00:36:22,080 --> 00:36:24,850 Osjećaj da niste eksplicitno ga proglasio. 871 00:36:24,850 --> 00:36:27,300 Da izričito izjavljujem int, morate naučiti 872 00:36:27,300 --> 00:36:28,740 Zveka da postoji. 873 00:36:28,740 --> 00:36:32,020 A vrlo jednostavno rješenje za to je da ga naučiti po 874 00:36:32,020 --> 00:36:34,780 uključujući ove druge datoteke, cs50.h, na 875 00:36:34,780 --> 00:36:35,850 vrh datoteci. 876 00:36:35,850 --> 00:36:40,380 Jer doslovno, ono # include nema je ona priča zveka 877 00:36:40,380 --> 00:36:44,030 prilično ići pronaći datoteku pod nazivom cs50.h, kopiranje, 878 00:36:44,030 --> 00:36:48,150 zalijepite automatski u vrhu mog programa za mene, 879 00:36:48,150 --> 00:36:50,850 , a zatim pretvoriti izvorni kod za nula i one. 880 00:36:50,850 --> 00:36:52,850 No, da bi očito biti vrlo zamorno ako mi ljudi imali 881 00:36:52,850 --> 00:36:55,370 ići kopiranje i lijepljenje ove velike datoteke svih vremena, 882 00:36:55,370 --> 00:36:58,540 tako # uključiti samo čini sve da se automatski bez 883 00:36:58,540 --> 00:37:01,550 muddying moj broj s tuđim knjižnici. 884 00:37:01,550 --> 00:37:06,370 A knjižnica je samo još jedan datoteka koja sadrži funkcije i 885 00:37:06,370 --> 00:37:08,340 druge stvari koje je netko drugi pisani, da smo 886 00:37:08,340 --> 00:37:10,270 utjecati zbog nas samih. 887 00:37:10,270 --> 00:37:10,580 >> U redu. 888 00:37:10,580 --> 00:37:11,200 Idemo pokušati ponovno. 889 00:37:11,200 --> 00:37:12,250 Napravite matematiku. 890 00:37:12,250 --> 00:37:13,120 Upišite. 891 00:37:13,120 --> 00:37:13,530 Dobro. 892 00:37:13,530 --> 00:37:14,880 Tako da izgleda kao da su radili. 893 00:37:14,880 --> 00:37:18,330 Pa neka mi sada pokrenuti matematike;. / Matematike. 894 00:37:18,330 --> 00:37:21,100 Unesite daje mi broj, 123. 895 00:37:21,100 --> 00:37:22,620 Hvala za 123. 896 00:37:22,620 --> 00:37:24,490 Sada ćemo pokušati još corner slučaj. 897 00:37:24,490 --> 00:37:26,530 Niz je prilično velikodušan, jer 898 00:37:26,530 --> 00:37:27,620 Niz može biti ništa. 899 00:37:27,620 --> 00:37:28,910 Može izgledati brojeva, izgledati 900 00:37:28,910 --> 00:37:30,600 likovi, izgledati riječima. 901 00:37:30,600 --> 00:37:31,900 No int je int. 902 00:37:31,900 --> 00:37:34,370 Pa sad, ako sam teško korisnik, i to je govoreći: "Daj mi 903 00:37:34,370 --> 00:37:38,730 broj, "što ako ja pokušati učiniti nešto poput 0,1? 904 00:37:38,730 --> 00:37:41,510 Pa, to je broj, i to je u skladu s 905 00:37:41,510 --> 00:37:44,180 gramatika sam ovdje, ali ispod haube, ja sam od 906 00:37:44,180 --> 00:37:45,610 Tečaj pomoću funkcije GetInt. 907 00:37:45,610 --> 00:37:46,610 >> Tako ćemo vidjeti što će se dogoditi. 908 00:37:46,610 --> 00:37:48,250 Unesite, pokušajte ponovno. 909 00:37:48,250 --> 00:37:48,560 U redu. 910 00:37:48,560 --> 00:37:50,570 Dopustite mi biti teško i samo pritisnite Enter ponovo. 911 00:37:50,570 --> 00:37:51,700 Enter, Enter. 912 00:37:51,700 --> 00:37:53,890 Dakle, sada se čini da GetInt je malo više 913 00:37:53,890 --> 00:37:55,240 moćniji od GetString. 914 00:37:55,240 --> 00:37:58,540 Mi, djelatnici, provodi na takav način da, ako smo primijetili 915 00:37:58,540 --> 00:38:02,100 niste dali nam int - i int je decimalni broj 916 00:38:02,100 --> 00:38:04,785 sadrže nule, one, dvojke, trojke, četvero, petero, šestero, 917 00:38:04,785 --> 00:38:05,540 Sevens, osmice, ili očnjaci. 918 00:38:05,540 --> 00:38:06,310 I to je to. 919 00:38:06,310 --> 00:38:08,810 Nema decimalna mjesta, nema znakova, nema interpunkcije. 920 00:38:08,810 --> 00:38:10,390 Čini se da ćemo morati surađivati. 921 00:38:10,390 --> 00:38:13,680 Pa neka mi probati četiri, pet, šest, i da me prođe. 922 00:38:13,680 --> 00:38:16,760 Pa stvarno, da se analni ovdje, vjerojatno sam trebao reći: "Daj mi 923 00:38:16,760 --> 00:38:20,310 cijeli "kako bi se prenio na korisnika 924 00:38:20,310 --> 00:38:22,620 točno ono što ja namjeravam. 925 00:38:22,620 --> 00:38:24,090 >> Sada ćemo razmišljati o ispod haube. 926 00:38:24,090 --> 00:38:27,930 Nećemo pogledati kako cs50.h se provodi danas, 927 00:38:27,930 --> 00:38:29,080 da knjižnica. 928 00:38:29,080 --> 00:38:33,600 Ali ako ga čuva rekavši ponovo, ponovo, ponovo, ono programiranje 929 00:38:33,600 --> 00:38:36,970 konstruirati sam vjerojatno pomoću ispod haube na 930 00:38:36,970 --> 00:38:39,000 implementirati da? 931 00:38:39,000 --> 00:38:39,980 Dakle, samo petlja, zar ne? 932 00:38:39,980 --> 00:38:41,930 Jedan od najjednostavnijih ideja koje smo vidjeli na Scratch. 933 00:38:41,930 --> 00:38:45,050 Zauvijek konstruirati, izgraditi Ponovi. 934 00:38:45,050 --> 00:38:47,320 Vjerojatno, u ovom programu, ispod poklopca motora, čak i 935 00:38:47,320 --> 00:38:49,470 iako je napisan u C, a ne ispočetka, to radi 936 00:38:49,470 --> 00:38:54,300 nešto što se zove ekvivalentna zauvijek ako korisnik nije 937 00:38:54,300 --> 00:38:58,710 upisali u cijeli broj, recimo ponovo, ponovo, ponovo, ponovo, pa 938 00:38:58,710 --> 00:39:01,220 onda napokon kad mi se cijeli broj, onda vam 939 00:39:01,220 --> 00:39:02,970 pobjeći iz tog kruga. 940 00:39:02,970 --> 00:39:05,610 >> Dakle, ono što drugi funkcije možemo koristiti ovdje u CS50 knjižnici? 941 00:39:05,610 --> 00:39:07,880 Pa, neka vrsta od očitih, barem na temelju 942 00:39:07,880 --> 00:39:09,570 vrste podataka koje sada znamo postoje. 943 00:39:09,570 --> 00:39:12,900 Proveli smo GetString, GetInt, ali u cijeloj 944 00:39:12,900 --> 00:39:15,680 prvi tjedana mandata, također možete koristiti i GetFloat 945 00:39:15,680 --> 00:39:18,870 GetDouble i GetLongLong kako bi dobili upravo 946 00:39:18,870 --> 00:39:20,030 vrste podataka koje želite. 947 00:39:20,030 --> 00:39:24,030 Zbog ključ detalj ovdje je da za razliku od nekih jezika, 948 00:39:24,030 --> 00:39:26,630 kao Python i Ruby, gdje se ne moraju nužno 949 00:39:26,630 --> 00:39:29,730 proglasiti tip podataka varijable - 950 00:39:29,730 --> 00:39:32,390 nemate reći računalo kakav stvari 951 00:39:32,390 --> 00:39:34,000 ideš staviti u varijablu - 952 00:39:34,000 --> 00:39:36,640 u C, moraš biti uvijek tako precizan. 953 00:39:36,640 --> 00:39:40,060 Dakle, ako želite varijablu nazvanu n, komad pohranu 954 00:39:40,060 --> 00:39:42,900 da je u ovom slučaju se dogodi da se 32 bita po konvenciji, što 955 00:39:42,900 --> 00:39:45,660 moram reći računalu da ti bitovi 956 00:39:45,660 --> 00:39:47,840 će pohraniti broj - 957 00:39:47,840 --> 00:39:50,630 nije lik, a ne niz, ne plovak. 958 00:39:50,630 --> 00:39:52,620 A to rješava problem možemo učinkovito 959 00:39:52,620 --> 00:39:53,760 ran u zadnjih tjedan dana. 960 00:39:53,760 --> 00:39:57,050 Ako smo koristite nula i one brojeve predstavljaju ne samo 961 00:39:57,050 --> 00:40:00,770 brojevi, ali kao i B i Cs, kako u svijetu je 962 00:40:00,770 --> 00:40:03,460 Računalo će znati da je ovaj uzorak bitova zapravo 963 00:40:03,460 --> 00:40:07,650 predstavlja broj 65, za razliku predstavlja 964 00:40:07,650 --> 00:40:09,860 pismo, koji u isto vrijeme, u skladu s 965 00:40:09,860 --> 00:40:13,440 ASCII, podsjetimo, bio je ekvivalent za 65? 966 00:40:13,440 --> 00:40:16,550 >> Dakle, ovi tipovi podataka pružiti kontekst s računalom, tako 967 00:40:16,550 --> 00:40:18,810 da ne zna je li ta bita treba tumačiti kao 968 00:40:18,810 --> 00:40:23,660 int ili kao string. 969 00:40:23,660 --> 00:40:26,500 Sva pitanja, a zatim, na ovo? 970 00:40:26,500 --> 00:40:28,149 Da? 971 00:40:34,780 --> 00:40:35,270 David J. MALAN: Dobro pitanje. 972 00:40:35,270 --> 00:40:39,140 Ako uzmemo iz stdio.h, mi spremite datoteku - 973 00:40:39,140 --> 00:40:44,360 pusti me do prozora terminala i trčanje napraviti matematiku, zoom 974 00:40:44,360 --> 00:40:45,530 i ući - 975 00:40:45,530 --> 00:40:47,700 Sada sam dobiti drugu pogrešku, jer sam implicitno 976 00:40:47,700 --> 00:40:49,650 izjavljujući ono što funkcionira sada? 977 00:40:49,650 --> 00:40:50,700 Printf. 978 00:40:50,700 --> 00:40:52,970 Dakle, sada sam stvorio novi problem, čije rješenje je 979 00:40:52,970 --> 00:40:53,890 u suštini isti. 980 00:40:53,890 --> 00:40:55,365 Trebam staviti to natrag. 981 00:40:55,365 --> 00:40:56,615 PUBLIKA: [nečujan] 982 00:41:03,534 --> 00:41:04,030 David J. MALAN: Oh. 983 00:41:04,030 --> 00:41:04,850 Dakle, ako sam izvaditi - 984 00:41:04,850 --> 00:41:05,360 Dobro, da. 985 00:41:05,360 --> 00:41:08,960 Dakle, ako sam ukloniti standardni I / O biblioteka je uključivanje gore 986 00:41:08,960 --> 00:41:12,020 ovdje, a onda si rekao da sam riješi printf, dobiti 987 00:41:12,020 --> 00:41:13,450 osloboditi od printf? 988 00:41:13,450 --> 00:41:13,810 Da. 989 00:41:13,810 --> 00:41:18,450 Ovo bi trebalo raditi, jer sam više ne koristite bilo - ups. 990 00:41:18,450 --> 00:41:20,110 Jesam li samo ležati? 991 00:41:20,110 --> 00:41:21,650 Oh, u redu. 992 00:41:21,650 --> 00:41:25,640 To neće raditi zbog novog pogreške smo upravo uveden. 993 00:41:25,640 --> 00:41:28,390 I ovo je malo više samorazumljivo. 994 00:41:28,390 --> 00:41:29,440 >> U čemu je problem? 995 00:41:29,440 --> 00:41:30,680 Neiskorišteni varijabla n. 996 00:41:30,680 --> 00:41:34,040 Dakle, to je pogreška rezultat našeg nakon konfiguriran 997 00:41:34,040 --> 00:41:36,640 Uređaj se osobito pedantan, stvarno vikati na 998 00:41:36,640 --> 00:41:39,060 ti za svaku moguću pogrešku, čak i ako je to vrsta 999 00:41:39,060 --> 00:41:41,950 ne-fatalna pogreška ovako - je li to doista tako velika 1000 00:41:41,950 --> 00:41:44,820 nositi da sam dodijeljen int, stavi broj u njega, a zatim 1001 00:41:44,820 --> 00:41:46,030 upravo učinio ništa s njom? 1002 00:41:46,030 --> 00:41:47,020 Dakle, funkcionalno, br. 1003 00:41:47,020 --> 00:41:50,410 To se neće prekinuti program. 1004 00:41:50,410 --> 00:41:51,490 To je samo glupo, zar ne? 1005 00:41:51,490 --> 00:41:54,220 Nema vrijednosti za što pitao za tog broja, pohranjeni 1006 00:41:54,220 --> 00:41:56,370 to u varijablu, ako ne ide ništa učiniti 1007 00:41:56,370 --> 00:41:58,000 s njim, da li ga ispisati ili ga spremiti. 1008 00:41:58,000 --> 00:42:00,270 Dakle, u ovom slučaju, zveka je priznati koliko i 1009 00:42:00,270 --> 00:42:02,010 to govori nekorištene varijabilne n. 1010 00:42:02,010 --> 00:42:05,380 >> Tako možemo popraviti, ako zaista želimo. 1011 00:42:05,380 --> 00:42:07,250 Ali opet, to nije dobro za programiranje sada. 1012 00:42:07,250 --> 00:42:09,310 Tako sam mogao to učiniti - 1013 00:42:09,310 --> 00:42:12,060 ići dolje, dopustite mi da jasan zaslon, napraviti matematiku. 1014 00:42:12,060 --> 00:42:13,090 To funkcionira. 1015 00:42:13,090 --> 00:42:18,110 Sada mogu pokrenuti moj program matematike, ima ulaz - 1016 00:42:18,110 --> 00:42:18,700 dobro, što je loše. 1017 00:42:18,700 --> 00:42:23,450 Vodi ulaz, i da je sve to ipak, u ovom slučaju. 1018 00:42:23,450 --> 00:42:25,220 >> Pa zapravo, pokušajmo jednom drugom kutu slučaj da smo 1019 00:42:25,220 --> 00:42:26,300 nije misliti ranije. 1020 00:42:26,300 --> 00:42:28,220 U tom slučaju - ovdje, vratimo se na onaj koji je 1021 00:42:28,220 --> 00:42:29,500 malo više user-friendly. 1022 00:42:29,500 --> 00:42:32,580 Pusti me natrag ovdje i pokrenuti učiniti math opet. 1023 00:42:32,580 --> 00:42:34,190 Joj, što sam učinio krivo? 1024 00:42:34,190 --> 00:42:35,400 Moram vratiti dalje. 1025 00:42:35,400 --> 00:42:36,390 Ok. 1026 00:42:36,390 --> 00:42:38,490 Sada smo se vratili u prvobitno stanje, gdje je sve 1027 00:42:38,490 --> 00:42:39,990 je nadam se dobro. 1028 00:42:39,990 --> 00:42:43,360 A sada, ako sam pokrenuti matematiku, 123 čini se da rade. 1029 00:42:43,360 --> 00:42:46,010 No, to zapravo i nije učinkovita dokaz, samo reci 1030 00:42:46,010 --> 00:42:47,930 ok, da radi. 1031 00:42:47,930 --> 00:42:49,120 789, koji radi. 1032 00:42:49,120 --> 00:42:50,100 Vrijeme podnijeti. 1033 00:42:50,100 --> 00:42:51,870 Budući da je drugi kutak slučajeva ovdje. 1034 00:42:51,870 --> 00:42:55,040 Niz nije stvarno nam puno problema upisom u 1035 00:42:55,040 --> 00:42:56,510 puno znakova. 1036 00:42:56,510 --> 00:42:59,580 No, što ako sam upisati u to? 1037 00:42:59,580 --> 00:43:04,850 Udaranje broj jedan puno, puno ovdje - 1038 00:43:04,850 --> 00:43:06,300 sve u redu, to je sve malo dosadno, pa idem 1039 00:43:06,300 --> 00:43:10,040 zaustaviti ovdje, a ja ću udariti Enter. 1040 00:43:10,040 --> 00:43:11,290 >> Što, dovraga, upravo dogodilo? 1041 00:43:14,110 --> 00:43:17,680 Dakle, to zapravo može biti objašnjeno. 1042 00:43:17,680 --> 00:43:18,920 Dakle, nije to to uzeti kao binarni? 1043 00:43:18,920 --> 00:43:21,130 Dobra misao, ali ne, to nije činjenica da ga je uzeo 1044 00:43:21,130 --> 00:43:22,815 kao binarno, jer doista, to je bio samo vrsta 1045 00:43:22,815 --> 00:43:23,080 slučajnost. 1046 00:43:23,080 --> 00:43:23,930 Možemo to učiniti opet. 1047 00:43:23,930 --> 00:43:26,530 Dakle, nema 2 u binarnom sustavu, koji je 1048 00:43:26,530 --> 00:43:27,420 vjerojatno dovoljno svejedno. 1049 00:43:27,420 --> 00:43:28,780 Upišite. 1050 00:43:28,780 --> 00:43:30,140 Dakle, to nije problem. 1051 00:43:30,140 --> 00:43:31,390 Što još? 1052 00:43:34,650 --> 00:43:35,400 Točno. 1053 00:43:35,400 --> 00:43:37,830 >> Dakle, mislim natrag na ono int zapravo jest. 1054 00:43:37,830 --> 00:43:40,970 To je 32 bita koji su kolektivno interpretirana 1055 00:43:40,970 --> 00:43:42,090 kao broj. 1056 00:43:42,090 --> 00:43:44,730 Ako imate 32 bita, što znači da svaki od bitova može biti 1057 00:43:44,730 --> 00:43:46,690 0 ili 1, 0 ili 1. 1058 00:43:46,690 --> 00:43:49,090 Dakle, to znači da postoje dvije mogućnosti za to malo, 1059 00:43:49,090 --> 00:43:51,140 dvije mogućnosti za to, dvije mogućnosti za to 1060 00:43:51,140 --> 00:43:52,570 malo - tako da je dva puta dva puta - 1061 00:43:52,570 --> 00:43:55,480 tako da je 2 do 32-snage je ukupan broj 1062 00:43:55,480 --> 00:43:58,960 permutacije nula i one ako imaju 32 1063 00:43:58,960 --> 00:44:01,400 rezerviranih mjesta, nula ili one, u ispred vas. 1064 00:44:01,400 --> 00:44:04,250 Dakle, ako imam dva do 32, Matematički, to je ono što? 1065 00:44:07,080 --> 00:44:07,840 Dakle, to je puno. 1066 00:44:07,840 --> 00:44:09,910 To je 4 milijarde kuna, dati ili uzeti. 1067 00:44:09,910 --> 00:44:13,510 I 4000000000 ne čini da se ono što je tiskana ovdje. 1068 00:44:13,510 --> 00:44:16,290 U stvari, to izgleda bliže dvije milijarde. 1069 00:44:16,290 --> 00:44:17,970 No, to nije slučajnost. 1070 00:44:17,970 --> 00:44:21,590 Činjenica da je računalo krivo protumačena moj veliki broj, 1071 00:44:21,590 --> 00:44:24,260 moj veliki niz one i onda se moj veliki nizom dvojke, 1072 00:44:24,260 --> 00:44:26,880 kao otprilike dvije milijarde, je objasnio kako? 1073 00:44:30,250 --> 00:44:32,180 Tu je kapa na int. 1074 00:44:32,180 --> 00:44:34,970 Tu je svakako najveća vrijednost koju mogu predstavljati. 1075 00:44:34,970 --> 00:44:36,370 No, to je obično 4000000000, zar ne? 1076 00:44:36,370 --> 00:44:39,100 Ako dvije do 32 je oko 4 milijarde kuna, da izgleda kao 1077 00:44:39,100 --> 00:44:40,350 da je najveći broj. 1078 00:44:42,420 --> 00:44:45,240 Dakle, ne ostatak, ali dobra misao. 1079 00:44:45,240 --> 00:44:46,340 Negativni brojevi. 1080 00:44:46,340 --> 00:44:49,570 Dakle, ako imate 4 milijarde mogućih stvari koje možete 1081 00:44:49,570 --> 00:44:52,970 predstavljaju s tim različitim permutacija od 32 0S i 1082 00:44:52,970 --> 00:44:55,600 1s, dobro, to stoji da je razlog da mi ljudi možda želite 1083 00:44:55,600 --> 00:44:57,110 predstavljaju ne samo pozitivne integers 1084 00:44:57,110 --> 00:44:58,240 ali negativni cijeli brojevi. 1085 00:44:58,240 --> 00:45:00,410 I doista, to je pretpostavka da je C čini. 1086 00:45:00,410 --> 00:45:03,550 Tako je s 32 bita, što može predstavljati grubo negativna 2 1087 00:45:03,550 --> 00:45:06,630 milijardi skroz do pozitivnog 2000000000. 1088 00:45:06,630 --> 00:45:08,750 I tako, u ovom slučaju, ono što smo stvarno vidjeli samo 1089 00:45:08,750 --> 00:45:13,600 rub kapacitet naših cijeli broj, a mi imamo, pa 1090 00:45:13,600 --> 00:45:15,860 govoriti, preplavila cijeli broj. 1091 00:45:15,860 --> 00:45:19,180 Pokušali smo nagurati više bitova u njemu nego što zapravo može stati. 1092 00:45:19,180 --> 00:45:22,960 Dakle, krajnji rezultat je da smo u suštini imaju sve 1 bita. 1093 00:45:22,960 --> 00:45:25,280 Mi smo zrcaljeno svim našim bitova na, mi smo pokušali da predstavljaju 1094 00:45:25,280 --> 00:45:27,630 Najveći broj moguće, ali to očito nije gotovo 1095 00:45:27,630 --> 00:45:30,960 dovoljno velika da predstavljaju dvije stvari sam upravo upisali u. 1096 00:45:30,960 --> 00:45:31,730 Da? 1097 00:45:31,730 --> 00:45:32,980 PUBLIKA: [nečujan] 1098 00:45:37,230 --> 00:45:37,830 >> David J. MALAN: Dobro pitanje. 1099 00:45:37,830 --> 00:45:40,080 Zašto ne možemo jednostavno predstavljaju da negativna 1100 00:45:40,080 --> 00:45:41,500 potpisati samo kao lik? 1101 00:45:41,500 --> 00:45:44,200 Tako smo apsolutno mogli, a mi onda mogao spasiti 1102 00:45:44,200 --> 00:45:45,470 dodatni zalogaj. 1103 00:45:45,470 --> 00:45:49,100 No, još uvijek si idući u morati zastupati tu crticu, a 1104 00:45:49,100 --> 00:45:50,700 to će vas koštati barem nešto, 1105 00:45:50,700 --> 00:45:52,220 vjerojatno malo. 1106 00:45:52,220 --> 00:45:55,610 Tako da, mogli bismo imati 32 bita koriste za naš broj, ali sada 1107 00:45:55,610 --> 00:45:57,610 moramo još malo koristi za naše crtica 1108 00:45:57,610 --> 00:45:58,810 simbol, znak minus. 1109 00:45:58,810 --> 00:46:01,470 Tako sada imamo 33-bitne vrijednosti, koje smo mogli učiniti, ali to je 1110 00:46:01,470 --> 00:46:02,570 samo ne onako kako je učinjeno. 1111 00:46:02,570 --> 00:46:05,140 Napravili smo presudu poziva godina, 32 bita je vrsta 1112 00:46:05,140 --> 00:46:06,170 jedinica mjere ovdje. 1113 00:46:06,170 --> 00:46:08,120 Tako ćemo koristiti jedan od tih bitova učinkovito 1114 00:46:08,120 --> 00:46:12,950 predstavljaju negativnosti, a 31 bita da predstavljaju broj. 1115 00:46:12,950 --> 00:46:15,550 Ostala pitanja? 1116 00:46:15,550 --> 00:46:15,670 U redu. 1117 00:46:15,670 --> 00:46:16,030 To je puno. 1118 00:46:16,030 --> 00:46:17,930 Zašto ne možemo ići naprijed i uzeti našu pet minuta pauze ovdje? 1119 00:46:23,580 --> 00:46:24,270 >> U redu. 1120 00:46:24,270 --> 00:46:31,250 Pa opet, ne prenaglasiti matematičke aplikacije 1121 00:46:31,250 --> 00:46:33,840 programiranja, Ajmo iščupati s ovog jednog primjera 1122 00:46:33,840 --> 00:46:36,590 prije nego što smo preseliti u drugim tvorevinama, samo zato što 1123 00:46:36,590 --> 00:46:39,430 će ilustrirati nekoliko zajedničkih točaka spoticanja na neke od 1124 00:46:39,430 --> 00:46:41,520 osnove kada je u pitanju pisanje programa. 1125 00:46:41,520 --> 00:46:44,360 U ovom slučaju, radi aritmetickih izraza koji imaju neke 1126 00:46:44,360 --> 00:46:48,010 Zanimljivo relevantnost sintakse. 1127 00:46:48,010 --> 00:46:50,430 >> Dakle, ovo je samo formula s kojima možemo pretvoriti 1128 00:46:50,430 --> 00:46:52,690 Temperature od fahrenheit do Celzija. 1129 00:46:52,690 --> 00:46:54,600 Ako se ne sjećate, to je samo formula. 1130 00:46:54,600 --> 00:46:58,870 Dakle, ako smo priključiti Fahrenheit vrijednosti od 32 stupnjeva, što je 1131 00:46:58,870 --> 00:47:02,850 smrzavanja, to će biti 32 minus 32 je 0, i doista, 1132 00:47:02,850 --> 00:47:05,130 0 u Celzija je također smrzavanja. 1133 00:47:05,130 --> 00:47:08,210 Tako brzo razum ček postoji - da je upoznat formula. 1134 00:47:08,210 --> 00:47:10,880 Pusti me preko aparata, ipak, i početi 1135 00:47:10,880 --> 00:47:13,920 pisanje programa koji se zove, kao što su, f2c; "Fahrenheit na 1136 00:47:13,920 --> 00:47:15,920 Celzija dot c ". 1137 00:47:15,920 --> 00:47:18,930 A gore na vrhu ovdje, ja ću krenuti s # include 1138 00:47:18,930 --> 00:47:22,190 stdio.h, i ja ću učiniti int main (void), a 1139 00:47:22,190 --> 00:47:24,680 opet, vratit ćemo se u budućnosti kao što int znači 1140 00:47:24,680 --> 00:47:26,820 postoji i ono void znači da postoji. 1141 00:47:26,820 --> 00:47:28,770 I sada neka mi ići naprijed i provoditi program koji 1142 00:47:28,770 --> 00:47:31,170 suštini to čini pretvorbe za nas. 1143 00:47:31,170 --> 00:47:36,830 >> Dakle printf, recimo, temperatura u Fahrenheit. 1144 00:47:36,830 --> 00:47:40,140 I onda neka mi ići naprijed i dobiti vrijednost od korisnika. 1145 00:47:40,140 --> 00:47:43,120 Kakve vrijednosti trebam dobiti od korisnika, ako želim 1146 00:47:43,120 --> 00:47:45,620 ih da mi daju temperaturu u Fahrenheit? 1147 00:47:45,620 --> 00:47:48,090 Da? 1148 00:47:48,090 --> 00:47:50,090 Što bi ti predlažeš? 1149 00:47:50,090 --> 00:47:50,410 Da. 1150 00:47:50,410 --> 00:47:51,960 Dakle plovak osjeća prilično razumno. 1151 00:47:51,960 --> 00:47:53,950 Mi smo, opet, samo nekoliko mogućnosti da 1152 00:47:53,950 --> 00:47:55,310 Vidjeli smo dosad. 1153 00:47:55,310 --> 00:48:00,100 Imamo stvari poput char, float, bračnim, int, long long, 1154 00:48:00,100 --> 00:48:01,150 bool, niz. 1155 00:48:01,150 --> 00:48:03,510 Dakle, tih, plovak se osjeća prilično razumno. 1156 00:48:03,510 --> 00:48:06,340 Mogli bismo koristiti dvostruko, pravo, jer ako doista želimo 1157 00:48:06,340 --> 00:48:07,580 predstavljaju ljudske temperaturu - 1158 00:48:07,580 --> 00:48:10,730 98,60000 - 1159 00:48:10,730 --> 00:48:12,990 možemo koristiti 64 bita za to, ali to se osjeća kao 1160 00:48:12,990 --> 00:48:14,200 overkill za temperature. 1161 00:48:14,200 --> 00:48:16,380 Dakle, neka je samo ići s pomičnim zarezom. 1162 00:48:16,380 --> 00:48:18,100 Sada trebam varijablu. 1163 00:48:18,100 --> 00:48:20,500 Samo držati jednostavne stvari, ja ću ga nazvati ž, ali ja 1164 00:48:20,500 --> 00:48:23,370 mogao jednako ispravno nazvati temperatura, 1165 00:48:23,370 --> 00:48:24,600 ali bilo je u redu. 1166 00:48:24,600 --> 00:48:27,610 Dakle plutaju F = GetFloat. 1167 00:48:27,610 --> 00:48:30,220 Čim sam sada odlučio koristiti GetFloat, iako sam 1168 00:48:30,220 --> 00:48:33,340 trebate napraviti jednu korekciju. 1169 00:48:33,340 --> 00:48:33,720 Da. 1170 00:48:33,720 --> 00:48:37,460 Dakle, moramo # include , inače prevodilac je 1171 00:48:37,460 --> 00:48:39,000 će vikati na nas. 1172 00:48:39,000 --> 00:48:41,720 Sada imam plovak, dopustite mi ići naprijed i učiniti 1173 00:48:41,720 --> 00:48:42,460 pretvorbe. 1174 00:48:42,460 --> 00:48:44,980 >> Tako je prvi, neka mi također dobiti u naviku ovdje od 1175 00:48:44,980 --> 00:48:46,310 komentirajući moj broj. 1176 00:48:46,310 --> 00:48:49,820 Pa opet, komentar je samo zapis na čovjeka koji je 1177 00:48:49,820 --> 00:48:52,600 nije dio programa po sebi, ali to jednom, te pomaže 1178 00:48:52,600 --> 00:48:55,010 razumjeti ono što si učinio sljedećeg jutra, ili sljedeći 1179 00:48:55,010 --> 00:48:57,570 mjesec, to pomaže vaš demonstrator razumiju ono što si učinio 1180 00:48:57,570 --> 00:48:59,230 ili ono što namjerava učiniti, tako da je 1181 00:48:59,230 --> 00:49:00,950 općenito vrlo dobra praksa. 1182 00:49:00,950 --> 00:49:02,940 Svakih nekoliko linija koda, napisati komentar 1183 00:49:02,940 --> 00:49:04,490 sami ili vaš kolega. 1184 00:49:04,490 --> 00:49:08,460 Dakle, ovdje ću reći, "Pitaj korisnika za temperaturu." 1185 00:49:08,460 --> 00:49:10,890 Ne mora biti potpuna rečenica, samo kratka fraza. 1186 00:49:10,890 --> 00:49:14,270 No, ideja komentirajući u C je da svaki od vaših 1187 00:49:14,270 --> 00:49:17,980 komentari bi vas osnažiti - ili, recimo, TF ili kolegu - 1188 00:49:17,980 --> 00:49:21,290 da obranim svoj program i znam točno što radi, a ne 1189 00:49:21,290 --> 00:49:24,650 toliko čitanja koda, ali čitajući komentare, koji 1190 00:49:24,650 --> 00:49:26,220 treba biti kratak i jasan. 1191 00:49:26,220 --> 00:49:29,030 U redu, tako da sada pusti me naprijed i reći, "Pretvorba 1192 00:49:29,030 --> 00:49:32,660 Celzijusa na Celzija. "Tako ću ići naprijed i učiniti, 1193 00:49:32,660 --> 00:49:34,340 recimo, plutaju c. 1194 00:49:34,340 --> 00:49:36,610 Mi ćemo zadržati Celzijevih kao pomičnim zarezom vrijednosti. 1195 00:49:36,610 --> 00:49:37,630 >> I neka mi se ubosti na to. 1196 00:49:37,630 --> 00:49:40,350 Formula je, opet, ovdje gore. 1197 00:49:40,350 --> 00:49:45,510 Kao 5/9 puta F minus 32. 1198 00:49:45,510 --> 00:49:46,360 Tako ćemo to učiniti. 1199 00:49:46,360 --> 00:49:50,450 Dakle, pet podijeljena 9, minus - 1200 00:49:50,450 --> 00:49:52,330 ups, ja sam to zabrljati gore već. 1201 00:49:52,330 --> 00:49:53,070 Times. 1202 00:49:53,070 --> 00:49:56,550 Dakle, 5/9 puta F minus 32. 1203 00:49:56,550 --> 00:49:59,650 Dakle, F minus 32, zarez. 1204 00:49:59,650 --> 00:50:02,000 A sada, ovdje dolje, ja ću ići naprijed 1205 00:50:02,000 --> 00:50:03,220 i kažu, ispisati rezultat. 1206 00:50:03,220 --> 00:50:05,160 I ovaj dio je jednostavno. Printf. 1207 00:50:05,160 --> 00:50:07,980 Kako mogu ići o ispisu ovo? 1208 00:50:07,980 --> 00:50:16,890 Pa, mogao bih reći: "To je broj u Celzija je% f \ n", 1209 00:50:16,890 --> 00:50:18,060 samo za neke estetike. 1210 00:50:18,060 --> 00:50:20,450 I što se onda vrijednost ne želim priključiti ovdje printf-a 1211 00:50:20,450 --> 00:50:21,360 Drugi argument? 1212 00:50:21,360 --> 00:50:21,650 Ok. 1213 00:50:21,650 --> 00:50:22,540 Dakle, samo c. 1214 00:50:22,540 --> 00:50:24,760 Tako ćemo početi s tim, a onda samo vrate 0. 1215 00:50:24,760 --> 00:50:25,960 Opet, to nema nikakve veze s matematikom. 1216 00:50:25,960 --> 00:50:27,610 To samo znači da je sve dobro. 1217 00:50:27,610 --> 00:50:31,210 >> Sada, je li to točno, ovaj program? 1218 00:50:31,210 --> 00:50:31,520 U redu. 1219 00:50:31,520 --> 00:50:33,630 Pa sam napravio neke pogreške. 1220 00:50:33,630 --> 00:50:35,980 Čak i ako nemate pojma što je programiranje, možete sortirati 1221 00:50:35,980 --> 00:50:37,120 od zaključiti leđima osnovnoj školi što 1222 00:50:37,120 --> 00:50:38,740 greške ovdje moglo biti. 1223 00:50:38,740 --> 00:50:40,050 Što je jedan od prvi? 1224 00:50:40,050 --> 00:50:41,256 PUBLIKA: [nečujan] 1225 00:50:41,256 --> 00:50:41,660 David J. MALAN: Da. 1226 00:50:41,660 --> 00:50:42,940 Tako smo nedostaje zagrade. 1227 00:50:42,940 --> 00:50:45,420 To je namjerno da sam zagrade u govoru 1228 00:50:45,420 --> 00:50:48,130 slajd ovdje, jer tu je zapravo taj pojam bi 1229 00:50:48,130 --> 00:50:51,590 poslovanja, ili prednost, pri čemu određene radnje - 1230 00:50:51,590 --> 00:50:52,890 množenje - 1231 00:50:52,890 --> 00:50:56,000 imaju veći obvezujuća, imaju veću prednost, nego stvari 1232 00:50:56,000 --> 00:50:58,050 kao zbrajanje ili oduzimanje. 1233 00:50:58,050 --> 00:51:00,550 Tako smo to učinili za godina samo da bi jasno točno 1234 00:51:00,550 --> 00:51:02,840 ono što matematička operacija bi trebalo biti učinjeno na prvom mjestu. 1235 00:51:02,840 --> 00:51:05,010 Tako sam vjerojatno bi trebao oponašati upravo to. 1236 00:51:05,010 --> 00:51:08,990 Inače, računalo vjerojatno će pokušati učiniti 1237 00:51:08,990 --> 00:51:13,090 nešto poput podjele pet do devet, zatim pomnožite F, onda oduzimati 1238 00:51:13,090 --> 00:51:14,850 32 od cijele stvari. 1239 00:51:14,850 --> 00:51:16,480 Koji nije, u stvari, ono što želimo učiniti. 1240 00:51:16,480 --> 00:51:17,340 Tako ćemo staviti u zagradu. 1241 00:51:17,340 --> 00:51:20,860 Dodajmo moje zagrade ovdje, zagrade ovdje. 1242 00:51:20,860 --> 00:51:22,670 Stavimo ovo ovdje. 1243 00:51:22,670 --> 00:51:25,130 Evo, upravo sam primijetio drugu pogrešku sam napravio na putu. 1244 00:51:25,130 --> 00:51:25,680 Da? 1245 00:51:25,680 --> 00:51:26,930 PUBLIKA: [nečujan] 1246 00:51:29,632 --> 00:51:30,130 >> David J. MALAN: Ah. 1247 00:51:30,130 --> 00:51:30,470 Dobro. 1248 00:51:30,470 --> 00:51:32,400 Tako smo zapravo imaju isti cijeli 1249 00:51:32,400 --> 00:51:34,020 Podjela problem od prije. 1250 00:51:34,020 --> 00:51:35,800 Ja ispraviti da, ajmo vidjeti što je simptom. 1251 00:51:35,800 --> 00:51:36,990 No, mi ćemo morati ispraviti jedan 1252 00:51:36,990 --> 00:51:37,680 druga pogreška. 1253 00:51:37,680 --> 00:51:38,015 Da? 1254 00:51:38,015 --> 00:51:39,540 PUBLIKA: [nečujan] 1255 00:51:39,540 --> 00:51:40,070 David J. MALAN: Da. 1256 00:51:40,070 --> 00:51:43,130 Dakle, glupa pogreška sam napravio, ali nevjerojatno važno. 1257 00:51:43,130 --> 00:51:45,870 Računalo se ne događa samo progledati kroz prste i pustiti 1258 00:51:45,870 --> 00:51:48,770 mi koristiti kapitala F, kada sam zapravo proglasio varijabla 1259 00:51:48,770 --> 00:51:51,360 kao mala f ovdje, u skladu osam. 1260 00:51:51,360 --> 00:51:54,470 Dakle, moram ispraviti u liniji 11 mom kapitalizaciji, koja 1261 00:51:54,470 --> 00:51:56,820 Trenutak prije bio glavni F greškom. 1262 00:51:56,820 --> 00:51:57,610 Što je ovdje? 1263 00:51:57,610 --> 00:51:59,980 Ukoliko se to mala kao dobro? 1264 00:51:59,980 --> 00:52:02,260 To bi trebao biti, ali to je slučajnost. 1265 00:52:02,260 --> 00:52:05,070 To% f nema nikakve veze s varijablom. 1266 00:52:05,070 --> 00:52:07,980 Dakle, samo da se super jasno ovdje, pusti me naprijed i 1267 00:52:07,980 --> 00:52:10,710 preimenovati ovu, ukratko, "temperaturu". Dopustite mi da preimenovati 1268 00:52:10,710 --> 00:52:15,050 ovo "temperatura". Dopustite mi da ne preimenovati to. 1269 00:52:15,050 --> 00:52:18,180 Jer, opet,% f globalno znači, "Krajnja vrijednost." 1270 00:52:18,180 --> 00:52:19,950 Ima veze s mojim varijable. 1271 00:52:19,950 --> 00:52:23,080 No, "temperatura" posvuda je samo malo razvučen, 1272 00:52:23,080 --> 00:52:25,370 tako da ću se vratiti na moj malim slovom "F" s. 1273 00:52:25,370 --> 00:52:27,890 >> Sada, neka mi ići naprijed dolje na moj prozor ovdje. 1274 00:52:27,890 --> 00:52:29,190 Napravite f2c - 1275 00:52:29,190 --> 00:52:31,200 što je, opet, proizvoljna sam ime 1276 00:52:31,200 --> 00:52:32,590 dao ovu datoteku. 1277 00:52:32,590 --> 00:52:33,690 Čini se da su sastavljeni. 1278 00:52:33,690 --> 00:52:35,080 Dopustite mi pokrenuti f2c. 1279 00:52:35,080 --> 00:52:35,780 Upišite. 1280 00:52:35,780 --> 00:52:37,786 Temperatura u Fahrenheit - ajmo napraviti jedan jednostavan. 1281 00:52:37,786 --> 00:52:39,370 32. 1282 00:52:39,370 --> 00:52:40,910 OK, ispraviti. 1283 00:52:40,910 --> 00:52:45,910 Ali, ako sam sada napraviti 212 za vrije - 1284 00:52:45,910 --> 00:52:46,630 osuditi. 1285 00:52:46,630 --> 00:52:47,030 U redu. 1286 00:52:47,030 --> 00:52:50,780 Dakle, očito ne ispravi, ako je vaš TF pokušava 1287 00:52:50,780 --> 00:52:51,800 najmanje dvije vrijednosti. 1288 00:52:51,800 --> 00:52:53,340 Dakle, ono što je ovdje problem? 1289 00:52:53,340 --> 00:52:55,970 Pa, već ste stavili prst na ono što je problem. 1290 00:52:55,970 --> 00:52:57,600 No, zašto je to tako? 1291 00:52:57,600 --> 00:53:00,630 Do ovdje, kad radim matematiku od 5 podijeljeno devet. 1292 00:53:00,630 --> 00:53:02,190 Dakle, konceptualno, to je savršeno točno. 1293 00:53:02,190 --> 00:53:03,690 Totalno skladu s formulom. 1294 00:53:03,690 --> 00:53:05,940 Ali računala samo učiniti upravo ono što 1295 00:53:05,940 --> 00:53:06,760 reci im da rade. 1296 00:53:06,760 --> 00:53:08,940 I ono što mi zapravo govorite računalo ovdje 1297 00:53:08,940 --> 00:53:12,320 podijeliti cijeli 5 Po integer 9 1298 00:53:12,320 --> 00:53:13,670 i dajte mi rezultat. 1299 00:53:13,670 --> 00:53:16,230 Problem je, međutim, kada se ne podjela koristeći podatke 1300 00:53:16,230 --> 00:53:20,220 vrste, izlaz je isti tip podataka kao ulaza. 1301 00:53:20,220 --> 00:53:23,670 I tako, ako su dva ulaza su obje Ints, izlaz ide 1302 00:53:23,670 --> 00:53:25,110 biti int. 1303 00:53:25,110 --> 00:53:28,770 I tako pet podijeljeno devet je točka nešto. 1304 00:53:28,770 --> 00:53:32,320 No, ono što je najbliži cijeli ukazati nešto? 1305 00:53:32,320 --> 00:53:33,630 Dakle, to je zapravo 0. 1306 00:53:33,630 --> 00:53:36,620 Dakle, kao što smo razgovarali u ponedjeljak, sve nakon decimale 1307 00:53:36,620 --> 00:53:37,940 točka dobiva skraćen. 1308 00:53:37,940 --> 00:53:39,495 To samo dobiva bačena. 1309 00:53:39,495 --> 00:53:42,760 Dakle, ovo je potpuna pogreška, jer sam možda i samo 1310 00:53:42,760 --> 00:53:44,700 pomnožiti sve po 0 ovdje. 1311 00:53:44,700 --> 00:53:46,550 >> Sada, ja mogu popraviti u nekoliko načina. 1312 00:53:46,550 --> 00:53:48,080 Ja mogu to učiniti. 1313 00:53:48,080 --> 00:53:50,490 5,0 podijeljeno 9,0. 1314 00:53:50,490 --> 00:53:52,110 Tehnički, ja uopće ne treba učiniti. 1315 00:53:52,110 --> 00:53:55,780 To čini dovoljno je samo napraviti jedan od brojeva float - 1316 00:53:55,780 --> 00:53:58,290 ili dvaput - stavljajući decimalnu točku ovdje. 1317 00:53:58,290 --> 00:54:01,740 Jer ono što se događa sada kada ste podijeliti cijeli broj po 1318 00:54:01,740 --> 00:54:04,670 float, ili double, računalo će se ostvariti 1319 00:54:04,670 --> 00:54:06,830 oh, jedna od njih je i precizniji. 1320 00:54:06,830 --> 00:54:09,420 Dopustite mi griješiti na strani daje vam više preciznosti nego 1321 00:54:09,420 --> 00:54:10,310 ste namjeravali. 1322 00:54:10,310 --> 00:54:12,700 Dakle, to će se pretvoriti u rezultat - 1323 00:54:12,700 --> 00:54:16,240 to će vratiti rezultat kao pomičnim zarezom vrijednosti kao dobro. 1324 00:54:16,240 --> 00:54:17,330 Tako da će raditi. 1325 00:54:17,330 --> 00:54:18,060 To bi raditi. 1326 00:54:18,060 --> 00:54:20,010 A tu je još jedan mehanizam koji ćemo vidjeti u 1327 00:54:20,010 --> 00:54:21,390 podrobnije sljedeći tjedan. 1328 00:54:21,390 --> 00:54:24,690 Možete zapravo, kao programer, recite računalo 1329 00:54:24,690 --> 00:54:27,930 zapravo liječiti jedan tip podataka kao 1330 00:54:27,930 --> 00:54:29,260 iako su bili drugi. 1331 00:54:29,260 --> 00:54:30,990 >> Tako sam zapravo mogao to učiniti. 1332 00:54:30,990 --> 00:54:35,280 U zagradama, ja mogu reći nešto poput (float), otvorenu 1333 00:54:35,280 --> 00:54:36,350 zagr, blizu zagr. 1334 00:54:36,350 --> 00:54:39,050 I to je ono što se zove "lijevanje." Opet, više 1335 00:54:39,050 --> 00:54:39,940 na ovoj sljedeći tjedan. 1336 00:54:39,940 --> 00:54:42,280 Ali to je samo programski način govori 1337 00:54:42,280 --> 00:54:45,910 računalo, da znam devet je cijeli ili dugo. 1338 00:54:45,910 --> 00:54:47,700 Znam da to nije Krajnja vrijednost. 1339 00:54:47,700 --> 00:54:49,420 Ali tretirati ga kao takvog svejedno. 1340 00:54:49,420 --> 00:54:52,000 Dakle, da se baci vrstu podataka znači pretvoriti 1341 00:54:52,000 --> 00:54:53,310 od jednog do drugog. 1342 00:54:53,310 --> 00:54:55,790 Iskreno, to je samo malo ružno, pa bih predložiti idemo 1343 00:54:55,790 --> 00:54:58,830 natrag na izvornom prijedlogu samo pretvaranje 1344 00:54:58,830 --> 00:55:00,770 ove stvari na pomičnim zarezom vrijednosti ručno. 1345 00:55:00,770 --> 00:55:02,890 Jer sada je samo super jasno što se događa, a 1346 00:55:02,890 --> 00:55:04,280 to nije sve što odvlače pažnju. 1347 00:55:04,280 --> 00:55:06,710 >> Dakle, ajmo sad vratiti u moj prozor terminala. 1348 00:55:06,710 --> 00:55:07,990 Napravite f2c. 1349 00:55:07,990 --> 00:55:09,430 Pusti me naprijed i pokrenuti ovo. 1350 00:55:09,430 --> 00:55:12,340 I, kao što je na stranu, ti dosadi tipkanja ove naredbe 1351 00:55:12,340 --> 00:55:14,910 i opet, shvatiti da računala, kao što su Linux ovdje, 1352 00:55:14,910 --> 00:55:16,010 imaju tendenciju da se prilično pametna. 1353 00:55:16,010 --> 00:55:18,890 I ako sam pogodio Gore, možemo proći kroz cijeli moj povijesti 1354 00:55:18,890 --> 00:55:20,380 naredbe, gore i dolje. 1355 00:55:20,380 --> 00:55:23,840 Dakle, u ovom slučaju ovdje, ja mogu samo otići do pokrenuti napraviti f2c. 1356 00:55:23,840 --> 00:55:25,830 Ja sam se vikao na, jer sam upravo to učinio drugi prije. 1357 00:55:25,830 --> 00:55:27,030 To je već do danas. 1358 00:55:27,030 --> 00:55:30,720 Dakle, sada mogu pokrenuti f2c opet. 1359 00:55:30,720 --> 00:55:33,260 Pokušajmo 32 celzijusa. 1360 00:55:33,260 --> 00:55:36,720 Sada pokušajmo 212 celzijusa. 1361 00:55:36,720 --> 00:55:37,250 >> Fuj. 1362 00:55:37,250 --> 00:55:38,250 Čini se da rade. 1363 00:55:38,250 --> 00:55:41,760 Sada, to je dobro, ali to se osjeća malo proizvoljna da 1364 00:55:41,760 --> 00:55:44,890 Ja sam pokazujući šest brojeva nakon decimalni bodova. 1365 00:55:44,890 --> 00:55:45,070 Točno? 1366 00:55:45,070 --> 00:55:47,830 Ako ste vremenske osoba na TV-u, ti si vrsta doofus 1367 00:55:47,830 --> 00:55:49,150 ako čitate temperaturu na 1368 00:55:49,150 --> 00:55:50,070 ovaj stupanj preciznosti. 1369 00:55:50,070 --> 00:55:51,270 Tako ćemo pojednostaviti ovaj. 1370 00:55:51,270 --> 00:55:53,880 Dakle, neka je zapravo ide ovdje, na moj printf. 1371 00:55:53,880 --> 00:55:55,490 I da, želim da plutaju. 1372 00:55:55,490 --> 00:55:57,570 Ali želim sada navesti preciznost. 1373 00:55:57,570 --> 00:55:59,070 I ja ću biti malo kratak. 1374 00:55:59,070 --> 00:56:03,090 Ja ću reći, daj mi jedan bod nakon decimalnog mjesta. 1375 00:56:03,090 --> 00:56:07,590 Dakle, umjesto da kažu% f, ja ću reći% .1 f. 1376 00:56:07,590 --> 00:56:09,760 A to samo znači mi dati jednu poziciju 1377 00:56:09,760 --> 00:56:11,410 nakon decimalne točke. 1378 00:56:11,410 --> 00:56:11,700 U redu. 1379 00:56:11,700 --> 00:56:12,570 Pokušajmo ovo ponovno. 1380 00:56:12,570 --> 00:56:15,590 Dopustite mi da ponovno pokrenuti ga nakon sastavljanja. 1381 00:56:15,590 --> 00:56:18,160 I sada sam upisati u 32, a ja sam se vratiti 1382 00:56:18,160 --> 00:56:19,310 jezgrovitija vrijednost. 1383 00:56:19,310 --> 00:56:22,480 I mogu upisati, sada, 212, i vratiti se na više jezgrovit 1384 00:56:22,480 --> 00:56:23,260 vrijednost kao dobro. 1385 00:56:23,260 --> 00:56:25,190 A tu je i druge stvari koje možete učiniti s printf. 1386 00:56:25,190 --> 00:56:27,950 Vi zapravo možete odrediti koliko je široko broj bi trebao biti. 1387 00:56:27,950 --> 00:56:30,900 Ako želite imati padding na njega, tako da možete desnom tipkom poravnati ili 1388 00:56:30,900 --> 00:56:32,360 lijevo-align sve svoje brojeve ili 1389 00:56:32,360 --> 00:56:33,400 pokušati centar stvari. 1390 00:56:33,400 --> 00:56:35,340 Dakle, shvatili postoje mali trikovi koje možete učiniti tamo. 1391 00:56:35,340 --> 00:56:38,420 No, oni su samo svode na format kodova, 1392 00:56:38,420 --> 00:56:39,600 kao da smo tamo. 1393 00:56:39,600 --> 00:56:41,090 >> Dakle, u smislu ovog izdanja prvenstva. 1394 00:56:41,090 --> 00:56:43,820 Ovo je vrlo dosadan stol proći kroz sustavno. 1395 00:56:43,820 --> 00:56:46,780 No, shvatili da su autori C dolazi do 1396 00:56:46,780 --> 00:56:50,190 pravila koja određuju koji operateri imaju veći 1397 00:56:50,190 --> 00:56:53,680 prednost, više obvezujuća snaga, nego drugima. 1398 00:56:53,680 --> 00:56:55,890 Dakle, dok je u osnovnoj školi, mi općenito znao da je 1399 00:56:55,890 --> 00:56:58,930 množenje i dijeljenje, onda zbrajanje i oduzimanje, 1400 00:56:58,930 --> 00:56:59,950 zatim neke druge stvari. 1401 00:56:59,950 --> 00:57:01,720 U svijetu programiranja, postoji mnogo 1402 00:57:01,720 --> 00:57:03,360 više popis stvari. 1403 00:57:03,360 --> 00:57:05,150 I to nije nešto vrijedno pamćenja sada. 1404 00:57:05,150 --> 00:57:07,310 Vi ćete dobiti acclimated na njega ne zadugo. 1405 00:57:07,310 --> 00:57:10,690 No, baš kao u osnovnoj školi, zagrade općenito riješiti 1406 00:57:10,690 --> 00:57:12,990 pitanja od prvenstva, čineći super jasna 1407 00:57:12,990 --> 00:57:15,620 računalo i ljudski podjednako što je namijenjen. 1408 00:57:15,620 --> 00:57:17,770 Dakle, razmislite o ovom samo malo varati list postoji. 1409 00:57:17,770 --> 00:57:21,690 No, većina od tih detalja nećemo doći do još neko vrijeme. 1410 00:57:21,690 --> 00:57:21,900 >> U redu. 1411 00:57:21,900 --> 00:57:24,120 Sada, neka je izgraditi i odmaknuti od tih glup malo 1412 00:57:24,120 --> 00:57:25,460 matematički primjeri. 1413 00:57:25,460 --> 00:57:27,500 Ipak koristiti iste osnove, ali početak 1414 00:57:27,500 --> 00:57:29,960 izražavajući sebe malo više poput Scratch. 1415 00:57:29,960 --> 00:57:31,660 Tako je u nule, imali smo ove Boolean izraza. 1416 00:57:31,660 --> 00:57:34,890 I na engleskom jeziku, logički izraz je ono? 1417 00:57:34,890 --> 00:57:35,580 Istina ili laž. 1418 00:57:35,580 --> 00:57:38,300 To je nešto što se procjenjuje na true ili false. 1419 00:57:38,300 --> 00:57:39,060 1 ili 0. 1420 00:57:39,060 --> 00:57:39,870 On ili off. 1421 00:57:39,870 --> 00:57:41,000 Što god želite to nazvati. 1422 00:57:41,000 --> 00:57:43,210 Sada u nule, slagalice izgledao ovako. 1423 00:57:43,210 --> 00:57:45,850 I to je kombinacija, na dnu tamo, od tri 1424 00:57:45,850 --> 00:57:47,980 slagalice. 1425 00:57:47,980 --> 00:57:48,980 Jedan zajedno - 1426 00:57:48,980 --> 00:57:51,710 nešto što ima prazan i prazan. 1427 00:57:51,710 --> 00:57:53,970 A onda dvije Boolean izraza unutar nje. 1428 00:57:53,970 --> 00:57:56,460 Tako možete gnijezdo Boolean izraza da biste dobili više 1429 00:57:56,460 --> 00:57:59,360 komplicirano Boolean izraza. 1430 00:57:59,360 --> 00:58:03,930 Na primjer, ako je subota, i to je lijepo 1431 00:58:03,930 --> 00:58:06,180 vrijeme, a zatim otići vani. 1432 00:58:06,180 --> 00:58:07,500 Ili nešto proizvoljno kao što je to. 1433 00:58:07,500 --> 00:58:10,090 Tako možete pridružiti Boolean izraza da se s 1434 00:58:10,090 --> 00:58:12,780 veći istina vrijednost, čiji odgovor se temelji 1435 00:58:12,780 --> 00:58:13,800 na one manje. 1436 00:58:13,800 --> 00:58:15,770 >> Sada, u C, srećom, to je mapiranje 1437 00:58:15,770 --> 00:58:16,720 zapravo prilično jednostavna. 1438 00:58:16,720 --> 00:58:18,820 Zagrade pomoći kako bi se stvari jasno ovdje. 1439 00:58:18,820 --> 00:58:21,700 && Je ono što znači "i". Dakle, to je kako 1440 00:58:21,700 --> 00:58:24,700 idemo pretvoriti one blokove od nule do C. 1441 00:58:24,700 --> 00:58:27,590 A za uvjete koje smo vidjeli u nule, na lijevoj ruci 1442 00:58:27,590 --> 00:58:31,150 strana tamo, ja ih mogu slagati slično u C. Ako je x manje 1443 00:58:31,150 --> 00:58:32,970 od y, onda to učinite. 1444 00:58:32,970 --> 00:58:35,100 Inače, ako je x veći od y, onda to učinite. 1445 00:58:35,100 --> 00:58:38,030 Inače logično moraju biti jednaki, tako kažu 1446 00:58:38,030 --> 00:58:39,140 da su jednaki. 1447 00:58:39,140 --> 00:58:41,210 Dakle, sada možemo početi graditi ove stvari. 1448 00:58:41,210 --> 00:58:42,170 >> Tako ćemo napraviti primjer. 1449 00:58:42,170 --> 00:58:45,550 Dopustite mi otvoriti datoteku koja je na stazi stranicama tog 1450 00:58:45,550 --> 00:58:47,270 Napisao sam unaprijed. 1451 00:58:47,270 --> 00:58:50,540 To se zove nonswitch.c. 1452 00:58:50,540 --> 00:58:52,270 A vidjet ćemo zašto je u samo trenutak. 1453 00:58:52,270 --> 00:58:54,770 Dakle, u ovoj datoteci - nonswitch.c-- 1454 00:58:54,770 --> 00:58:56,830 prvi shvatili da postoji cijela hrpa 1455 00:58:56,830 --> 00:58:58,460 komentari na vrhu. 1456 00:58:58,460 --> 00:59:00,110 To je jednostavno objašnjavajući naziv datoteke, što je 1457 00:59:00,110 --> 00:59:01,260 ne, i tako dalje. 1458 00:59:01,260 --> 00:59:04,390 I to očito pokazuje korištenje boolean I-ing - 1459 00:59:04,390 --> 00:59:06,220 conjoining dva izraza. 1460 00:59:06,220 --> 00:59:07,670 >> Dakle, neka je vidjeti kako ovaj program radi. 1461 00:59:07,670 --> 00:59:10,840 Mogu uključiti svoje dvije datoteke, cs50.h i stdio.h. 1462 00:59:10,840 --> 00:59:13,180 Ako sam se pomaknite prema dolje, sada, na programu, to je malo duže 1463 00:59:13,180 --> 00:59:15,730 nego smo prije pisao, ali prilično čitljiv. 1464 00:59:15,730 --> 00:59:18,360 Tako sam prvi ispis za korisnika, na liniji 18, 1465 00:59:18,360 --> 00:59:20,460 "Daj mi cijeli broj između 1 i 10". Tako 1466 00:59:20,460 --> 00:59:21,530 da je tamo. 1467 00:59:21,530 --> 00:59:23,410 Sada sam dobiti cijeli broj. 1468 00:59:23,410 --> 00:59:25,380 No, shvatili da GetInt - prilično jednostavna. 1469 00:59:25,380 --> 00:59:26,510 To samo ide da biste dobili int. 1470 00:59:26,510 --> 00:59:28,830 To će osigurati da ne dobijete int, a ne 1471 00:59:28,830 --> 00:59:30,060 niz ili plovak. 1472 00:59:30,060 --> 00:59:32,390 No, to se neće učiniti bilo kakve granične provjere. 1473 00:59:32,390 --> 00:59:34,750 To se neće filtrirati brojevi biti između 1474 00:59:34,750 --> 00:59:35,630 određeni asortiman. 1475 00:59:35,630 --> 00:59:37,730 Dakle, moramo provesti da sebi. 1476 00:59:37,730 --> 00:59:40,680 Dakle, baš kao u nule, gdje sam mogao napraviti spoj između 1477 00:59:40,680 --> 00:59:43,560 dva izraza, mogu to učiniti u C kako slijedi. 1478 00:59:43,560 --> 00:59:48,660 Ako je n veći ili jednak 1, a n je manje od te 1479 00:59:48,660 --> 00:59:52,220 ili jednak 3, idem na samom samovoljno odluci da 1480 00:59:52,220 --> 00:59:53,830 broj se mali broj. 1481 00:59:53,830 --> 00:59:56,730 Samo radi priopćenju. 1482 00:59:56,730 --> 01:00:00,210 Inače, ako je n između 4 i 6, print "Vi odabrali medij 1483 01:00:00,210 --> 01:00:03,440 broj. "Jer ako je n između 7 i 10, ispis" Odabrali 1484 01:00:03,440 --> 01:00:06,390 Veliki broj. "Else print" Vi pokupiti nevažeći broj. " 1485 01:00:06,390 --> 01:00:07,900 Zato je logično da slijedi ako smo 1486 01:00:07,900 --> 01:00:09,230 iscrpljeni naš asortiman. 1487 01:00:09,230 --> 01:00:12,400 >> Dakle, shvatite to nije baš kako smo pisati ili veće od 1488 01:00:12,400 --> 01:00:15,000 jednaka u math class. 1489 01:00:15,000 --> 01:00:15,160 Točno? 1490 01:00:15,160 --> 01:00:17,430 Obično ga izvući ovako, s linije ispod nje. 1491 01:00:17,430 --> 01:00:19,250 No, ne postoji takva tipka na tipkovnici. 1492 01:00:19,250 --> 01:00:22,390 Tako simbol u C za izražavanje veće ili 1493 01:00:22,390 --> 01:00:25,770 jednaka je dva lika, i simbol za manje od 1494 01:00:25,770 --> 01:00:29,100 ili jednak je dva znaka kao dobro. 1495 01:00:29,100 --> 01:00:29,330 U redu. 1496 01:00:29,330 --> 01:00:31,910 Dakle, ako sam pokrenuti ovaj program, vjerojatno možete pogoditi što je to 1497 01:00:31,910 --> 01:00:32,650 će učiniti. 1498 01:00:32,650 --> 01:00:36,180 Ako sam ići naprijed i učiniti nonswitch, Enter. 1499 01:00:36,180 --> 01:00:38,130 A onda pokrenuti nonswitch. 1500 01:00:38,130 --> 01:00:39,530 Daj mi broj između 1 i 10. 1501 01:00:39,530 --> 01:00:40,870 Ja ću mu dati 11. 1502 01:00:40,870 --> 01:00:42,280 Podigao sam nevažeći broj. 1503 01:00:42,280 --> 01:00:44,090 Dopustite mi da pokušam broj tri. 1504 01:00:44,090 --> 01:00:45,990 Uzela sam mali broj. 1505 01:00:45,990 --> 01:00:48,360 Dakle prilično jednostavan tamo. 1506 01:00:48,360 --> 01:00:52,230 >> Što ako želim promijeniti ponašanje ovog programa i 1507 01:00:52,230 --> 01:00:54,250 učiniti nešto malo drugačije, umjesto? 1508 01:00:54,250 --> 01:00:57,620 Pusti me naprijed i reći ovo. 1509 01:00:57,620 --> 01:00:59,480 Dopustite mi da riješi sve ovo. 1510 01:00:59,480 --> 01:01:03,780 I dopustite mi da kažem, ako (n == 42). 1511 01:01:03,780 --> 01:01:08,730 I onda ću ići naprijed i reći print "Vi pokupila 1512 01:01:08,730 --> 01:01:16,340 pravi odgovor. "Inače ćemo ići naprijed i reći, 1513 01:01:16,340 --> 01:01:18,460 printf ("Odabrali 1514 01:01:18,460 --> 01:01:21,170 pogrešan odgovor ");. Ok. 1515 01:01:21,170 --> 01:01:22,040 Samo zato. 1516 01:01:22,040 --> 01:01:23,890 >> Sada, nekoliko bodova možemo napraviti ovdje. 1517 01:01:23,890 --> 01:01:26,570 Jedan od njih, nisam upišite simbol koji mislite da bi je 1518 01:01:26,570 --> 01:01:27,390 najrazumnija. 1519 01:01:27,390 --> 01:01:30,110 Kad želim provjeriti jednakost, ispada da ne koristite 1520 01:01:30,110 --> 01:01:30,910 znak jednakosti. 1521 01:01:30,910 --> 01:01:34,000 Umjesto toga koristite jednak znak jednakosti. 1522 01:01:34,000 --> 01:01:36,440 A zašto bi to moglo biti, samo intuitivno? 1523 01:01:36,440 --> 01:01:37,030 Da. 1524 01:01:37,030 --> 01:01:39,330 PUBLIKA: [nečujan] 1525 01:01:39,330 --> 01:01:39,615 David J. MALAN: Točno. 1526 01:01:39,615 --> 01:01:41,630 Znak jednakosti već se koristi za dodjelu. 1527 01:01:41,630 --> 01:01:43,020 Netko nije stvarno mislite da je ovo kroz. 1528 01:01:43,020 --> 01:01:45,820 I tako sada, kada je u pitanju ravnopravnost testiranja, moramo 1529 01:01:45,820 --> 01:01:48,850 biti jasniji, i reći jednak jednak. 1530 01:01:48,850 --> 01:01:52,110 Vrlo česta pogreška je da to učinite. 1531 01:01:52,110 --> 01:01:54,800 I, ako je u uredovno vrijeme ili negdje sljedeći tjedan ili u 1532 01:01:54,800 --> 01:01:58,340 Sljedeći dva tjedna učiniti nešto ovako, a zatim 1533 01:01:58,340 --> 01:02:00,920 boriti s njim za 10, 20 minuta pokušavajući shvatiti 1534 01:02:00,920 --> 01:02:03,330 ono prokleto bug je, shvatite da ste jedan od onih 1535 01:02:03,330 --> 01:02:04,470 ljudi koji su tu pogrešku. 1536 01:02:04,470 --> 01:02:06,030 Dakle, super jednostavan za napraviti. 1537 01:02:06,030 --> 01:02:08,240 No, cilj je da se sada odbiti tu pogrešku. 1538 01:02:08,240 --> 01:02:11,840 To bi moglo procijeniti, jer ono što je to zapravo govori? 1539 01:02:11,840 --> 01:02:15,010 Ako je n dobiva 42. 1540 01:02:15,010 --> 01:02:18,250 Tako je glagol ljudi koriste, verbalno, izraziti 1541 01:02:18,250 --> 01:02:21,800 Pojam zadatka je "dobiva." Dakle, ako je n dobiva 42. 1542 01:02:21,800 --> 01:02:24,060 Dakle, to znači dodijeliti 42 do n. 1543 01:02:24,060 --> 01:02:26,250 Sada imam Boolean izraza u zagradama, 1544 01:02:26,250 --> 01:02:30,230 unutar ovog stanja, vrijednost koja je 42. 1545 01:02:30,230 --> 01:02:30,390 Točno? 1546 01:02:30,390 --> 01:02:32,690 Jer ako ga ocjenjuje iznutra prema van, ukupne 1547 01:02:32,690 --> 01:02:34,100 Odgovor je, sada je 42. 1548 01:02:34,100 --> 01:02:37,360 >> Dakle, ako sam pitao vas pitanje, "ako (42)," što je 1549 01:02:37,360 --> 01:02:38,410 da stvarno govoriš? 1550 01:02:38,410 --> 01:02:40,990 Pa, Boolean izraza može biti samo true ili false. 1551 01:02:40,990 --> 01:02:42,010 1 ili 0. 1552 01:02:42,010 --> 01:02:43,010 On ili off. 1553 01:02:43,010 --> 01:02:45,240 Tako mi se čini da imaju corner slučaj ovdje, gdje svi 1554 01:02:45,240 --> 01:02:50,060 Odjednom, govorim "ako (42)". To nije Boolean vrijednost. 1555 01:02:50,060 --> 01:02:54,500 Dakle, ono što rade računala, iako je to zapravo izjednačava 1556 01:02:54,500 --> 01:02:58,620 ništa to nije 0 tumači da bi bilo istinito. 1557 01:02:58,620 --> 01:02:59,340 1. 1558 01:02:59,340 --> 01:02:59,690 Na. 1559 01:02:59,690 --> 01:03:01,510 Oni su svi funkcionalno ekvivalentne. 1560 01:03:01,510 --> 01:03:05,070 Samo vrijednost 0, ili ključna pogrešna, jer ćemo 1561 01:03:05,070 --> 01:03:07,860 na kraju vidjeti, je zapravo lažna. 1562 01:03:07,860 --> 01:03:15,040 Dakle, "ako (42)" zapravo bi bilo istinito, jer je to od nule. 1563 01:03:15,040 --> 01:03:18,620 Dakle, da budemo precizniji ovdje, Boolean vrijednost stvarno nije tako 1564 01:03:18,620 --> 01:03:20,680 puno istinita ili lažna, ali za to 1565 01:03:20,680 --> 01:03:24,650 slučaju, ako je 0 ili od nule. 1566 01:03:24,650 --> 01:03:26,330 Dakle, netočno ili ne lažna. 1567 01:03:26,330 --> 01:03:28,640 I to nam omogućuje da obuhvati sve više 1568 01:03:28,640 --> 01:03:30,980 mogućnosti u zagradi izraza. 1569 01:03:30,980 --> 01:03:33,840 Dakle, trebamo, uvijek je tako pažljivo, reći ovo - 1570 01:03:33,840 --> 01:03:35,620 if (n == 42). 1571 01:03:35,620 --> 01:03:39,100 Jednostavno zato moramo odrediti test jednakosti, 1572 01:03:39,100 --> 01:03:40,930 ne dodjeljivanje vrijednosti. 1573 01:03:40,930 --> 01:03:42,830 >> Što je još napomenuti ovdje? 1574 01:03:42,830 --> 01:03:46,030 Ove vitičastim zagradama su zapravo i nije potrebno. 1575 01:03:46,030 --> 01:03:48,650 Ja sam ih rade samo da bi bili NIT-picky ovdje. 1576 01:03:48,650 --> 01:03:51,350 No, kada imate uvjet da ima samo jedan redak 1577 01:03:51,350 --> 01:03:55,100 broj, kao pogodnost, programeri ne treba koristiti 1578 01:03:55,100 --> 01:03:56,030 su vitičastih zagrada. 1579 01:03:56,030 --> 01:03:59,370 Dovoljno je samo alineji, iz estetskih razloga, a 1580 01:03:59,370 --> 01:04:01,050 zatim napisati svoju liniju koda. 1581 01:04:01,050 --> 01:04:04,160 Tek kada želite pisati dvije linije koda - za 1582 01:04:04,160 --> 01:04:08,230 Primjerice, drugi printf ("Bok!"). Ako želite učiniti 1583 01:04:08,230 --> 01:04:09,540 da, to je slomljen. 1584 01:04:09,540 --> 01:04:11,700 Možete alineje sve što želite, ali je činjenica da imate 1585 01:04:11,700 --> 01:04:14,600 upisali dvije linije koda bez vitičastih zagrada 1586 01:04:14,600 --> 01:04:16,860 znači da je ovaj program ne bi pokrenuti ispravno, ili ukoliko bi 1587 01:04:16,860 --> 01:04:18,530 ni sastaviti ispravno. 1588 01:04:18,530 --> 01:04:21,040 Dakle, za sada, da budem iskren, mislim da je najbolji navika je samo 1589 01:04:21,040 --> 01:04:24,460 koristiti vitičastih zagrada, i vidjet ćete da oni čine 1590 01:04:24,460 --> 01:04:25,750 super jasno što se događa. 1591 01:04:25,750 --> 01:04:29,410 >> Također, kao stranu - pogotovo ako ste među onima koji koriste 1592 01:04:29,410 --> 01:04:31,700 preporučene knjige ili izvori online - 1593 01:04:31,700 --> 01:04:33,480 shvatiti da postoji taj pojam u stilu 1594 01:04:33,480 --> 01:04:34,130 programiranje. 1595 01:04:34,130 --> 01:04:37,280 A neki ljudi zapravo vole staviti kovrčavu braće 1596 01:04:37,280 --> 01:04:38,720 ovamo na liniji. 1597 01:04:38,720 --> 01:04:41,520 Neki ljudi više vole raditi smiješne stvari, 1598 01:04:41,520 --> 01:04:43,830 sviđa stavite ih ovdje. 1599 01:04:43,830 --> 01:04:45,140 Nema krivo odgovor kada je u pitanju 1600 01:04:45,140 --> 01:04:46,710 stil, ali to je pogrešno. 1601 01:04:46,710 --> 01:04:47,700 No, neki ljudi to učiniti. 1602 01:04:47,700 --> 01:04:49,160 [Smijeh] 1603 01:04:49,160 --> 01:04:51,760 David J. MALAN: Pa sam spomenuo to sada, jednostavno zato što su 1604 01:04:51,760 --> 01:04:54,400 ste pročitali na stvari u knjigama ili online, ti si idući u dobiti 1605 01:04:54,400 --> 01:04:55,990 različite poruke iz različitih nastavnika i 1606 01:04:55,990 --> 01:04:56,730 različiti autori. 1607 01:04:56,730 --> 01:04:58,640 I samo shvatiti da, funkcionalno, oni su 1608 01:04:58,640 --> 01:05:00,740 općenito odgovara, ali budite dosljedni. 1609 01:05:00,740 --> 01:05:02,850 Dakle, u ovom slučaju, mi ćemo standardizirati na kovrčava 1610 01:05:02,850 --> 01:05:04,650 aparatić podstava gore na lijevoj strani. 1611 01:05:04,650 --> 01:05:04,910 >> U redu. 1612 01:05:04,910 --> 01:05:07,040 Dakle, idemo naprijed i sada pokrenuti to, i vidjeti što se događa 1613 01:05:07,040 --> 01:05:07,780 s ovim programom. 1614 01:05:07,780 --> 01:05:09,970 Make nonswitch. 1615 01:05:09,970 --> 01:05:11,040 Onda trčanje nonswitch. 1616 01:05:11,040 --> 01:05:13,900 Daj mi cijeli broj između 0 i - tako da nije relevantno 1617 01:05:13,900 --> 01:05:16,480 više, ali ja samo idem samovoljno reći 42. 1618 01:05:16,480 --> 01:05:17,850 I ja sam odabrao pravi odgovor. 1619 01:05:17,850 --> 01:05:20,430 Pa sad, ajmo zapravo se to u nekom drugom smjeru. 1620 01:05:20,430 --> 01:05:22,070 Ispada da je neka druga sintaksa smo 1621 01:05:22,070 --> 01:05:23,480 možete koristiti u programu. 1622 01:05:23,480 --> 01:05:27,310 Evo novi komad sintakse koja je funkcionalno isti, 1623 01:05:27,310 --> 01:05:30,680 ali samo uvodi još jedan način izražavanja sebe. 1624 01:05:30,680 --> 01:05:32,830 Dakle, to je ono što se zove "Naredba switch." A 1625 01:05:32,830 --> 01:05:34,820 Naredba switch djeluje kako slijedi. 1626 01:05:34,820 --> 01:05:37,580 To traje, u zagradama, vrijednost koju želite 1627 01:05:37,580 --> 01:05:38,860 "Prekidač" na. 1628 01:05:38,860 --> 01:05:41,490 Želite da se ponašaju drugačije na temelju njegove vrijednosti. 1629 01:05:41,490 --> 01:05:44,360 Dakle, to znači prekidač na vrijednost n. 1630 01:05:44,360 --> 01:05:45,480 A što to znači? 1631 01:05:45,480 --> 01:05:50,530 Pa, ako n je 1 ili 2 ili 3, naprijed i ispis "You 1632 01:05:50,530 --> 01:05:52,680 pokupila veliki broj ", a onda razbiti. 1633 01:05:52,680 --> 01:05:55,720 Razlog za break je da način na koji funkcionira C je kao 1634 01:05:55,720 --> 01:05:59,790 Čim se pronađe predmet koji odgovara, ona počinje izvršenja 1635 01:05:59,790 --> 01:06:01,610 sve kod ispod njega. 1636 01:06:01,610 --> 01:06:04,580 Dakle, ako imam jednu liniju koda, kao što sam to ovdje na liniji 27, to 1637 01:06:04,580 --> 01:06:05,360 dobiva pogubili. 1638 01:06:05,360 --> 01:06:07,520 Ako sam dodati još jednu liniju ovdje, to dobiva pogubili. 1639 01:06:07,520 --> 01:06:09,350 Druga linija ovdje, to dobiva pogubili. 1640 01:06:09,350 --> 01:06:12,460 Program zaustavlja samo izvršava ono što je ispod 1641 01:06:12,460 --> 01:06:14,680 primjenjivo slučaj gubitka kad sam izričito 1642 01:06:14,680 --> 01:06:17,210 reći "break". Dakle, u redu. 1643 01:06:17,210 --> 01:06:19,220 Desno, u ovom slučaju, kao rezultat. 1644 01:06:19,220 --> 01:06:22,130 Slučaj 4 ili 5 ili 6, na sličan način, ide 1645 01:06:22,130 --> 01:06:23,160 ispisati poruku. 1646 01:06:23,160 --> 01:06:24,410 U ovom slučaju, srednje broj. 1647 01:06:24,410 --> 01:06:25,200 Break. 1648 01:06:25,200 --> 01:06:28,160 Slučaj 7, 8, 9, 10, to će ispisati "Ti pokupio veliki 1649 01:06:28,160 --> 01:06:28,950 broj. "Break. 1650 01:06:28,950 --> 01:06:31,290 A tu je i doslovno ključna zove "default" 1651 01:06:31,290 --> 01:06:34,090 da je učinkovito kao "drugi" izgraditi. 1652 01:06:34,090 --> 01:06:36,010 Dakle, nova sintaksa, ali intelektualno, 1653 01:06:36,010 --> 01:06:37,060 ništa at svi novi ovdje. 1654 01:06:37,060 --> 01:06:38,280 To je baš kao Scratch. 1655 01:06:38,280 --> 01:06:41,040 Ako, drugo ako drugdje, ako, recimo blok. 1656 01:06:41,040 --> 01:06:44,560 >> Tako da je uključen verzija ovog programa. 1657 01:06:44,560 --> 01:06:46,280 Ali primijetite da smo to učinili s brojevima ovdje. 1658 01:06:46,280 --> 01:06:49,040 Dopustite mi otvoriti drugi verziju, samo da pokazuju 1659 01:06:49,040 --> 01:06:50,670 nešto malo više betona. 1660 01:06:50,670 --> 01:06:52,840 Dakle, ovdje imamo ocjene umjesto. 1661 01:06:52,840 --> 01:06:55,540 Ispada možete koristiti prekidače ne samo na integers, ali na 1662 01:06:55,540 --> 01:06:56,340 likovi. 1663 01:06:56,340 --> 01:06:58,930 Nije u svim vrstama podataka, ali barem na likovima. 1664 01:06:58,930 --> 01:07:02,670 Dakle ovdje smo mogli učiniti nešto slično, ako je vrijednost C koji 1665 01:07:02,670 --> 01:07:06,230 korisnik upisao u, u skladu 19, pomoću getchar funkciju, 1666 01:07:06,230 --> 01:07:09,410 je grad ili mala slova, ajmo ga tumače kao razred, 1667 01:07:09,410 --> 01:07:11,340 i kažu da bere izvrsnu ocjenu. 1668 01:07:11,340 --> 01:07:14,690 A dolje uz switch, imamo druge 1669 01:07:14,690 --> 01:07:17,950 slučajevi za "B" i "C", a s., i tako dalje. 1670 01:07:17,950 --> 01:07:19,780 Ali ajmo sad zaokružuju jednu drugu stvar. 1671 01:07:19,780 --> 01:07:21,130 A opet, nekako leti kroz 1672 01:07:21,130 --> 01:07:22,200 neke od tih primjera. 1673 01:07:22,200 --> 01:07:26,990 No, to je stvarno tako da ih možemo primijeniti, sada - 1674 01:07:26,990 --> 01:07:28,880 ili stvarno, samo ih prevesti sada - 1675 01:07:28,880 --> 01:07:32,220 na C. 1676 01:07:32,220 --> 01:07:33,310 >> Pa neka mi ići naprijed i učiniti. 1677 01:07:33,310 --> 01:07:34,830 Idem otvoriti novu datoteku. 1678 01:07:34,830 --> 01:07:39,430 I ja ću to učiniti uključuju . 1679 01:07:39,430 --> 01:07:42,770 A onda ću to učiniti int main (void). 1680 01:07:42,770 --> 01:07:46,390 Dopustite mi da spasi ovu sliku kao loop.c. 1681 01:07:46,390 --> 01:07:48,280 Baš kao primjer. 1682 01:07:48,280 --> 01:07:49,910 I ja ću ići naprijed i učiniti sljedeće. 1683 01:07:49,910 --> 01:07:54,180 Želim napisati vrlo zahtjevan program. 1684 01:07:54,180 --> 01:07:56,170 Tako 10. 1685 01:07:56,170 --> 01:07:58,862 Ajmo to učiniti. 1686 01:07:58,862 --> 01:07:59,320 9. 1687 01:07:59,320 --> 01:08:00,360 U redu. 1688 01:08:00,360 --> 01:08:02,120 Čim počnete raditi to u programiranju, ti si 1689 01:08:02,120 --> 01:08:03,490 vjerojatno radiš nešto krivo. 1690 01:08:03,490 --> 01:08:04,950 No, mi ćemo početi tamo ionako. 1691 01:08:04,950 --> 01:08:05,430 Ups. 1692 01:08:05,430 --> 01:08:06,950 To je zapravo krivo. 1693 01:08:06,950 --> 01:08:08,230 7. 1694 01:08:08,230 --> 01:08:09,440 6. 1695 01:08:09,440 --> 01:08:10,750 5. 1696 01:08:10,750 --> 01:08:11,200 4. 1697 01:08:11,200 --> 01:08:12,450 Ništa se neće dogoditi kad dođemo do 0. 1698 01:08:12,450 --> 01:08:13,290 3. 1699 01:08:13,290 --> 01:08:14,590 2. 1700 01:08:14,590 --> 01:08:15,630 1. 1701 01:08:15,630 --> 01:08:16,020 Ok. 1702 01:08:16,020 --> 01:08:17,560 0. 1703 01:08:17,560 --> 01:08:18,689 Izbriši. 1704 01:08:18,689 --> 01:08:19,029 >> U redu. 1705 01:08:19,029 --> 01:08:20,029 Dakle, povratak 0. 1706 01:08:20,029 --> 01:08:22,010 Dakle, ovaj program očito će učiniti ono što je vrlo 1707 01:08:22,010 --> 01:08:23,310 dosadnog kaže da će to učiniti. 1708 01:08:23,310 --> 01:08:24,060 To će ispisati sve one 1709 01:08:24,060 --> 01:08:25,290 vrijednosti, od vrha do dna. 1710 01:08:25,290 --> 01:08:27,140 Pa neka mi to napraviti petlju. 1711 01:08:27,140 --> 01:08:28,640 A onda - ups. 1712 01:08:28,640 --> 01:08:29,700 Make petlju. 1713 01:08:29,700 --> 01:08:31,479 Bio sam u krivu imeniku. 1714 01:08:31,479 --> 01:08:33,300 I sada neka mi pokrenuti petlju. 1715 01:08:33,300 --> 01:08:34,140 Upišite. 1716 01:08:34,140 --> 01:08:34,620 Sjajno. 1717 01:08:34,620 --> 01:08:35,270 Vrlo lijep. 1718 01:08:35,270 --> 01:08:36,279 Nice, dugo program. 1719 01:08:36,279 --> 01:08:38,109 >> U redu, ali sada hajdemo to učiniti bolje. 1720 01:08:38,109 --> 01:08:40,810 Baš kao u nule, kada ste počeli koristiti loop 1721 01:08:40,810 --> 01:08:43,149 izgradnju, umjesto samo kopirati i zalijepiti sve 1722 01:08:43,149 --> 01:08:45,580 slagalice, neka mi predstaviti ovu stvar. 1723 01:08:45,580 --> 01:08:48,609 Dakle, u C, postoje razne petlje konstrukti, 1724 01:08:48,609 --> 01:08:50,540 od kojih jedna izgleda ovako. 1725 01:08:50,540 --> 01:08:55,069 "Za" petlja ima tri stvari, odvojene dvije zarezom. 1726 01:08:55,069 --> 01:08:57,770 I onda, unutar tijela petlje, da tako kažemo - 1727 01:08:57,770 --> 01:08:59,390 stvari unutar od vitičastih zagrada - 1728 01:08:59,390 --> 01:09:01,010 možemo nešto učiniti opet i opet. 1729 01:09:01,010 --> 01:09:02,310 Dakle, ono što sam ovdje na zaslonu, to je 1730 01:09:02,310 --> 01:09:03,300 doslovno samo komentar. 1731 01:09:03,300 --> 01:09:05,380 / / Ovdje znači dolazi komentar. 1732 01:09:05,380 --> 01:09:06,180 To nije broj. 1733 01:09:06,180 --> 01:09:08,890 Ovo je samo engleski opis, za mene, čovjeka. 1734 01:09:08,890 --> 01:09:11,300 >> Dakle inicijalizacije, uvjeti i ažuriranja. 1735 01:09:11,300 --> 01:09:12,770 Pa, neka je vidjeti kako se to radi. 1736 01:09:12,770 --> 01:09:15,520 To mi omogućuje da prepisati ovaj program kako slijedi. 1737 01:09:15,520 --> 01:09:16,399 Za - 1738 01:09:16,399 --> 01:09:18,029 tako da ovdje dolazi moj petlju - 1739 01:09:18,029 --> 01:09:19,439 int ja - 1740 01:09:19,439 --> 01:09:21,330 ovdje dolazi varijabla zove "ja" - 1741 01:09:21,330 --> 01:09:23,140 dobiva inicijaliziraju 10. 1742 01:09:23,140 --> 01:09:25,260 Dakle, tu je moj inicijalizacije. 1743 01:09:25,260 --> 01:09:29,450 Želim napraviti ovu petlju tako dugo kao "ja" ili veći 1744 01:09:29,450 --> 01:09:30,899 jednaka 0. 1745 01:09:30,899 --> 01:09:32,880 I na svakoj iteraciji ove petlje, želim 1746 01:09:32,880 --> 01:09:34,979 da mi je činiti -. 1747 01:09:34,979 --> 01:09:36,310 Tako smo vidjeli + + u ponedjeljak. 1748 01:09:36,310 --> 01:09:37,660 - Je suprotno. 1749 01:09:37,660 --> 01:09:39,410 To decrements vrijednost do 1.. 1750 01:09:39,410 --> 01:09:43,319 Unutar ove petlje, želim nešto napraviti. 1751 01:09:43,319 --> 01:09:46,390 Dakle, ja ću reći nešto poput printf. 1752 01:09:46,390 --> 01:09:48,939 Ja ne želim reći 10 sada, jer je to očito samo 1753 01:09:48,939 --> 01:09:50,000 će ispisati istu vrijednost. 1754 01:09:50,000 --> 01:09:52,246 Što želim ispisati umjesto toga, vjerojatno? 1755 01:09:52,246 --> 01:09:52,590 Da. 1756 01:09:52,590 --> 01:09:55,270 Dakle, "ja". Dakle,% d, ja. 1757 01:09:55,270 --> 01:09:57,340 >> Dakle, ja ću ukrasti jednu od tih ideja od ranije - 1758 01:09:57,340 --> 01:09:59,640 ovo zamjena za oblikovanje kodova - 1759 01:09:59,640 --> 01:10:01,620 i onda ovdje dolje, na dnu, ja ću se vratiti 0, samo 1760 01:10:01,620 --> 01:10:02,710 za dobru mjeru. 1761 01:10:02,710 --> 01:10:04,740 Ali sada, imam više jezgrovit program. 1762 01:10:04,740 --> 01:10:07,490 To je samo nekoliko redaka, a ne nekih 10 ili 11 linija. 1763 01:10:07,490 --> 01:10:09,440 Pusti me da moj upit ovdje dolje. 1764 01:10:09,440 --> 01:10:10,630 Remake petlja. 1765 01:10:10,630 --> 01:10:12,140 Repriza petlju. 1766 01:10:12,140 --> 01:10:13,570 A čini se da se ista. 1767 01:10:13,570 --> 01:10:15,550 Sada, program nije više zanimljiv. 1768 01:10:15,550 --> 01:10:17,180 Ali sada mogu upisati nešto poput ovoga. 1769 01:10:17,180 --> 01:10:18,970 Ja to ne mogu promijeniti na 100. 1770 01:10:18,970 --> 01:10:21,400 I onda mogu rekompiliranje moj program. 1771 01:10:21,400 --> 01:10:23,360 I onda ja mogu ponovno pokrenuti moj program. 1772 01:10:23,360 --> 01:10:26,390 I sada to ide super brzo na današnjim računalima. 1773 01:10:26,390 --> 01:10:27,820 No, tu imam - 1774 01:10:27,820 --> 01:10:29,620 i zapravo, moj vraćati tampon ne 1775 01:10:29,620 --> 01:10:30,890 čak idu tako daleko. 1776 01:10:30,890 --> 01:10:31,680 Tu ćemo ići. 1777 01:10:31,680 --> 01:10:34,090 Dakle, tu imamo sve sto. 1778 01:10:34,090 --> 01:10:35,880 No, to je lako napraviti greške ovdje. 1779 01:10:35,880 --> 01:10:37,920 Što će biti očekivano ponašanje, ako sam 1780 01:10:37,920 --> 01:10:41,150 slučajno to učiniti? 1781 01:10:41,150 --> 01:10:42,550 Dakle, ona se osjeća kao beskonačna. 1782 01:10:42,550 --> 01:10:44,670 Dakle, neka je vidjeti ako je računalo ponaša. 1783 01:10:44,670 --> 01:10:47,020 >> Pa neka mi ići naprijed i učiniti petlju. 1784 01:10:47,020 --> 01:10:48,355 I neka mi pokrenuti petlju. 1785 01:10:53,590 --> 01:10:55,210 Dakle, ajmo se vratiti na to u samo jednom trenutku. 1786 01:10:55,210 --> 01:10:56,720 Mi ćemo pustiti da radi. 1787 01:10:56,720 --> 01:10:59,520 Zato što bismo trebali brojati do, minimalno? 1788 01:10:59,520 --> 01:11:02,200 Vjerojatno barem dvije milijarde, ako imamo da su mnoge bitova, a 1789 01:11:02,200 --> 01:11:03,660 mi smo koristeći pozitivne vrijednosti. 1790 01:11:03,660 --> 01:11:04,890 Dakle, neka je skočiti natrag ovdje. 1791 01:11:04,890 --> 01:11:07,810 Osim ove vrste petlji, imamo ono što se zove dok 1792 01:11:07,810 --> 01:11:09,430 petlje. Dakle, baš kao u nule, što je zauvijek 1793 01:11:09,430 --> 01:11:11,240 blokovi, a imali ste Ponovljeni blokova. 1794 01:11:11,240 --> 01:11:13,270 Isto tako, u C, imate samo druge načine 1795 01:11:13,270 --> 01:11:14,260 od sebe izražavanje. 1796 01:11:14,260 --> 01:11:17,110 Dakle, imate taj pojam while petlje koji vam omogućuje da 1797 01:11:17,110 --> 01:11:18,860 izraziti sebe malo drugačije. 1798 01:11:18,860 --> 01:11:21,490 I onda imate nešto što se zove učiniti-while petlja, 1799 01:11:21,490 --> 01:11:24,200 koji djeluje nešto drugačije, kao dobro. 1800 01:11:24,200 --> 01:11:25,320 A mi ćemo zafrkavati njih, osim tijekom vremena. 1801 01:11:25,320 --> 01:11:28,630 >> Ali neka je pogledati ovo posljednja ovdje. 1802 01:11:28,630 --> 01:11:30,160 Ako idemo u - 1803 01:11:30,160 --> 01:11:31,466 još uvijek traje. 1804 01:11:31,466 --> 01:11:32,770 To je prilično beskonačna. 1805 01:11:32,770 --> 01:11:36,870 Tako da me pusti na pozitivan i pokazati kako možemo zapravo 1806 01:11:36,870 --> 01:11:39,410 dr korisničkog unosa malo učinkovitije. 1807 01:11:39,410 --> 01:11:40,910 To je prilično kratka programa. 1808 01:11:40,910 --> 01:11:43,730 I ovdje imamo, u glavnom, int n deklaracije. 1809 01:11:43,730 --> 01:11:46,570 Tako mi dati varijablu nazvanu n. Sada, doslovno sam reći 1810 01:11:46,570 --> 01:11:48,340 "Učiniti." A onda sam dobio otvorenu kovrčava 1811 01:11:48,340 --> 01:11:49,630 braće, blizu kovrčava braće. 1812 01:11:49,630 --> 01:11:52,000 A onda primijetite, odmah nakon toga, kaže, dok n 1813 01:11:52,000 --> 01:11:53,790 je manje od 1. 1814 01:11:53,790 --> 01:11:55,300 Dakle, primijetite da su ove linije - 1815 01:11:55,300 --> 01:11:56,740 19-24 - 1816 01:11:56,740 --> 01:11:59,450 sastaviti kolektivno učiniti-while petlja. 1817 01:11:59,450 --> 01:12:01,280 I opet, nova sintaksa, nije nova ideja. 1818 01:12:01,280 --> 01:12:03,740 To je samo još jedan način petlje, sintaktički. 1819 01:12:03,740 --> 01:12:04,890 Pa što to učiniti? 1820 01:12:04,890 --> 01:12:08,000 Učinite sljedeće dok je n manji od 1. 1821 01:12:08,000 --> 01:12:09,080 Dakle, ono što želim učiniti? 1822 01:12:09,080 --> 01:12:11,390 Zahtijevam da li mi dati pozitivan cijeli broj. 1823 01:12:11,390 --> 01:12:14,110 Tada sam zapravo pokušati dobiti cijeli od korisnika. 1824 01:12:14,110 --> 01:12:16,740 No, u smislu kako bi operacija ovdje, jer 1825 01:12:16,740 --> 01:12:21,850 dok je uvjet ovdje, onda sam ću provjeriti, je n 1826 01:12:21,850 --> 01:12:23,100 manji od 1? 1827 01:12:23,100 --> 01:12:24,600 Dakle, pretpostavimo da korisnik - 1828 01:12:24,600 --> 01:12:26,450 nakon što je zahtijevao na ovaj način - 1829 01:12:26,450 --> 01:12:29,190 vrste u vrijednosti 0. 1830 01:12:29,190 --> 01:12:34,510 To stanje će biti istinita ili lažna? 1831 01:12:34,510 --> 01:12:35,820 Pa, to je zapravo događa da bi bilo istinito. 1832 01:12:35,820 --> 01:12:38,700 Budući n je 0, a 0 je manji od 1. 1833 01:12:38,700 --> 01:12:40,140 Dakle, što to znači? 1834 01:12:40,140 --> 01:12:41,160 Učinite to opet. 1835 01:12:41,160 --> 01:12:41,990 Učinite to opet. 1836 01:12:41,990 --> 01:12:42,640 Učinite to opet. 1837 01:12:42,640 --> 01:12:46,080 Samo jednom da je uvjet procjenjuje na FALSE. 1838 01:12:46,080 --> 01:12:47,510 Ako sam upisati 42. 1839 01:12:47,510 --> 01:12:49,690 Pa ne, 42 ne manje od 1. 1840 01:12:49,690 --> 01:12:52,320 Stoga ova petlja je učinio izvršenja. 1841 01:12:52,320 --> 01:12:54,650 I tako u tom trenutku, program će reći, hvala za 1842 01:12:54,650 --> 01:12:57,530 42, u ovom slučaju. 1843 01:12:57,530 --> 01:13:00,320 Sada da ste ovaj način izražavanje sebe - 1844 01:13:00,320 --> 01:13:02,360 Ne smijemo čekati da se to završi. 1845 01:13:02,360 --> 01:13:03,620 To će potrajati neko vrijeme. 1846 01:13:03,620 --> 01:13:04,990 Da bi se nastavio sljedeći put, možda. 1847 01:13:04,990 --> 01:13:08,050 >> Ali sada, imate mogućnost nadamo da razumiju 1848 01:13:08,050 --> 01:13:09,060 Malo monstrum humor. 1849 01:13:09,060 --> 01:13:11,560 Isprike. 1850 01:13:11,560 --> 01:13:13,620 To nije reprezentativan za humor u informatici 1851 01:13:13,620 --> 01:13:14,870 svijet, ali to je slatka. 1852 01:13:21,020 --> 01:13:23,890 [Smijeh] Idemo na kraju na toj bilješci. 1853 01:13:23,890 --> 01:13:25,750 A mi ćemo vas vidjeti u ponedjeljak. 1854 01:13:25,750 --> 01:13:31,629 [Pljesak]