1 00:00:00,000 --> 00:00:00,940 2 00:00:00,940 --> 00:00:05,440 >> [Musika nagpe-play] 3 00:00:05,440 --> 00:00:11,577 4 00:00:11,577 --> 00:00:12,660 David J. MALAN: Lahat ng karapatan. 5 00:00:12,660 --> 00:00:15,590 Ito ay CS50, at ito ay ang simula ng linggo dalawang. 6 00:00:15,590 --> 00:00:19,120 Kaya ipaalam sa amin magsimula ngayon na may isang bug. 7 00:00:19,120 --> 00:00:20,974 Ang isang bug, siyempre, ay isang pagkakamali sa isang programa, 8 00:00:20,974 --> 00:00:22,890 at makakakuha ka ng napaka pamilyar sa konseptong ito 9 00:00:22,890 --> 00:00:26,050 kung hindi mo pa-program bago. pset0 at ngayon pset1. 10 00:00:26,050 --> 00:00:29,280 Ngunit Isaalang-alang natin ang isang bagay hayaan medyo simple sa unang. 11 00:00:29,280 --> 00:00:32,189 Ang program na ito dito na ako threw-sama nang maaga, 12 00:00:32,189 --> 00:00:37,280 at i-claim ko na ito ay dapat na mag-print 10 bituin sa screen gamit printf, 13 00:00:37,280 --> 00:00:41,020 ngunit tila ito ay mayroong bug sa ilang mga paraan. 14 00:00:41,020 --> 00:00:45,370 >> Given pagtutukoy na iyon dapat itong i-print ang 10 bituin, 15 00:00:45,370 --> 00:00:50,230 ngunit ito ay hindi tila, kung ano Gusto mo i-claim ang bug? 16 00:00:50,230 --> 00:00:52,004 Oo? 17 00:00:52,004 --> 00:00:54,420 Kaya ito ay isang off sa pamamagitan ng isang error, at kung ano ang ibig mong sabihin sa pamamagitan ng na? 18 00:00:54,420 --> 00:01:00,991 19 00:01:00,991 --> 00:01:01,490 OK. 20 00:01:01,490 --> 00:01:09,820 21 00:01:09,820 --> 00:01:10,410 Mahusay. 22 00:01:10,410 --> 00:01:13,930 Kaya tinukoy mo kami ng isang simulan ang halaga ng zero para i, 23 00:01:13,930 --> 00:01:18,399 at tinukoy namin ang isang n halaga ng 10, ngunit ginamit namin mas mababa sa o patas sa. 24 00:01:18,399 --> 00:01:21,190 At ang dahilan na ito ay dalawang mga character at hindi lamang isa na simbolo, 25 00:01:21,190 --> 00:01:22,630 tulad ng sa isang aklat matematika, ay hindi mo na kailangang 26 00:01:22,630 --> 00:01:24,880 isang paraan ng pagpapahayag ng mga isa katumbas ng character. 27 00:01:24,880 --> 00:01:28,450 >> Kaya ibig sabihin nito ay mas mababa, ngunit kung nagsimula ka ng pagbibilang sa zero, 28 00:01:28,450 --> 00:01:31,690 ngunit bilangin mo ang lahat ng paraan up sa pamamagitan at pantay-pantay sa 10, 29 00:01:31,690 --> 00:01:34,170 ikaw ay siyempre pagpunta sa ang bilang ng 11 mga bagay sa kabuuan. 30 00:01:34,170 --> 00:01:35,900 At kaya ka ng pagpunta sa i-print ang 11 bituin. 31 00:01:35,900 --> 00:01:37,990 Kaya kung ano ang maaaring maging isang remedyo para sa ito? 32 00:01:37,990 --> 00:01:39,970 Oo? 33 00:01:39,970 --> 00:01:43,980 >> Kaya lamang ayusin ang mga mas mababa sa o katumbas ng mas mababa kaysa sa lamang, 34 00:01:43,980 --> 00:01:46,250 at mayroong, inaangkin ko, marahil isa pang solusyon, masyadong. 35 00:01:46,250 --> 00:01:47,210 Ano ang maaari mong gawin pa? 36 00:01:47,210 --> 00:01:48,590 Oo? 37 00:01:48,590 --> 00:01:53,660 >> Kaya simulan ang katumbas nito sa 1, at iwan ang mas mababa sa o patas sa. 38 00:01:53,660 --> 00:01:56,187 At tapat Gusto ko i-claim na, para sa isang karaniwang tao, 39 00:01:56,187 --> 00:01:57,770 ito ay marahil higit pa prangka. 40 00:01:57,770 --> 00:02:00,280 Simulan ang pagbibilang sa 1 at bilangin up sa pamamagitan ng 10. 41 00:02:00,280 --> 00:02:01,690 Mahalaga gawin kung ano ang iyong ibig sabihin. 42 00:02:01,690 --> 00:02:04,010 >> Ngunit ang katotohanang ay sa programming, bilang nasaksihan namin, 43 00:02:04,010 --> 00:02:07,598 computer na siyentipiko at mga programmer Sa pangkalahatan ay magsisimulang pagbibilang sa zero. 44 00:02:07,598 --> 00:02:09,389 At kaya na fine-sabay ikaw masanay ito. 45 00:02:09,389 --> 00:02:12,640 Ang iyong kondisyon ay sa pangkalahatan maging isang bagay tulad ng mas mababa sa. 46 00:02:12,640 --> 00:02:14,910 Kaya lang ang isang makatuwirang error na maaari naming ngayon 47 00:02:14,910 --> 00:02:17,990 ayusin at sa huli mag-recompile ito at kumuha ng 10 minuto. 48 00:02:17,990 --> 00:02:19,610 >> Well kung paano tungkol sa bug dito? 49 00:02:19,610 --> 00:02:24,200 Dito, muli, inaangkin ko na mayroon akong ang isang layunin ng pag-print ng 10 stars-- 50 00:02:24,200 --> 00:02:28,140 isa sa bawat linya oras na ito, ngunit ito ay hindi. 51 00:02:28,140 --> 00:02:30,940 Bago namin ipanukala kung ano ang pag-aayos ay, kung ano ang ginagawa ito 52 00:02:30,940 --> 00:02:34,640 i-print ang biswal na kung ako ay upang ipunin at patakbuhin ang program na ito ang iyong palagay? 53 00:02:34,640 --> 00:02:35,140 Oo? 54 00:02:35,140 --> 00:02:38,360 55 00:02:38,360 --> 00:02:38,860 >> Bituin. 56 00:02:38,860 --> 00:02:41,690 Kaya ang lahat ng mga bituin sa parehong linya ay kung ano ang aking narinig, 57 00:02:41,690 --> 00:02:43,391 at pagkatapos ay ang bagong linya ng character. 58 00:02:43,391 --> 00:02:44,140 Kaya sabihin subukan iyon. 59 00:02:44,140 --> 00:02:48,710 Kaya gumawa mayroong bug-1, ipasok, at nakikita ko ang command clang 60 00:02:48,710 --> 00:02:50,090 na usapan natin ang tungkol sa huling panahon. 61 00:02:50,090 --> 00:02:55,180 ./buggy-1, at sa katunayan ko makita ang lahat ng 10 mga bituin sa parehong linya kahit na inaangkin ko 62 00:02:55,180 --> 00:02:58,690 sa aking mga pagtutukoy ng komento lamang sa ibabaw ang code na nilayon kong gawin ang isa sa bawat 63 00:02:58,690 --> 00:02:59,230 linya. 64 00:02:59,230 --> 00:03:00,580 Ngunit ito ay mukhang tama. 65 00:03:00,580 --> 00:03:04,620 >> Ngayon 15 linya mukhang ako pag-print ng isang bituin, at pagkatapos linya 16 66 00:03:04,620 --> 00:03:06,620 ito kamukha ako sa pag-print ng isang bagong linya ng character, 67 00:03:06,620 --> 00:03:09,560 at ang mga ito ay parehong mga naka-indent sa gayon Ako sa loob ng loop malinaw. 68 00:03:09,560 --> 00:03:13,610 Kaya dapat hindi ko ginagawa bituin, ang mga bagong linya, bituin, ang mga bagong linya, bituin, bagong line? 69 00:03:13,610 --> 00:03:14,110 Oo? 70 00:03:14,110 --> 00:03:18,430 71 00:03:18,430 --> 00:03:21,240 >> Oo, hindi tulad ng isang wika tulad ng Python, kung pamilyar ka, 72 00:03:21,240 --> 00:03:23,540 indentation hindi mahalaga sa mga computer. 73 00:03:23,540 --> 00:03:25,280 Mahalaga lamang ito sa tao. 74 00:03:25,280 --> 00:03:29,860 Kaya samantalang dito na imbento ko linya 15 at 16-- na mukhang maganda, 75 00:03:29,860 --> 00:03:31,330 ngunit hindi na mahalaga ang computer. 76 00:03:31,330 --> 00:03:34,640 Ang computer na pinahahalagahan ng tungkol sa aktwal na pagkakaroon ng kulot braces 77 00:03:34,640 --> 00:03:36,310 sa paligid ng mga linya ng code. 78 00:03:36,310 --> 00:03:39,520 >> Kaya na ito ay clear-- tulad ng sa Scratch-- na ang dalawang linya ng code 79 00:03:39,520 --> 00:03:40,450 dapat na pinaandar. 80 00:03:40,450 --> 00:03:44,390 Tulad ng isa sa mga kulay-dilaw na palaisipan scratch piraso at muli at muli muli. 81 00:03:44,390 --> 00:03:50,920 >> Kaya ngayon kung ako muling patakbuhin ito program-- ./buggy-2-- Hm. 82 00:03:50,920 --> 00:03:51,770 Mayroon akong isang error sa ngayon. 83 00:03:51,770 --> 00:03:54,212 Ano nakalimutan kong gawin? 84 00:03:54,212 --> 00:03:55,420 Oo, kaya hindi ako nag-compile ito. 85 00:03:55,420 --> 00:03:56,740 Kaya gumawa mayroong bug-2. 86 00:03:56,740 --> 00:03:59,840 Walang ganitong file dahil ginawa ko hindi talaga compile ang ikalawang bersyon. 87 00:03:59,840 --> 00:04:04,860 Kaya kawili-wiling ngayon undeclared variable-- hindi 2. 88 00:04:04,860 --> 00:04:05,510 Kami ay kasalukuyang 1. 89 00:04:05,510 --> 00:04:11,050 Gawing mayroong bug-1-- ./buggy-1-- at ngayon bawat isa sa kanila ay nasa parehong linya. 90 00:04:11,050 --> 00:04:13,880 >> Ngayon ay mayroong ay isang pagbubukod sa ito dapat na claim ng minahan 91 00:04:13,880 --> 00:04:15,520 na kailangan mo ng mga kulot braces. 92 00:04:15,520 --> 00:04:20,160 Kapag ito ay talagang OK-- kung hindi mo Napansin sa seksyon o textbooks-- 93 00:04:20,160 --> 00:04:22,130 upang alisin ang kulot braces? 94 00:04:22,130 --> 00:04:22,630 Oo? 95 00:04:22,630 --> 00:04:26,290 96 00:04:26,290 --> 00:04:26,870 >> Mismong. 97 00:04:26,870 --> 00:04:28,940 Kapag mayroon lamang isang linya ng code na iyong 98 00:04:28,940 --> 00:04:32,830 nais na maiuugnay sa loop bilang sa aming unang halimbawa. 99 00:04:32,830 --> 00:04:36,380 Ito ay perpektong lehitimong upang alisin ang kulot braces 100 00:04:36,380 --> 00:04:40,310 tulad ng isang uri ng isang kaginhawahan mula sa Compiler sa iyo. 101 00:04:40,310 --> 00:04:40,810 Oo? 102 00:04:40,810 --> 00:04:43,347 103 00:04:43,347 --> 00:04:43,930 Magandang katanungan. 104 00:04:43,930 --> 00:04:45,500 Gusto ito ituturing na isang error style? 105 00:04:45,500 --> 00:04:49,340 Gusto naming promote-- bilang sa CS50 gabay ng estilo, ang URL kung saan 106 00:04:49,340 --> 00:04:51,926 ay nasa pset1-- na palaging gamitin ang kulot braces. 107 00:04:51,926 --> 00:04:53,550 Tiyak kung bago ka sa programming iyo. 108 00:04:53,550 --> 00:04:56,800 Ang katotohanan ay hindi kami pagpunta sa pagbawalan ka ng 109 00:04:56,800 --> 00:04:58,680 mula sa paggawa ng mga kaginhawahan. 110 00:04:58,680 --> 00:05:00,846 Ngunit kung lamang nakakakuha ka ng sa ugoy ng mga bagay, 111 00:05:00,846 --> 00:05:04,020 walang pasubali lamang laging gamitin ang kulot braces hanggang sa makuha mo ang Hang nito. 112 00:05:04,020 --> 00:05:04,640 Magandang katanungan. 113 00:05:04,640 --> 00:05:05,320 >> Lahat ng karapatan. 114 00:05:05,320 --> 00:05:07,660 Kaya na pagkatapos ay isang bug. 115 00:05:07,660 --> 00:05:09,190 Hindi bababa sa medyo simple ng isang bagay. 116 00:05:09,190 --> 00:05:11,260 At gayon pa man ay maaaring sa tingin mo ito Medyo rudimentary, tama? 117 00:05:11,260 --> 00:05:13,635 Ito ay uri ng mga unang linggo sa pagtingin sa wika 118 00:05:13,635 --> 00:05:14,890 tulad ng, tingnan ang iyong mga bug sa ganyang bagay. 119 00:05:14,890 --> 00:05:17,250 Subalit ang katotohanan ng mga ito ay talaga kinatawan 120 00:05:17,250 --> 00:05:20,310 ng ilang mga magandang nakakatakot problema na maaaring lumabas dahil sa tunay na mundo. 121 00:05:20,310 --> 00:05:23,530 >> Kaya maaaring isipin ang ilan sa inyo kung susundin mo ang tech na balita, 122 00:05:23,530 --> 00:05:25,740 o maaari ring maging nahuli hangin ng ito noong Pebrero 123 00:05:25,740 --> 00:05:29,434 ng nakaraang taon na nagkaroon ng Apple ginawa ng isang bit ng isang pagkakamali sa parehong iOS, 124 00:05:29,434 --> 00:05:31,350 sa operating system sa ang kanilang mga telepono, at din 125 00:05:31,350 --> 00:05:34,220 Mac OS, ang operating system sa kanilang mga desktop at laptop. 126 00:05:34,220 --> 00:05:36,480 At nakita mo gaya ng mga ulo ng bilang na ito. 127 00:05:36,480 --> 00:05:41,120 At pagkatapos noon, Apple ipinangako upang ayusin ang bug na ito, 128 00:05:41,120 --> 00:05:45,950 at masyadong mabilis ginawang ayusin ito sa iOS, ngunit pagkatapos ay sa huli naayos na ito sa Mac OS 129 00:05:45,950 --> 00:05:46,810 pati na rin. 130 00:05:46,810 --> 00:05:50,370 >> Ngayon wala sa mga ito ng mga ulo ng mag-isa talaga magbunyag kung ano ang kalakip na problema ay, 131 00:05:50,370 --> 00:05:55,640 ngunit ang bug ay sa huli ay nabawasan hanggang isang bug sa SSL, secure socket layer. 132 00:05:55,640 --> 00:05:57,390 At mahaba kuwento maikli, ito ang software 133 00:05:57,390 --> 00:06:01,030 na ang aming mga browser at iba pang mga software na ginamit upang gawin kung ano? 134 00:06:01,030 --> 00:06:04,090 135 00:06:04,090 --> 00:06:06,860 >> Kung sinabi ko na SSL ay kasangkot, sa tuwing nag 136 00:06:06,860 --> 00:06:13,920 bisitahin ang isang URL na nagsisimula sa HTTPS, ano pagkatapos ay maaari SSL may kaugnayan sa? 137 00:06:13,920 --> 00:06:14,580 Pag-encrypt. 138 00:06:14,580 --> 00:06:16,470 Kaya makikita namin makipag-usap tungkol sa ito sa darating na mga araw. 139 00:06:16,470 --> 00:06:18,750 Pag-encrypt, ang sining ng scrambling impormasyon. 140 00:06:18,750 --> 00:06:22,200 >> Ngunit mahaba kuwento maikli, Apple ang ilang sandali ang nakalipas ay nagkamali 141 00:06:22,200 --> 00:06:25,970 sa kanilang pagpapatupad ng SSL, ang software na ganap na ipinapatupad ng 142 00:06:25,970 --> 00:06:30,120 URL tulad ng HTTPS o max koneksyon doon masyadong. 143 00:06:30,120 --> 00:06:32,850 Ang resulta ng kung saan ay ang iyong koneksyon ng dati potensyal na 144 00:06:32,850 --> 00:06:33,920 ay naharang. 145 00:06:33,920 --> 00:06:37,130 At ang iyong mga koneksyon ay hindi palaging naka-encrypt 146 00:06:37,130 --> 00:06:40,350 kung nagkaroon ka ng ilang masamang tao sa pagitan ng ikaw at ang patutunguhang website na nag- 147 00:06:40,350 --> 00:06:42,170 Alam kung paano samantalahin ito. 148 00:06:42,170 --> 00:06:45,090 >> Ngayon Apple sa huli na nai-post isang ayusin para sa wakas, 149 00:06:45,090 --> 00:06:46,920 at ang paglalarawan ng kanilang mga pag-aayos ay na ito. 150 00:06:46,920 --> 00:06:49,878 Nabigo ang pag-secure na transportasyon upang patunayan ang pagiging tunay ng ang koneksyon. 151 00:06:49,878 --> 00:06:52,920 Ang usapin ay natugunan sa pamamagitan ng pagpapanumbalik ng mga nawawalang mga hakbang sa pagpapatunay. 152 00:06:52,920 --> 00:06:57,250 >> Kaya ito ay isang napaka-kamay kulot na paliwanag para sinasabi lang na screwed namin up. 153 00:06:57,250 --> 00:07:00,920 May literal isa linya ng code na noon ay mayroong bug 154 00:07:00,920 --> 00:07:05,130 sa kanilang pagpapatupad ng SSL, at kung kang pumunta sa online at maghanap ng mga ito 155 00:07:05,130 --> 00:07:07,210 Maaari mong aktwal na mahanap ang orihinal na source code. 156 00:07:07,210 --> 00:07:11,960 Halimbawa, ito ay isang screen shot ng lamang sa isang bahagi ng isang medyo malaking file, 157 00:07:11,960 --> 00:07:15,965 ngunit ito ay isang function na tinatawag na tila SSL-verify ng pag-sign server exchange key. 158 00:07:15,965 --> 00:07:17,840 At ito ay tumatagal ng isang bungkos ng argumento at input. 159 00:07:17,840 --> 00:07:20,298 At hindi namin pagpunta sa tumutok labis sa minutia doon, 160 00:07:20,298 --> 00:07:24,390 ngunit kung tutukan mo ang code sa loob ng ng pinakamataas na function-- sabihin 161 00:07:24,390 --> 00:07:25,590 mag-zoom in sa na iyon. 162 00:07:25,590 --> 00:07:28,140 Maaari mo na pinaghihinalaan kung ano ang error maaari 163 00:07:28,140 --> 00:07:31,230 maging kahit na wala kang mga ideya sa huli ano ang iyong hinahanap sa. 164 00:07:31,230 --> 00:07:35,924 Mayroong uri ng isang pagkakaiba dito, na kung saan ay kung ano? 165 00:07:35,924 --> 00:07:38,940 >> Oo, ako ay hindi talaga gusto ang hitsura ng dalawang goto nabigo. 166 00:07:38,940 --> 00:07:42,060 Tapat, hindi ko talaga alam kung ano ang goto mabigo paraan, ngunit nagkakaroon ng dalawa sa kanila 167 00:07:42,060 --> 00:07:42,810 pabalik sa likod. 168 00:07:42,810 --> 00:07:45,290 Iyon lang ang uri ng rubs sa akin intellectually sa maling paraan, 169 00:07:45,290 --> 00:07:48,910 at sa katunayan kung mag-zoom in kami sa lamang ang mga linya, ito ay C. 170 00:07:48,910 --> 00:07:52,220 >> Kaya ng maraming code ng Apple ay mismo nakasulat sa C, 171 00:07:52,220 --> 00:07:55,780 at ito tila ay talagang equivalent-- 172 00:07:55,780 --> 00:07:59,060 huwag na medyo indentation bersyon, ngunit kung makilala ka sa katotohanang 173 00:07:59,060 --> 00:08:02,560 na walang kulot braces, kung ano Talaga ay nagsulat Apple ay code na mukhang 174 00:08:02,560 --> 00:08:03,540 tulad nito. 175 00:08:03,540 --> 00:08:07,080 Kaya nagbigay ako naka-zoom out at ko lang naayos na ang indentation sa kamalayan 176 00:08:07,080 --> 00:08:10,690 na kung walang kulot braces, na mabigo pangalawang goto na nasa dilaw 177 00:08:10,690 --> 00:08:12,500 Pupunta upang maisagawa kahit na ano. 178 00:08:12,500 --> 00:08:15,540 Hindi ito nauugnay sa ang kondisyon kung nasa itaas nito. 179 00:08:15,540 --> 00:08:19,590 >> Kaya kahit muli, kung wala ka pa masyadong maunawaan kung ano ang magagawa posibleng 180 00:08:19,590 --> 00:08:23,230 maging paggawa, alam na ang bawat isa sa mga conditions-- bawat isa sa mga linya 181 00:08:23,230 --> 00:08:26,180 ay isang napaka-mahalagang hakbang nasa proseso ng pagsusuri 182 00:08:26,180 --> 00:08:28,350 kung ang iyong data ay sa katunayan naka-encrypt. 183 00:08:28,350 --> 00:08:31,710 Kaya laktaw isa sa mga hakbang na ito, hindi ang pinakamahusay na ideya. 184 00:08:31,710 --> 00:08:34,840 >> Ngunit dahil mayroon kaming ito pangalawang goto mabigo sa kulay dilaw, 185 00:08:34,840 --> 00:08:36,840 at dahil sa sandaling namin uri ng aesthetically 186 00:08:36,840 --> 00:08:40,480 ilipat ito sa kaliwa kung saan ito lohikal ay sa sandaling ito, kung ano ang 187 00:08:40,480 --> 00:08:43,230 ang ibig sabihin nito para sa line ng code sa ibaba na pangalawang goto 188 00:08:43,230 --> 00:08:46,480 mabigo nais iyong palagay? 189 00:08:46,480 --> 00:08:48,860 Palagi itong nangyayari na lalaktawan. 190 00:08:48,860 --> 00:08:52,100 Kaya gotos ay karaniwang frowned sa para sa mga kadahilanang hindi namin pumunta sa talagang, 191 00:08:52,100 --> 00:08:54,940 at sa katunayan sa CS50 namin ay may posibilidad hindi turuan ang pahayag na ito goto, 192 00:08:54,940 --> 00:08:58,130 ngunit maaari mong isipin ang goto mabigo bilang kahulugan go jump 193 00:08:58,130 --> 00:08:59,600 sa ilang iba pang bahagi ng code. 194 00:08:59,600 --> 00:09:03,120 >> Sa ibang salita tumalon sa ibabaw ito huling linya nang sama-sama, 195 00:09:03,120 --> 00:09:07,420 at sa gayon ang mga resulta ng hangal simpleng pagkakamali na lang 196 00:09:07,420 --> 00:09:10,330 resulta ng marahil isang tao pagkopya at pag-paste ng masyadong isa 197 00:09:10,330 --> 00:09:14,150 maraming beses ay na ang buong seguridad ng iOS at Mac OS 198 00:09:14,150 --> 00:09:18,240 ay mahina laban sa interception sa pamamagitan ng masamang guys para sa medyo ilang oras. 199 00:09:18,240 --> 00:09:19,940 Hanggang sa Apple sa wakas ay naayos na ito. 200 00:09:19,940 --> 00:09:23,100 >> Ngayon kung ilan sa inyo ay talagang tumatakbo ang lumang bersyon ng iOS o Mac OS, 201 00:09:23,100 --> 00:09:27,250 maaari kang pumunta sa gotofail.com na ay isang website na-set up ng isang tao 202 00:09:27,250 --> 00:09:29,190 upang lubos na matukoy programming 203 00:09:29,190 --> 00:09:30,980 kung ang iyong computer ay mahina pa rin. 204 00:09:30,980 --> 00:09:33,600 At tapat, kung ito ay, marahil ito ay isang magandang ideya 205 00:09:33,600 --> 00:09:36,870 upang i-update ang iyong telepono o ang iyong Mac sa puntong ito. 206 00:09:36,870 --> 00:09:40,120 Ngunit doon, Tipan lamang sa makatarungan paano isang pagpapahalaga ng mga mas mababang antas 207 00:09:40,120 --> 00:09:42,400 mga detalye at walang kinikilingan Maaari ba talagang simple ideya 208 00:09:42,400 --> 00:09:44,590 isalin sa mga pagpapasya at mga problema na 209 00:09:44,590 --> 00:09:47,320 affected-- sa case-- milyun-milyong tao. 210 00:09:47,320 --> 00:09:49,107 >> Ngayon isang salita sa pangangasiwa. 211 00:09:49,107 --> 00:09:50,690 Seksyon ay magsisimula na ito darating na Linggo. 212 00:09:50,690 --> 00:09:53,360 Makakatanggap ka ng isang email sa pamamagitan ng katapusan ng linggo tungkol sa seksyon, kung saang punto 213 00:09:53,360 --> 00:09:55,290 ang proseso ng resectioning Magsisimula kung hindi mo 214 00:09:55,290 --> 00:09:56,998 natanto mayroon kang ngayon ilang bagong mga salungatan. 215 00:09:56,998 --> 00:10:00,180 Kaya nangyari ito taon-taon, at kami ay tumanggap sa araw na darating. 216 00:10:00,180 --> 00:10:02,430 >> Opisina gawin hours-- panatilihin ang isang mata sa iskedyul dito. 217 00:10:02,430 --> 00:10:05,100 Binabago Medyo sa linggong ito, lalo na ang oras ng simula 218 00:10:05,100 --> 00:10:08,180 at ang lokasyon, kaya huwag kumonsulta na bago heading sa oras ng opisina 219 00:10:08,180 --> 00:10:09,520 anuman sa mga susunod na apat na gabi. 220 00:10:09,520 --> 00:10:12,680 At ngayon ang isang salita sa pagtasa, lalo na bilang sumisid ka sa problema 221 00:10:12,680 --> 00:10:14,350 Nagtatakda ng isa at higit pa. 222 00:10:14,350 --> 00:10:17,070 >> Kaya ayon sa mga pagtutukoy, ang mga ito ay sa pangkalahatan 223 00:10:17,070 --> 00:10:20,360 ang axes kasama na sinusuri namin ang iyong trabaho. 224 00:10:20,360 --> 00:10:23,170 Saklaw ay tumutukoy sa kung ano ang lawak iyong code ipinapatupad ng 225 00:10:23,170 --> 00:10:25,690 Kinakailangan ang mga tampok sa pamamagitan ng aming mga pagtutukoy. 226 00:10:25,690 --> 00:10:28,290 Sa ibang salita, kung gaano kalaki isang piraso hanay ng ginawa mo kumagat off. 227 00:10:28,290 --> 00:10:30,440 Gawin mo ba ang isang third ng mga ito, isang kalahati ng ito, ang 100% ng ito. 228 00:10:30,440 --> 00:10:33,000 Kahit na ito ay hindi tama, kung magkano ang mong tangkaing? 229 00:10:33,000 --> 00:10:35,290 Kaya na kumukuha ang mga antas ng pagsusumikap at ang halaga 230 00:10:35,290 --> 00:10:38,260 na kung saan bit off ang mga problema sa hanay ng problema. 231 00:10:38,260 --> 00:10:40,690 >> Correctness-- ang isang ito, upang kung ano ang lawak, ay ang iyong code 232 00:10:40,690 --> 00:10:43,150 pare-pareho sa aming mga mga pagtutukoy at libreng ng mga bug. 233 00:10:43,150 --> 00:10:44,770 Kaya ito gumagana nang tama? 234 00:10:44,770 --> 00:10:48,700 Kung bigyan namin ito ng ilang mga input, ginagawa nito bigyan kami ng mga output na namin inaasahan? 235 00:10:48,700 --> 00:10:52,570 Design-- ngayon ito ang unang ng lalo na ang mga mapaghambing, 236 00:10:52,570 --> 00:10:56,180 o sana ang mga na nangangailangan ng paghatol ng tao. 237 00:10:56,180 --> 00:10:59,690 At sa katunayan, ito ang dahilan kung bakit mayroon kaming mga tauhan ng napakaraming mga Fellows pagtuturo at kurso 238 00:10:59,690 --> 00:11:00,350 katulong. 239 00:11:00,350 --> 00:11:03,480 Upang kung ano ang lawak ay ang iyong code nakasulat na rin? 240 00:11:03,480 --> 00:11:05,810 >> At muli ito ay isang napaka mapaghambing pagtatasa 241 00:11:05,810 --> 00:11:09,100 na gagana sa iyo sa Bi-directionally sa linggo darating. 242 00:11:09,100 --> 00:11:12,060 Kaya na kapag kumuha ka ng hindi lamang numeric score, kundi pati na rin 243 00:11:12,060 --> 00:11:16,682 isang nakasulat na mga marka, o nag-type ng feedback, o nakasulat na feedback sa mga salitang Ingles. 244 00:11:16,682 --> 00:11:19,640 Iyon ay kung ano ang gagamitin namin upang humimok mo patungo sa aktwal na pagsusulat ng mas mahusay na code. 245 00:11:19,640 --> 00:11:23,320 At sa lecture at seksyon, susubukan naming upang ituro out-- nang madalas hangga't can-- namin 246 00:11:23,320 --> 00:11:26,420 kung bakit ang isang programa hindi lamang tama at sa pagtakbo mabuti, 247 00:11:26,420 --> 00:11:28,200 ngunit din mahusay na dinisenyo. 248 00:11:28,200 --> 00:11:31,850 Ang pinaka-mahusay na maaaring ito ay, o kahit na ang pinaka magandang maaari itong maging. 249 00:11:31,850 --> 00:11:33,100 >> Na hahantong sa amin upang estilo. 250 00:11:33,100 --> 00:11:36,876 Estilo sa huli ay isang Aesthetic paghatol. 251 00:11:36,876 --> 00:11:38,750 Ang ibig pinili mo magandang mga pangalan para sa iyong mga variable? 252 00:11:38,750 --> 00:11:40,330 Nakarating na naka-indent mo ang iyong code nang maayos? 253 00:11:40,330 --> 00:11:44,010 Ito ay tumingin mabuti, at samakatuwid, ay madali para sa isa pang tao 254 00:11:44,010 --> 00:11:46,550 na basahin ang iyong mga kani-kanyang ng kawastuhan nito. 255 00:11:46,550 --> 00:11:50,300 >> Ngayon pangkalahatan ay alinsunod sa mga syllabus, puntos namin mga bagay na ito sa sukat na limang puntos. 256 00:11:50,300 --> 00:11:53,640 At ipaalam sa akin martilyo ng tahanan ng punto na ang isang tatlong ay talagang mahusay. 257 00:11:53,640 --> 00:11:55,550 Masyadong mabilis gawin kakailanganin ng mga tao simulan ang paggawa aritmetika. 258 00:11:55,550 --> 00:11:58,133 Kapag kumuha sila ng isang tatlong out sa limang sa kawastuhan para sa ilang pset 259 00:11:58,133 --> 00:12:02,040 at sa tingin nila damn, ako pagpunta sa 60% na kung saan ay mahalagang isang D o isang E. 260 00:12:02,040 --> 00:12:03,980 >> Iyon ay hindi ang paraan ng aming Sa tingin ng mga numerong ito. 261 00:12:03,980 --> 00:12:06,880 Isang tatlong ay talagang mahusay, at kung ano ang namin Sa pangkalahatan ay inaasahan sa umpisa 262 00:12:06,880 --> 00:12:09,820 sa panahon ng panunungkulan ay kung nakakakuha ka ng ng grupo ng mga three's-- siguro ng ilang 263 00:12:09,820 --> 00:12:12,540 ng fairs, isang pares ng mga fours-- o ng ilang twos, isang pares ng mga fours-- 264 00:12:12,540 --> 00:12:13,748 na isang magandang lugar upang magsimula. 265 00:12:13,748 --> 00:12:16,320 At kaya hangga't makita kami ng isang paitaas trajectory sa paglipas ng panahon, 266 00:12:16,320 --> 00:12:18,540 ikaw ay nasa isang partikular na magandang lugar. 267 00:12:18,540 --> 00:12:20,752 >> Ang formula na ginagamit namin upang timbang ng mga bagay ay mahalagang 268 00:12:20,752 --> 00:12:22,710 ito alinsunod sa mga syllabus, na nangangahulugan lamang na namin 269 00:12:22,710 --> 00:12:24,750 makapagbigay ng higit pang timbang sa kawastuhan. 270 00:12:24,750 --> 00:12:27,930 Dahil masyado nang madalas kawastuhan na tumatagal ang pinaka-oras. 271 00:12:27,930 --> 00:12:28,760 Pagkatiwalaan sa akin ngayon. 272 00:12:28,760 --> 00:12:31,190 Ikaw find-- ng hindi bababa sa sa isa pset-- na 273 00:12:31,190 --> 00:12:36,790 gumastos ng 90% ng iyong oras nagtatrabaho sa 10% ng mga problema. 274 00:12:36,790 --> 00:12:39,320 >> At ang lahat ng uri ng mga gumagana maliban sa isa o dalawang mga bug, 275 00:12:39,320 --> 00:12:41,570 at ang mga ito ay ang mga bug na panatilihin kang up late sa gabi. 276 00:12:41,570 --> 00:12:43,380 Iyon ang mga bago na uri ng makatakas sa iyo. 277 00:12:43,380 --> 00:12:45,560 Ngunit pagkatapos sleeping dito, o nag-aaral sa oras ng opisina 278 00:12:45,560 --> 00:12:48,844 o pagtatanong sa online, ay kapag nakarating ka na sa na 100% ng layunin, 279 00:12:48,844 --> 00:12:50,760 at iyon ang dahilan kung bakit namin timbang kawastuhan ng pinaka. 280 00:12:50,760 --> 00:12:54,102 Idisenyo ang isang maliit na mas kaunti, at Estilo ng kaunti mas mababa na. 281 00:12:54,102 --> 00:12:56,060 Ngunit isa estilo mind-- ay marahil ang pinakamadaling 282 00:12:56,060 --> 00:12:58,890 ng mga ito upang kumagat off bilang bawat ang gabay sa estilo. 283 00:12:58,890 --> 00:13:01,580 >> At ngayon, isang mas seryosong tandaan sa akademikong katapatan. 284 00:13:01,580 --> 00:13:05,000 CS50 ay may unfortunate pagkakaiba ng pagiging ang pinakamalaking tagagawa ng Lupon ng Ad 285 00:13:05,000 --> 00:13:07,330 kaso halos bawat taon sa kasaysayan. 286 00:13:07,330 --> 00:13:11,012 Hindi ito dahil cheat mga mag-aaral sa CS50 anumang higit pang mga kaya kaysa sa iba pang klase, 287 00:13:11,012 --> 00:13:13,720 ngunit dahil sa pamamagitan ng likas na katangian ng trabaho, ang katotohanan na ito ay electronic, 288 00:13:13,720 --> 00:13:16,636 ang katotohanan na masaya naming para dito, at ang katotohanan ay namin siyentipiko computer, 289 00:13:16,636 --> 00:13:20,570 Maaari ko bang sabihin hindi namin sa kasamaang-palad napakabuti sa pag-detect ito. 290 00:13:20,570 --> 00:13:22,710 >> Kaya kung ano ang ibig sabihin nito sa tunay na mga termino? 291 00:13:22,710 --> 00:13:24,820 Kaya ito, alinsunod sa mga syllabus, pilosopiya ng kurso ng 292 00:13:24,820 --> 00:13:28,090 talaga ang pigsa down upang maging makatuwirang. 293 00:13:28,090 --> 00:13:31,684 May linyang ito sa pagitan ng paggawa ng isa sa trabaho sa iyong sariling 294 00:13:31,684 --> 00:13:34,100 at ang pagkakaroon ng isang maliit na bit ng makatwirang tulong mula sa isang kaibigan, 295 00:13:34,100 --> 00:13:38,020 at tahasan paggawa na trabaho para sa iyong kaibigan, o pagpapadala sa kanya ang iyong code 296 00:13:38,020 --> 00:13:41,080 kaya na siya ay maaari lamang kumuha o humiram ito kanan. 297 00:13:41,080 --> 00:13:43,580 At na lumalabis na namin iguguhit na ang klase. 298 00:13:43,580 --> 00:13:45,410 >> Tingnan, ang syllabus sa huli para sa mga linya 299 00:13:45,410 --> 00:13:48,209 na gumuhit kami bilang makatuwirang at hindi makatwiran na pag-uugali, 300 00:13:48,209 --> 00:13:50,000 pero tunay na ginagawa nito pigsa down sa kakanyahan 301 00:13:50,000 --> 00:13:53,980 ng iyong trabaho nangangailangang maging ang iyong sariling sa dulo. 302 00:13:53,980 --> 00:13:56,230 Ngayon na may na sinabi, mayroong isang heuristic. 303 00:13:56,230 --> 00:13:58,980 Dahil bilang maaari mong imagine-- mula sa oras ng opisina at ang visual 304 00:13:58,980 --> 00:14:01,060 at ang mga video na hindi namin ipinapakita kaya far-- CS50 305 00:14:01,060 --> 00:14:04,530 ay sa katunayan nilalayong maging collaborative at bilang kooperatiba at bilang panlipunan 306 00:14:04,530 --> 00:14:06,450 hangga't maaari. 307 00:14:06,450 --> 00:14:08,570 Tulad ng collaborative na bilang ito ay mahigpit. 308 00:14:08,570 --> 00:14:11,314 >> Ngunit may sinabi na ito, ang heuristic, bilang makikita mo sa syllabus, 309 00:14:11,314 --> 00:14:12,980 ay na kapag nagkakaroon ka ng ilang mga problema. 310 00:14:12,980 --> 00:14:16,470 Mayroon kang ilang mga bug sa iyong code na iyong Hindi maaaring malutas, ito ay makatwirang para sa iyo 311 00:14:16,470 --> 00:14:18,039 upang ipakita ang iyong code sa ibang tao. 312 00:14:18,039 --> 00:14:21,080 Isang kaibigan kahit sa klase, sa isang kaibigan na nakaupo sa tabi ng sa iyo sa oras ng opisina, 313 00:14:21,080 --> 00:14:22,680 o isang miyembro ng kawani. 314 00:14:22,680 --> 00:14:25,810 Ngunit hindi sila maaaring ipakita ang kanilang mga code sa iyo. 315 00:14:25,810 --> 00:14:27,710 >> Sa madaling salita, isang sagutin sa iyong question-- 316 00:14:27,710 --> 00:14:29,940 Kailangan ko help-- ay hindi oh, narito ang aking code. 317 00:14:29,940 --> 00:14:32,440 Tingnan ito at deduce mula dito kung ano ang gagawin sa iyo. 318 00:14:32,440 --> 00:14:34,580 Ngayon, siyempre, mayroong isang paraan upang malinaw na laro 319 00:14:34,580 --> 00:14:37,760 sa system na ito kung saan kukunin ko na maipakita sa iyo ang aking code bago ang pagkakaroon ng isang katanungan. 320 00:14:37,760 --> 00:14:40,150 Ipakita ninyo sa akin ang aking iyong code bago pagkakaroon ng isang katanungan. 321 00:14:40,150 --> 00:14:45,870 Ngunit makita muli ang syllabus para sa mas pinong mga detalye ng kung saan ang linyang ito ay. 322 00:14:45,870 --> 00:14:50,606 >> Lang sa ngayon pintahan ang larawan at ibahagi ang bilang halatang hangga't maaari 323 00:14:50,606 --> 00:14:53,480 kung saan hindi namin sa sa mga nakaraang taon, ito ay ang bilang ng mga kaso ng Lupon ng Ad 324 00:14:53,480 --> 00:14:56,260 na CS50 ay nagkaroon sa ibabaw nakalipas na pitong taon. 325 00:14:56,260 --> 00:14:58,717 Sa 14 na mga kaso na ito pinakabagong pagkahulog. 326 00:14:58,717 --> 00:15:01,300 Sa mga tuntunin ng mga mag-aaral na kasangkot, ito ay 20 ilang mga kakaibang mga mag-aaral 327 00:15:01,300 --> 00:15:02,490 ito nakalipas na tag-lagas. 328 00:15:02,490 --> 00:15:05,670 Nagkaroon ng peak ng 33 mag-aaral ng ilang taon na ang nakakaraan. 329 00:15:05,670 --> 00:15:08,830 Marami sa kanino ay sa kasamaang-palad hindi na dito sa campus. 330 00:15:08,830 --> 00:15:13,100 >> Mga mag-aaral na kasangkot bilang isang porsyento ng klase ay kasaysayan ranged mula 0% 331 00:15:13,100 --> 00:15:17,300 sa 5.3%, na kung saan ay lamang na sabihin ito ay taun-taon isang hamon. 332 00:15:17,300 --> 00:15:20,390 At patungo sa layuning iyon, kung ano gusto naming gawin ay ihatid isa 333 00:15:20,390 --> 00:15:24,310 na dd-- namin FYI-- ihambing lamang sa isang patas na pagturing sa mga mag-aaral na 334 00:15:24,310 --> 00:15:26,520 ang sumusunod na mga linya nang naaayon. 335 00:15:26,520 --> 00:15:29,620 Ginagawa namin ihambing ang lahat ng kasalukuyang mga pagsusumite laban sa lahat ng nakaraang mga misyon 336 00:15:29,620 --> 00:15:30,840 mula sa nakalipas na ang maraming taon. 337 00:15:30,840 --> 00:15:33,620 >> Alam namin na masyado kung paano Google sa buong at maghanap ng mga repositoryo ng code 338 00:15:33,620 --> 00:15:36,360 sa online, mga forum ng talakayan online, ang mga site ng online na trabaho. 339 00:15:36,360 --> 00:15:41,580 Kung maaari itong mahanap ang isang mag-aaral, maaari naming tiyak hanapin ito hangga't regretfully namin gawin. 340 00:15:41,580 --> 00:15:45,330 Kaya ano ang makikita mo sa syllabus bagaman ito ay ikinalulungkot sugnay. 341 00:15:45,330 --> 00:15:47,500 Maaari ko tiyak Pinapahalagahan, at namin ang lahat ay may 342 00:15:47,500 --> 00:15:50,870 staff pagkakaroon ng tapos ng kurso tulad ng na ito, o ang isang ito ang sarili nito sa paglipas ng panahon, 343 00:15:50,870 --> 00:15:53,997 ay tiyak na malaman kung ano ito ay tulad ng kapag nakakakuha ng buhay sa mga paraan kapag mayroon kang 344 00:15:53,997 --> 00:15:56,080 ilang late night deadline-- hindi lamang sa isang klase na ito, 345 00:15:56,080 --> 00:15:58,660 ngunit another-- kapag ikaw ay ganap na naubos, stressed out, 346 00:15:58,660 --> 00:16:00,659 magkaroon ng isang inordinate numero ng iba pang mga bagay na maaaring gawin. 347 00:16:00,659 --> 00:16:03,660 Ikaw ay gumawa ng sa isang punto sa buhay ay tiyak na isang masamang, marahil late 348 00:16:03,660 --> 00:16:04,620 desisyon gabi. 349 00:16:04,620 --> 00:16:06,520 >> Kaya bawat ang syllabus, may sugnay na ito, 350 00:16:06,520 --> 00:16:10,629 tulad na kung loob ng 72 oras ng paggawa ilang hindi magandang desisyon, pag-aari mo hanggang sa ito 351 00:16:10,629 --> 00:16:12,670 at makipag-ugnay sa akin at isa sa ulo ang kurso ni 352 00:16:12,670 --> 00:16:14,300 at magkakaroon kami ng isang pag-uusap. 353 00:16:14,300 --> 00:16:16,220 Susubukan naming panghahawakan ang mga bagay panloob sa pag-asa 354 00:16:16,220 --> 00:16:18,770 nito na magiging higit pa sa isang pagtuturo sandali o aralin buhay, 355 00:16:18,770 --> 00:16:22,120 at hindi isang bagay na may lalo na marahas ramifications 356 00:16:22,120 --> 00:16:24,570 bilang maaari mong makita sa mga chart dito. 357 00:16:24,570 --> 00:16:26,540 >> Kaya na ang isang napaka-seryoso tono. 358 00:16:26,540 --> 00:16:29,960 Ipaalam sa amin i-pause para sa lamang ng ilang segundo upang basagin ang pagkabahala. 359 00:16:29,960 --> 00:16:34,442 >> [Musika nagpe-play] 360 00:16:34,442 --> 00:17:17,768 361 00:17:17,768 --> 00:17:20,250 >> David J. MALAN: Lahat ng karapatan, kaya kung paano ay na para sa isang segue? 362 00:17:20,250 --> 00:17:22,059 Upang pangunahing paksa ngayong araw. 363 00:17:22,059 --> 00:17:23,859 Ang unang ng kung saan ay abstraction. 364 00:17:23,859 --> 00:17:26,900 Ang isa pang kung saan ay magiging ang representasyon ng data, na tapat 365 00:17:26,900 --> 00:17:31,640 ay isang talagang dry paraan ng pagsabi kung paano namin pumunta tungkol sa paglutas ng mga problema at pag-iisip 366 00:17:31,640 --> 00:17:33,250 tungkol sa paglutas ng mga problema? 367 00:17:33,250 --> 00:17:37,285 Kaya na iyong nakita sa simula, at hindi mo Nakita marahil nasa pset1 sa C 368 00:17:37,285 --> 00:17:39,930 na ikaw ay maaaring hindi lamang gamitin mga pag-andar, tulad ng printf, 369 00:17:39,930 --> 00:17:42,770 na ang ibang mga tao sa taon nakalipas ay sumulat para sa iyo. 370 00:17:42,770 --> 00:17:45,340 Maaari mo ring isulat ang iyong sariling mga pag-andar. 371 00:17:45,340 --> 00:17:48,440 >> At kahit na hindi ka maaaring mayroon tapos na ito sa C, at tapat sa pset1 372 00:17:48,440 --> 00:17:51,866 hindi mo talaga kailangan upang isulat ang iyong sariling pag-andar dahil ang problem-- 373 00:17:51,866 --> 00:17:53,990 habang marahil daunting sa glance-- unang makikita mo ang 374 00:17:53,990 --> 00:17:57,910 Maaari ganap na malutas sa may hindi lahat na maraming mga linya ng code. 375 00:17:57,910 --> 00:18:01,140 Ngunit may sinabi na, sa mga tuntunin ng pagsusulat ng iyong sariling mga pag-andar, 376 00:18:01,140 --> 00:18:03,570 Napag-alaman na ang C ay magbibigay sa sa iyo ng kakayahan na ito. 377 00:18:03,570 --> 00:18:06,940 >> Pupunta ako sa pumunta sa source code ngayong araw, na kung saan ay magagamit na online, 378 00:18:06,940 --> 00:18:10,900 at pupuntahan ko sige at bukas up ng isang programa na tinatawag na pag-andar 0.C, 379 00:18:10,900 --> 00:18:14,620 at sa pag-andar zero Makikita natin ang ilang mga bagay. 380 00:18:14,620 --> 00:18:19,160 Sa unang linya 18 sa pamamagitan ng 23 ang aking pangunahing pag-andar. 381 00:18:19,160 --> 00:18:22,414 At ngayon na kami ay nagsisimula upang basahin code na hindi kami ay sumusulat sa mabilisang, 382 00:18:22,414 --> 00:18:25,080 ngunit sa halip na naisulat ko nang maaga o na sa iyo sa isang problema itakda 383 00:18:25,080 --> 00:18:27,910 na maaaring matanggap ng pagkakaroon napawalang nang maaga. 384 00:18:27,910 --> 00:18:30,040 Ang isang mahusay na paraan upang simulan ang pagbabasa ng code ng ibang tao 385 00:18:30,040 --> 00:18:31,400 ay hanapin ang pangunahing pag-andar. 386 00:18:31,400 --> 00:18:34,420 Alamin kung saan entry na point sa pagpapatakbo ng programa, 387 00:18:34,420 --> 00:18:36,580 at pagkatapos ay sundin ito ng lohikal na mula doon. 388 00:18:36,580 --> 00:18:40,190 >> Kaya tila mga kopya sa programang ito ang iyong pangalan sinundan ng tutuldok. 389 00:18:40,190 --> 00:18:42,490 Pagkatapos ay gamitin namin GetString mula sa CS50 library 390 00:18:42,490 --> 00:18:46,050 upang makakuha ng isang string, o isang salita o parirala mula sa user sa keyboard. 391 00:18:46,050 --> 00:18:48,390 At pagkatapos ay mayroong ito bagay here-- PrintName. 392 00:18:48,390 --> 00:18:51,420 >> Ngayon PrintName ay hindi isang function na ay may C. 393 00:18:51,420 --> 00:18:52,970 Hindi ito sa karaniwang io.h. 394 00:18:52,970 --> 00:18:55,570 Hindi ito sa CS50.h. 395 00:18:55,570 --> 00:18:57,880 Ito ay sa halip sa parehong file. 396 00:18:57,880 --> 00:19:01,000 Pansinin kung mag-scroll ko pababa isang bit-- linya 25 hanggang 27-- 397 00:19:01,000 --> 00:19:05,330 ito lamang ay isang magandang paraan ng pagkomento ang iyong code gamit ang mga bituin at slashes. 398 00:19:05,330 --> 00:19:07,320 Ito ay isang multi-line magkomento, at ito ay isa lamang 399 00:19:07,320 --> 00:19:10,570 aking paglalarawan sa asul ng ano ang ginagawa ito function. 400 00:19:10,570 --> 00:19:14,530 >> Dahil sa linya 28 sa pamamagitan ng 31, Ako ng nakasulat na isang napakabilis simpleng pag-andar 401 00:19:14,530 --> 00:19:16,280 pangalan na kung saan ang ay PrintName. 402 00:19:16,280 --> 00:19:19,560 Ito ay tumatagal ng kung gaano karaming mga argument na gusto mong sabihin? 403 00:19:19,560 --> 00:19:25,120 Kaya isa argument-- dahil mayroong isa na nakalista sa loob ng panaklong argumento. 404 00:19:25,120 --> 00:19:27,000 Ang uri ng na String. 405 00:19:27,000 --> 00:19:30,240 Alin ang sasabihin PrintName ay tulad ng ito itim na kahon 406 00:19:30,240 --> 00:19:32,910 o function na tumatagal bilang input ng string. 407 00:19:32,910 --> 00:19:35,730 >> At ang pangalan ng na String Maginhawang ay magiging Name. 408 00:19:35,730 --> 00:19:37,840 Hindi S, hindi H, ngunit Name. 409 00:19:37,840 --> 00:19:41,090 Kaya kung ano ang ibig PrintName gawin? 410 00:19:41,090 --> 00:19:42,210 Ito ay maganda simple. 411 00:19:42,210 --> 00:19:45,390 Tulad ng isang linya ng code para sa ang printf, ngunit tila ito 412 00:19:45,390 --> 00:19:47,950 mga print out "Kumusta," sa gayon at sa gayon. 413 00:19:47,950 --> 00:19:50,070 Saan ang gayon at sa gayon ay mula sa argumento. 414 00:19:50,070 --> 00:19:52,300 >> Ngayon ito ay hindi isang malaking makabagong ideya dito. 415 00:19:52,300 --> 00:19:56,710 Talagang, kinuha ko ang isang programa na maaari Nai-nakasulat na may isang linya ng code 416 00:19:56,710 --> 00:20:00,190 sa pamamagitan ng paglagay up dito, at nabago ito sa isang bagay 417 00:20:00,190 --> 00:20:04,920 na kinasasangkutan ng ilang mga anim o pitong o kaya linya ng code sa lahat ng mga paraan pababa dito. 418 00:20:04,920 --> 00:20:08,190 >> Ngunit ito ay ang pagsasanay ng isang na kilala bilang abstraction prinsipyo. 419 00:20:08,190 --> 00:20:12,550 Uri ng encapsulating sa loob ng isang bagong function na ay may pangalan, at mas mahusay na 420 00:20:12,550 --> 00:20:14,590 pa na pangalan nang literal Sinasabi kung ano ang ginagawa nito. 421 00:20:14,590 --> 00:20:16,880 Ibig kong sabihin printf-- hindi iyon lalo na mapaglarawang. 422 00:20:16,880 --> 00:20:18,932 Kung gusto kong lumikha ng piraso puzzle, o kung ako 423 00:20:18,932 --> 00:20:21,140 nais na lumikha ng isang function Pini-print na pangalan ng isang tao, 424 00:20:21,140 --> 00:20:23,230 ang kagandahan ng paggawa nito ay ang maaari kong talagang 425 00:20:23,230 --> 00:20:27,170 bigyan ng pangalan ng function na na naglalarawan kung ano ang ginagawa nito. 426 00:20:27,170 --> 00:20:29,844 >> Ngayon ito ay tumatagal sa isang input na Nagkataon ko na tinatawag na pangalan, 427 00:20:29,844 --> 00:20:32,760 ngunit na masyadong ay wonderfully mapaglarawang sa halip ng pagiging isang kaunti pa 428 00:20:32,760 --> 00:20:36,140 generic na tulad S. At walang silbi, para sa ngayon, ang ibig sabihin lamang 429 00:20:36,140 --> 00:20:38,330 na ito function na ay hindi ipasa ako pabalik ng kahit ano. 430 00:20:38,330 --> 00:20:41,127 Hindi ito nais na GetString Literal na mga kamay ako pabalik ng isang string 431 00:20:41,127 --> 00:20:43,960 tulad ng ginawa namin na may mga piraso ng papel kasama ang iyong mga kaklase noong nakaraang linggo, 432 00:20:43,960 --> 00:20:45,990 ngunit sa halip ito lamang ay may side effect. 433 00:20:45,990 --> 00:20:48,080 Ito mga Kopya ng isang bagay sa screen. 434 00:20:48,080 --> 00:20:53,880 >> Kaya sa katapusan ng araw, kung ako huwag gumawa ng mga pag-andar-0, ./function-0, 435 00:20:53,880 --> 00:20:55,450 ipapakita namin makita na ito ay humihingi para sa aking pangalan. 436 00:20:55,450 --> 00:20:58,150 Nagta-type ako David, at ito uri out ang aking pangalan. 437 00:20:58,150 --> 00:21:01,080 Kung ito gagawin ko muli sa Rob, itong ibang mapupuntahan magsabi ng "Kamusta, Rob." 438 00:21:01,080 --> 00:21:04,280 Kaya isang simpleng ideya, ngunit marahil extrapolate mula sa itak 439 00:21:04,280 --> 00:21:06,750 na bilang makakuha ng iyong mga programa ng kaunti pa sa kumplikado, 440 00:21:06,750 --> 00:21:10,290 at nais mong magsulat ng isang chunk ng code at tawag na code-- pahintulutang magpatakbo ng 441 00:21:10,290 --> 00:21:13,270 na code-- sa pamamagitan ng ilang mapaglarawang pangalanan tulad ng PrintName, 442 00:21:13,270 --> 00:21:15,600 C ang kayang bayaran sa amin ng kakayahan na ito. 443 00:21:15,600 --> 00:21:17,660 >> Narito ang isa pang simpleng halimbawa. 444 00:21:17,660 --> 00:21:22,940 Halimbawa, kung buksan ko up ng isang mag-file mula ngayon na tinatawag na return.c, 445 00:21:22,940 --> 00:21:24,270 mapansin kung ano ang nagawa mo na ko dito. 446 00:21:24,270 --> 00:21:26,330 Ang karamihan sa mga ito pangunahing function ay printf. 447 00:21:26,330 --> 00:21:30,360 Ako unang nagkataon initialize ng variable na tinatawag na x sa bilang 2. 448 00:21:30,360 --> 00:21:34,110 Pagkatapos ay i-print ko out "x ngayon % I "ang pagpasa sa ang halaga ng x. 449 00:21:34,110 --> 00:21:35,500 Kaya ako lang ang sinasabi ko kung ano ito ay. 450 00:21:35,500 --> 00:21:37,208 >> Ngayon ako matapang lamang nagke-claim na may printf. 451 00:21:37,208 --> 00:21:42,050 Ako ay cubing na halaga x, at ako paggawa nito sa pamamagitan ng pagtawag ng isang function 452 00:21:42,050 --> 00:21:45,590 tinatawag paglipas kubo sa x bilang argument, 453 00:21:45,590 --> 00:21:49,300 at pagkatapos ay sine-save ang output sa variable mismo, x. 454 00:21:49,300 --> 00:21:51,340 Kaya ako clobbering ang halaga ng x. 455 00:21:51,340 --> 00:21:53,380 Ako override ang halaga ng x sa anumang 456 00:21:53,380 --> 00:21:56,510 ang resulta ng pagtawag ito kubo function ay. 457 00:21:56,510 --> 00:21:59,530 At pagkatapos ay i-print ko lang ang ilang mga malambot na bagay-bagay dito na nagsasabi kung ano ang aking ginawa. 458 00:21:59,530 --> 00:22:01,600 >> Kaya kung ano pagkatapos ay kubo? 459 00:22:01,600 --> 00:22:03,510 Pansinin kung ano ang fundamentally iba't ibang dito. 460 00:22:03,510 --> 00:22:05,540 Ibinigay ko ang pag-andar ng isang pangalan tulad ng dati. 461 00:22:05,540 --> 00:22:08,270 Tinukoy na ako ng isang pangalan para sa isang argumento. 462 00:22:08,270 --> 00:22:11,650 Ito oras na tinatawag n sa halip ng pangalan, ngunit maaari kong tumawag ito anumang nais ko. 463 00:22:11,650 --> 00:22:12,650 Ngunit ito ay naiiba. 464 00:22:12,650 --> 00:22:14,080 Ito bagay sa kaliwa. 465 00:22:14,080 --> 00:22:16,290 Dati ito ay kung ano ang keyword? 466 00:22:16,290 --> 00:22:16,870 Lalaki. 467 00:22:16,870 --> 00:22:18,580 Ngayon ay malinaw naman int. 468 00:22:18,580 --> 00:22:20,630 >> Kaya kung ano ang marahil ang tumagal ang layo? 469 00:22:20,630 --> 00:22:24,090 Sapagkat walang bisa Sumisimbolo uri ng nothingness, at iyon ay ang kaso. 470 00:22:24,090 --> 00:22:25,970 PrintName ibinalik wala. 471 00:22:25,970 --> 00:22:27,942 May ginawang isang bagay na ito, subalit hindi ito ipasa ako pabalik 472 00:22:27,942 --> 00:22:30,650 isang bagay na maaari kong ilagay sa kaliwang bahagi ng isang pantay na pag-sign 473 00:22:30,650 --> 00:22:32,460 tulad ko na nagawa dito sa 22 linya. 474 00:22:32,460 --> 00:22:36,780 >> Kaya kung sinasabi ko sa sa 30 linya, kung ano ang malamang na nagpapahiwatig 475 00:22:36,780 --> 00:22:38,610 tungkol sa kung ano ang ginagawa kubo para sa akin? 476 00:22:38,610 --> 00:22:41,110 Oo? 477 00:22:41,110 --> 00:22:42,310 Ibinabalik nito ang isang integer. 478 00:22:42,310 --> 00:22:44,590 Kaya kamay ito sa akin pabalik, para sa Halimbawa, ang isang piraso ng papel 479 00:22:44,590 --> 00:22:46,580 kung saan ito ay nakasulat ang sagot. 480 00:22:46,580 --> 00:22:50,130 2 cubed, o 3 cubed, o 4 cubed-- kahit anong ko ang pumasa sa, 481 00:22:50,130 --> 00:22:51,540 at kung paano mo ako ipatupad ito? 482 00:22:51,540 --> 00:22:54,810 Well, lamang n beses n beses n ay kung paano maaaring Cube ako ng isang halaga. 483 00:22:54,810 --> 00:22:57,110 Kaya muli, sobrang simple ideya, ngunit demonstrative 484 00:22:57,110 --> 00:23:00,100 ngayon kung paano namin isulat ang mga function na aktwal na nagkaroon sa amin pabalik 485 00:23:00,100 --> 00:23:02,380 mga halaga na maaaring maging ng interes. 486 00:23:02,380 --> 00:23:05,740 >> Tingnan natin ang isang huling halimbawa dito na tinatawag na pag-andar ng isa. 487 00:23:05,740 --> 00:23:08,530 Sa halimbawang ito, magsimula ito upang makakuha ng mas nakakahimok. 488 00:23:08,530 --> 00:23:12,400 Kaya sa pag-andar ng isa, ito program-- abiso sa huli 489 00:23:12,400 --> 00:23:14,920 tawag ng isang function na tinatawag na GetPositiveInt. 490 00:23:14,920 --> 00:23:17,800 GetPositiveInt ay hindi isang pagpapaandar sa CS50 library, 491 00:23:17,800 --> 00:23:20,400 ngunit kami nagpasya kaming gusto ko itong na umiiral. 492 00:23:20,400 --> 00:23:24,550 >> Kaya kung mag-scroll pababa namin sa ibang pagkakataon sa mga file, pansinin kung paano pinuntahan ko tungkol sa pagpapatupad 493 00:23:24,550 --> 00:23:26,560 makakuha ng positibong int, at ako sabihin ito ay mas nakakahimok 494 00:23:26,560 --> 00:23:28,992 dahil ito ay isang disenteng bilang ng mga linya ng code. 495 00:23:28,992 --> 00:23:30,700 Ito ay hindi lamang isang Silly maliit na programa laruan. 496 00:23:30,700 --> 00:23:33,870 Talaga ito ay nakuha ang ilang mga error checking at paggawa ng isang bagay mas kapaki-pakinabang. 497 00:23:33,870 --> 00:23:38,470 >> Kaya kung hindi mo nakita ang walkthrough mga video na namin ang naka-embed sa pset1, 498 00:23:38,470 --> 00:23:42,350 malaman na ito ay isang uri ng loop sa C, katulad sa espiritu 499 00:23:42,350 --> 00:23:44,270 upang ang mga uri ng bagay sa simula ay maaaring gawin. 500 00:23:44,270 --> 00:23:46,320 At gawin ang sinasabi gawin ito. 501 00:23:46,320 --> 00:23:47,500 I-print ito out. 502 00:23:47,500 --> 00:23:51,860 Pagkatapos sige at makakuha ng n-- makakuha ng isang int at mag-store ito sa n, 503 00:23:51,860 --> 00:23:55,760 at panatilihin ang paggawa muli at muli at ito muli hangga't n ay mas mababa sa isa. 504 00:23:55,760 --> 00:23:58,720 >> Kaya n ay magiging mas mababa kaysa sa isa lamang kung ang tao ay hindi cooperating. 505 00:23:58,720 --> 00:24:01,980 Kung siya ay nagta-type sa 0 o -1 o -50, 506 00:24:01,980 --> 00:24:04,790 ito loop ay pagpunta sa panatilihin e-execute nang muli at muli. 507 00:24:04,790 --> 00:24:07,549 At sa huli mapansin, ako bumalik lang ang halaga. 508 00:24:07,549 --> 00:24:09,590 Kaya ngayon ay mayroon kaming isang function na naging maganda 509 00:24:09,590 --> 00:24:14,040 kung CS50 ay ipapatupad sa CS50.h at CS50.c para sa iyo, 510 00:24:14,040 --> 00:24:16,520 ngunit dito kaya namin ngayon ipatupad ang ating mga sarili. 511 00:24:16,520 --> 00:24:19,230 >> Ngunit dalawang mga komento sa ilang mga pangunahing mga detalye. 512 00:24:19,230 --> 00:24:24,390 One-- bakit Ipinahahayag ko int n, Sa tingin mo, sa 29 na linya 513 00:24:24,390 --> 00:24:27,139 sa halip ng paggawa lamang ito dito, na siyang 514 00:24:27,139 --> 00:24:28,930 mas pare-pareho sa kung ano ang ginawa namin noong nakaraang linggo? 515 00:24:28,930 --> 00:24:29,430 Oo? 516 00:24:29,430 --> 00:24:34,485 517 00:24:34,485 --> 00:24:35,110 Ang isang mahusay na pag-iisip. 518 00:24:35,110 --> 00:24:37,080 Kaya kung kami ay upang ilagay ito dito, ito ay waring namin 519 00:24:37,080 --> 00:24:39,110 panatilihin pagdeklara itong muli at muli. 520 00:24:39,110 --> 00:24:42,000 Na in at ng mismo ay hindi problema, bawat se, 521 00:24:42,000 --> 00:24:43,940 dahil kailangan namin lamang ang halaga nang isang beses at pagkatapos ay 522 00:24:43,940 --> 00:24:45,330 kami ay pagpunta pa rin upang makakuha ng isang bago. 523 00:24:45,330 --> 00:24:45,940 Ngunit isang mahusay na pag-iisip. 524 00:24:45,940 --> 00:24:46,440 Oo? 525 00:24:46,440 --> 00:24:52,770 526 00:24:52,770 --> 00:24:53,330 >> Isara. 527 00:24:53,330 --> 00:24:59,030 Kaya dahil na-ipinahayag ko n sa 29 linya sa labas ng loop, 528 00:24:59,030 --> 00:25:01,390 ito ay naa-access sa buong ang buong pag-andar. 529 00:25:01,390 --> 00:25:05,400 Hindi ang iba pang mga pag-andar dahil n pa rin sa loob ng mga kulot 530 00:25:05,400 --> 00:25:06,470 braces dito. 531 00:25:06,470 --> 00:25:07,940 So-- sigurado. 532 00:25:07,940 --> 00:25:12,430 533 00:25:12,430 --> 00:25:12,940 >> Mismong. 534 00:25:12,940 --> 00:25:14,356 Kaya ito ay kahit na higit pa sa punto. 535 00:25:14,356 --> 00:25:18,600 Kung sa halip namin ipinahayag n dito mismo sa 32 na linya, 536 00:25:18,600 --> 00:25:22,340 ito ay may problemang dahil hula kung saan pa ang kailangan ko upang i-access ito? 537 00:25:22,340 --> 00:25:25,620 Sa 34 linya, at ang simpleng panuntunan ay 538 00:25:25,620 --> 00:25:30,060 na maaari ka lamang gumamit ng isang variable sa loob ng pinakabagong mga kulot braces 539 00:25:30,060 --> 00:25:31,420 kung saan ipinahayag mo ito. 540 00:25:31,420 --> 00:25:35,230 >> Sa kasamaang palad, linya 34 ay isang linya pa huli, 541 00:25:35,230 --> 00:25:38,560 dahil sarado na ako ang kulot Brace sa 33 na linya 542 00:25:38,560 --> 00:25:41,220 na tumutugon sa kulot Brace sa 30 linya. 543 00:25:41,220 --> 00:25:44,180 At kaya ito ay isang paraan ng pagsabi na int variable na ito ay scoped, 544 00:25:44,180 --> 00:25:46,970 kaya upang makipag-usap, sa loob lamang ng mga kulot braces. 545 00:25:46,970 --> 00:25:48,910 Ito lamang ay hindi umiiral sa labas ng mga ito. 546 00:25:48,910 --> 00:25:51,580 >> Kaya sa katunayan, kung gagawin ko ito mali, hayaan mo akong i-save ang code 547 00:25:51,580 --> 00:25:53,530 bilang hindi tama ito is-- nakasulat. 548 00:25:53,530 --> 00:25:57,990 Hayaan akong sige at huwag gumawa function na-1, at notice-- error. 549 00:25:57,990 --> 00:26:03,502 Paggamit ng undeclared tagatukoy n sa 35 linya, na dito mismo. 550 00:26:03,502 --> 00:26:05,210 At kung mag-scroll namin up karagdagang, isa pa. 551 00:26:05,210 --> 00:26:08,750 Paggamit ng undeclared tagatukoy n sa 34 linya. 552 00:26:08,750 --> 00:26:11,200 >> Kaya ang Compiler, Clang, ay na makapansin na ito lamang 553 00:26:11,200 --> 00:26:13,720 Hindi umiiral ang kahit na malinaw na ito ay may biswal. 554 00:26:13,720 --> 00:26:16,090 Kaya isang simpleng pag-aayos ay pagdeklara ito doon. 555 00:26:16,090 --> 00:26:18,790 >> Ngayon hayaan mo akong mag-scroll sa sa tuktok ng file. 556 00:26:18,790 --> 00:26:21,080 Ano jumps out sa iyo bilang pagiging isang maliit na iba't ibang 557 00:26:21,080 --> 00:26:23,070 mula sa mga bagay na itinuturing namin ang nakaraang linggo? 558 00:26:23,070 --> 00:26:26,990 Mayroon akong pangalan hindi lamang, huwag lamang Mayroon akong ilang mga matalim Kabilang sa tuktok up, 559 00:26:26,990 --> 00:26:29,340 Mayroon akong isang bagay na ako pagtawag ng prototype. 560 00:26:29,340 --> 00:26:36,100 Ngayon na mukhang awfully katulad ng kung ano Nakita namin lamang ng ilang sandali ang nakalipas sa 27 linya. 561 00:26:36,100 --> 00:26:39,230 >> Kaya sabihin infer mula sa ibang mensahe ng error kung bakit ginawa ko na ito. 562 00:26:39,230 --> 00:26:42,050 Hayaan akong sige at tanggalin ang mga linya doon. 563 00:26:42,050 --> 00:26:44,240 At upang malaman namin wala tungkol sa prototype. 564 00:26:44,240 --> 00:26:45,430 Remake ang file na ito. 565 00:26:45,430 --> 00:26:46,890 Gumawa ng pag-andar ng isa. 566 00:26:46,890 --> 00:26:48,090 At ngayon, damn, apat na mga error. 567 00:26:48,090 --> 00:26:50,220 Ng mag-scroll hanggang sa ang unang isa Hayaang. 568 00:26:50,220 --> 00:26:55,070 >> Implicit deklarasyon ng function ng makakuha ng positibong int ay hindi wasto sa C99. 569 00:26:55,070 --> 00:26:57,780 C99 lamang ay nangangahulugang ang 1999 bersyon ng wika 570 00:26:57,780 --> 00:26:59,710 C, na kung ano talaga ang aming ginagamit. 571 00:26:59,710 --> 00:27:01,050 Kaya kung ano ang ibig sabihin nito? 572 00:27:01,050 --> 00:27:05,250 Well C-- at higit na partikular C compilers-- ay medyo pipi programa. 573 00:27:05,250 --> 00:27:07,420 Sila lamang malaman kung ano na iyong sinabi sa kanila, at iyon ang 574 00:27:07,420 --> 00:27:08,960 talaga thematic mula noong nakaraang linggo. 575 00:27:08,960 --> 00:27:12,910 >> Ang problema ay kung pumunta ako tungkol sa pagpapatupad ng pangalan dito, 576 00:27:12,910 --> 00:27:17,640 at tumawag ako ng isang function na tinatawag na GetPositiveInt dito sa 20 linya, 577 00:27:17,640 --> 00:27:22,520 na function na technically hindi umiiral hanggang nakikita ng Compiler 27 linya. 578 00:27:22,520 --> 00:27:25,450 Sa kasamaang palad, ang Compiler ay paggawa ng mga bagay tuktok, pababa, pakaliwa, pakanan, 579 00:27:25,450 --> 00:27:29,580 kaya dahil hindi ito ay nakakita ng pagpapatupad ng GetPositiveInt, 580 00:27:29,580 --> 00:27:32,400 ngunit nakakakita nito Sinusubukan mo gamitin ito up dito, 581 00:27:32,400 --> 00:27:35,810 lamang ito ng pagpunta sa bail-- sumigaw sa sa iyo ng isang error message-- marahil 582 00:27:35,810 --> 00:27:38,440 cryptic, at hindi talaga makatipon ang file. 583 00:27:38,440 --> 00:27:41,940 >> Kaya isang tinatawag na prototype up dito ay admittedly kalabisan. 584 00:27:41,940 --> 00:27:47,870 Literal, nagpunta ako down na dito at ko makokopya at ilagay ito, at ko bang ilagay ito dito. 585 00:27:47,870 --> 00:27:51,020 Walang silbi ay magiging mas tamang, kaya na aming Literal na kopyahin at i-paste ito oras na ito. 586 00:27:51,020 --> 00:27:52,854 Literal na ako kopyahin at ilagay ito. 587 00:27:52,854 --> 00:27:54,270 Talagang tulad ng tulad ng isang tinapay mumo. 588 00:27:54,270 --> 00:27:56,260 >> Ang isang maliit na clue sa Compiler. 589 00:27:56,260 --> 00:27:58,860 Hindi ko alam kung ano ang ginagawa pa, ngunit ako promising sa iyo 590 00:27:58,860 --> 00:28:00,260 na ito ay umiiral sa kalaunan. 591 00:28:00,260 --> 00:28:04,010 At iyon ang dahilan kung bakit ito line-- sa linya 16-- nagtatapos na may semicolon. 592 00:28:04,010 --> 00:28:05,486 Ito ay kalabisan sa pamamagitan ng disenyo. 593 00:28:05,486 --> 00:28:05,986 Oo? 594 00:28:05,986 --> 00:28:11,340 595 00:28:11,340 --> 00:28:14,360 >> Kung hindi mo i-link ang iyong library upang the-- naku, ang mahusay na pinag-uusapan. 596 00:28:14,360 --> 00:28:17,350 Biglang Kasama inclusions header na file. 597 00:28:17,350 --> 00:28:20,040 Kailangang mag-be-- dapat halos palaging sa tuktok napaka 598 00:28:20,040 --> 00:28:23,270 ng file para sa isang similar-- para sa eksaktong kapareho dahilan, oo. 599 00:28:23,270 --> 00:28:26,430 Dahil sa karaniwang io.h ay literal isang linya 600 00:28:26,430 --> 00:28:30,560 tulad nito, ngunit may salitang printf, at kasama ang mga argumento at uri nito return. 601 00:28:30,560 --> 00:28:33,310 At kaya sa pamamagitan ng paggawa matalim magsama ng hanggang dito, ano ang iyong ginagawa nang literal 602 00:28:33,310 --> 00:28:36,380 ay kopyahin at i-paste ang mga nilalaman ng ibang tao ay sumulat up tuktok. 603 00:28:36,380 --> 00:28:39,660 At sa gayon ay cluing ang iyong code sa sa katotohanan na ang mga pag-andar ko umiiral. 604 00:28:39,660 --> 00:28:40,160 Oo? 605 00:28:40,160 --> 00:28:47,520 606 00:28:47,520 --> 00:28:48,260 >> Hinding. 607 00:28:48,260 --> 00:28:51,690 Kaya isang napaka-matalino at tama solusyon ay magiging, alam mo kung ano? 608 00:28:51,690 --> 00:28:53,760 Hindi ko alam kung ano ang isang prototype ay, ngunit alam ko 609 00:28:53,760 --> 00:28:56,390 kung Nauunawaan ko na C lamang pipi at rethinks tuktok hanggang ibaba. 610 00:28:56,390 --> 00:28:57,820 Magbigay ng ito kung ano ang nais ni ito rin ipaalam. 611 00:28:57,820 --> 00:29:01,650 Cut na code Hayaan, i-paste up ito tuktok, at ngayon itulak pangunahing pababa sa ibaba. 612 00:29:01,650 --> 00:29:03,470 Ito ay masyadong paglutas ng problema. 613 00:29:03,470 --> 00:29:07,409 >> Ngunit maaari mong napaka madaling makabuo ng mga isang sitwasyon kung saan ang isang kailangang tawagan B, 614 00:29:07,409 --> 00:29:10,075 at marahil B tawag pabalik sa A. na ito ay isang bagay na tinatawag na recursion, 615 00:29:10,075 --> 00:29:11,370 at kami ay bumalik sa iyon. 616 00:29:11,370 --> 00:29:13,911 At ito ay maaari o hindi maaari maging isang magandang bagay, ngunit maaari kang tiyak 617 00:29:13,911 --> 00:29:15,110 masira ang solusyong ito. 618 00:29:15,110 --> 00:29:17,690 >> At saka, nais ko tubusin ang stylistically, 619 00:29:17,690 --> 00:29:20,760 lalo na kapag ang iyong mga programa maging ito mahaba at ito ang haba, 620 00:29:20,760 --> 00:29:23,064 ito lamang ay sobrang maginhawa upang ilagay ang pangunahing sa tuktok 621 00:29:23,064 --> 00:29:25,730 dahil ito ay ang pinaka-bagay programmer ay pagpunta sa nagmamalasakit sa. 622 00:29:25,730 --> 00:29:28,150 At kaya ito ay isang maliit na cleaner, arguably, upang magawa nito ang mga paraan 623 00:29:28,150 --> 00:29:30,380 Ako na orihinal na ginawa ito may prototype kahit na 624 00:29:30,380 --> 00:29:33,396 bagaman hitsura nito ng kaunti kalabisan sa unang tingin. 625 00:29:33,396 --> 00:29:33,895 Oo? 626 00:29:33,895 --> 00:29:36,472 627 00:29:36,472 --> 00:29:37,680 Paumanhin, maaari mo itong sasabihin louder? 628 00:29:37,680 --> 00:29:45,650 629 00:29:45,650 --> 00:29:49,580 >> Kung lumipat ka sa mga lokasyon ng mga pagpapatupad at ang prototype? 630 00:29:49,580 --> 00:29:51,270 Nang sa gayon ay isang mahusay na tanong. 631 00:29:51,270 --> 00:29:53,780 Kung muli mong idedeklara ito pababa dito, sabihin makita kung ano ang mangyayari. 632 00:29:53,780 --> 00:29:55,530 Kaya kung ko bang ilagay ito pababa dito, hindi ka na nagsasabi. 633 00:29:55,530 --> 00:29:57,860 634 00:29:57,860 --> 00:29:58,360 Oh, paumanhin. 635 00:29:58,360 --> 00:29:58,859 Louder? 636 00:29:58,859 --> 00:30:02,000 637 00:30:02,000 --> 00:30:04,011 Kahit louder. 638 00:30:04,011 --> 00:30:04,760 Oh, mahusay na pinag-uusapan. 639 00:30:04,760 --> 00:30:05,860 Gusto ito magpawalang-bisa ang pag-andar? 640 00:30:05,860 --> 00:30:08,901 Alam mo yun, pagkatapos ang lahat ng mga taon, ako May hindi kailanman maglagay ng prototype pagkatapos. 641 00:30:08,901 --> 00:30:13,810 Kaya sabihin gawin gumawa ng function-1 pagkatapos ng paggawa na. 642 00:30:13,810 --> 00:30:15,279 >> [MUTTERING] 643 00:30:15,279 --> 00:30:16,320 David J. MALAN: Oh, maghintay. 644 00:30:16,320 --> 00:30:17,944 Pa rin Mayroon kaming upang ilagay ang lahat ng bagay up tuktok. 645 00:30:17,944 --> 00:30:21,400 Kaya sabihin gawin ito dito, kung ako pag-unawa sa iyong tanong nang tama. 646 00:30:21,400 --> 00:30:24,700 Ako paglalagay ng lahat ng bagay, kabilang ang ang prototype sa itaas pangunahing, 647 00:30:24,700 --> 00:30:28,180 ngunit ako ng paglalagay ng prototype sa ibaba ang pagpapatupad. 648 00:30:28,180 --> 00:30:33,190 >> Kaya kapag gumawa ako ng isa, ako ako nakakakuha pabalik isang error-- hindi nagamit na variable n. 649 00:30:33,190 --> 00:30:37,280 650 00:30:37,280 --> 00:30:37,860 Oh, doon. 651 00:30:37,860 --> 00:30:38,360 Salamat sa iyo. 652 00:30:38,360 --> 00:30:39,430 Ni makita Hayaan, natin mapupuksa ang ito. 653 00:30:39,430 --> 00:30:41,304 Iyon ay isang iba't ibang mga bug, kaya ni huwag pansinin na ipaalam. 654 00:30:41,304 --> 00:30:43,910 Ng tunay na mabilis na remake ito Hayaan. 655 00:30:43,910 --> 00:30:48,100 >> OK, kaya ang data argumento hindi ginagamit ng mga format ng String 656 00:30:48,100 --> 00:30:52,310 n-- oh, na dahil Binago ako sa mga dito. 657 00:30:52,310 --> 00:30:55,885 Ang lahat ng mga karapatan, alam namin kung ano ang sagot Pupunta to-- lahat ng karapatan, dito pumunta namin. 658 00:30:55,885 --> 00:31:00,560 Ah, salamat para sa mga positibo. 659 00:31:00,560 --> 00:31:03,430 Ang lahat ng mga karapatan, ako ay ayusin ang code na ito after-- huwag pansinin ang partikular na bug 660 00:31:03,430 --> 00:31:08,300 dahil ito was-- ito gumagana ay ang sagot. 661 00:31:08,300 --> 00:31:11,560 >> Kaya ito ay hindi patungan kung ano ang nai-lamang nagawa mo. 662 00:31:11,560 --> 00:31:14,800 Pinaghihinalaan ko ang Compiler ay nakasulat sa paraang 663 00:31:14,800 --> 00:31:18,420 na ito ay hindi papansin ang iyong mga prototype dahil ang katawan, kaya upang makipag-usap, 664 00:31:18,420 --> 00:31:20,922 ng pag-andar ay may naka- naipatupad mas mataas up. 665 00:31:20,922 --> 00:31:23,380 Gusto ko mayroon upang aktwal na kumonsulta ang manu-manong ng Compiler 666 00:31:23,380 --> 00:31:26,171 upang maunawaan kung mayroong anumang iba pang implikasyon, ngunit sa unang tingin 667 00:31:26,171 --> 00:31:29,290 lamang sa pamamagitan ng pagsubok at pag-eksperimento, mukhang walang epekto. 668 00:31:29,290 --> 00:31:30,730 Magandang katanungan. 669 00:31:30,730 --> 00:31:33,660 >> Kaya sabihin pekein maaga ngayon, gumagalaw layo mula sa mga side effect na 670 00:31:33,660 --> 00:31:36,660 mga function na gawin ang isang bagay tulad ng biswal sa screen na may printf, 671 00:31:36,660 --> 00:31:38,090 ngunit hindi nagbabalik ng halaga. 672 00:31:38,090 --> 00:31:41,550 At pag-andar na may return mga halaga tulad namin lamang nakita ang ilan sa. 673 00:31:41,550 --> 00:31:45,350 Nakapagpadala na kami nakakita ito paniwala ng saklaw, at kami makita ito muli at muli. 674 00:31:45,350 --> 00:31:47,210 Ngunit sa ngayon, muli, gamitin ang mga panuntunan ng hinlalaki 675 00:31:47,210 --> 00:31:51,410 na ang isang variable na maaari lamang magamit sa loob ng mga pinaka-kamakailang nabuksang 676 00:31:51,410 --> 00:31:54,350 at closed kulot braces bilang namin Nakita sa partikular na halimbawa. 677 00:31:54,350 --> 00:31:56,910 >> At habang kayo ay itinuturo out, mayroong isang ability-- 678 00:31:56,910 --> 00:32:00,040 maaari mong malutas ang ilan sa mga problemang ito pamamagitan ng paglagay ng variable sa buong mundo 679 00:32:00,040 --> 00:32:01,290 sa pinakatuktok ng isang file. 680 00:32:01,290 --> 00:32:03,630 Ngunit sa halos lahat ng mga kaso Gusto naming pagsimangot sa iyon, 681 00:32:03,630 --> 00:32:06,170 at sa katunayan hindi kahit pumunta sa na solusyon para sa ngayon. 682 00:32:06,170 --> 00:32:09,890 Kaya para sa ngayon, ang takeaway ay na variable ay may ito paniwala ng saklaw. 683 00:32:09,890 --> 00:32:13,430 >> Ngunit tingnan natin ang isa pang ngayon hayaan dry paraan ng talagang aktwal na tumitingin 684 00:32:13,430 --> 00:32:15,810 sa ilang mga kaakit-akit na mga kawili-wiling Mga detalye ng pagpapatupad. 685 00:32:15,810 --> 00:32:17,810 Paano maaari naming kumatawan sa impormasyon. 686 00:32:17,810 --> 00:32:20,370 At kami na tumingin sa ito sa unang linggo ng klase. 687 00:32:20,370 --> 00:32:23,320 Sa pagtingin sa binaries, at nagpapaalala sa ating sarili ng decimal. 688 00:32:23,320 --> 00:32:28,310 >> Ngunit isipin ang mula sa nakaraang linggo na C ay iba't ibang mga uri ng data at bunches higit pa, 689 00:32:28,310 --> 00:32:30,600 ngunit ang mga pinaka-kapaki-pakinabang na mga bago para sa ngayon ay maaaring maging ang mga ito. 690 00:32:30,600 --> 00:32:36,030 Ang char, o ng character, na mangyayari upang maging isang byte, o kabuuang walong bits. 691 00:32:36,030 --> 00:32:40,060 At iyon ang sasabihin na ang sukat ng isang char ay isa lamang byte. 692 00:32:40,060 --> 00:32:45,370 Ang isang byte ay walong bits, kaya ibig sabihin nito ay maaari naming kumatawan sa kung gaano karaming mga character. 693 00:32:45,370 --> 00:32:47,320 Gaano karaming mga titik o simbolo sa keyboard 694 00:32:47,320 --> 00:32:49,210 kung kami ay may isang byte o walong bits. 695 00:32:49,210 --> 00:32:51,546 Isipin pabalik sa linggo zero. 696 00:32:51,546 --> 00:32:53,420 Kung mayroon kang walong bits, kung gaano karaming mga kabuuang halaga 697 00:32:53,420 --> 00:32:55,503 maaari mong kumatawan sa pattern ng mga zero at mga bago? 698 00:32:55,503 --> 00:32:58,170 699 00:32:58,170 --> 00:33:00,260 One-- higit sa na. 700 00:33:00,260 --> 00:33:03,490 Kaya 256 kabuuang kung simulan ang pagbibilang mula sa zero. 701 00:33:03,490 --> 00:33:07,120 Kaya kung mayroon kang walong bits-- kaya kung namin Nagkaroon aming mga binary na mga bombilya up dito muli, 702 00:33:07,120 --> 00:33:12,180 sa maaari naming i-on ang mga ilaw na mga bombilya at off sa anuman sa 256 natatanging mga pattern. 703 00:33:12,180 --> 00:33:13,640 >> Ngayon ito ay isang bit may problemang. 704 00:33:13,640 --> 00:33:16,857 Hindi kaya magkano para sa Ingles at pagmamahalan mga wika, ngunit tiyak 705 00:33:16,857 --> 00:33:19,190 kapag ipakilala, para sa Halimbawa, Asian na mga wika, na 706 00:33:19,190 --> 00:33:22,580 Mayroon malayo sa higit pang mga simbolo tulad ng sa 26 titik ng alpabeto. 707 00:33:22,580 --> 00:33:24,390 Aktwal na maaaring kailangan namin higit sa isang byte. 708 00:33:24,390 --> 00:33:28,240 At thankfully sa mga nakalipas na taon ay may lipunan 709 00:33:28,240 --> 00:33:31,040 nagpatibay ng iba pang mga pamantayan na gumagamit higit sa isang byte bawat bayad. 710 00:33:31,040 --> 00:33:34,210 >> Ngunit sa ngayon sa C, ang default ay isa lamang byte o walong bits. 711 00:33:34,210 --> 00:33:38,195 Isang integer, samantala, ay apat na bytes, kung hindi man ay kilala bilang 32 bits. 712 00:33:38,195 --> 00:33:41,320 Na nangangahulugan kung ano ang pinakamalaking posibleng bilang maaari naming kumakatawan sa isang int 713 00:33:41,320 --> 00:33:41,820 tila? 714 00:33:41,820 --> 00:33:44,426 715 00:33:44,426 --> 00:33:45,050 Sa isang bilyon. 716 00:33:45,050 --> 00:33:46,760 Kaya 4000000000 bigyan o tumagal. 717 00:33:46,760 --> 00:33:49,840 2 sa 32th kapangyarihan, kung namin ipinapalagay walang negatibong numero 718 00:33:49,840 --> 00:33:52,530 at gamitin na lamang ang lahat ng positibo mga numero, ito ay 4000000000 719 00:33:52,530 --> 00:33:53,730 magbigay o magsagawa ng mga posibilidad. 720 00:33:53,730 --> 00:33:57,890 Ang isang float, samantala, ay isang iba't ibang mga uri ng uri ng data sa C. Ito ay pa rin ng isang numero, 721 00:33:57,890 --> 00:33:58,990 ngunit ito ay isang tunay na numero. 722 00:33:58,990 --> 00:34:00,660 Isang bagay na may decimal point. 723 00:34:00,660 --> 00:34:03,000 At ito ay lumiliko out na C Gumagamit din ang apat na bytes 724 00:34:03,000 --> 00:34:05,340 kinakatawan ang mga lumulutang na mga halaga ng point. 725 00:34:05,340 --> 00:34:09,420 >> Sa kasamaang palad kung gaano karaming mga lumulutang mga halaga ng point ang naroon sa mundo? 726 00:34:09,420 --> 00:34:11,582 Gaano karaming mga tunay na mga numero ay doon? 727 00:34:11,582 --> 00:34:13,540 Mayroong isang walang-katapusang numero, at para sa usaping iyon 728 00:34:13,540 --> 00:34:15,164 mayroong isang walang-katapusang bilang ng mga integer. 729 00:34:15,164 --> 00:34:18,070 Kaya hindi namin na uri ng paghuhukay ating sarili isang hole dito. 730 00:34:18,070 --> 00:34:21,780 Kung saan tila sa computers-- sa hindi bababa sa mga programa na nakasulat sa C sa them-- 731 00:34:21,780 --> 00:34:24,110 Maaari lamang mabibilang na mataas na bilang 4000000000 bigyan o tumagal, 732 00:34:24,110 --> 00:34:26,260 at lumulutang halaga punto maaari lamang tila 733 00:34:26,260 --> 00:34:28,330 kumuha ng tiyak na halaga ng katumpakan. 734 00:34:28,330 --> 00:34:30,810 Tanging kaya maraming mga digit pagkatapos ng ang kanilang mga decimal point. 735 00:34:30,810 --> 00:34:32,822 >> Dahil, siyempre, kung mayroon ka lamang 32 bits, 736 00:34:32,822 --> 00:34:36,030 Hindi ko alam kung paano namin pagpunta sa pumunta tungkol sa kumakatawan sa mga real numbers-- marahil 737 00:34:36,030 --> 00:34:37,409 may iba't ibang mga uri ng mga pattern. 738 00:34:37,409 --> 00:34:40,030 Ngunit mayroong tiyak isang may hangganan bilang ng mga naturang mga pattern, 739 00:34:40,030 --> 00:34:41,830 kaya dito, masyadong, ito ay may problemang. 740 00:34:41,830 --> 00:34:43,710 >> Ngayon ay maaari naming maiwasan ang problema bahagyang. 741 00:34:43,710 --> 00:34:45,710 Kung hindi ka gumagamit ng isang float, maaari mong gamitin ang isang double 742 00:34:45,710 --> 00:34:50,230 sa C, na nagbibigay sa iyo ng walong bytes, na ay paraan ng higit pang mga posibleng mga pattern ng mga zero 743 00:34:50,230 --> 00:34:50,730 at bago. 744 00:34:50,730 --> 00:34:55,199 Ngunit pa rin ito may hangganan, na kung saan ay pagpunta upang maging may problemang kung sumulat ka ng software 745 00:34:55,199 --> 00:34:57,670 para sa mga graphic o para sa magarbong mathematical na mga formula. 746 00:34:57,670 --> 00:35:00,410 Kaya maaaring talagang gusto upang mabilang up mas malaki kaysa iyon. 747 00:35:00,410 --> 00:35:05,640 Ang isang mahabang long-- stupidly named-- ding walong bytes, o 64 bits, 748 00:35:05,640 --> 00:35:10,260 at ito ay dalawang beses hangga't isang int, at ito ay para sa isang mahabang halaga ng integer. 749 00:35:10,260 --> 00:35:15,655 >> Kasayahan fact-- kung ang isang int ay apat na bytes, kung gaano katagal ay isang mahaba sa C karaniwang? 750 00:35:15,655 --> 00:35:18,290 751 00:35:18,290 --> 00:35:21,560 Gayundin apat na bytes, ngunit isang mahabang mahaba ay walong bytes, 752 00:35:21,560 --> 00:35:23,050 at ito ay para sa makasaysayang dahilan. 753 00:35:23,050 --> 00:35:26,450 >> Subalit ang takeaway ngayon lamang ang data na iyon ay 754 00:35:26,450 --> 00:35:29,625 upang katawanin sa isang computer-- na isang pisikal na aparato na may kuryente, 755 00:35:29,625 --> 00:35:32,190 Sa pangkalahatan ito ay pagmamaneho mga zero at ones-- 756 00:35:32,190 --> 00:35:34,320 sa may hangganan halaga ng katumpakan. 757 00:35:34,320 --> 00:35:35,620 Kaya kung ano ang problema pagkatapos? 758 00:35:35,620 --> 00:35:37,480 >> Doon na rin problema ng integer overflow. 759 00:35:37,480 --> 00:35:39,780 Hindi lamang sa C, ngunit sa mga computer sa pangkalahatan. 760 00:35:39,780 --> 00:35:42,590 Halimbawa, kung ito ay nagkakahalaga ng isang byte ng bit-- 761 00:35:42,590 --> 00:35:45,120 kaya kung ito ay walong bit-- lahat ng kung saan ay ang bilang isa. 762 00:35:45,120 --> 00:35:47,300 Ano ang bilang na ito ay ito na kumakatawan sa kung ipinapalagay namin 763 00:35:47,300 --> 00:35:50,730 lahat ng ito ay mga positibong halaga sa binary? 764 00:35:50,730 --> 00:35:54,410 >> 255, at ito ay hindi 256, dahil zero ay ang pinakamababang numero. 765 00:35:54,410 --> 00:35:56,760 Kaya 255 ay ang pinakamataas na isa, ngunit ang problema 766 00:35:56,760 --> 00:36:00,330 ay ipagpalagay na nais kong dinagdagan ito variable na 767 00:36:00,330 --> 00:36:04,030 ay gumagamit ng kabuuan na walong bits kung gusto ko upang dagdagan ito. 768 00:36:04,030 --> 00:36:07,160 >> Well sa sandaling idagdag ko ang isang isa sa lahat ng mga bago, 769 00:36:07,160 --> 00:36:10,500 maaari mong marahil isipin visually-- lamang tulad ng pagsasakatuparan ng isa gamit ang decimals-- 770 00:36:10,500 --> 00:36:12,300 isang bagay pupuntahan dumaloy sa kaliwa. 771 00:36:12,300 --> 00:36:15,590 At sa katunayan, kung idagdag ko ang mga numero isa sa ito, ano ang mangyayari sa binary 772 00:36:15,590 --> 00:36:17,670 ay tumutulong ito sa overflows pabalik sa zero. 773 00:36:17,670 --> 00:36:21,730 >> Kaya't kung ikaw use-- lamang hindi isang int, ngunit isang solong byte upang mabilang integer 774 00:36:21,730 --> 00:36:27,170 sa isang programa, sa pamamagitan ng default-- sa lalong madaling ka ba sa 250, 251, 252, 253, 254, 775 00:36:27,170 --> 00:36:32,710 255-- 0 nauuna matapos 255, na kung saan ay marahil hindi kung ano 776 00:36:32,710 --> 00:36:34,790 ang isang user ay pagpunta sa inaasahan. 777 00:36:34,790 --> 00:36:39,620 >> Ngayon samantala sa mga lumulutang na tuldok mundo, mayroon ka ring mga katulad na problema. 778 00:36:39,620 --> 00:36:42,670 Hindi kaya magkano ang may pinakamalaking number-- bagaman na isang isyu pa rin. 779 00:36:42,670 --> 00:36:45,360 Ngunit sa ang halaga ng katumpakan na maaari mong kumatawan. 780 00:36:45,360 --> 00:36:49,490 Kaya ipaalam sa tumagal ng isang pagtingin sa halimbawang ito dito din mula sa mapagkukunan ng code-- ngayong araw 781 00:36:49,490 --> 00:36:52,070 lumulutang-0.c. 782 00:36:52,070 --> 00:36:54,280 >> At napansin ito ay isang napakabilis simpleng programa na 783 00:36:54,280 --> 00:36:56,580 Dapat tila-print out kung ano ang halaga? 784 00:36:56,580 --> 00:37:00,777 785 00:37:00,777 --> 00:37:04,110 Ano sa wager ito ay pagpunta sa i-print kahit na mayroong isang bit ng mga bagong syntax 786 00:37:04,110 --> 00:37:05,540 dito? 787 00:37:05,540 --> 00:37:06,700 Kaya sana ay 0.1. 788 00:37:06,700 --> 00:37:10,000 Kaya ang katumbas ng isang-ikasampu dahil ako paggawa 1 hinati sa 10. 789 00:37:10,000 --> 00:37:12,430 Ako sa pag-iimbak ang sagot sa isang variable na tinatawag na f. 790 00:37:12,430 --> 00:37:15,850 Variable na iyon ng uri ng float, na ay isang keyword lamang ipinanukalang ko umiral. 791 00:37:15,850 --> 00:37:18,910 >> Hindi namin nasaksihan ito bago, ngunit ito ay uri ng kapong baka isang paraan sa printf 792 00:37:18,910 --> 00:37:22,110 upang tukuyin kung gaano karaming mga digit sa iyo nais na makita pagkatapos ng decimal point. 793 00:37:22,110 --> 00:37:25,020 Kaya pagtatanda na ito ay nangangahulugan lamang na narito ang isang placeholder. 794 00:37:25,020 --> 00:37:27,900 Ito ay para sa isang lumulutang na tuldok halaga, at naku, sa pamamagitan ng ang paraan, 795 00:37:27,900 --> 00:37:31,389 ipakita ito sa mga decimal point na may o isang numero pagkatapos ng decimal point. 796 00:37:31,389 --> 00:37:33,180 Kaya iyon ang numero ng makabuluhang mga digit, 797 00:37:33,180 --> 00:37:34,650 kaya upang makipag-usap, na maaaring gusto. 798 00:37:34,650 --> 00:37:40,450 >> Kaya ipaalam sa akin sige at gawin gumawa ng float-0, ./float-0, 799 00:37:40,450 --> 00:37:46,660 at tila 1 hinati sa 10 ay 0.0. 800 00:37:46,660 --> 00:37:47,760 Ngayon kung bakit ito? 801 00:37:47,760 --> 00:37:51,380 >> Well muli, ang computer ay inaabot Literal na sa akin, at ako ay nakasulat 1 802 00:37:51,380 --> 00:37:56,680 at ako nakasulat 10, at kumuha ng isang hula kung ano ay ang ipinapalagay uri ng data para sa mga dalawang 803 00:37:56,680 --> 00:37:58,440 mga halaga? 804 00:37:58,440 --> 00:38:00,970 Isang int, ito ay technically isang bagay na medyo naiiba. 805 00:38:00,970 --> 00:38:04,150 Ito ay karaniwang isang mahaba, subalit ito ay sa huli isang mahalagang halaga. 806 00:38:04,150 --> 00:38:06,030 Hindi isang lumulutang na halaga point. 807 00:38:06,030 --> 00:38:09,456 >> Aling ay upang sabihin na kung ito ay isang int at ito ay isang int, 808 00:38:09,456 --> 00:38:11,830 ang problema ay na ang computer walang kakayahan 809 00:38:11,830 --> 00:38:13,680 upang mag-imbak ng kahit na decimal point. 810 00:38:13,680 --> 00:38:16,430 Kaya kapag gumawa ka ng 1 hinati sa pamamagitan ng paggamit ng 10 integer 811 00:38:16,430 --> 00:38:20,950 para sa parehong numerator at ang denominator, ang sagot ay dapat na 0.1. 812 00:38:20,950 --> 00:38:24,930 Subalit ang computer-- dahil mga mga integers-- 813 00:38:24,930 --> 00:38:27,430 Hindi alam kung anong gagawin sa mga 0.1. 814 00:38:27,430 --> 00:38:30,010 >> Kaya kung ano ay malinaw na ito ginagawa? 815 00:38:30,010 --> 00:38:33,120 Lamang Ito ay masusuka ito ang layo, at kung ano ko na nakikita ang sa huli 816 00:38:33,120 --> 00:38:38,830 ay 0.0 dahil lamang insisted ko na printf ipakita sa akin ang isang decimal point. 817 00:38:38,830 --> 00:38:41,740 Ngunit ang problema ay na kung iyong hatiin ang isang integer sa pamamagitan ng isang integer, 818 00:38:41,740 --> 00:38:44,347 ikaw get-- sa pamamagitan ng kahulugan C-- ng isang integer. 819 00:38:44,347 --> 00:38:46,680 At hindi ito ng pagpunta sa gawin isang bagay na maganda at maginhawang 820 00:38:46,680 --> 00:38:49,040 tulad ng pag-ikot hanggang sa ito pinakamalapit na isa pataas o pababa. 821 00:38:49,040 --> 00:38:51,860 Ito ay pagpunta sa truncate lahat pagkatapos ng decimal. 822 00:38:51,860 --> 00:38:54,030 >> Kaya intuitively lamang, kung ano ang marahil ng isang remedyo? 823 00:38:54,030 --> 00:38:55,351 Ano ang pinakasimpleng fix dito? 824 00:38:55,351 --> 00:38:55,850 Oo? 825 00:38:55,850 --> 00:39:00,570 826 00:39:00,570 --> 00:39:01,100 Mismong. 827 00:39:01,100 --> 00:39:04,200 Bakit hindi ituturing lamang namin ang mga bilang lumulutang na halaga ng point epektibong 828 00:39:04,200 --> 00:39:05,860 pagpalit nito sa kamay o doubles. 829 00:39:05,860 --> 00:39:10,500 At ngayon kung gagawin ko gumawa sa kamay-0, o kung makatipon ko sa kamay-1, 830 00:39:10,500 --> 00:39:12,570 na kung saan ay kapareho ng kung ano ang ipinanukalang lamang. 831 00:39:12,570 --> 00:39:16,400 At ngayon gagawin ko sa kamay-0 na, ngayon, nakukuha ko ang aking 0.1. 832 00:39:16,400 --> 00:39:17,234 >> Ngayon ito ay kamangha-manghang. 833 00:39:17,234 --> 00:39:19,441 Ngunit ngayon ako pagpunta sa gawin isang bagay na medyo naiiba. 834 00:39:19,441 --> 00:39:22,280 Ako malaman upang makita kung ano talaga nangyayari sa ilalim ng hood, 835 00:39:22,280 --> 00:39:26,050 at pupuntahan ko upang i-print ito out sa 28 decimal place. 836 00:39:26,050 --> 00:39:29,730 Gusto kong makita talaga 0.1000-- isang infinite-- 837 00:39:29,730 --> 00:39:32,710 [INAUDIBLE] 27 mga zero pagkatapos na 0.1. 838 00:39:32,710 --> 00:39:34,740 >> Ni makita kung na rin ipaalam kung ano talaga ang nakukuha ko. 839 00:39:34,740 --> 00:39:39,430 Gumawa ng kamay-0 parehong file. 840 00:39:39,430 --> 00:39:41,150 ./floats-0. 841 00:39:41,150 --> 00:39:44,380 Ni-zoom in sa mga dramatic na sagot Hayaan. 842 00:39:44,380 --> 00:39:49,980 Ang lahat ng mga oras na ito, mo pa-iisip 1 hinati sa 10 ay 10%, o 0.1. 843 00:39:49,980 --> 00:39:50,810 Hindi ito. 844 00:39:50,810 --> 00:39:53,210 Hindi bababa sa ngayon bilang computer aalala. 845 00:39:53,210 --> 00:39:57,060 >> Ngayon why-- OK, na kumpleto kasinungalingan 1 hinati sa 10 ay 0.1. 846 00:39:57,060 --> 00:39:59,710 Ngunit why-- na hindi ang takeaway ngayon. 847 00:39:59,710 --> 00:40:04,010 Kaya bakit ang computer na sa tingin, hindi katulad sa ating lahat sa room, 848 00:40:04,010 --> 00:40:06,870 1 na hinati sa 10 ay aktwal na mabaliw halaga? 849 00:40:06,870 --> 00:40:10,620 Ano ang computer na paggawa tila? 850 00:40:10,620 --> 00:40:12,490 Ano iyan? 851 00:40:12,490 --> 00:40:13,785 >> Hindi ito mapuno, per se. 852 00:40:13,785 --> 00:40:15,910 Overflow ay karaniwang kapag balutin mo sa paligid ng isang halaga. 853 00:40:15,910 --> 00:40:18,970 Ito ay ang isyu na ito ng imprecision sa isang lumulutang na halaga punto 854 00:40:18,970 --> 00:40:22,220 kung saan mayroon kang 32 lamang o maaari ring maging 64 bit. 855 00:40:22,220 --> 00:40:25,230 Ngunit kung mayroong isang walang-katapusang bilang ng mga real numbers-- 856 00:40:25,230 --> 00:40:27,940 mga numero sa decimal point at numero thereafter-- tiyak 857 00:40:27,940 --> 00:40:29,380 hindi mo maaaring kumatawan sa lahat ng mga ito. 858 00:40:29,380 --> 00:40:32,870 Kaya ay nagbigay ng computer na amin ang pinakamalapit na tugma 859 00:40:32,870 --> 00:40:37,090 sa halagang maaari itong kumatawan sa paggamit na maraming mga bits sa aktwal na halaga ko gusto, 860 00:40:37,090 --> 00:40:38,690 na kung saan ay 0.1. 861 00:40:38,690 --> 00:40:40,685 >> Sa kasamaang palad, kung ikaw simulan ang paggawa sa matematika, o mo 862 00:40:40,685 --> 00:40:44,360 simulan na kinasasangkutan ng mga ganitong uri ng lumulutang mga halaga ng point sa mahalagang programs-- 863 00:40:44,360 --> 00:40:46,770 pinansiyal na software, militar software-- anumang bagay 864 00:40:46,770 --> 00:40:49,090 kung saan pagdama ay marahil medyo mahalaga. 865 00:40:49,090 --> 00:40:51,520 At nagsimula ka ng pagdaragdag mga numero tulad nito, at pagsisimula 866 00:40:51,520 --> 00:40:54,050 tumakbo ang software na may talagang malaking input 867 00:40:54,050 --> 00:40:56,890 o para sa maraming mga oras o maraming ng araw o ng maraming taon, 868 00:40:56,890 --> 00:41:01,060 mga maliliit na maliit na mga pagkakamali tiyak maaaring magdagdag ng hanggang sa paglipas ng panahon. 869 00:41:01,060 --> 00:41:04,252 >> Ngayon bilang isang bukod, kung hindi mo kailanman Nakita Superman 3 o Office Space 870 00:41:04,252 --> 00:41:05,960 at maaari mong isipin paano mga guys nakaagaw 871 00:41:05,960 --> 00:41:08,668 ng maraming pera mula sa kanilang computer sa pamamagitan ng paggamit lumulutang na mga halaga ng point 872 00:41:08,668 --> 00:41:11,290 at pagdaragdag ng hanggang sa maliit na remainders, sana na pelikula 873 00:41:11,290 --> 00:41:12,390 ngayon ay gumagawa ng higit pang kahulugan. 874 00:41:12,390 --> 00:41:14,930 Ito ay kung ano sila ay alluding sa sa na pelikula. 875 00:41:14,930 --> 00:41:16,710 Ang katotohanan na ang karamihan kompanya ng hindi magiging ganito ang 876 00:41:16,710 --> 00:41:18,600 pagkatapos ng isang tiyak na bilang ng decimal place, 877 00:41:18,600 --> 00:41:20,009 ngunit ang mga ito ay mga fraction ng sentimo. 878 00:41:20,009 --> 00:41:22,550 Kaya magsisimulang mo pagdaragdag up ang mga ito, simulan mo upang gumawa ng maraming pera 879 00:41:22,550 --> 00:41:23,424 sa iyong bank account. 880 00:41:23,424 --> 00:41:25,160 Kaya na ipinaliwanag Office Space. 881 00:41:25,160 --> 00:41:28,220 >> Ngayon sa kasamaang-palad lampas Office Space, mayroong 882 00:41:28,220 --> 00:41:31,794 ang ilang mga lehitimong mag-troubling at makabuluhang epekto 883 00:41:31,794 --> 00:41:33,710 ng mga ganitong uri ng nakapailalim na mga pasya sa disenyo, 884 00:41:33,710 --> 00:41:35,990 at sa katunayan isa sa mga dahilan ginagamit namin C sa kurso 885 00:41:35,990 --> 00:41:39,640 ay kaya na talagang mayroon ka na ng lupa up pag-unawa sa kung paano gumagana ang mga computer, 886 00:41:39,640 --> 00:41:42,440 kung paano gumagana ang software, at huwag tumagal ng anumang bagay para sa ipinagkaloob. 887 00:41:42,440 --> 00:41:45,820 >> At sa katunayan sa kasamaang-palad, kahit na may na pangunahing pag-unawa, 888 00:41:45,820 --> 00:41:47,370 namin tao gumawa ng mga pagkakamali. 889 00:41:47,370 --> 00:41:51,310 At kung ano naisip ko na nais kong ibahagi ay dito kinuha ito walong minutong video 890 00:41:51,310 --> 00:41:56,980 mula sa isang Modern Marvels episode, na isang palabas na pang-edukasyon sa kung paano gumagana ang mga bagay 891 00:41:56,980 --> 00:42:00,370 na paints dalawang mga larawan ng kapag ang isang hindi tamang paggamit 892 00:42:00,370 --> 00:42:02,540 at pag-unawa ng lumulutang na halaga ng point 893 00:42:02,540 --> 00:42:05,610 na humantong sa ilang mga makabuluhang unfortunate resulta. 894 00:42:05,610 --> 00:42:06,363 Tingnan natin ang isang hitsura. 895 00:42:06,363 --> 00:42:07,029 [VIDEO pag-playback] 896 00:42:07,029 --> 00:42:11,290 -We Ngayon bumalik sa "Engineering Sakuna "sa Modern Marvels. 897 00:42:11,290 --> 00:42:12,940 Mga Computer. 898 00:42:12,940 --> 00:42:15,580 Lahat na dumating namin upang tanggapin ang madalas na nakakabigo problema na 899 00:42:15,580 --> 00:42:20,960 Nakakuha may them-- mga bug, mga virus, at software glitches-- para sa maliliit na mga presyo 900 00:42:20,960 --> 00:42:23,100 magbayad para sa kaginhawahan. 901 00:42:23,100 --> 00:42:27,770 Ngunit sa mataas na tech at high speed militar at espasyo application programa, 902 00:42:27,770 --> 00:42:32,780 ang pinakamaliit na problema maaari ay Pinalaking sa kalamidad. 903 00:42:32,780 --> 00:42:38,880 >> Sa Hunyo 4, 1996, naghanda ng mga siyentipiko na maglunsad ng isang unmanned Ariane 5 rocket. 904 00:42:38,880 --> 00:42:41,190 Ito ay pagsasakatuparan ng pang-agham satellite dinisenyo 905 00:42:41,190 --> 00:42:44,570 upang magtatag tiyak kung paano ang Magnetic field na nakikipag-ugnayan Earth 906 00:42:44,570 --> 00:42:47,380 may solar wind. 907 00:42:47,380 --> 00:42:50,580 Rocket ay ginawa para sa European Space Agency, 908 00:42:50,580 --> 00:42:54,400 at itinaas-off mula sa pasilidad nito sa baybayin ng French Guiana. 909 00:42:54,400 --> 00:42:57,520 >> -At Tungkol sa 37 segundo sa sa flight, sila muna 910 00:42:57,520 --> 00:42:59,070 Napansin ng isang bagay ay pagpunta mali. 911 00:42:59,070 --> 00:43:02,240 Na ang nozzles ay swiveling sa paraang sila talaga dapat hindi. 912 00:43:02,240 --> 00:43:06,550 Sa paligid ng 40 segundo sa paglipad, malinaw na ang sasakyan ay may problema, 913 00:43:06,550 --> 00:43:08,820 at iyon ang kapag ginawa nila ang desisyon upang wasakin ito. 914 00:43:08,820 --> 00:43:12,370 Ang hanay kaligtasan opisyal, may napakalaking tapang, napindot ang pindutan ng 915 00:43:12,370 --> 00:43:18,030 at blew up ang rocket bago ng dati maging isang panganib sa kaligtasan ng publiko. 916 00:43:18,030 --> 00:43:21,010 >> -This Ay ang pagkadalaga paglalayag ng Ariane 5, 917 00:43:21,010 --> 00:43:23,920 at kinuha pagkasira nito ilagay dahil sa flaw 918 00:43:23,920 --> 00:43:25,932 naka-embed sa software ng rocket ni. 919 00:43:25,932 --> 00:43:27,640 -Ang Problema sa Ariane ay na mayroong 920 00:43:27,640 --> 00:43:30,500 ay isang numero na kinakailangan 64 bits upang ipahayag, 921 00:43:30,500 --> 00:43:33,560 at ninais nilang i-convert ito sa isang 16-bit na numero. 922 00:43:33,560 --> 00:43:36,820 Sila ay ipinapalagay na ang numero ay hindi kailanman pagpunta sa maging napaka-malaki. 923 00:43:36,820 --> 00:43:40,940 Na karamihan sa mga digit sa ang 64-bit na numero ay zero. 924 00:43:40,940 --> 00:43:42,450 Sila ay mali. 925 00:43:42,450 --> 00:43:45,000 >> -Ang Kawalan ng kakayahan ng isa software program upang tanggapin 926 00:43:45,000 --> 00:43:49,460 ang uri ng numero na nabuo sa pamamagitan ng isa pa ay sa root ng kabiguan. 927 00:43:49,460 --> 00:43:54,260 Sa pagbuo ng software ay naging isang napaka magastos na bahagi ng bagong teknolohiya. 928 00:43:54,260 --> 00:43:57,060 Ang Ariane 4 rocket ay nagkaroon ng naging napaka matagumpay. 929 00:43:57,060 --> 00:44:01,600 Kaya magkano ng software na nilikha para sa ito ay ginagamit din sa Ariane 5. 930 00:44:01,600 --> 00:44:04,790 >> -Ang Pangunahing problema ay na ang Ariane 5. 931 00:44:04,790 --> 00:44:11,200 Ay faster-- mas mabilis pinabilis, at ang software ay hindi accounted para doon. 932 00:44:11,200 --> 00:44:14,910 >> -Ang Pagkawasak ng rocket ay isang malaking sa pananalapi kalamidad. 933 00:44:14,910 --> 00:44:18,630 Ang lahat ng mga sanhi ng error sa minutong software. 934 00:44:18,630 --> 00:44:21,160 Ngunit hindi ito ay ang unang oras ng mga problema sa conversion data 935 00:44:21,160 --> 00:44:24,770 ay plagued modernong teknolohiya rocket. 936 00:44:24,770 --> 00:44:28,020 >> -In 1991 sa pagsisimula ng unang Gulf War, 937 00:44:28,020 --> 00:44:30,540 ang Patriot misayl ay nakaranas ng isang katulad na uri 938 00:44:30,540 --> 00:44:32,465 sa isang problema bilang conversion. 939 00:44:32,465 --> 00:44:36,760 At bilang resulta, 28 people-- 28 Amerikano soldiers-- ay pinatay, 940 00:44:36,760 --> 00:44:39,010 at tungkol sa isang daang iba nasugatan. 941 00:44:39,010 --> 00:44:42,830 Kapag ang Patriot, na dapat upang maprotektahan laban sa mga papasok na Scuds, 942 00:44:42,830 --> 00:44:45,780 ang nabigong mag-sunog isang misayl. 943 00:44:45,780 --> 00:44:51,610 >> -When Iraq invaded Kuwait, at Amerika Inilunsad Disyerto ng Bagyo sa unang bahagi ng 1991, 944 00:44:51,610 --> 00:44:55,720 Bayani misayl baterya ay deploy upang protektahan ang Saudi Arabia at Israel 945 00:44:55,720 --> 00:44:59,180 mula sa pag-atake ng Iraqi Scud misayl. 946 00:44:59,180 --> 00:45:03,080 Ang Patriot ay isang US medium-range na ibabaw-to-air sistema 947 00:45:03,080 --> 00:45:06,530 manufactured sa pamamagitan ng kumpanya Raytheon. 948 00:45:06,530 --> 00:45:09,500 >> -Ang Laki ng Patriot interceptor itself-- 949 00:45:09,500 --> 00:45:14,705 ito ay tungkol sa halos 20 talampakan ang haba, at ito weighs tungkol sa £ 2000. 950 00:45:14,705 --> 00:45:19,090 At ito ay nagdadala ng isang warhead ng tungkol sa, Sa tingin ko ito ay halos £ 150. 951 00:45:19,090 --> 00:45:23,880 At ang warhead mismo ay ang isang mataas na paputok, na 952 00:45:23,880 --> 00:45:26,700 May mga fragment sa paligid sa kanya. 953 00:45:26,700 --> 00:45:31,630 Kaya ang casing ng warhead ay dinisenyo upang kumilos tulad ng isang buckshot. 954 00:45:31,630 --> 00:45:34,040 >> -Ang Missiles ay dinala apat bawat lalagyan, 955 00:45:34,040 --> 00:45:37,170 at transported sa pamamagitan ng isang semi trailer. 956 00:45:37,170 --> 00:45:44,880 >> -Ang Patriot anti-misayl sistema napupunta pabalik ng hindi bababa sa 20 taon na ngayon. 957 00:45:44,880 --> 00:45:48,380 Ito ay orihinal na idinisenyo bilang isang air pagtatanggol misayl 958 00:45:48,380 --> 00:45:50,810 upang shoot down na kaaway eroplano. 959 00:45:50,810 --> 00:45:54,410 Sa unang Gulf War kapag digmaan na nagmula sa, 960 00:45:54,410 --> 00:45:59,650 ang Army nais gamitin ito upang shoot down na Scuds, hindi eroplano. 961 00:45:59,650 --> 00:46:03,580 Ang Iraqi Air Force noon ay hindi kaya magkano ng isang problema, 962 00:46:03,580 --> 00:46:06,590 ngunit ang Army ay nag-aalala tungkol sa Scuds. 963 00:46:06,590 --> 00:46:10,120 At kaya sinubukan nilang i-upgrade ang Patriot. 964 00:46:10,120 --> 00:46:12,740 >> -Intercepting Isang kaaway misayl na naglalakbay sa Mach 5 965 00:46:12,740 --> 00:46:15,670 ay pagpunta sa ay sapat Hinahamon. 966 00:46:15,670 --> 00:46:18,440 Ngunit kapag ang Patriot ay rushed sa serbisyo, 967 00:46:18,440 --> 00:46:22,580 ang Army ay hindi magkaroon ng kamalayan ng isang Iraqi pagbabago na 968 00:46:22,580 --> 00:46:25,880 ginawa ang kanilang scuds halos imposibleng ito. 969 00:46:25,880 --> 00:46:30,690 >> -What Nangyari ay ang Scuds na ay darating sa mga hindi matatag. 970 00:46:30,690 --> 00:46:32,000 Sila ay wobbly. 971 00:46:32,000 --> 00:46:37,210 Ang dahilan sa ito ay ang Iraqis-- sa pagkakasunud-sunod upang makakuha ng 600 kilometro out 972 00:46:37,210 --> 00:46:41,680 ng isang 300-kilometro hanay ng missile-- kinuha timbang sa labas ng front warhead, 973 00:46:41,680 --> 00:46:43,340 at ginawang mas magaan ang warhead. 974 00:46:43,340 --> 00:46:48,490 Kaya ngayon ang Patriot ng sinusubukan na dumating sa Scud, at karamihan sa mga time-- 975 00:46:48,490 --> 00:46:52,880 napakatinding karamihan ng mga time-- ito ay lumipad sa pamamagitan lamang ng mga Scud. 976 00:46:52,880 --> 00:46:57,120 >> -Once Ang sistema ng mga operator Patriot natanto na hindi inaabot ang Patriot target nito, 977 00:46:57,120 --> 00:47:01,630 sila mina warhead ang Patriot ni upang maiwasan ang mga posibleng casualties kung ito 978 00:47:01,630 --> 00:47:04,440 ay pinapayagang mahulog sa lupa. 979 00:47:04,440 --> 00:47:08,700 >> -That Ay kung ano ang nakita karamihan ng mga tao bilang malaking fireballs sa kalangitan, 980 00:47:08,700 --> 00:47:14,180 at gusot bilang intercepts ng Scud warheads. 981 00:47:14,180 --> 00:47:18,020 >> -Although Sa gabi na kalangitan, Patriots nagpakita sa matagumpay na pagsira 982 00:47:18,020 --> 00:47:23,280 Scuds, sa Dhahran, maaaring walang pagkakamali tungkol sa pagganap nito. 983 00:47:23,280 --> 00:47:27,930 May radar sistema ang Patriot ni nawala ang pagsubaybay ng isang papasok na Scud 984 00:47:27,930 --> 00:47:30,260 at hindi kailanman Inilunsad dahil sa isang software flaw. 985 00:47:30,260 --> 00:47:34,060 986 00:47:34,060 --> 00:47:38,880 >> Ito ay ang Israelis na unang natuklasan na kung mas matagal ang system ay noong, 987 00:47:38,880 --> 00:47:41,130 ang mas malaki ang naging pagkakaiba sa oras. 988 00:47:41,130 --> 00:47:44,770 Dahil sa isang orasan na naka-embed sa computer ng system. 989 00:47:44,770 --> 00:47:48,190 >> -About Dalawang linggo bago ang trahedya sa Dhahran, 990 00:47:48,190 --> 00:47:50,720 ang Israelis iniulat sa ang Defense Department 991 00:47:50,720 --> 00:47:52,410 na ang system ay nawawalan ng oras. 992 00:47:52,410 --> 00:47:54,410 Matapos ang tungkol sa walong oras ng pagtakbo, napansin nila 993 00:47:54,410 --> 00:47:57,690 na ang system na magiging kapansin-pansing hindi gaanong tumpak. 994 00:47:57,690 --> 00:48:01,850 Ang Defense Department tumugon sa pamamagitan ng na nagsasabi sa lahat ng mga baterya Patriot 995 00:48:01,850 --> 00:48:04,800 upang hindi iwan ang mga sistema ng sa para sa isang mahabang panahon. 996 00:48:04,800 --> 00:48:06,980 Hindi kailanman sila ay sinabi kung ano ng mahabang panahon ay. 997 00:48:06,980 --> 00:48:09,140 8 oras, 10 oras, isang libong oras. 998 00:48:09,140 --> 00:48:11,300 Alam Walang sinuman. 999 00:48:11,300 --> 00:48:13,320 >> -Ang Baterya Patriot stationed sa kuwartel 1000 00:48:13,320 --> 00:48:18,310 sa Dhahran at ang mga flawed panloob orasan ay hindi naging sa para sa higit sa 100 oras 1001 00:48:18,310 --> 00:48:21,520 sa gabi ng Pebrero 25. 1002 00:48:21,520 --> 00:48:25,792 >> -It Sinusubaybayan oras sa isang katumpakan ng tungkol sa 1/10 ng isang segundo. 1003 00:48:25,792 --> 00:48:27,950 Ngayon 1/10 ng isang segundo ay isang kawili-wiling mga numero 1004 00:48:27,950 --> 00:48:31,850 dahil hindi ito maaaring ipinahayag sa binary eksakto, na 1005 00:48:31,850 --> 00:48:36,500 nangangahulugan hindi ito maaaring ipinahayag nang eksakto sa anumang modernong digital computer. 1006 00:48:36,500 --> 00:48:41,070 Ito ay mahirap na paniwalaan, ngunit gamitin ito bilang isang halimbawa. 1007 00:48:41,070 --> 00:48:43,420 >> Tingnan natin ang bilang isang-katlo. 1008 00:48:43,420 --> 00:48:47,330 Isang-katlo ay hindi maaaring maging ipinahayag nang eksakto sa decimal. 1009 00:48:47,330 --> 00:48:52,060 Isang-katlo ay .333 pagpunta sa para sa infinity. 1010 00:48:52,060 --> 00:48:56,420 Walang paraan upang gawin na may ganap na kawastuhan sa isang decimal. 1011 00:48:56,420 --> 00:48:59,530 Iyon ang eksaktong ng uri ng problema na nangyari sa Patriot. 1012 00:48:59,530 --> 00:49:04,040 Pinatatakbo ng mas mahabang system, ang mas masahol pa ay naging ang error oras. 1013 00:49:04,040 --> 00:49:08,840 >> -After 100 oras ng pagpapatakbo, ang error sa panahon noon ay lamang tungkol sa isang-katlo 1014 00:49:08,840 --> 00:49:10,440 ng isang segundo. 1015 00:49:10,440 --> 00:49:14,150 Ngunit sa mga tuntunin ng pag-target sa isang misayl na naglalakbay sa Mach 5, 1016 00:49:14,150 --> 00:49:18,560 ito nagresulta sa pagsubaybay error ng higit sa 600 metro. 1017 00:49:18,560 --> 00:49:21,870 Ito ay maging isang malalang error para sa mga sundalo sa Dhahran. 1018 00:49:21,870 --> 00:49:28,455 >> Nangyari -What ay isang paglunsad Scud noon ay nakita ng maagang babala satellite, 1019 00:49:28,455 --> 00:49:32,710 at alam nila ang isang Scud ay darating sa kanilang pangkalahatang direksyon. 1020 00:49:32,710 --> 00:49:35,150 Hindi nila alam kung saan ito ay darating. 1021 00:49:35,150 --> 00:49:38,210 Ito ay ngayon hanggang sa radar component ng Patriot sistema 1022 00:49:38,210 --> 00:49:43,150 pagtatanggol Dhahran upang mahanap at mapanatili ang subaybayan ang mga papasok na misayl kaaway. 1023 00:49:43,150 --> 00:49:44,561 >> -Ang Radar noon ay napaka-smart. 1024 00:49:44,561 --> 00:49:46,560 Gusto talaga ito subaybayan ang posisyon ng Scud 1025 00:49:46,560 --> 00:49:48,930 at pagkatapos ay hulaan kung saan marahil ito ay magiging 1026 00:49:48,930 --> 00:49:51,380 sa susunod na oras ang Ipinadala ang radar ng pulso out. 1027 00:49:51,380 --> 00:49:53,040 Iyon ay tinawag ang hanay ng gate. 1028 00:49:53,040 --> 00:49:57,620 >> -Then Sa sandaling ang Patriot Nagpasya ng sapat na panahon ay 1029 00:49:57,620 --> 00:50:02,400 pumasang upang bumalik at suriin ang susunod na lokasyon para sa Nakita bagay 1030 00:50:02,400 --> 00:50:03,550 ito napupunta pabalik. 1031 00:50:03,550 --> 00:50:07,820 Kaya kapag ito nagpunta pabalik sa maling lugar, makakakita nito pagkatapos ay walang mga bagay. 1032 00:50:07,820 --> 00:50:10,360 At ito ay nagpasiya na walang bagay. 1033 00:50:10,360 --> 00:50:13,630 Na nagkaroon ng isang maling pag-detect at ito ay bumaba ang track. 1034 00:50:13,630 --> 00:50:16,970 >> -Ang Papasok na Scud naglaho mula sa screen ng radar, 1035 00:50:16,970 --> 00:50:20,200 at segundo sa ibang pagkakataon, ito slammed sa kuwartel. 1036 00:50:20,200 --> 00:50:22,570 Ang Scud pinatay 28. 1037 00:50:22,570 --> 00:50:26,110 Ito ay ang huli fired sa loob ng unang Digmaang Gulf. 1038 00:50:26,110 --> 00:50:31,920 Tragically, ang na-update ng software Dumating ito sa bukang-liwayway sa susunod na araw. 1039 00:50:31,920 --> 00:50:34,870 Ang software flaw nagkaroon naging nakapirming, pansarang tag na 1040 00:50:34,870 --> 00:50:39,150 isa kabanata sa Problema kasaysayan ng Patriot misayl. 1041 00:50:39,150 --> 00:50:40,030 >> [END VIDEO pag-playback] 1042 00:50:40,030 --> 00:50:41,488 >> David J. MALAN: Iyon lang para sa CS50. 1043 00:50:41,488 --> 00:50:42,820 Makikita natin sa iyo sa Miyerkules. 1044 00:50:42,820 --> 00:50:46,420 1045 00:50:46,420 --> 00:50:50,370 >> [Musika nagpe-play] 1046 00:50:50,370 --> 00:54:23,446