1 00:00:00,000 --> 00:00:10,940 2 00:00:10,940 --> 00:00:13,060 >> DAVID J MALAN: Ang lahat karapatan, sa gayon ito ay CS50. 3 00:00:13,060 --> 00:00:15,040 At ito ay malinaw na ang isang Biyernes. 4 00:00:15,040 --> 00:00:16,850 At ito ay ang katapusan ng linggo ng isa. 5 00:00:16,850 --> 00:00:21,020 Kaya maaari mong isipin na iniwanan namin off, huling panahon, na may isang cliffhanger ng masama. 6 00:00:21,020 --> 00:00:25,020 Kung saan namin ilantad ang kasinungalingan, na walang kahit na ano ang iyong na-itinuro lumalagong 7 00:00:25,020 --> 00:00:31,610 up, 1 hinati sa 10 ay hindi, sa katunayan, 0.1 o 0.100 o 0.10000. 8 00:00:31,610 --> 00:00:35,270 Sa katunayan, kung compile namin ito program, tulad ng ginawa namin kahapon, sa, 9 00:00:35,270 --> 00:00:39,770 gumawa imprecision, at pagkatapos ay gawin tuldok, slash, imprecision, 10 00:00:39,770 --> 00:00:43,600 nalaman namin na ito ay kung ano ang 1 hinati sa 10 ay tunay. 11 00:00:43,600 --> 00:00:46,140 Kaya na hindi talaga lubos na ang kaso. 12 00:00:46,140 --> 00:00:49,014 Ngunit ito ay pahiwatig sa ilang pangunahing limitasyon ng mga computer. 13 00:00:49,014 --> 00:00:50,930 At sa katunayan, sa gitna ng bagay na kami ay pagpunta sa gawin 14 00:00:50,930 --> 00:00:55,130 ngayon ay kumuha ng isang pagtingin sa kung bakit ito ay may ang nangyari, kung ano ang mga implikasyon na ito ay, 15 00:00:55,130 --> 00:00:58,430 kung paano ang sangkatauhan ay nabigo hawakang mahigpit na ito sa ilang mga napaka 16 00:00:58,430 --> 00:01:00,410 malubhang situations-- ang resulta ng kung saan 17 00:01:00,410 --> 00:01:03,141 ay lubos na trahedya at expensive-- at din 18 00:01:03,141 --> 00:01:04,849 kumuha ng isang pagtingin sa kung paano namin aktwal na maaaring ipagtanggol 19 00:01:04,849 --> 00:01:06,530 laban sa mga uri ng mga limitasyon. 20 00:01:06,530 --> 00:01:10,940 Kaya intuitively, marahil, kung bakit ay 1 hinati sa 10, 21 00:01:10,940 --> 00:01:15,480 ayon sa aking computer dito, hindi lamang ang 1/10, 0.10? 22 00:01:15,480 --> 00:01:15,980 Oo. 23 00:01:15,980 --> 00:01:16,530 Ano sa tingin mo? 24 00:01:16,530 --> 00:01:17,860 >> Madla MIYEMBRO: ugat ay naiiba? 25 00:01:17,860 --> 00:01:18,550 >> DAVID J MALAN: Ang ano? 26 00:01:18,550 --> 00:01:19,730 Oh, ang mga ugat ay iba? 27 00:01:19,730 --> 00:01:20,720 Kaya hindi lubos. 28 00:01:20,720 --> 00:01:23,200 Ito ay talagang mas pangunahing sa hardware. 29 00:01:23,200 --> 00:01:23,980 Iba pang mga saloobin? 30 00:01:23,980 --> 00:01:24,584 Oo. 31 00:01:24,584 --> 00:01:26,750 Madla MIYEMBRO: Sila kumakatawan numero naiiba? 32 00:01:26,750 --> 00:01:27,880 DAVID J MALAN: Kaya they-- Karapatan. 33 00:01:27,880 --> 00:01:29,338 Sila ay kumakatawan sa mga numero na naiiba. 34 00:01:29,338 --> 00:01:30,700 Hindi tumpak, tila. 35 00:01:30,700 --> 00:01:33,190 Kaya na is-- Well, naiiba mula sa kung ano? 36 00:01:33,190 --> 00:01:34,490 O mula kanino? 37 00:01:34,490 --> 00:01:35,050 Mula sa amin? 38 00:01:35,050 --> 00:01:35,966 Madla MIYEMBRO: Oo. 39 00:01:35,966 --> 00:01:38,930 Hindi nila gamitin decimal system upang [hindi marinig]. 40 00:01:38,930 --> 00:01:39,680 DAVID J MALAN: OK. 41 00:01:39,680 --> 00:01:41,560 Kaya sa isang katuturan, hindi sila gamitin ang decimal system. 42 00:01:41,560 --> 00:01:43,720 Sa ilalim ng hood, lahat ng bagay ay, sa katunayan, binary, 43 00:01:43,720 --> 00:01:45,510 at na ang mga kaugnay na, sa katunayan. 44 00:01:45,510 --> 00:01:48,135 Ngunit ito ay mas ng isang mas simpleng paliwanag kaysa. 45 00:01:48,135 --> 00:01:48,635 Oo. 46 00:01:48,635 --> 00:01:49,970 >> Madla MIYEMBRO: Sila lamang magkaroon ng maraming mga bits. 47 00:01:49,970 --> 00:01:52,370 Sila ay maaari lamang mag-imbak ng hanggang sa isang tiyak na lawak, tulad ng sa mga decimal. 48 00:01:52,370 --> 00:01:52,780 >> DAVID J MALAN: Oo. 49 00:01:52,780 --> 00:01:54,420 Ito ay kung ano talaga ang nakakakuha at ito. 50 00:01:54,420 --> 00:01:57,180 Lumalabas na mga computer kadalasan, ay palaging lamang 51 00:01:57,180 --> 00:01:59,690 gumamit ng isang tiyak na halaga ng impormasyon upang kumatawan ng isang bagay. 52 00:01:59,690 --> 00:01:59,870 Right? 53 00:01:59,870 --> 00:02:02,110 Pagkatapos ng lahat, kami lamang magkaroon ng isang nakapirming halaga ng puwang sa hard disk. 54 00:02:02,110 --> 00:02:04,210 Kami lamang magkaroon ng isang takdang halaga ng RAM, o computer memory. 55 00:02:04,210 --> 00:02:06,251 At kung mayroon ka lamang ng isang nakapirming halaga ng isang bagay, 56 00:02:06,251 --> 00:02:09,611 tiyak na hindi ka maaaring aktwal na bilang ng hanggang sa kawalang-hanggan o anumang bilang gusto mo. 57 00:02:09,611 --> 00:02:11,610 Ikaw, uri ng, kung piliin kung ano ang range 58 00:02:11,610 --> 00:02:13,220 ng halaga ang iyong pagpunta sa suporta. 59 00:02:13,220 --> 00:02:18,100 >> At kaya halimbawa, sa isang linggo o dalawang nakalipas, kapag usapan natin ang tungkol ASCII, 60 00:02:18,100 --> 00:02:21,610 at usapan natin ang tungkol sa 8 bits, o isang byte, kaya na magsalita, 61 00:02:21,610 --> 00:02:26,360 ang pinakamalaking bilang ng dati namin kumakatawan na may 8 bits ay kung ano? 62 00:02:26,360 --> 00:02:28,350 255. 63 00:02:28,350 --> 00:02:31,850 At maaari naming kumakatawan 256 kabuuang mga halaga ngunit hindi kung gastusin namin ang isa sa kanila 64 00:02:31,850 --> 00:02:34,190 on 0-- Well, ngunit kung tayo gumastos ng isa sa mga ito sa 0, 65 00:02:34,190 --> 00:02:36,830 pagkatapos ay ang pinakamalaking bilang ay, of course, 255. 66 00:02:36,830 --> 00:02:39,410 >> Kaya ito ay lumiliko out, na ito ay kaso masyadong, sa ganitong konteksto. 67 00:02:39,410 --> 00:02:42,350 Sinimulan namin ang pakikipag-usap, huling oras, tungkol sa mga lumulutang-point numero, na kung saan 68 00:02:42,350 --> 00:02:44,640 ay naiiba mula sa integer, sa na sila ng isang decimal point 69 00:02:44,640 --> 00:02:47,056 at, sana, ang ilang mga numero matapos na, ngunit masyadong sila. 70 00:02:47,056 --> 00:02:51,730 Ang isang computer ay karaniwang lamang ang pagpunta gamitin 32 bits, marahil 64 bits 71 00:02:51,730 --> 00:02:53,497 upang kumatawan sa isang lumulutang na halaga ng point. 72 00:02:53,497 --> 00:02:56,080 Kaya kahit na kami ay lumago up pag-aaral ng matematika at pag-alam 73 00:02:56,080 --> 00:02:58,750 na maaari mong ganap na walang may isang walang-katapusang bilang ng mga numero 74 00:02:58,750 --> 00:03:01,650 pagkatapos ng decimal point, hindi kung ikaw ay may hangganan memory. 75 00:03:01,650 --> 00:03:03,930 Ikaw, uri ng, kung isalin, o piliin kung aling mga 76 00:03:03,930 --> 00:03:05,346 numero ikaw ay pagpunta sa kumakatawan. 77 00:03:05,346 --> 00:03:08,710 At upang maaari mong isipin, sa isang kahulugan, ito ay ang computer na pinakamalapit 78 00:03:08,710 --> 00:03:14,050 pagtatantya sa halaga 1/10 na maaari itong makuha, may 32 lang o kaya bits. 79 00:03:14,050 --> 00:03:15,300 At ito ay hindi 1/10 lamang. 80 00:03:15,300 --> 00:03:19,820 >> Halimbawa, kung binago ko ito sa 1/3, na sa palagay namin ay kahit na mas simple. 81 00:03:19,820 --> 00:03:21,300 Kaya 1 hinati sa 3. 82 00:03:21,300 --> 00:03:22,355 Hayaan akong i-save ang file. 83 00:03:22,355 --> 00:03:24,680 Hayaan akong sige at mag-recompile ito. 84 00:03:24,680 --> 00:03:25,820 At hayaan mo akong muling patakbuhin ito. 85 00:03:25,820 --> 00:03:30,000 Dito rin, tila, 1/3 ay hindi 0.3 at pagkatapos ay isang walang-katapusang bilang ng mga 3 ni 86 00:03:30,000 --> 00:03:30,770 pagkatapos noon. 87 00:03:30,770 --> 00:03:32,540 Mayroon kang ito imprecision sa dulo. 88 00:03:32,540 --> 00:03:35,544 Kaya namin ang mga tao ay tama, at kung ano ang ang iyong natutunan ay, sa katunayan, tama, 89 00:03:35,544 --> 00:03:37,460 ngunit na dakdak namin up laban sa ilang mga limitasyon. 90 00:03:37,460 --> 00:03:39,420 >> At kung ano ang naisip ko Gusto naming gawin ngayon, ay magsisimulang 91 00:03:39,420 --> 00:03:42,190 sa pamamagitan ng pagtingin, lantaran, ang trahedya kahihinatnan ng mga ito 92 00:03:42,190 --> 00:03:45,490 kung minsan, kapag ang sangkatauhan Mukhang hindi ito ipatupad 93 00:03:45,490 --> 00:03:48,460 para sa mga ito sa katotohanan at ang mga limitasyon. 94 00:03:48,460 --> 00:03:52,360 At kami na makita ang isang serye ng vignettes mula sa kasaysayan ng channel na tumatagal 95 00:03:52,360 --> 00:03:53,950 ng isang pagtingin sa kung paano mga bagay ay wala na mali. 96 00:03:53,950 --> 00:03:56,340 Ito ay tungkol sa 8 minuto ang haba, at kami ay bumalik pagkatapos nito 97 00:03:56,340 --> 00:03:59,439 at tingnan ang eksaktong kung ano pa ang maaaring magkamali. 98 00:03:59,439 --> 00:04:00,605 Kung maaari naming madilim ang lights-- 99 00:04:00,605 --> 00:04:02,350 >> [Playback ng video] 100 00:04:02,350 --> 00:04:06,310 >> -Computers, Lahat tayo ay nakakita na tanggapin ang madalas na nakakabigo problema na 101 00:04:06,310 --> 00:04:07,750 pumunta sa kanila. 102 00:04:07,750 --> 00:04:11,370 Mga bug, mga virus, at software glitches ay maliit na mga presyo 103 00:04:11,370 --> 00:04:13,230 magbayad para sa kaginhawaan. 104 00:04:13,230 --> 00:04:17,519 Ngunit sa high-tech at high-speed militar at space program application, 105 00:04:17,519 --> 00:04:22,130 ang pinakamaliit na problema na maaari maging Pinalaking sa kalamidad. 106 00:04:22,130 --> 00:04:27,750 Sa Hunyo 4, 1996, na inihanda siyentipiko na maglunsad ng isang pinuno ang mga tauhan Ariane 5 rocket. 107 00:04:27,750 --> 00:04:29,890 Ito ay nagdadala ng agham satellite dinisenyo 108 00:04:29,890 --> 00:04:33,030 upang magtatag ng mga tiyak na kung paano ang Magnetic field nakikipag-ugnayan Earth 109 00:04:33,030 --> 00:04:35,600 may solar wind. 110 00:04:35,600 --> 00:04:37,930 Rocket ay ginawa para sa European Space Agency 111 00:04:37,930 --> 00:04:41,620 at itinaas off mula sa kanyang pasilidad sa baybayin ng French Guiana. 112 00:04:41,620 --> 00:04:44,924 >> -At Sa mga 30 segundo sa ang flight, sila muna 113 00:04:44,924 --> 00:04:46,340 Napansin ng isang bagay ay pagpunta mali. 114 00:04:46,340 --> 00:04:49,280 Na ang nozzles ay swiveling sa isang paraan na sila ay talagang hindi dapat. 115 00:04:49,280 --> 00:04:53,042 Around 40 segundo sa flight, malinaw na ang sasakyan ay may problema, 116 00:04:53,042 --> 00:04:55,250 at na kapag ginawa nila ang desisyon upang wasakin ito. 117 00:04:55,250 --> 00:04:58,970 A Range Safety Officer sa napakalaking tapang pinindot ang button, 118 00:04:58,970 --> 00:05:03,940 hinipan up ang rocket bago ito ay maaaring maging isang panganib sa kaligtasan ng publiko. 119 00:05:03,940 --> 00:05:06,600 >> -Ang Ay ang maiden paglalayag ng Ariane 5, 120 00:05:06,600 --> 00:05:09,270 at kinuha nito pagkawasak ilagay dahil sa isang lamat 121 00:05:09,270 --> 00:05:10,992 naka-embed sa mga software sa rocket ni. 122 00:05:10,992 --> 00:05:12,700 -Ang Problema sa Ariane ay na may 123 00:05:12,700 --> 00:05:15,370 ay isang numero na kinakailangan 64 bits upang ipahayag, 124 00:05:15,370 --> 00:05:18,150 at nais niyang mag-convert ito sa isang 16 bit na numero. 125 00:05:18,150 --> 00:05:21,160 Sila ipinapalagay na ang bilang ay hindi kailanman magiging masyadong malaki, 126 00:05:21,160 --> 00:05:25,020 na ang karamihan ng mga numero sa ang 64 bit na numero ay 0 ni. 127 00:05:25,020 --> 00:05:26,310 Sila ay mali. 128 00:05:26,310 --> 00:05:28,680 >> -Ang Kawalan ng kakayahan ng isang software program upang tanggapin 129 00:05:28,680 --> 00:05:32,820 ang mga uri ng bilang na nabuo sa pamamagitan ng isa pa ay sa ugat ng mga kabiguan. 130 00:05:32,820 --> 00:05:37,190 Software pag-unlad ay naging isang masyadong magastos bahagi ng mga bagong teknolohiya. 131 00:05:37,190 --> 00:05:40,760 Ang Ariane 4 rocket ay napaka matagumpay, kaya magkano ng software 132 00:05:40,760 --> 00:05:43,990 nilikha para sa mga ito ay din ng ginagamit sa Ariane 5. 133 00:05:43,990 --> 00:05:49,750 >> -Ang Pangunahing problema ay na ang Ariane 5 ay mas mabilis, mas pinabilis na mas mabilis. 134 00:05:49,750 --> 00:05:53,000 At ang mga software ay hindi alang para sa na. 135 00:05:53,000 --> 00:05:56,330 >> -Ang Pagkawasak ng rocket ay isang malaking pinansiyal na kalamidad, 136 00:05:56,330 --> 00:05:59,670 lahat dahil sa isang error minutong software. 137 00:05:59,670 --> 00:06:01,990 Ngunit hindi ito ang unang time problema sa data ng conversion 138 00:06:01,990 --> 00:06:05,310 nagkaroon plagued modernong teknolohiya rocket. 139 00:06:05,310 --> 00:06:08,300 >> -Sa 1991, sa simula ng Unang Gulf War, 140 00:06:08,300 --> 00:06:10,650 Patriot missile nakaranas ng isang katulad na uri 141 00:06:10,650 --> 00:06:12,650 ng numero ng problema sa conversion. 142 00:06:12,650 --> 00:06:15,620 Bilang isang resulta, 28 tao, 28 mga sundalong Amerikano 143 00:06:15,620 --> 00:06:18,440 ay namatay at tungkol sa 100 iba pa ang nasugatan, 144 00:06:18,440 --> 00:06:21,900 kapag ang Patriot, kung saan ay dapat upang maprotektahan laban sa mga papasok na scuds, 145 00:06:21,900 --> 00:06:24,630 Nabigo sa sunog isang misayl. 146 00:06:24,630 --> 00:06:29,440 >> -Kapag Iraq invaded Kuwait at Amerika inilunsad Desert Storm sa unang bahagi ng 1991, 147 00:06:29,440 --> 00:06:33,800 Patriot misayl baterya ay deploy upang protektahan ang Saudi Arabia at Israel 148 00:06:33,800 --> 00:06:37,000 mula sa Iraqi atake malaking ulan misayl. 149 00:06:37,000 --> 00:06:40,610 Ang Patriot ay isang US, medium-range ibabaw-to-air system 150 00:06:40,610 --> 00:06:43,010 panindang ng kumpanya Raytheon. 151 00:06:43,010 --> 00:06:49,080 >> -Ang Laki ng Patriot interceptor, mismo, ay tungkol sa, humigit-kumulang 20 talampakan ang haba. 152 00:06:49,080 --> 00:06:51,250 At ito weighs tungkol sa 2000 pounds. 153 00:06:51,250 --> 00:06:55,195 At ito ay nagdadala ng isang warhed ng about-- Sa tingin ko ito ay halos 150 pounds. 154 00:06:55,195 --> 00:06:59,500 At ang warhed, mismo, ay isang mataas na paputok, 155 00:06:59,500 --> 00:07:02,570 kung saan ay may fragment sa paligid nito. 156 00:07:02,570 --> 00:07:06,890 Ang casing ng warhed ay dinisenyo upang kumilos tulad buckshot. 157 00:07:06,890 --> 00:07:09,130 >> -Ang Missiles ay natupad, 4 per container, 158 00:07:09,130 --> 00:07:12,080 at transported sa pamamagitan ng isang semi-trailer. 159 00:07:12,080 --> 00:07:19,100 >> -Ang Patriot anti misayl sistema napupunta likod ng hindi bababa sa 20 taon na ngayon. 160 00:07:19,100 --> 00:07:22,320 Ito ay orihinal na idinisenyo bilang isang air pagtatanggol misayl 161 00:07:22,320 --> 00:07:24,180 mag-shoot down kaaway eroplano. 162 00:07:24,180 --> 00:07:27,860 Sa Unang Gulf War, kapag digmaan na dumating kasama, 163 00:07:27,860 --> 00:07:32,745 ang Army nais na gamitin ito upang shoot down scuds, hindi eroplano. 164 00:07:32,745 --> 00:07:36,150 Ang Iraqi Force ay hindi kaya marami ng isang problema, 165 00:07:36,150 --> 00:07:39,110 ngunit ang Army ay nag-aalala tungkol sa scuds. 166 00:07:39,110 --> 00:07:42,340 At kaya sinubukan nilang i-upgrade ang Patriot. 167 00:07:42,340 --> 00:07:44,760 >> -Intercepting Isang kaaway misayl na naglalakbay sa Mach limang 168 00:07:44,760 --> 00:07:47,250 ay magiging sapat na hamon. 169 00:07:47,250 --> 00:07:50,000 Ngunit kapag ang mga taong makabayan ay rushed sa serbisyo, 170 00:07:50,000 --> 00:07:54,030 ang Army ay hindi alam ng isang Iraqi pagbabago na ginawa 171 00:07:54,030 --> 00:07:56,840 kanilang scuds halos imposible upang maabot. 172 00:07:56,840 --> 00:08:01,020 >> Ano-ang nangyari, ay ang scuds na ay darating sa, ay hindi matatag, 173 00:08:01,020 --> 00:08:02,310 sila ay wobbling. 174 00:08:02,310 --> 00:08:05,140 Ang dahilan sa ito, ay ang Iraqis, upang 175 00:08:05,140 --> 00:08:09,450 upang makakuha ng 600 kilometro sa labas ng isang 300 kilometro hanay ng misayl, 176 00:08:09,450 --> 00:08:12,930 Kinuha timbang sa labas ng front warhed at ginawa lighter ang warhed. 177 00:08:12,930 --> 00:08:17,710 Kaya ngayon, ang mga taong makabayan ni sinusubukang magkaroon sa malaking ulan, at ang karamihan ng oras, 178 00:08:17,710 --> 00:08:21,700 ang napakalaki karamihan ng mga panahon, ito ay lumipad sa pamamagitan lamang ng malaking ulan. 179 00:08:21,700 --> 00:08:25,700 >> -Kapag Ang sistema operator Patriot natanto nasagot ang Patriot target nito, 180 00:08:25,700 --> 00:08:29,790 sila mina warhed ang Patriot ni, upang maiwasan ang mga posibleng casualties kung ito 181 00:08:29,790 --> 00:08:32,380 ay pinahihintulutan na mahulog sa lupa. 182 00:08:32,380 --> 00:08:36,340 >> -Na Kung ano ang nakita karamihan ng mga tao, mga malaking fireballs sa kalangitan, 183 00:08:36,340 --> 00:08:41,289 at gusot bilang intercepts ng malaking ulan warheads. 184 00:08:41,289 --> 00:08:43,590 Kahit na sa gabi kalangitan, lumitaw Patriots 185 00:08:43,590 --> 00:08:47,020 Matagumpay na pagsira scuds, sa Dhahran, 186 00:08:47,020 --> 00:08:49,730 doon ay maaaring walang pagkakamali tungkol sa pagganap nito. 187 00:08:49,730 --> 00:08:53,990 Doon, radar system ang Patriot ni nawala ang pagsubaybay ng isang papasok na malaking ulan, 188 00:08:53,990 --> 00:08:56,650 at hindi kailanman inilunsad, dahil sa isang software depekto. 189 00:08:56,650 --> 00:08:59,650 190 00:08:59,650 --> 00:09:04,100 Ito ay ang Israelis na unang natuklasan na ang mga na ang sistema ay sa, 191 00:09:04,100 --> 00:09:07,510 ang mas higit na pagkakaiba ng oras naging, dahil sa isang orasan na naka-embed 192 00:09:07,510 --> 00:09:09,490 sa computer ng system. 193 00:09:09,490 --> 00:09:12,670 >> -About 2 linggo bago trahedya sa Dhahran, 194 00:09:12,670 --> 00:09:15,010 ang Israelis iniulat sa ang Defense Department, 195 00:09:15,010 --> 00:09:17,940 na ang sistema ay mawala ang oras, na matapos ang tungkol sa 8 oras ng tumatakbo, 196 00:09:17,940 --> 00:09:21,410 sila napansin na ang sistema ay nagiging kapansin-pansing mas tumpak. 197 00:09:21,410 --> 00:09:25,290 Ang Defense Department tumugon sa pamamagitan ng na nagsasabi sa lahat ng mga baterya Patriot 198 00:09:25,290 --> 00:09:28,070 na hindi iwan ang system sa para sa isang mahabang panahon. 199 00:09:28,070 --> 00:09:29,960 Hindi kailanman sila sinabi kung ano ng mahabang panahon ay. 200 00:09:29,960 --> 00:09:30,460 8 oras? 201 00:09:30,460 --> 00:09:30,960 10 oras? 202 00:09:30,960 --> 00:09:31,870 1000 na oras? 203 00:09:31,870 --> 00:09:33,734 Walang alam. 204 00:09:33,734 --> 00:09:35,650 -Ang Baterya Patriot puwesto sa kuwartel 205 00:09:35,650 --> 00:09:40,410 sa Dhahran, at ang mga flawed panloob orasan, ay sa higit sa 100 oras 206 00:09:40,410 --> 00:09:43,041 sa gabi ng Pebrero 25. 207 00:09:43,041 --> 00:09:47,416 >> Nag sinusubaybayan oras sa isang kawastuhan ng tungkol sa 1/10 ng isang segundo. 208 00:09:47,416 --> 00:09:49,290 Ngayon 1/10 ng isang segundo ay isang nakawiwiling number 209 00:09:49,290 --> 00:09:52,700 dahil hindi ito maaaring maging ipinahayag sa binary, eksakto. 210 00:09:52,700 --> 00:09:54,820 Anong ibig sabihin nito, hindi na ito ipinahayag, eksakto, 211 00:09:54,820 --> 00:09:57,420 sa anumang modernong digital computer. 212 00:09:57,420 --> 00:10:01,460 Ito ay mahirap na paniwalaan, ngunit gamitin ito bilang isang halimbawa. 213 00:10:01,460 --> 00:10:03,520 Magpahinga ang numero, 1/3. 214 00:10:03,520 --> 00:10:07,110 1/3 ay hindi maaaring ipinahayag sa decimal, eksakto. 215 00:10:07,110 --> 00:10:11,490 1/3 ay 0.333 pagpunta sa para sa infinity. 216 00:10:11,490 --> 00:10:15,486 Walang paraan upang gawin iyon, na may ganap na kawastuhan, sa decimal. 217 00:10:15,486 --> 00:10:18,360 Iyon ang eksaktong parehong uri ng problema na nangyari sa mga taong makabayan. 218 00:10:18,360 --> 00:10:22,510 Bumangga Ang na sistema, ang mga mas masahol pa ang naging error oras. 219 00:10:22,510 --> 00:10:28,420 >> -After 100 oras ng pagpapatakbo, ang error in time ay lamang tungkol sa 1/3 ng isang segundo. 220 00:10:28,420 --> 00:10:31,830 Ngunit sa mga tuntunin ng pag-target ng isang misayl na naglalakbay sa Mach 5, 221 00:10:31,830 --> 00:10:35,890 ito ay nagdulot ng isang tracking error ng higit sa 600 metro. 222 00:10:35,890 --> 00:10:38,970 Gusto ito ay isang malalang error para sa mga sundalo sa Dhahran. 223 00:10:38,970 --> 00:10:45,035 >> Ano-ang nangyari, ay isang malaking ulan launch ay nakita ng maagang-babala satellite, 224 00:10:45,035 --> 00:10:48,930 at sila ay bagong na ang malaking ulan ay pagdating sa kanilang pangkalahatang direksyon. 225 00:10:48,930 --> 00:10:51,170 Hindi nila alam kung saan ito ay darating. 226 00:10:51,170 --> 00:10:53,990 >> Nag ay ngayon hanggang sa mga radar bahagi ng Patriot system, 227 00:10:53,990 --> 00:10:58,520 pagtatanggol Dhahran, upang hanapin at panatilihin subaybayan ng mga papasok na misayl kaaway. 228 00:10:58,520 --> 00:10:59,690 >> -Ang Radar ay napaka-smart. 229 00:10:59,690 --> 00:11:01,710 Gusto talaga itong subaybayan ang posisyon ng malaking ulan 230 00:11:01,710 --> 00:11:04,040 at pagkatapos ay hulaan kung saan marahil ito ay magiging, 231 00:11:04,040 --> 00:11:06,140 sa susunod na panahon, ang mga ipinadala radar ng pulso out. 232 00:11:06,140 --> 00:11:07,660 Iyon ay tinawag na hanay gate. 233 00:11:07,660 --> 00:11:11,870 >> -Then, Sa sandaling ang Patriot nagpapasya ng sapat na panahon ay 234 00:11:11,870 --> 00:11:16,280 lumipas na bumalik at suriin ang susunod na lokasyon para sa Nakita bagay, 235 00:11:16,280 --> 00:11:17,280 nito ay babalik. 236 00:11:17,280 --> 00:11:21,690 Kaya kapag ito ay bumalik sa mga maling lugar, nakikita pagkatapos ito hindi bagay 237 00:11:21,690 --> 00:11:25,230 at ito ay nagpasiya na walang bagay, ito ay isang maling detection, 238 00:11:25,230 --> 00:11:26,650 at bumaba ang mga track. 239 00:11:26,650 --> 00:11:29,690 Ang mga papasok na tumakbo Naglaho mula sa screen ng radar, 240 00:11:29,690 --> 00:11:32,670 at segundo mamaya, ito slammed sa kuta. 241 00:11:32,670 --> 00:11:38,100 Ang malaking ulan pumatay 28 at ang huling isa fired sa panahon ng Unang Digmaang Gulf. 242 00:11:38,100 --> 00:11:43,460 Nakalulungkot, ang mga update ng software Dumating ito sa Dhahran sa susunod na araw. 243 00:11:43,460 --> 00:11:46,150 Ang software depekto ay naging maayos, pagsasara 244 00:11:46,150 --> 00:11:48,940 isang kabanata sa gusot kasaysayan ng mga Patriot missile. 245 00:11:48,940 --> 00:11:50,220 >> [END playback] 246 00:11:50,220 --> 00:11:54,340 >> DAVID J MALAN: Kaya kami ay kumuha ng isang pagtingin sa ilang mga katulad na mga limitasyon sa ilang saglit lamang. 247 00:11:54,340 --> 00:11:58,470 Ngunit una, sabihin paglipat sa loob ng ilang Para sa Iyong Impormasyon kung. 248 00:11:58,470 --> 00:12:01,575 Kaya one-- ito katapusan ng linggo, may ay magiging sobrang seksyon, 249 00:12:01,575 --> 00:12:04,200 na kung saan ay sinadya upang palitan regular na naka-iskedyul na mga seksyon, na kung saan 250 00:12:04,200 --> 00:12:05,460 ay magsisimula up sa isang linggo mula ngayon. 251 00:12:05,460 --> 00:12:08,204 Tingnan ang website ng CS50 para sa karagdagang impormasyon sa mga iyon. 252 00:12:08,204 --> 00:12:11,120 Sila rin ay kinukunan at stream mabuhay para sa mga hindi na dumalo. 253 00:12:11,120 --> 00:12:12,980 Itakda Problema 1 ay sa website kurso na, 254 00:12:12,980 --> 00:12:15,105 at kami ay kumuha ng tumingin sa na sa loob lamang ng isang maliit na bit. 255 00:12:15,105 --> 00:12:18,350 At oras ng opisina masyadong, ay magdadala ang lugar na ito mula Lunes hanggang Huwebes. 256 00:12:18,350 --> 00:12:20,960 >> Kaya ito ay ang pinaka-canonical program itinuturing namin ang huling oras. 257 00:12:20,960 --> 00:12:23,590 Ito ay tulad ng ang pinakasimpleng program na maaari mong isulat sa C, 258 00:12:23,590 --> 00:12:25,250 at kahit na ang isang piraso ng isang naka-bold claim. 259 00:12:25,250 --> 00:12:25,750 Right? 260 00:12:25,750 --> 00:12:28,070 Dahil mayroong isang pulutong ng mga tila kumplikado na ito. 261 00:12:28,070 --> 00:12:30,445 Kaya sabihin kumuha ng isang mabilis na pagtingin sa ano ang ilan sa mga sangkap na ito 262 00:12:30,445 --> 00:12:33,080 ay at pagkatapos ay subukan na magbigay ng isang modelo ng kaisipan para sa kung paano 263 00:12:33,080 --> 00:12:35,710 mga pinakasimpleng ng mga programa trabaho, at pagkatapos ay gagamitin namin simulan 264 00:12:35,710 --> 00:12:38,050 pagtingin sa mga bagay kailanman mas kumplikadong. 265 00:12:38,050 --> 00:12:41,280 Kaya ito linya dito, naka-highlight na ngayon, sa dilaw, ano ang sinabi namin, huling oras, 266 00:12:41,280 --> 00:12:43,200 na ang nagagawa nito para sa atin? 267 00:12:43,200 --> 00:12:45,220 Ano ang layunin na ito ay nagsisilbi? 268 00:12:45,220 --> 00:12:46,984 Sinuman mula sa malayo sa likod? 269 00:12:46,984 --> 00:12:47,483 Oo. 270 00:12:47,483 --> 00:12:48,649 >> Madla MIYEMBRO: [hindi marinig] 271 00:12:48,649 --> 00:12:50,871 272 00:12:50,871 --> 00:12:51,704 DAVID J MALAN: Magandang. 273 00:12:51,704 --> 00:12:53,537 Kaya ito ay nagbibigay sa iyo ng access sa mga utos, o sabihin 274 00:12:53,537 --> 00:12:56,750 mga function na tawag sa kanila, na ang isang tao mga isinulat, na ipinahayag, 275 00:12:56,750 --> 00:12:58,350 wika nga, sa ilang mga iba pang mga file. 276 00:12:58,350 --> 00:13:02,370 Kaya makikita namin makita kung ano ang isang h file ay laban sa isang C file, sa kalaunan. 277 00:13:02,370 --> 00:13:04,710 Ngunit sa ngayon, malaman lamang na printf, halimbawa, 278 00:13:04,710 --> 00:13:08,370 ay kabilang ang mga function na ay ipinahayag sa ilang iba pang mga file, sa isang lugar 279 00:13:08,370 --> 00:13:12,930 pa sa hard drive ng ulap na ay nagbibigay-daan sa amin upang ma-access ang printf at gamitin ito 280 00:13:12,930 --> 00:13:15,240 nang hindi mag-reinvent na gulong ating sarili. 281 00:13:15,240 --> 00:13:16,930 Samantala, main. 282 00:13:16,930 --> 00:13:19,690 Ano ang analog ng main, noong nakaraang linggo? 283 00:13:19,690 --> 00:13:20,190 Oo. 284 00:13:20,190 --> 00:13:21,460 >> Madla MIYEMBRO: Green bandila ay nag-click. 285 00:13:21,460 --> 00:13:21,740 >> DAVID J MALAN: Oo. 286 00:13:21,740 --> 00:13:23,490 Scratch, kapag nag-click green flag. 287 00:13:23,490 --> 00:13:25,560 Ito ay tulad ng mga piraso ng puzzle na kicks bagay off. 288 00:13:25,560 --> 00:13:28,306 At kaya katulad, ginawa ang mundo nagpasya ang ilang mga taon na nakalipas na sa C, 289 00:13:28,306 --> 00:13:30,930 at isang bungkos ng iba pang mga wika, kung nais mong magsulat ng isang programa, 290 00:13:30,930 --> 00:13:33,410 ang iyong unang pag-andar Matagal na tinatawag, main. 291 00:13:33,410 --> 00:13:34,641 At ito ay upang maging ganito ang hitsura. 292 00:13:34,641 --> 00:13:36,640 Ngunit kami ay bumalik, sa ibang panahon, sa kung ano ang, int, 293 00:13:36,640 --> 00:13:38,690 at, walang bisa, ang ibig sabihin sa konteksto. 294 00:13:38,690 --> 00:13:42,860 Sa ngayon, ang curly braces mga uri ng tulad ng hugis piraso ng puzzle scratch 295 00:13:42,860 --> 00:13:45,080 na pinapalooban ang ilang bilang ng mga linya. 296 00:13:45,080 --> 00:13:47,070 At kabilang sa mga linya dito, ang isang ito dito. 297 00:13:47,070 --> 00:13:51,610 printf ay isang function na ang layunin sa buhay ay upang i-print ng isang format na string. 298 00:13:51,610 --> 00:13:55,010 At sa pamamagitan ng na-format, ibig sabihin ko sa iyo maaaring plug sa mga halaga ng placeholder, 299 00:13:55,010 --> 00:13:58,360 at maaari mong tukuyin kung gaano karaming decimal points, kung gaano karaming mga numero upang i-print 300 00:13:58,360 --> 00:14:00,040 pagkatapos ng decimal point at ang gusto. 301 00:14:00,040 --> 00:14:05,040 At printf, siyempre, ay tumatagal ng isa o higit pang mga argumento o mga parameter, 302 00:14:05,040 --> 00:14:06,770 sa kabilang banda na kilala, mas lamang, tulad ng input. 303 00:14:06,770 --> 00:14:09,230 >> Kaya printf, tulad ng maraming pag-andar, tumatagal ng input. 304 00:14:09,230 --> 00:14:12,730 At yaong mga input ay niyakap sa pamamagitan ng dalawang mga panaklong dito. 305 00:14:12,730 --> 00:14:15,180 At sa loob ng mga ito ay isa sa input. 306 00:14:15,180 --> 00:14:18,600 Ito ay isang string, bilang namin na tinatawag na ito, na kung saan ay isang pagkakasunod-sunod lamang ng mga character, 307 00:14:18,600 --> 00:14:22,310 tulad ng isang salita, o ng isang parirala, o ng isang buong sanaysay kahit na, sa pagitan ng double quotes. 308 00:14:22,310 --> 00:14:25,712 At na kung ano ang nangyayari sa impluwensiya ng pag-uugali ng printf dahil, siyempre, 309 00:14:25,712 --> 00:14:27,170 ito ay isang pangkaraniwang function print lamang. 310 00:14:27,170 --> 00:14:29,600 Ito ay hindi pagpunta upang malaman kung ano mag-print, maliban kung sabihin mo ito. 311 00:14:29,600 --> 00:14:31,000 At pagkatapos, ang ilang mga detalye. 312 00:14:31,000 --> 00:14:34,056 Ano ang sinabi namin ito kakaiba pagkakasunod-sunod ng mga simbolo ay? 313 00:14:34,056 --> 00:14:34,556 Oo. 314 00:14:34,556 --> 00:14:35,410 >> Madla MIYEMBRO: New linya. 315 00:14:35,410 --> 00:14:35,990 >> DAVID J MALAN: New linya. 316 00:14:35,990 --> 00:14:39,340 Kaya ito ay lumiliko out, hindi mo pwedeng pindutin ang, ipasok, kapag sumusulat ka sa programa. 317 00:14:39,340 --> 00:14:42,590 Sa pangkalahatan, ang tagatala ay pagpunta upang makakuha ng isang maliit na nalilito bilang sa kung ano ang ibig sabihin. 318 00:14:42,590 --> 00:14:45,340 Sa halip, kailangan mong literal sabihin, bigyan ako ng isang bagong linya dito. 319 00:14:45,340 --> 00:14:49,506 At kaya / n ay kung ano ang namin sa pangkalahatan tumawag sa isang escape character. 320 00:14:49,506 --> 00:14:50,870 Kaya n, para sa mga bagong linya. 321 00:14:50,870 --> 00:14:53,810 At alam ang compiler na kapag ito ay nakikita / n, 322 00:14:53,810 --> 00:14:57,420 ito ay dapat talagang magbuod ang computer, sa huli, o printf, sa kasong ito, 323 00:14:57,420 --> 00:15:00,260 upang i-print out ang isang aktwal na bagong linya, tulad ng pagpindot sa pindutang, ipasok, 324 00:15:00,260 --> 00:15:01,480 key sa iyong keyboard. 325 00:15:01,480 --> 00:15:05,620 At sa wakas, kung ano ang ginawa namin sabihin ito piraso ng syntax ay para sa? 326 00:15:05,620 --> 00:15:06,591 Ano ang ginagawa ng ito ay kumakatawan? 327 00:15:06,591 --> 00:15:07,090 Oo. 328 00:15:07,090 --> 00:15:07,490 >> Madla MIYEMBRO: [hindi marinig] 329 00:15:07,490 --> 00:15:08,660 >> DAVID J MALAN: Ito ay lamang sa dulo ng linya. 330 00:15:08,660 --> 00:15:09,909 Ito ay ang katapusan ng pahayag. 331 00:15:09,909 --> 00:15:11,890 At napagtanto na namin na hindi namin ilagay ang mga ito sa lahat ng dako. 332 00:15:11,890 --> 00:15:13,900 Kami ay tiyak na hindi ilagay ang mga ito sa dulo ng bawat linya. 333 00:15:13,900 --> 00:15:16,680 Halimbawa, mayroong wala sa unang linya, mayroong wala sa linya 334 00:15:16,680 --> 00:15:18,680 sa, main, may none pagkatapos ng curly braces, 335 00:15:18,680 --> 00:15:21,740 ngunit ikaw ay magsisimulang upang makita at makakuha ng pamilyar sa kung saan ito ay tinatawag na para sa. 336 00:15:21,740 --> 00:15:26,014 At ito ay halos palaging pagkatapos ng isang function tumawag o isang pahayag, ang ilang mga aksyon 337 00:15:26,014 --> 00:15:27,180 na ang tunay na ikaw ay pagkuha. 338 00:15:27,180 --> 00:15:29,520 >> At alam na ngayon, lalo na kung bukod sa mga mas kumportable, 339 00:15:29,520 --> 00:15:32,540 ito ay ang mga uri ng tangang bagay na makakapunta ka sinasadyang banging 340 00:15:32,540 --> 00:15:33,873 ang iyong ulo laban sa pader sa ibabaw. 341 00:15:33,873 --> 00:15:36,107 Dahil makikita mo ang lohikal tiwala sa ilang mga problema 342 00:15:36,107 --> 00:15:38,440 mo na lutasin para sa isang problema set, at ang sumpain bagay lamang 343 00:15:38,440 --> 00:15:40,187 hindi sumulat ng libro o kahit tumakbo. 344 00:15:40,187 --> 00:15:43,270 At kaya madalas, sa maagang bahagi, ito ay pagpunta sa maaaring dahil hindi nakuha ng isang panaklong, 345 00:15:43,270 --> 00:15:44,455 o ikaw ay hindi nakuha ng isang tuldok-kuwit. 346 00:15:44,455 --> 00:15:46,547 At kaya alintanahin lamang ng ganitong uri ng mga bagay-bagay, 347 00:15:46,547 --> 00:15:49,380 at subukan hindi upang makakuha ng bigo sa pamamagitan ng ang mga ito dahil masyadong mabilis gumagawa nito 348 00:15:49,380 --> 00:15:50,640 maging lumang sumbrero. 349 00:15:50,640 --> 00:15:53,910 Ngunit ito ay mas madali upang makakuha ng bigo sa maagang bahagi, bilang isang resulta. 350 00:15:53,910 --> 00:15:57,020 >> Kaya ngayon, sabihin kumuha ng isang pagtingin sa kung paano ang linyang ito ay aktwal na nagtatrabaho 351 00:15:57,020 --> 00:15:59,170 at pagkatapos ay tumingin sa isang bahagyang mas kumplikado isa. 352 00:15:59,170 --> 00:16:02,017 Kaya kami ay may higit sa dito, ang mga kakayahan upang gumuhit sa screen na ito. 353 00:16:02,017 --> 00:16:04,100 At sabihin ipagpalagay na ipaalam ito ay ang aking computer screen, 354 00:16:04,100 --> 00:16:08,589 ngunit ako ay sumusulat ang, hello program, at hindi ko pa ipinatupad, printf. 355 00:16:08,589 --> 00:16:10,130 May ibang tao ay ipinatupad, printf. 356 00:16:10,130 --> 00:16:12,420 Sino ang gusto upang i-claim sa Nagpatupad, printf? 357 00:16:12,420 --> 00:16:12,920 Kung maaari naming? 358 00:16:12,920 --> 00:16:13,830 Sige, ano ang pangalan mo? 359 00:16:13,830 --> 00:16:14,155 >> MAG-AARAL 1: [? Copal. ?] 360 00:16:14,155 --> 00:16:15,529 >> DAVID J MALAN: Copal, dumating sa up. 361 00:16:15,529 --> 00:16:16,430 Lumapit sa up. 362 00:16:16,430 --> 00:16:17,070 Ayos lang. 363 00:16:17,070 --> 00:16:22,260 Kaya kami, dito, ang ilang mga name tag, dahil kami ay gumawa ng isang maliit na laro ng mga ito. 364 00:16:22,260 --> 00:16:26,270 At kami ay tumawag sa iyo, printf. 365 00:16:26,270 --> 00:16:30,170 At kung nais mong dumating sa paglipas dito, kung ano lamang ko na inilabas sa screen, 366 00:16:30,170 --> 00:16:32,340 ito ay lubos na lamang, may akin, na ito. 367 00:16:32,340 --> 00:16:35,550 >> Lahat ng karapatan, kaya, hello ang aking pangalan ay, printf, kung gusto mo na ilagay na sa. 368 00:16:35,550 --> 00:16:35,740 Ayos lang. 369 00:16:35,740 --> 00:16:37,360 At kung maaari kang pumunta stand sa pamamagitan ng mga computer screen 370 00:16:37,360 --> 00:16:39,730 parang ikaw ang pag-andar na dumating na may ganitong sistema ng computer. 371 00:16:39,730 --> 00:16:42,063 At ang iyong mga layunin sa buhay ay upang aktwal na i-print ang isang bagay. 372 00:16:42,063 --> 00:16:44,560 Ngunit marami na tulad ng program namin nagkaroon lamang sa screen, dito, 373 00:16:44,560 --> 00:16:47,060 kami ay pagpunta sa may sa tunay na magbibigay sa iyo ng ilang mga input. 374 00:16:47,060 --> 00:16:51,810 >> At kaya, kung ang aking input, dito, ay tila, kung ano ang lumipas sa printf, 375 00:16:51,810 --> 00:16:53,730 ni uri ng mock up ito tulad nito ipaalam. 376 00:16:53,730 --> 00:16:58,720 Pupunta ako sa literal na magsulat sa isang piraso ng papel, "hello, world," 377 00:16:58,720 --> 00:17:03,020 backslash N. At upang maging malinaw, kung ano Lamang ko na inilabas sa ito piraso ng papel, 378 00:17:03,020 --> 00:17:04,020 ganito ang hitsura nito. 379 00:17:04,020 --> 00:17:08,730 Kaya kapag nagpatakbo ako ng programang ito, at ito dilaw na linya ng code ay naisakatuparan, 380 00:17:08,730 --> 00:17:12,970 ito ay parang ako, ang programa hello, am handing ilang input off sa isang function 381 00:17:12,970 --> 00:17:13,970 na may ibang tao sinulat ni. 382 00:17:13,970 --> 00:17:16,595 >> At kung ikaw, sa iyong mga daliri, dati talaga, gamit ang iyong daliri, 383 00:17:16,595 --> 00:17:21,520 gumuhit sa screen ano pa man ito ay ikaw ay nai-kamay, 384 00:17:21,520 --> 00:17:27,465 ang epekto, sa huli, ay upang makita ang eksakto na, sa screen. 385 00:17:27,465 --> 00:17:29,140 At isang Little corner kaso dito. 386 00:17:29,140 --> 00:17:31,540 At mabuti, hindi tayo dapat makita ang, ang mga bagong linya, sa puntong ito. 387 00:17:31,540 --> 00:17:33,900 Gusto Ito ay hindi tama para sa iyo upang tahasang gumuhit ng newline. 388 00:17:33,900 --> 00:17:36,810 Ngunit kung itinatago namin ang pagsusulat ng mga salita sa screen, sila end up sa ibaba na. 389 00:17:36,810 --> 00:17:39,560 >> Kaya mo salamat talaga, ngunit stick sa paligid dito para sa sandali lang. 390 00:17:39,560 --> 00:17:42,860 Kailangan namin ngayon ng isa sa iba pang mga volunteer, kung magagawa namin, 391 00:17:42,860 --> 00:17:46,830 na ang pagpunta sa kailangan upang i-play ang papel na ginagampanan of-- Ito ay lamang ng mga tao sa orchestra 392 00:17:46,830 --> 00:17:47,355 ngayon. 393 00:17:47,355 --> 00:17:47,980 Paano about-- OK. 394 00:17:47,980 --> 00:17:48,480 Right dito. 395 00:17:48,480 --> 00:17:49,180 Lumapit sa up. 396 00:17:49,180 --> 00:17:49,955 Ano ang inyong pangalan? 397 00:17:49,955 --> 00:17:50,922 >> ESTUDYANTE 2: [? Ivay. ?] 398 00:17:50,922 --> 00:17:51,796 DAVID J MALAN: Paumanhin? 399 00:17:51,796 --> 00:17:52,990 ESTUDYANTE 2: [? Ivay. ?] 400 00:17:52,990 --> 00:17:55,320 DAVID J MALAN: Ethan, dumating sa up. 401 00:17:55,320 --> 00:17:55,820 Hindi? 402 00:17:55,820 --> 00:17:58,390 Tama ba ako na mali, kahit na pagkatapos mong sinabi ito ng dalawang beses? 403 00:17:58,390 --> 00:17:58,890 Lumapit sa up. 404 00:17:58,890 --> 00:18:00,030 Ito ay mabuti upang marinig up dito. 405 00:18:00,030 --> 00:18:05,240 406 00:18:05,240 --> 00:18:05,740 OK. 407 00:18:05,740 --> 00:18:07,190 At Sorry, ano ang pangalan mo? 408 00:18:07,190 --> 00:18:07,680 >> ESTUDYANTE 2: [? Ivay. ?] 409 00:18:07,680 --> 00:18:08,790 >> [? DAVID J MALAN: Ivay. ?] OK. 410 00:18:08,790 --> 00:18:10,430 Para sa ngayon, kung hindi mo gusto isip, ikaw ay GetString. 411 00:18:10,430 --> 00:18:11,013 >> ESTUDYANTE 2: OK. 412 00:18:11,013 --> 00:18:11,797 Cool. 413 00:18:11,797 --> 00:18:14,630 DAVID J MALAN: Kaya kung nais mong tumayo dito para sa isang sandali lamang, 414 00:18:14,630 --> 00:18:17,100 sabihin kumuha ng isang pagtingin sa isang bahagyang mas kumplikadong programa, na 415 00:18:17,100 --> 00:18:18,670 na ngayon ay may tatlong linya ng code. 416 00:18:18,670 --> 00:18:24,080 Kaya kami, isa, estado ang iyong pangalan gamit printf; dalawang, ang tawag sa GetString, 417 00:18:24,080 --> 00:18:28,060 sinusundan ng isang pagtatalaga sa isang variable na tinatawag, string s, o tinatawag na s; 418 00:18:28,060 --> 00:18:31,260 at pagkatapos ay isa pang tawag sa, printf, ngunit oras na ito na may dalawang input. 419 00:18:31,260 --> 00:18:33,646 >> Kaya nagagawa namin ang estado ang iyong pangalan, o sa halip, na namin 420 00:18:33,646 --> 00:18:34,770 nagagawa ng printf tawag. 421 00:18:34,770 --> 00:18:38,960 Kaya ako pagpunta sa magsulat, ng estado ang iyong pangalan. 422 00:18:38,960 --> 00:18:42,089 At kaya, kung ano ako ng pagpunta sa pumasa, printf, sa sandali lamang, 423 00:18:42,089 --> 00:18:43,005 ay lubos na lamang, na ito. 424 00:18:43,005 --> 00:18:47,760 Kaya kung nais mong magpatuloy at gumuhit ito sa screen, na ang iyong input ngayon. 425 00:18:47,760 --> 00:18:48,260 Ayos lang. 426 00:18:48,260 --> 00:18:51,160 At kalimutan string, kami ngayon aming sariling linya ng code dito. 427 00:18:51,160 --> 00:18:54,470 Kaya in, GetString, kailangan namin sa tunay na tawag, GetString. 428 00:18:54,470 --> 00:18:57,920 Kaya ang iyong mga layunin sa buhay ay upang maglakad lamang out sa orchestra, kung maaari mong, 429 00:18:57,920 --> 00:18:58,980 at makakuha ng pangalan ng isang tao. 430 00:18:58,980 --> 00:19:00,860 Ngunit bigyan ni mong hayaan isang bagay upang ilagay ito sa. 431 00:19:00,860 --> 00:19:02,908 Kung nais mong, pumunta magpatuloy at makakuha ng isang string, 432 00:19:02,908 --> 00:19:05,241 makakuha ng pangalan ng isang tao sa na piraso ng papel, kung kaya mo. 433 00:19:05,241 --> 00:19:12,940 434 00:19:12,940 --> 00:19:13,530 >> Ayos lang. 435 00:19:13,530 --> 00:19:15,250 At kami na makita, sa sandali lamang, na ang pangalan namin nakukuha. 436 00:19:15,250 --> 00:19:17,630 Samantala, kung ano ako ng pagpunta sa Mayroon handa na, ay isang blangkong piraso 437 00:19:17,630 --> 00:19:21,340 ng papel, kung saan, pupuntahan ko sa tindahan ng kahit anong halaga na ito 438 00:19:21,340 --> 00:19:25,752 ay na GetString ay bumabalik sa akin, Ako, na isang string variable na tinatawag, s. 439 00:19:25,752 --> 00:19:26,252 Ayos lang. 440 00:19:26,252 --> 00:19:27,293 Kaya ano ang gagawin mo dito? 441 00:19:27,293 --> 00:19:27,950 Nik. 442 00:19:27,950 --> 00:19:28,450 Ayos lang. 443 00:19:28,450 --> 00:19:30,910 Kaya kami ay may pangalan Nik dito. 444 00:19:30,910 --> 00:19:33,750 Kaya ito ay kung ano ang literal ay nagbalik 445 00:19:33,750 --> 00:19:35,810 sa akin, sa gayon na magsalita, sa pamamagitan ng GetString. 446 00:19:35,810 --> 00:19:38,720 >> Ko, ngayon, sa pagpunta sa execute kaliwang gilid 447 00:19:38,720 --> 00:19:43,440 ng na expression, kung saan ako lang kopyahin down, para sa mga layunin sa ngayon, Nik. 448 00:19:43,440 --> 00:19:46,470 Kaya ngayon, mayroon akong isang variable tinatawag, s, pagtatago name Nik. 449 00:19:46,470 --> 00:19:49,520 Naka ko na ipinasa sa printf, isang nakaraang argument. 450 00:19:49,520 --> 00:19:52,800 Ngunit sa aming ikatlong at huling linya ng code, tunay na ako ay may sa kamay printf 451 00:19:52,800 --> 00:19:58,500 isang bagay na medyo different-- "hello,% s," backslash n. 452 00:19:58,500 --> 00:20:01,510 >> At kaya ang huling linya pupuntahan ko upang send-- ang huling bagay na ako 453 00:20:01,510 --> 00:20:03,060 pagpunta sa isulat ngayon, ay ito. 454 00:20:03,060 --> 00:20:06,310 Kaya ang dalawang linya ng code, o sa halip ang huling linya ng code, 455 00:20:06,310 --> 00:20:10,690 tawag para sa dalawang inputs-- isa, na ito, at ang dalawa, na ito. 456 00:20:10,690 --> 00:20:13,330 Kaya kung ang aming printf function Maaari na ngayong kumuha ng mga ito bilang input, 457 00:20:13,330 --> 00:20:16,000 hayaan mo akong i-clear ang screen para sa iyo. 458 00:20:16,000 --> 00:20:17,250 Talagang hindi, maaari mong sige. 459 00:20:17,250 --> 00:20:19,333 Kami ay umalis ito up, dahil ito ay sa parehong programa. 460 00:20:19,333 --> 00:20:21,760 461 00:20:21,760 --> 00:20:27,380 Dapat nating makita, hello, Nik. 462 00:20:27,380 --> 00:20:27,880 Ayos lang. 463 00:20:27,880 --> 00:20:29,670 Kaya ito ay lubos ng ilang mga hoops na tumalon sa pamamagitan ng, lamang 464 00:20:29,670 --> 00:20:31,620 na isulat, estado ang iyong pangalan, at, hello, Nik. 465 00:20:31,620 --> 00:20:37,210 Ngunit ito simpleng ideya ng pagpasa ng mensahe, ng input pagpasa at output pagtanggap, 466 00:20:37,210 --> 00:20:40,430 ay ang eksaktong modelo namin ay pagpunta sa may para sa kahit na ang pinaka-kumplikadong pag-andar. 467 00:20:40,430 --> 00:20:41,804 Kaya salamat sa iyo kaya marami sa mga kapwa mo. 468 00:20:41,804 --> 00:20:43,730 Kami ay may isang kaibig-ibig na stress ball dito para sa iyo. 469 00:20:43,730 --> 00:20:48,890 At salamat sa iyo sa aming GetString at printf volunteers kapwa. 470 00:20:48,890 --> 00:20:49,551 Salamat sa inyo. 471 00:20:49,551 --> 00:20:50,050 Ayos lang. 472 00:20:50,050 --> 00:20:50,966 Salamat sa kapwa mo. 473 00:20:50,966 --> 00:20:56,640 474 00:20:56,640 --> 00:21:00,430 >> Kaya ang pakikipag-usap namin tungkol sa kaya sa ngayon, halos lahat tungkol sa mga string. 475 00:21:00,430 --> 00:21:06,550 At ito ay lumiliko out na ang C ay maaaring aktwal na maunawaan ang ilang iba't ibang mga uri ng data. 476 00:21:06,550 --> 00:21:08,860 Sa katunayan, sabihin isang tumingin sa mga ito dito. 477 00:21:08,860 --> 00:21:12,490 Kaya C, at ng maraming mga wika, maunawaan ang mga bagay na tinatawag na karakter. 478 00:21:12,490 --> 00:21:16,852 Ang isang pansamantalang trabaho ay karaniwang isang solong byte, o walong bits. 479 00:21:16,852 --> 00:21:19,810 At ito ay kumakatawan sa isang solong character, tulad ng titik A, o ang capital 480 00:21:19,810 --> 00:21:21,990 sulat A, o ang lowercase na titik A, o ng isang tandang padamdam, 481 00:21:21,990 --> 00:21:25,440 o anumang mga character na maaari mong i-type sa iyong keyboard, at kung minsan kahit na higit pa. 482 00:21:25,440 --> 00:21:26,795 Mangyayari din kaming makita sa kamay. 483 00:21:26,795 --> 00:21:31,160 Ang isang float ay, sa pangkalahatan, ang isang 32-bit na halaga, o apat na bytes 484 00:21:31,160 --> 00:21:33,660 dahil muli, isang byte ay walong bits. 485 00:21:33,660 --> 00:21:36,675 >> Kaya ang isang float ay isang lumulutang na halaga ng point, isang bagay na may isang decimal point. 486 00:21:36,675 --> 00:21:38,550 At sa katunayan, iyon ang ang pelikula ay pakikipag-usap 487 00:21:38,550 --> 00:21:42,240 tungkol sa kapag nagsalita sila tungkol sa mga lumulutang mga halaga ng point, ang ilang mga takdang bilang ng bits 488 00:21:42,240 --> 00:21:43,940 ginagamit upang kumatawan sa isang tunay na numero. 489 00:21:43,940 --> 00:21:45,740 Ngunit may mga bagay na tinatawag na doble din. 490 00:21:45,740 --> 00:21:47,860 Ang mga umiiral sa Java, kung kinunan APCS, 491 00:21:47,860 --> 00:21:51,540 at isang double, tulad ng pangalan thankfully nagmumungkahi, ay dalawang beses bilang malaking bilang isang float. 492 00:21:51,540 --> 00:21:54,540 Ito ay isang tunay na numero pa rin, ito lamang ay may higit pang mga piraso 493 00:21:54,540 --> 00:21:58,390 na kung saan upang maging kailanman mas tiyak, o sa tindahan ng kahit na mas malaking mga numero. 494 00:21:58,390 --> 00:21:58,890 int ay madali. 495 00:21:58,890 --> 00:22:00,181 Usapan natin ang tungkol na noong nakaraang panahon. 496 00:22:00,181 --> 00:22:01,160 Ito lamang ay isang integer. 497 00:22:01,160 --> 00:22:03,980 At ito ay karaniwang 32 bits, o apat na bytes. 498 00:22:03,980 --> 00:22:07,850 >> At kaya, kung mayroon kang, tingnan natin ngayon, 32 bits-- at ginawa namin ito sa linggo 0, 499 00:22:07,850 --> 00:22:10,820 napaka briefly-- kung mayroon kang 32 bits, ano ang pinakamalaking 500 00:22:10,820 --> 00:22:13,580 ang numero na maaari mong kumatawan bilang isang integer? 501 00:22:13,580 --> 00:22:16,080 Magbigay o kumuha? 502 00:22:16,080 --> 00:22:18,380 Ito ay tulad ng 4 na bilyon, at na lamang kung kami ay 503 00:22:18,380 --> 00:22:20,690 na kumakatawan sa mga positibong numero lamang. 504 00:22:20,690 --> 00:22:23,930 Kung mayroon kang 32 bit, at nais mong kumakatawan negatibong numero pati na rin, 505 00:22:23,930 --> 00:22:27,100 iyong saklaw ay, mahalagang, negatibo 2 bilyong sa positibong 2 bilyong. 506 00:22:27,100 --> 00:22:29,250 Ngunit sa pangkalahatan, kami ay magsisimula sa 0 pumunta ng hanggang sa 4 na bilyon. 507 00:22:29,250 --> 00:22:32,400 >> Hindi mo na kailangang malaman ang tiyak na, ngunit maaari naming makita na ito, sa katunayan, kung ako lang 508 00:22:32,400 --> 00:22:36,400 magbukas ng isang maliit na calculator, dito. 509 00:22:36,400 --> 00:22:41,070 Ang maaari kong gawin 2 sa 32, at na eksakto kung paano malaki, 510 00:22:41,070 --> 00:22:43,190 kung gaano karaming mga halaga na maaari mong kumakatawan, na may 32 bits. 511 00:22:43,190 --> 00:22:44,442 At ito ay humigit-kumulang 4 na bilyon. 512 00:22:44,442 --> 00:22:46,900 Kaya makikita namin panatilihin ang nakakakita ng numero na sa loob ng ilang iba't-ibang mga lugar. 513 00:22:46,900 --> 00:22:48,890 Ngunit kung kailangan mo na numero sa na, 514 00:22:48,890 --> 00:22:51,670 ito ay lumiliko out doon ni bagay na tinatawag na isang matagal na matagal. 515 00:22:51,670 --> 00:22:54,005 At ng mahabang mahaba ay pangkalahatan ay 64 bits, na 516 00:22:54,005 --> 00:22:56,380 nangangahulugan na ito ay isang order ng magnitude kahit na mas malaki kaysa sa isang int. 517 00:22:56,380 --> 00:22:59,510 >> Kaya kahit na hindi ko maaaring bumigkas ang pinakamalaking number na maaari mong kumatawan, 518 00:22:59,510 --> 00:23:01,340 ngunit ito ay kitang-kita na mas malaki. 519 00:23:01,340 --> 00:23:05,190 Ngayon bilang isang bukod, kasaysayan, kung ang isang int ay 32 bits, 520 00:23:05,190 --> 00:23:12,780 at isang mahabang mahabang ay 64 bits, kung paano big ay isang mahaba, hindi isang matagal na matagal na? 521 00:23:12,780 --> 00:23:16,500 522 00:23:16,500 --> 00:23:20,330 Gusto mo tingin ito ay mas mahaba kaysa sa isang int pero siguro mas kaunti ang haba kaysa sa isang matagal na matagal na, 523 00:23:20,330 --> 00:23:21,400 ngunit ito ay talagang depende. 524 00:23:21,400 --> 00:23:23,400 >> At kaya ito ay lumiliko out sa isa ng masyadong ang kabiguan, 525 00:23:23,400 --> 00:23:26,830 sa pagsulat ng code sa ilang mga sistema, ay na hindi lahat ng mga uri ng data 526 00:23:26,830 --> 00:23:28,440 may pre-natukoy na mga halaga. 527 00:23:28,440 --> 00:23:29,771 Minsan ito ay ang mga bits. 528 00:23:29,771 --> 00:23:31,020 Minsan ito ay na ang maraming mga bits. 529 00:23:31,020 --> 00:23:32,750 Kaya ang tunay na may malaman, minsan, kung ano ang hardware 530 00:23:32,750 --> 00:23:34,083 ikaw ay nagpapatakbo ng iyong software sa. 531 00:23:34,083 --> 00:23:36,960 Sa kabutihang palad, ang iba pang mga wika at iba pang mga uri na ngayon umiiral na data, 532 00:23:36,960 --> 00:23:38,400 magpapahintulot sa inyo na maging mas tiyak. 533 00:23:38,400 --> 00:23:41,220 Well, nakita namin ang string, at nakita namin bool, masyadong, 534 00:23:41,220 --> 00:23:43,960 ngunit ito ay lumiliko out sa mga darating lamang sa pamamagitan ng CS50 library. 535 00:23:43,960 --> 00:23:46,240 Kaya ang mga ito ay hindi na binuo sa C. Ang mga halip, 536 00:23:46,240 --> 00:23:49,340 dumating sa na file na tinatawag na CS50.h, na bibigyan namin ng huli 537 00:23:49,340 --> 00:23:51,831 alisan ng balat pabalik ang mga layer ng. 538 00:23:51,831 --> 00:23:53,830 Ngunit sa ngayon, hindi lang nila karagdagang mga uri ng data. 539 00:23:53,830 --> 00:23:57,060 Ang isang bool ay isang true o false, at isang string ay isang pagkakasunod-sunod ng mga character, 540 00:23:57,060 --> 00:23:57,970 tulad ng isang salita. 541 00:23:57,970 --> 00:24:01,690 Ngayon printf, nasaksihan namin, ay may placeholder,% s ay isa. 542 00:24:01,690 --> 00:24:05,430 At maaari mong ma, sa ngayon, magpakilala mula sa mga iba pang halimbawa, kung paano 543 00:24:05,430 --> 00:24:07,720 maaari kang magkaroon ng isang placeholder para sa iba't ibang mga uri ng data. 544 00:24:07,720 --> 00:24:11,150 Halimbawa, kumuha ng hulaan, kung ikaw nais na i-print ang isang solong char gamit 545 00:24:11,150 --> 00:24:15,270 printf, ang placeholder ay marahil% c. 546 00:24:15,270 --> 00:24:19,650 At kung gusto mong i-print out ang isang integer may mga placeholder,% i. 547 00:24:19,650 --> 00:24:25,150 % lld ay isang matagal na matagal na halaga ng decimal, ngunit matagal na matagal na, kaya na ang mga mapa na iyon. 548 00:24:25,150 --> 00:24:28,640 At pagkatapos ay% f para sa mga lumulutang na halaga ng point o para sa isang double, 549 00:24:28,640 --> 00:24:31,270 kaya kung minsan ang mga ito ay muling ginamit sa iba't ibang konteksto. 550 00:24:31,270 --> 00:24:33,350 Kaya makikita namin makita at gamitin ang ilan sa mga paglipas ng panahon. 551 00:24:33,350 --> 00:24:36,420 At printf at iba pang mga pag-andar rin escape sequence suporta ng iba, 552 00:24:36,420 --> 00:24:38,080 at kung minsan, ang mga ito ay kinakailangan. 553 00:24:38,080 --> 00:24:39,770 Kaya backslash n ay isang bagong linya. 554 00:24:39,770 --> 00:24:42,886 Backslash t, ay kahit sino nais na kumuha ng isang ulos? 555 00:24:42,886 --> 00:24:43,760 Madla MIYEMBRO: Tab. 556 00:24:43,760 --> 00:24:44,551 DAVID J MALAN: Tab. 557 00:24:44,551 --> 00:24:46,810 Kaya kung talagang nais upang i-print out ang isang tab, hindi 558 00:24:46,810 --> 00:24:49,940 isang takdang bilang ng mga puwang ngunit isang aktwal na tab ng character, hindi mo maabot ang iyong, 559 00:24:49,940 --> 00:24:53,490 tab, key sa keyboard, sa pangkalahatan, mo talagang gawin backslash t. 560 00:24:53,490 --> 00:24:57,750 Backslash double quote, kung bakit ako ay kailanman nais na? 561 00:24:57,750 --> 00:24:58,250 Right? 562 00:24:58,250 --> 00:25:00,417 Bakit hindi na lang nagta-type ako ng isang double quote sa aking keyboard? 563 00:25:00,417 --> 00:25:02,124 Madla MIYEMBRO: Dahil, kung hindi man, ito ay 564 00:25:02,124 --> 00:25:04,830 pagpunta sa tingin ito ay ang end ng nais ang iyong mga print [? text. ?] 565 00:25:04,830 --> 00:25:05,420 >> DAVID J MALAN: Eksakto. 566 00:25:05,420 --> 00:25:07,211 Tandaan, sa aming printf halimbawa, kapag kami 567 00:25:07,211 --> 00:25:10,075 ay pagpasa sa printf sa input, sa kaliwa ng na input string 568 00:25:10,075 --> 00:25:12,950 at sa kanan ng input na spring, siyempre, ay isang double quote. 569 00:25:12,950 --> 00:25:16,270 Kung ang iyong sariling mga input ay may isang double quote sa gitna ng mga iyon, 570 00:25:16,270 --> 00:25:18,920 ang computer baka potensyal makakuha ng nalilito, tulad ng sa, 571 00:25:18,920 --> 00:25:20,760 Ginagawa ito sa double quote nabibilang sa gitna? 572 00:25:20,760 --> 00:25:22,150 Ito ay hindi nabibilang sa kaliwa ng isa? 573 00:25:22,150 --> 00:25:23,566 Ito ay hindi nabibilang sa mga karapatan ng isa? 574 00:25:23,566 --> 00:25:26,780 At kaya, kung nais mong upang gawin itong super malinaw, gawin mo backslash double quote, 575 00:25:26,780 --> 00:25:30,480 upang ito ay nakatakas, kaya na magsalita, at hindi ito conflated para sa ibang bagay. 576 00:25:30,480 --> 00:25:34,400 At may ilan pa dito, backslash r, single quotes, 0, 577 00:25:34,400 --> 00:25:36,510 upang aming makita sa paglipas ng panahon, pati na rin. 578 00:25:36,510 --> 00:25:37,760 At ngayon, kung ano ang tungkol sa mga function? 579 00:25:37,760 --> 00:25:41,630 >> Kaya mga aksyon na maaari naming gawin sa gayon ay malayo sa wikang ito, C, well, nasaksihan namin, 580 00:25:41,630 --> 00:25:44,320 printf, siyempre, at ang lahat ng iba sa screen, 581 00:25:44,320 --> 00:25:47,140 dito, na gagamitin namin para sa unang ilang linggo kurso ni lamang, 582 00:25:47,140 --> 00:25:48,485 darating kapag ang CS50 library. 583 00:25:48,485 --> 00:25:51,850 At sila ay gumawa ito lubhang mas madaling, sa C, sa aktwal na makakuha ng input ng user. 584 00:25:51,850 --> 00:25:54,200 Ito ay lumiliko out na sa C, at lantaran sa loob ng ilang mga wika, 585 00:25:54,200 --> 00:25:57,450 ito ay isang tunay na sakit sa ulo ang gagawin isang bagay na simple, tulad ng prompt ang user 586 00:25:57,450 --> 00:26:01,310 para sa keyboard, para sa kanilang mga input. 587 00:26:01,310 --> 00:26:03,240 At kaya gawing mas madali ang mga function. 588 00:26:03,240 --> 00:26:05,472 >> At mayroon din itong error pagsuri sa buong, 589 00:26:05,472 --> 00:26:07,180 nang sa gayon, kapag kayo pagpapabalik sa Miyerkules, kami ay 590 00:26:07,180 --> 00:26:09,740 Nakita ang, muling subukan, babala, kapag hindi ko tumulong, 591 00:26:09,740 --> 00:26:11,700 at nag-type ako ng isang salita, sa halip ng isang numero? 592 00:26:11,700 --> 00:26:15,402 Tapos na namin ang mga mabibigat na nakakataas maaga sa upang tiyakin nakikipagtulungan user. 593 00:26:15,402 --> 00:26:17,860 Ngunit ang mga ito ay training lang gulong na kami sa huli, 594 00:26:17,860 --> 00:26:19,640 at mabilis, mag-alis. 595 00:26:19,640 --> 00:26:22,630 >> Kaya sa paglalagom, pagkatapos, tumagal ng isang mabilis na pagtingin ipaalam, 596 00:26:22,630 --> 00:26:26,620 marami tulad ng ginawa namin sa simula, at ilang canonical constructs sa C. 597 00:26:26,620 --> 00:26:28,580 Ito ay sinadya upang, uri ng, maging isang ipoipo tour, 598 00:26:28,580 --> 00:26:30,990 kaya lang na ikaw ay may isang reference at na nakita mo bagay sa simula. 599 00:26:30,990 --> 00:26:34,100 Ngunit pagkatapos ay titingnan namin aktwal na coding gamitin ang ilan sa mga bloke ng gusali. 600 00:26:34,100 --> 00:26:36,710 Kaya marami tulad ng sa simula, kapag kami ay nais na mga pahayag, 601 00:26:36,710 --> 00:26:41,570 sabihin o, maghintay, sa C, mayroon kaming mga function pati na rin, tulad ng printf. 602 00:26:41,570 --> 00:26:45,350 >> Kung nais naming ipahayag ang isang kondisyon sa C, ito ay katulad na, sa espiritu, 603 00:26:45,350 --> 00:26:47,840 sa na piraso ng palaisipan na mukhang ito sa scratch. 604 00:26:47,840 --> 00:26:49,850 Ngunit sa halip, kami ay literal magsulat lamang, kung. 605 00:26:49,850 --> 00:26:51,830 At pagkatapos, sa mga panaklong, ilalagay namin ang isang kondisyon, 606 00:26:51,830 --> 00:26:54,807 kung saan ang kondisyon na ito ay kung ano ang makikita namin tumawag, muli, isang boolean expression. 607 00:26:54,807 --> 00:26:56,390 At muli, ito ay isang uri ng pseudocode. 608 00:26:56,390 --> 00:26:58,830 At, sa katunayan, ang // ay isang puna. 609 00:26:58,830 --> 00:27:00,550 Ito ay mga salita lamang ng Ingles sa sarili ko. 610 00:27:00,550 --> 00:27:03,000 Ngunit ito ay ang pangkalahatang istraktura ng isang, kung, kalagayan. 611 00:27:03,000 --> 00:27:05,220 Ngunit kami ay makita kongkreto mga halimbawa sa sandali lamang. 612 00:27:05,220 --> 00:27:07,960 >> Kung nais mong magkaroon ng isang two-way tinidor sa kalye, 613 00:27:07,960 --> 00:27:11,740 marami tulad ng ginawa namin sa aming mga volunteer sa Wednesday, maaari kang magkaroon ng isang, iba kung. 614 00:27:11,740 --> 00:27:16,020 At kung gusto mong magkaroon ng isang third at huling kalagayan, o default na sitwasyon, 615 00:27:16,020 --> 00:27:19,006 maaari kang magkaroon lamang ng isang iba pa block, doon. 616 00:27:19,006 --> 00:27:21,880 At katulad, sa boolean expression, maaari mong, at, kasama ang mga ito. 617 00:27:21,880 --> 00:27:24,296 At nakita namin sa Miyerkules, na ito ay hindi isang solong ampersand, 618 00:27:24,296 --> 00:27:28,220 ito ay dalawang, para sa mga kadahilanang mas mababa sa antas na kami ay makakita at makipaglaro sa. 619 00:27:28,220 --> 00:27:30,410 O-ing mga bagay-sama ay 2 vertical bar. 620 00:27:30,410 --> 00:27:32,240 Sa isang US keyboard, ito ay karaniwang isang key 621 00:27:32,240 --> 00:27:35,730 sa mga Shift key sa itaas iyong Enter o Return key. 622 00:27:35,730 --> 00:27:38,620 >> Pagkatapos ay may mga bagay na ito gagamitin namin siguro isa o dalawang beses. 623 00:27:38,620 --> 00:27:42,570 Ang mga ito ay umiiral na katumbas sa kung ano ang maaari mong gawin sa isang, kung, iba kung, 624 00:27:42,570 --> 00:27:44,950 ibang tao kung tao, tayuan, ngunit ang mga ito ay tinatawag na isang switch. 625 00:27:44,950 --> 00:27:48,020 Inaasahan nila ibang-iba, ngunit bibigyan namin ng makita sa ilan sa aming mga distribution code, 626 00:27:48,020 --> 00:27:51,890 para sa isang hinaharap hanay problema, malamang, na ito ay minsan lang sa isang prettier 627 00:27:51,890 --> 00:27:54,060 paraan ng pagpapahayag ng isang buong grupo ng mga kondisyon, 628 00:27:54,060 --> 00:27:57,590 walang pagkakaroon ng isang pulutong ng mga kulot tirante at isang pulutong ng mga panaklong at indentation. 629 00:27:57,590 --> 00:28:01,910 Ngunit bigyan sila sa amin ng hindi hihigit kapangyarihan kaysa kami na. 630 00:28:01,910 --> 00:28:02,550 At ngayon loop. 631 00:28:02,550 --> 00:28:05,020 At isa na ito, kami ay tumingin sa mas mabagal ng kaunti. 632 00:28:05,020 --> 00:28:08,470 Ngunit pagkatapos, magsisimula kami upang gamitin ang mga ito, lalo na para sa mga na pamilyar. 633 00:28:08,470 --> 00:28:13,830 Ito ang canonical paraan, kung hindi kapani-paniwalang arcane paraan, upang magsulat ng isang loop sa C. 634 00:28:13,830 --> 00:28:15,896 >> Ngayon isang loop sa scratch ay medyo direkta. 635 00:28:15,896 --> 00:28:17,020 Mayroon kang, magpakailanman, block. 636 00:28:17,020 --> 00:28:19,760 Mayroon kang, ulitin, block na may lamang ng isang numero ng kailangan mong i-type sa. 637 00:28:19,760 --> 00:28:22,220 At sa pamamagitan ng, para sa loop, maaari mong ipatupad pareho ng mga ideya, 638 00:28:22,220 --> 00:28:23,595 ngunit ito ay isang maliit na mas teknikal. 639 00:28:23,595 --> 00:28:25,994 Subalit lantaran, ito ay din medyo simple. 640 00:28:25,994 --> 00:28:28,160 Kapag alam mo ang pagkakasunud-sunod ng operations, literal mo 641 00:28:28,160 --> 00:28:30,910 ay lamang ng pagpunta sa plug sa halaga at sabihin ang computer kung ano ang gagawin. 642 00:28:30,910 --> 00:28:32,800 Kaya narito ang isang halimbawa. 643 00:28:32,800 --> 00:28:38,040 Ito ay isang loop na, lubos na lang, binibilang mula sa isang numero up 644 00:28:38,040 --> 00:28:40,187 sa pamamagitan ng isa pa. 645 00:28:40,187 --> 00:28:42,020 At sa pamamagitan lamang ng glancing at ito, kahit na mayroon kang 646 00:28:42,020 --> 00:28:44,660 walang bago karanasan sa wikang ito, kung ano ang bilang 647 00:28:44,660 --> 00:28:46,920 ay ito ay marahil simulan ang pagbibilang sa? 648 00:28:46,920 --> 00:28:47,730 OK, 0. 649 00:28:47,730 --> 00:28:50,240 At ako sa paghula na dahil sa iyo makita na mayroong isang int at isang i, 650 00:28:50,240 --> 00:28:51,073 kung saan ay isang variable. 651 00:28:51,073 --> 00:28:52,390 Ito ay initialize sa 0. 652 00:28:52,390 --> 00:28:55,670 >> At pagkatapos ay sa ibang pagkakataon, mukhang kami ay pagpasa printf, ang halaga. 653 00:28:55,670 --> 00:28:58,000 At, sa katunayan, ginawa ko ang isang maliit na typo dito. 654 00:28:58,000 --> 00:28:59,850 Ngunit na maaaring maayos. 655 00:28:59,850 --> 00:29:02,390 Hayaan akong magdagdag sa, i dito. 656 00:29:02,390 --> 00:29:06,150 Kami ngayon ay may printf pagkatao lumipas na ang halaga ng placeholder. 657 00:29:06,150 --> 00:29:08,299 At kung ano ang nangyayari sa count up sa pamamagitan ng? 658 00:29:08,299 --> 00:29:08,840 Madla: 50. 659 00:29:08,840 --> 00:29:09,340 50. 660 00:29:09,340 --> 00:29:10,160 49. 661 00:29:10,160 --> 00:29:10,910 DAVID J MALAN: 49. 662 00:29:10,910 --> 00:29:13,340 Kaya 50, sa unang tingin, tila karapatan. 663 00:29:13,340 --> 00:29:16,990 Ngunit iyon, ito ay lumiliko out, ay magiging aming kalagayan na ating tuparin ang checking. 664 00:29:16,990 --> 00:29:21,740 At kami ay pagpunta upang ihinto ang isang beses i ay hindi na mas mababa sa 50. 665 00:29:21,740 --> 00:29:24,920 Kaya ito loop, pasalungat, dapat execute, kaya hangga't i ay mas mababa sa 50. 666 00:29:24,920 --> 00:29:28,891 Ngunit sa lalong madaling ito ay nagiging 50, o 51, o mas masahol pa, ay dapat na awtomatikong itong itigil. 667 00:29:28,891 --> 00:29:29,390 Ayos lang. 668 00:29:29,390 --> 00:29:31,200 >> Kaya kung ano talaga ang mangyayari dito? 669 00:29:31,200 --> 00:29:33,160 Kaya ito ay ang pagkakasunud-sunod ng operasyon para sa isang loop. 670 00:29:33,160 --> 00:29:35,440 One, mayroon ka ng mga tinatawag na Pinasimulan. 671 00:29:35,440 --> 00:29:38,264 Ang dilaw na naka-highlight na tipak ng code ay unang naisakatuparan, 672 00:29:38,264 --> 00:29:40,930 at ito ay ang epekto na, per Miyerkules, marahil naisip mo. 673 00:29:40,930 --> 00:29:45,500 Ito ay lumilikha ng tinatawag na i at ito ang isang variable tindahan sa variable na ang halaga sa 0. 674 00:29:45,500 --> 00:29:47,560 Kaya ako ay 0 sa puntong ito sa kuwento. 675 00:29:47,560 --> 00:29:49,680 >> Ang susunod na bagay na mangyayari sa ito bumuo, 676 00:29:49,680 --> 00:29:51,540 ay na ang mga kondisyon ay makakakuha ng naka-check. 677 00:29:51,540 --> 00:29:54,325 Kaya agad na suriin ko, ay i mas mababa sa 50? 678 00:29:54,325 --> 00:29:57,700 At siyempre, ang sagot para sa ngayon ay, tiyak, yes. 679 00:29:57,700 --> 00:30:00,710 Oo, dahil i ay 0, at iyan ay tiyak na mas mababa sa 50. 680 00:30:00,710 --> 00:30:03,866 Pagkatapos ay ano ang mangyayari, ay na ito linya ng code ay naisakatuparan. 681 00:30:03,866 --> 00:30:06,740 At sa katunayan, kung mayroong maramihang linya ng code sa mga kulot tirante, 682 00:30:06,740 --> 00:30:09,020 lahat sila ay naisasagawa isa-isa. 683 00:30:09,020 --> 00:30:11,450 >> At sa epekto dito, ay tila, i-print out 684 00:30:11,450 --> 00:30:15,365 ang bilang i, na kung saan ay pagpunta sa 0, at pagkatapos ay 1, at pagkatapos ay 2. 685 00:30:15,365 --> 00:30:15,865 Ngunit bakit? 686 00:30:15,865 --> 00:30:17,410 Bakit ito makakuha incremented? 687 00:30:17,410 --> 00:30:20,680 Well, ang ika-apat na bagay na ang mangyayari ay na ang syntax na ito 688 00:30:20,680 --> 00:30:22,610 ay naisakatuparan, pagkatapos ng tuldok-kuwit. 689 00:30:22,610 --> 00:30:27,506 i ++ ay isang shorthand paraan ng sinasabi; tumagal ang halaga ng i, at magdagdag ng 1 sa mga ito; 690 00:30:27,506 --> 00:30:30,380 at pagkatapos ay sa susunod na pagkakataon sa paligid, idagdag 1 sa mga ito; at ang susunod na pagkakataon sa paligid, 691 00:30:30,380 --> 00:30:31,330 magdagdag ng 1 sa mga ito. 692 00:30:31,330 --> 00:30:33,640 >> Kaya kung panatilihin namin ang pagpunta, kung ano ang nangyayari sa mangyayari 693 00:30:33,640 --> 00:30:35,890 susunod ay hindi ako pagpunta sa magpasimula kailanman muli i. 694 00:30:35,890 --> 00:30:38,290 Kung ako malinis Sinisimulan i sa 0, halimbawa na ito 695 00:30:38,290 --> 00:30:41,110 ay hindi kailanman dulo dahil i ay natigil sa 0. 696 00:30:41,110 --> 00:30:43,870 Ngunit ano ang nangyayari sa mangyari ay na ang mga kondisyon ay naka-check, 697 00:30:43,870 --> 00:30:54,280 ang mga linya ng code ay naisasagawa, ang i ay incremented, 698 00:30:54,280 --> 00:30:56,970 kondisyon ay naka-check, code ay naisasagawa. 699 00:30:56,970 --> 00:30:59,790 At patuloy na cycling muli, at muli, at muli, 700 00:30:59,790 --> 00:31:03,340 hanggang i ++ induces ang halaga na 50. 701 00:31:03,340 --> 00:31:05,870 >> Ang kalagayan pagkatapos ay nagsasabing, ay 50 mas mababa sa 50? 702 00:31:05,870 --> 00:31:09,360 Ang sagot, siyempre, ay hindi, at kaya ang buong code hihinto Isinasagawa. 703 00:31:09,360 --> 00:31:13,020 At kung mayroon kang higit pang mga code sa screen down sa ibaba, na kung ano ang susunod na mangyayari. 704 00:31:13,020 --> 00:31:17,530 Ito nagpa-pop out ng mga kulot braces at ay patuloy na i-print ang mas pagkatapos na. 705 00:31:17,530 --> 00:31:20,470 >> Kaya ang isang joke ngayon, mula pakstrat, na Makikita marahil mo na ngayong maunawaan. 706 00:31:20,470 --> 00:31:30,810 707 00:31:30,810 --> 00:31:31,560 Ito ay palaging nakakatawa. 708 00:31:31,560 --> 00:31:34,110 Ito ay tulad ng chuckles uri ng tumagos, 709 00:31:34,110 --> 00:31:38,370 at pagkatapos ay mapagtanto mo na hindi mo dapat maging tumatawa sa katatawanan tulad nito. 710 00:31:38,370 --> 00:31:41,160 Subalit may ilang mga takeaway dito, pedagogically, masyadong. 711 00:31:41,160 --> 00:31:43,577 Kaya ito ay lumiliko out na ako nawawala ang isang piraso ng syntax, 712 00:31:43,577 --> 00:31:45,410 o pakstrat ni Kulang ng piraso ng syntax dito. 713 00:31:45,410 --> 00:31:48,076 Ano ang nawawala, na mayroon kaming sa bawat iba pang mga halimbawa, kaya ngayon? 714 00:31:48,076 --> 00:31:51,599 715 00:31:51,599 --> 00:31:53,390 Return, ay doon, kaya iyon ang ibang bagay, 716 00:31:53,390 --> 00:31:54,440 na kami ay bumalik sa bago ang haba. 717 00:31:54,440 --> 00:31:55,398 Ano ang nawawala, bagaman? 718 00:31:55,398 --> 00:31:55,908 Oo. 719 00:31:55,908 --> 00:31:58,150 >> Madla MIYEMBRO: Ang Pinasimulan ng [hindi marinig]. 720 00:31:58,150 --> 00:31:58,470 >> DAVID J MALAN: OK. 721 00:31:58,470 --> 00:31:58,980 Kaya oo. 722 00:31:58,980 --> 00:32:03,210 Sa aktwal, ito is-- Well, at count ay nasimulan 723 00:32:03,210 --> 00:32:05,470 hanggang sa itaas, o sa halip, ipinahayag up sa itaas. 724 00:32:05,470 --> 00:32:06,960 Kaya ito ay isa pang paraan ng paggawa nito. 725 00:32:06,960 --> 00:32:08,685 Ngunit hindi sa isang linya na ito ay may-bisa kahit na. 726 00:32:08,685 --> 00:32:09,310 Paano ang tungkol dito? 727 00:32:09,310 --> 00:32:10,196 >> Madla MIYEMBRO: Ito ba ang kulot tirante? 728 00:32:10,196 --> 00:32:10,640 >> DAVID J MALAN: Oo. 729 00:32:10,640 --> 00:32:12,080 Kaya ang curly braces ay nawawala. 730 00:32:12,080 --> 00:32:15,495 Ngunit ang code na ito, ibig sabihin ko, na ang kanilang credit, ay talagang, syntactically wasto. 731 00:32:15,495 --> 00:32:17,610 Ito ay lumiliko out, hindi mo kailangan ang kulot tirante 732 00:32:17,610 --> 00:32:21,691 kung mayroon ka lamang isang linya ng code na na gusto mong isagawa sa loob ng loop. 733 00:32:21,691 --> 00:32:24,190 Ngayon kami ay palaging, sa klase at sa lahat ng aming mga distribution code, 734 00:32:24,190 --> 00:32:26,730 isama ang kulot tirante anyway, para lamang sa kapakanan ng kaliwanagan ni. 735 00:32:26,730 --> 00:32:29,010 Ngunit mapagtanto na sa mga aklat-aralin at mga online na mga halimbawa, 736 00:32:29,010 --> 00:32:31,300 maaari mong tunay mabuti makita ang kulot braces nawawala ang ilang sandali. 737 00:32:31,300 --> 00:32:34,850 At iyan ay OK, kung ano ang iyong may naka-indent at inilaan 738 00:32:34,850 --> 00:32:38,650 ay lamang ng isang solong linya ng code, at hindi maramihang mga linya ng code, potensyal na. 739 00:32:38,650 --> 00:32:39,150 Ayos lang. 740 00:32:39,150 --> 00:32:44,500 So kaugnay sa isyu ng imprecision, ay isang isyu ng overflow, 741 00:32:44,500 --> 00:32:48,560 sa kamalayan na, katulad, huwag integer ay may mga limitasyon na ito 742 00:32:48,560 --> 00:32:49,970 tulad ng lumulutang na halaga ng point? 743 00:32:49,970 --> 00:32:53,120 Sa mundo ng mga lumulutang na tuldok mga halaga, maaari lamang naming maging tumpak, 744 00:32:53,120 --> 00:32:55,710 pagkatapos nito, kung minsan Maaaring mangyari ang masasamang bagay, 745 00:32:55,710 --> 00:32:57,760 at ang aming mga programa ay maaaring maging maraming surot at error. 746 00:32:57,760 --> 00:33:00,050 Ngayon kahit na may integer, maaari kang magkaroon ng problema. 747 00:33:00,050 --> 00:33:03,820 Ngayon isang integer ay walang decimal point o numero pagkatapos na ito. 748 00:33:03,820 --> 00:33:07,130 Ito lamang ay isang likas na numero, karaniwang. 749 00:33:07,130 --> 00:33:09,430 Kaya kung ano ang maaaring maging mali sa isang int? 750 00:33:09,430 --> 00:33:12,210 Kung gumagamit ako ng isang int sa count, kung ano ang maaaring maging mali? 751 00:33:12,210 --> 00:33:13,230 Mukhang ng maraming mas simple. 752 00:33:13,230 --> 00:33:13,873 Oo. 753 00:33:13,873 --> 00:33:16,240 >> Madla MIYEMBRO: Kung ang makakakuha number [hindi marinig] 754 00:33:16,240 --> 00:33:17,073 >> DAVID J MALAN: Oo. 755 00:33:17,073 --> 00:33:20,820 Paano kung bilangin mo kaya mataas, na ikaw hindi maaaring ipahayag na talagang malaking numero. 756 00:33:20,820 --> 00:33:21,320 Right? 757 00:33:21,320 --> 00:33:23,910 Sa ilang mga punto, ikaw ay pagpunta na lumampas sa hangganan 758 00:33:23,910 --> 00:33:27,077 ng halaga ng isang 32-bit o 64-bit na halaga. 759 00:33:27,077 --> 00:33:29,410 Ngayon muli, hindi ako sigurado kung paano upang ipahayag na ang isang 64-bit na halaga, 760 00:33:29,410 --> 00:33:32,230 pero alam ko na may isang 32-bit integer, ang pinakamalaking halaga na maaari itong maging, 761 00:33:32,230 --> 00:33:35,490 kung ito ay lamang ng positibong mga halaga, ay humigit-kumulang 4 na bilyon. 762 00:33:35,490 --> 00:33:39,000 Kaya kung subukan ko upang mabilang sa 5 bilyon, isang bagay ang nangyayari sa mangyari. 763 00:33:39,000 --> 00:33:41,050 Ngunit sabihin makita kung ano, sa katunayan, ay maaaring mangyari. 764 00:33:41,050 --> 00:33:44,570 Sa mundo ng mga integer overflow, kung saan ka, sa isang kahulugan, 765 00:33:44,570 --> 00:33:48,270 mapuno ng mga kakayahan ng isang integer, ano ang maaaring mangyari? 766 00:33:48,270 --> 00:33:51,190 >> Kaya narito ang isang binary na numero, ito ay isang kilos sa pabalik sa 0. 767 00:33:51,190 --> 00:33:54,630 Lahat ng ito ay 1, at ang mga placeholder doon, kapangyarihan ng 2, 768 00:33:54,630 --> 00:33:55,980 kaya ito ay binary. 769 00:33:55,980 --> 00:33:59,416 Kaya ito ang 8, 1 bits sa screen. 770 00:33:59,416 --> 00:34:01,290 At kung ang pagpapabalik sa iyo o mabilis kang gawin ang matematika, 771 00:34:01,290 --> 00:34:06,074 kung ano ang halaga ay kinakatawan dito sa mga walong 1 bits? 772 00:34:06,074 --> 00:34:06,950 255. 773 00:34:06,950 --> 00:34:09,260 At kahit na kung ikaw ay hindi pa sigurado ng matematika, maaari mong gawin ito. 774 00:34:09,260 --> 00:34:10,550 O maaari mong uri lamang ng dahilan sa pamamagitan nito, 775 00:34:10,550 --> 00:34:12,633 maghintay ng isang minuto, kung hindi ako kumakatawan sa isang 8 bit na halaga, 776 00:34:12,633 --> 00:34:17,750 at Mayroon akong 256 posibleng halaga, ngunit ang unang na kung saan ay 0, 777 00:34:17,750 --> 00:34:19,909 Alam ko lang na ang pinakamalaking ay magiging 255, 778 00:34:19,909 --> 00:34:21,510 at na kung ano ang maaaring maging ang isang ito. 779 00:34:21,510 --> 00:34:26,060 >> Kaya ipagpalagay subukan ko na magdagdag ng 1 sa halaga na ito. 780 00:34:26,060 --> 00:34:28,750 Ano ang gagawin mo sa grade paaralan kapag nagdadagdag ng isang 1, at ito 781 00:34:28,750 --> 00:34:31,139 ay hindi talagang magkasya dahil kailangan mong dalhin ang 1? 782 00:34:31,139 --> 00:34:34,380 Ano ang bilang na ito ay pagpunta upang maging kapag nagdagdag ka ng 1? 783 00:34:34,380 --> 00:34:37,030 Ito ay pagpunta sa maging 0. 784 00:34:37,030 --> 00:34:37,530 Right? 785 00:34:37,530 --> 00:34:41,139 Dahil kung ikaw ay nagkaroon ng mas maraming bits-- at idedetalye ko subukan na, uri ng, uri ito here-- 786 00:34:41,139 --> 00:34:44,710 kung tayo ay mas bits, kung ano ang aming maaaring gawin dito ay idagdag ang 1, 787 00:34:44,710 --> 00:34:47,370 at pagkatapos ay gusto naming makuha ang mga ito. 788 00:34:47,370 --> 00:34:48,739 Oops. 789 00:34:48,739 --> 00:34:52,250 Gusto naming magkaroon ng isang 1 bit lahat ng mga paraan sa paglipas dito. 790 00:34:52,250 --> 00:34:55,530 >> Ngunit kung ito ay isang may wakas halaga, ito ay bits lamang 8, 791 00:34:55,530 --> 00:34:57,480 at iyon ang nauna nang itinakdang sa pamamagitan ng computer, 792 00:34:57,480 --> 00:34:59,370 na ang 1 ay epektibo hindi doon. 793 00:34:59,370 --> 00:35:00,980 Ito lang ang uri ng talon sa bangin. 794 00:35:00,980 --> 00:35:05,480 At kaya kung magdagdag ka ng 1 sa 255, kung ano halaga mo tila makuha? 795 00:35:05,480 --> 00:35:06,180 0. 796 00:35:06,180 --> 00:35:09,700 At kaya numero sinasadyang, at marahil, hindi sinasadya, 797 00:35:09,700 --> 00:35:12,040 humantong sa pambalot sa paligid tulad nito. 798 00:35:12,040 --> 00:35:14,079 Kaya kung ano ang maaaring maging ang mga implikasyon ng mga ito? 799 00:35:14,079 --> 00:35:15,620 Well, mayroong ilang iba't ibang mga bagay. 800 00:35:15,620 --> 00:35:18,751 Kaya isa, ito ay humantong sa hinahanap tulad ng 0, hindi sinasadya, 801 00:35:18,751 --> 00:35:20,750 ngunit maaari mong uri ng makita, kahit na sa tunay na mundo, 802 00:35:20,750 --> 00:35:23,416 para sa mas mahusay o mas masahol pa, manipestasyon ng ideya na ito ng isang limitasyon. 803 00:35:23,416 --> 00:35:26,630 Halimbawa, ang anumang mga mo na may kailanman play Lego Star Wars, 804 00:35:26,630 --> 00:35:28,880 ay mangyayari na malaman ng sinuman ang maximum na bilang ng mga barya 805 00:35:28,880 --> 00:35:32,032 maaari mong mangolekta sa Lego Star Wars? 806 00:35:32,032 --> 00:35:35,640 Kumuha ng isang hulaan batay sa nangungunang mga katanungan sa ngayon. 807 00:35:35,640 --> 00:35:39,140 Ito ay mas malaki kaysa sa 256 o 255. 808 00:35:39,140 --> 00:35:40,330 Ito ay 4 na bilyon. 809 00:35:40,330 --> 00:35:42,080 Kaya ito ay lumiliko out, at mayroong ilang mga people-- 810 00:35:42,080 --> 00:35:46,080 ilang-Google nakumpirma noong nakaraang night-- may tapat na paraan 4 bilyong mga gintong barya, 811 00:35:46,080 --> 00:35:47,730 o watnat, sa Lego Star Wars. 812 00:35:47,730 --> 00:35:49,860 Kahit na tila, may isang paraan upang linlangin ang laro, 813 00:35:49,860 --> 00:35:53,222 may isang bug o tampok, na nagpapahintulot sa inyo makaipon lamang ng maraming at maraming ng mga puntos. 814 00:35:53,222 --> 00:35:54,930 Ngunit ang pinakamalaking posibleng halaga, ayon 815 00:35:54,930 --> 00:35:58,360 sa screen shot ng isang tao na aking matatagpuan online, ay sa katunayan, 4 na bilyon. 816 00:35:58,360 --> 00:35:59,240 >> Ngayon kung bakit ay na? 817 00:35:59,240 --> 00:36:03,040 Ito ay tiyak na 4 na bilyon, marahil dahil nagpasya ang isang tao, 818 00:36:03,040 --> 00:36:05,500 na pagsulat laro na ito, na maaari nilang gawin 4 na bilyon, 819 00:36:05,500 --> 00:36:07,340 bagay, isang bagay, isang bagay, tulad ng mga halaga ng ko bang ilagay up 820 00:36:07,340 --> 00:36:10,256 sa calculator mas maaga, ngunit ito lamang ay isang maliit na cleaner para sa mga tao 821 00:36:10,256 --> 00:36:12,610 sabihin ang maximum na bilang ng coins-- o studs, 822 00:36:12,610 --> 00:36:14,860 habang sila ay tumawag them-- na kayo maaaring mangolekta ay 4 na bilyon. 823 00:36:14,860 --> 00:36:16,290 At kaya, kung bakit ito? 824 00:36:16,290 --> 00:36:20,310 Paano ay ang laro Lego pagpapatupad ng counter 825 00:36:20,310 --> 00:36:23,420 na nag-iingat subaybayan ng ay bilang ng mga barya na mayroon ka? 826 00:36:23,420 --> 00:36:24,266 Sila ay gumagamit ng kung ano? 827 00:36:24,266 --> 00:36:26,390 Madla MIYEMBRO: Ito tumitigil pagbibilang matapos ang 4 na bilyon. 828 00:36:26,390 --> 00:36:27,720 DAVID J MALAN: Ito tumitigil pagbibilang matapos ang 4 na bilyon, 829 00:36:27,720 --> 00:36:29,525 na nangangahulugan na ikaw ay maaaring ipahiwatig, bilang programmer, 830 00:36:29,525 --> 00:36:31,960 na ang mga ito ay malamang na gamit ang isang 32 bit integer. 831 00:36:31,960 --> 00:36:35,380 Tulad ng mga programmer literal lamang nag-type, int, sa kanyang code, 832 00:36:35,380 --> 00:36:39,620 at iyon ang uri ng variable na sila ay gumagamit upang mag-imbak code ng isang tao. 833 00:36:39,620 --> 00:36:42,230 Kaya may iba pang manipestasyon ng mga ganitong uri ng mga limitasyon. 834 00:36:42,230 --> 00:36:45,063 >> Kaya hindi ko na nilalaro na ito game-- at ako ay pagbabasa up sa kasaysayan 835 00:36:45,063 --> 00:36:48,470 upang kumpirmahin na much-- ngunit sa orihinal na bersyon ng sibilisasyon, kung saan 836 00:36:48,470 --> 00:36:53,240 ka malas-ugnayan sa bawat isa at maaaring mandigma o magkaroon ng kapayapaan, 837 00:36:53,240 --> 00:36:56,590 Gandhi ay dapat na maging isa sa mga ang pinaka-mapayapang character, bilang ako 838 00:36:56,590 --> 00:36:59,280 maunawaan ito, sa unang bersyon ng kabihasnan. 839 00:36:59,280 --> 00:37:03,250 At sa katunayan, sa isang sukat na 1 hanggang 10, kanyang handulong ay lamang ng isang 1. 840 00:37:03,250 --> 00:37:05,620 Kaya napaka nang mahinahon agresibo, tila. 841 00:37:05,620 --> 00:37:11,590 >> Ngunit sa ilang mga punto, maaari mong malas i-install ang demokrasya sa iyong heograpiya. 842 00:37:11,590 --> 00:37:14,900 At kung i-install mo ang demokrasya sa iyong mga bersyon ng laro, 843 00:37:14,900 --> 00:37:17,320 pagkatapos ay napupunta down na ang iyong pagsalakay level. 844 00:37:17,320 --> 00:37:18,460 Ito ay isang magandang bagay. 845 00:37:18,460 --> 00:37:20,890 Ang mga tao ay mas matiwasay tila, sa na sitwasyon. 846 00:37:20,890 --> 00:37:23,190 Ngunit tila, ang isang tao ay na ng, kung, kalagayan 847 00:37:23,190 --> 00:37:24,780 sa orihinal na bersyon ng code. 848 00:37:24,780 --> 00:37:30,650 >> Kaya nagpunta level pagsalakay Gandhi mula positive 1, minus 2, sa mga negatibong 1, 849 00:37:30,650 --> 00:37:33,840 ngunit ang laro ay hindi Naiintindihan negatibong numero. 850 00:37:33,840 --> 00:37:38,680 Kaya kung ano ang nangyari noon ay pagsalakay Gandhi nagpunta na antas mula sa 1, sa 0, na negatibong 1, 851 00:37:38,680 --> 00:37:40,900 na kung saan ay ang epekto ng pambalot sa paligid sa pagiging 852 00:37:40,900 --> 00:37:44,690 ang pinaka-agresibo karakter sa laro, sa isang halaga ng 255, 853 00:37:44,690 --> 00:37:46,630 sa isang sukat na 1 hanggang 10. 854 00:37:46,630 --> 00:37:49,887 At mula noon, mayroong nangyaring higit pang mga anyo ng larong ito, 855 00:37:49,887 --> 00:37:51,720 at nag-iingat nila ito bilang isang uri ng Easter itlog, 856 00:37:51,720 --> 00:37:53,870 na Gandhi ay tila kaya masyado agresibo. 857 00:37:53,870 --> 00:37:56,740 Ngunit ito ay ang resulta ng isang napaka-simpleng programming error 858 00:37:56,740 --> 00:37:58,630 sa tunay maagang bersyon ng ang laro. 859 00:37:58,630 --> 00:38:02,860 >> Ngayon higit disturbingly, mas kamakailan lamang, ang Boeing 787 860 00:38:02,860 --> 00:38:05,720 na naitala bilang pagkakaroon ng isang bug, hindi ang uri ng aparato 861 00:38:05,720 --> 00:38:07,340 lalo na gusto mong magkaroon ng isang bug. 862 00:38:07,340 --> 00:38:10,130 At ang mga sintomas, na kukunin ko na basahin dito, mula sa isang artikulo sa online, 863 00:38:10,130 --> 00:38:13,840 ay ito, isang modelo 787 airplane na ay patuloy na pinapatakbo 864 00:38:13,840 --> 00:38:18,030 para sa 248 araw ay maaaring mawala ang lahat alternating kasalukuyang, AC, 865 00:38:18,030 --> 00:38:20,850 electrical kapangyarihan, dahil sa ang generator control units, 866 00:38:20,850 --> 00:38:23,330 GCUs, sabay-sabay pagpunta sa mabibigo-safe mode. 867 00:38:23,330 --> 00:38:26,790 Kaya ito ay isang babala na inisyu kapag ang problemang ito ay natuklasan. 868 00:38:26,790 --> 00:38:28,750 Ang kondisyon na ito ay sanhi sa pamamagitan ng isang software counter, 869 00:38:28,750 --> 00:38:32,230 panloob sa GCUs, kaya isang integer o isang variable, 870 00:38:32,230 --> 00:38:36,850 na kalooban overflow matapos 248 araw ng tuloy-tuloy na kapangyarihan. 871 00:38:36,850 --> 00:38:40,350 Boeing ay nasa proseso ng pagbuo ng isang pag-upgrade GCU software na 872 00:38:40,350 --> 00:38:42,350 ay malunasan ang mga hindi ligtas na kalagayan. 873 00:38:42,350 --> 00:38:44,226 >> Kaya marami na tulad ng misayl senaryo, kung saan 874 00:38:44,226 --> 00:38:46,850 sila ay nagkaroon ng ilang mga uri ng variable na pagbibilang, at pagbilang, 875 00:38:46,850 --> 00:38:50,720 at bilangin, ngunit unti-unting umaapaw ang mga hangganan ng kakayahan nito, 876 00:38:50,720 --> 00:38:54,890 katulad ng ginawa ng mga sumpain airplane magkaroon ng isang variable overflow 877 00:38:54,890 --> 00:38:56,410 pagkatapos ng sapat na oras ng pagpapatakbo. 878 00:38:56,410 --> 00:38:59,240 At upang ang mga dila-in-pisngi paraan ng mga nagtatrabaho sa paligid ang isyu 879 00:38:59,240 --> 00:39:04,400 ay ang tunay na, reboot, ang iyong eroplano bawat 247 araw, sa gayon na ang memory makakakuha wiped 880 00:39:04,400 --> 00:39:06,100 at ang mga variable ay babalik sa 0. 881 00:39:06,100 --> 00:39:09,410 Ngunit mapagtanto, ito ay isang napaka malaking pagkakatawang-tao ng software, 882 00:39:09,410 --> 00:39:14,070 ngunit lalo na habang naririnig namin tungkol sa Apple operating system ng pagpunta sa mga kotse, 883 00:39:14,070 --> 00:39:18,030 at self-nagmamaneho kotse mula sa Google, at ng anumang numero ng mga anyo ng mga software 884 00:39:18,030 --> 00:39:21,000 sa ating pang-araw araw na buhay, TVs at relo, at iba pa, 885 00:39:21,000 --> 00:39:24,950 mapagtanto ay napapalibutan ng software, lahat ng kung saan ay nakasulat sa pamamagitan amin ng mga tao. 886 00:39:24,950 --> 00:39:28,150 >> At tulad ng makikita lahat sa lalong madaling panahon namin matuklasan, ito ay tunay madali at napaka tipikal 887 00:39:28,150 --> 00:39:30,250 upang gumawa ng mga pagkakamali kapag pagsulat software. 888 00:39:30,250 --> 00:39:32,745 At kung hindi mo makuha ang mga ito, Maaari itong mangyari sa ilang mga masasamang bagay. 889 00:39:32,745 --> 00:39:35,400 Ngayon minsan, ang ilang mga maaaring mangyari nakakatawang bagay, 890 00:39:35,400 --> 00:39:38,280 o hindi bababa sa minsan namin malaman upang asahan ang ilang mga kasamaan. 891 00:39:38,280 --> 00:39:41,550 Kaya 0 hinahati sa pamamagitan ng 0, mula grade paaralan, sa pangkalahatan ay isang masamang bagay. 892 00:39:41,550 --> 00:39:43,050 Ito ay hindi maliwanag. 893 00:39:43,050 --> 00:39:46,440 At ito ay lumiliko out-- at sabihin makita kung aking mic maaaring kunin ito up-- na Apple 894 00:39:46,440 --> 00:39:47,790 nagkaroon ng ilang mga masaya sa mga ito kamakailan. 895 00:39:47,790 --> 00:39:48,850 Kaya Mayroon akong isang iPhone dito. 896 00:39:48,850 --> 00:39:54,160 Pupunta ako sa makipag-usap sa Siri at hilingin sa kanya upang bigyan ako ang sagot sa 0 hinati sa 0. 897 00:39:54,160 --> 00:39:55,850 Anong 0 hinati sa 0? 898 00:39:55,850 --> 00:39:59,350 899 00:39:59,350 --> 00:40:02,230 >> SIRI: Ipagpalagay na ikaw ay may 0 cookies, at ikaw split ang mga ito nang pantay-pantay 900 00:40:02,230 --> 00:40:03,540 bukod 0 mga kaibigan. 901 00:40:03,540 --> 00:40:05,810 Gaano karaming mga cookies ay hindi makakuha ng bawat tao? 902 00:40:05,810 --> 00:40:06,350 Tingnan? 903 00:40:06,350 --> 00:40:07,660 Hindi ito magkaroon ng kahulugan. 904 00:40:07,660 --> 00:40:10,540 At Cookie Halimaw ay malungkot na walang mga cookies. 905 00:40:10,540 --> 00:40:13,987 At ikaw ay malungkot na wala kang mga kaibigan. 906 00:40:13,987 --> 00:40:15,570 DAVID J MALAN: Ito ay uri ng kasuklam-suklam. 907 00:40:15,570 --> 00:40:17,550 Kaya ito ay kung ano ang sinabi lang doon. 908 00:40:17,550 --> 00:40:21,380 Ito ay walang katiyakan, hindi ito ay tinukoy, at sa katunayan, maraming mga wika programming 909 00:40:21,380 --> 00:40:24,950 o, talaga, compiler ay makita kapag mo, sa isang programa, 910 00:40:24,950 --> 00:40:27,050 subukan upang hatiin 0 ng 0. 911 00:40:27,050 --> 00:40:29,830 Mas masaya kaysa ito bagaman, ay na tila, Cookie Halimaw 912 00:40:29,830 --> 00:40:31,270 ay sa Twitter ang mga araw. 913 00:40:31,270 --> 00:40:37,610 At siya ay tumugon sa mga ito, ang mga ito, na kung saan ay ganap na kaibig-ibig. 914 00:40:37,610 --> 00:40:40,110 Ngunit tumagal ng isang mabilis na pagtingin sa ipaalam isang pares ng mga iba pang mga constructs, 915 00:40:40,110 --> 00:40:43,459 at pagkatapos ay ilagay ang ilan sa mga ito code upang gamitin, sa mabuting paraan. 916 00:40:43,459 --> 00:40:45,250 Kaya ito ay lumiliko out, bukod sa para sa mga loop, may 917 00:40:45,250 --> 00:40:49,174 bagay na tinatawag na isang habang loop, na mukhang naiiba at ito ay ipinatupad 918 00:40:49,174 --> 00:40:51,590 isang maliit na differently-- at kami ay makakita examples-- 919 00:40:51,590 --> 00:40:53,500 ngunit sa ilang mga kahulugan, ito ay mas simple dahil ito 920 00:40:53,500 --> 00:40:56,670 hindi daan sa iyo upang magpasimula at agad sa loob ng hangganan ng loop. 921 00:40:56,670 --> 00:40:57,794 Maaari mo pa ring ipatupad ito. 922 00:40:57,794 --> 00:41:01,219 Kaya maaari mong gawin ang parehong bagay sa isang habang loop, tulad ng sa isang para sa loop, 923 00:41:01,219 --> 00:41:03,260 ngunit ang iyong mga syntax, ultimately-- bilang kami sa huli 924 00:41:03,260 --> 00:41:04,551 see-- ay pagpunta sa iba. 925 00:41:04,551 --> 00:41:07,450 Mayroong kahit isang gawin habang loop, na ay talagang isang maliit na naiiba, 926 00:41:07,450 --> 00:41:09,640 sa na kung saan ang isang para sa loop at isang habang loop laging 927 00:41:09,640 --> 00:41:13,005 suriin muna ang kanilang kalagayan, kung basahin mo ang bagay na ito sa itaas sa ibaba, 928 00:41:13,005 --> 00:41:16,440 ito uri ng mukhang ito ay pagpunta sa suriin ito ni condition huling dahil sa ito ay 929 00:41:16,440 --> 00:41:17,910 tunay na ang huling linya ng code. 930 00:41:17,910 --> 00:41:20,580 At sa katunayan, na ang pagpunta sa maging kapaki-pakinabang sa ilang mga programa na isulat namin, 931 00:41:20,580 --> 00:41:23,746 kung gusto mong walang taros lamang gawin ang isang bagay at sa huli suriin ang kalagayan. 932 00:41:23,746 --> 00:41:25,205 Iyan ay hindi isang masamang bagay. 933 00:41:25,205 --> 00:41:27,912 Kung gusto namin na variable, maaari naming gawin ito sa isang pares ng mga iba't-ibang paraan. 934 00:41:27,912 --> 00:41:30,290 At nakita natin sa Foxtrot cartoon, isang paraan ng paggawa nito, 935 00:41:30,290 --> 00:41:33,400 kung saan mo idedeklara ang iyong variable, tulad ng int counter semicolon, 936 00:41:33,400 --> 00:41:36,570 at pagkatapos later-- siguro sa susunod na line, siguro 10 na linya later-- 937 00:41:36,570 --> 00:41:37,800 ang tunay na ikaw magpasimula ito. 938 00:41:37,800 --> 00:41:42,230 Kaya ang mga ito 2 linya ng code ipinapahayag ng isang variable ng uri int 939 00:41:42,230 --> 00:41:44,930 at tumawag ito counter, kaya nagbibigay ito sa akin ng sapat bits upang i-hold ang isang int. 940 00:41:44,930 --> 00:41:48,230 At pagkatapos ay sa wakas, inilalagay ito ang halaga 0 sa variable na. 941 00:41:48,230 --> 00:41:51,250 Ayos nito ang ni 0 at 1 sa isang pattern, na alam natin mula sa nakaraang linggo, 942 00:41:51,250 --> 00:41:53,260 kumakatawan sa bilang alam namin bilang 0. 943 00:41:53,260 --> 00:41:56,920 O lantaran, maaari mong gawin ito magkano mas succinctly, gusto lamang ito. 944 00:41:56,920 --> 00:41:59,390 >> Ngayon ay mayroon din namin ang kakayahang tumawag function. 945 00:41:59,390 --> 00:42:03,070 At sa katunayan, narito ang isang 2 linya programa, o isang sipi niyon, 946 00:42:03,070 --> 00:42:06,157 na nagbibigay-daan sa amin upang aktwal sumulat ng ilang mga code na 947 00:42:06,157 --> 00:42:08,990 makakakuha ng isang string mula sa user-- marami tulad ng ating volunteer ng isang sandali ago-- 948 00:42:08,990 --> 00:42:11,320 pagtatago ng mga resulta sa isang variable na tinatawag na pangalan, 949 00:42:11,320 --> 00:42:15,470 at then-- marami tulad ng sa aming mga volunteer may printf-- prints out ang mga halaga 950 00:42:15,470 --> 00:42:19,180 sa pamamagitan ng pagpasa sa dalawang argumento, ang string, sinusundan ng mga variable 951 00:42:19,180 --> 00:42:20,781 tinatawag, pangalan, mismo. 952 00:42:20,781 --> 00:42:23,155 Kaya sabihin tumagal ng isang pagtingin, bago namin na bumalik sa Mario doon, 953 00:42:23,155 --> 00:42:26,010 sa isang pares ng mga ngayon, halimbawa nito. 954 00:42:26,010 --> 00:42:30,537 >> Pupunta ako sa sige at bukas up, sabihin nating, function-0.c. 955 00:42:30,537 --> 00:42:33,120 At tulad ng dati, ang code na ito ay na makukuha sa website ng kurso, 956 00:42:33,120 --> 00:42:35,660 sa gayon maaari mong i-play kasama sa bahay at tingnan ang mga ito sa ibang pagkakataon. 957 00:42:35,660 --> 00:42:40,400 Ngunit narito ang programa sa ito ay kakanyahan, mula sa 17 na linya sa 22. 958 00:42:40,400 --> 00:42:43,270 Ang mga pangunahing programa ay kung saan ang program ay palaging pagpunta upang magsimula. 959 00:42:43,270 --> 00:42:46,980 Ang program na ito, tila, ay pagpunta upang i-print out ang iyong pangalan, colon. 960 00:42:46,980 --> 00:42:50,320 Pagkatapos Ito ay pagpunta sa tawag GetString, tulad ng ginawa namin sa aming mga volunteers. 961 00:42:50,320 --> 00:42:53,365 At pagkatapos, ito ay kawili-wili, ito ay pagpunta sa tumawag PrintName. 962 00:42:53,365 --> 00:42:56,490 Ito ay lumiliko out, ang lahat ng mga oras na ito, may parang isang function na tinatawag na PrintName. 963 00:42:56,490 --> 00:42:57,614 Na ang mga kopya ng pangalan ng isang tao. 964 00:42:57,614 --> 00:43:01,210 Hindi namin kailangan na gumamit ng printf mula nakalipas na panahon, may PrintName. 965 00:43:01,210 --> 00:43:03,500 >> Ngunit iyon lamang ang nakaliligaw dahil PrintName hindi 966 00:43:03,500 --> 00:43:06,760 sumama sa C. Ang mga tao ay hindi likhain ito ng mga 40 o 50 taon na ang nakaraan, 967 00:43:06,760 --> 00:43:07,990 Ginawa ko, sa halip. 968 00:43:07,990 --> 00:43:10,330 At sa katunayan, kung mag-scroll ko down pa, pansinin 969 00:43:10,330 --> 00:43:14,200 paano ko isulat ang aking sariling function sa C. idedetalye namin sa huli 970 00:43:14,200 --> 00:43:16,319 magpaliwanag kung bakit namin patuloy na sinasabi, walang bisa, sa loob ng ilang mga lugar, 971 00:43:16,319 --> 00:43:18,110 ngunit para sa araw na ito, sabihin natin tingnan lamang sa mga pangalan. 972 00:43:18,110 --> 00:43:20,905 >> Sa 24 na linya, kung nais mong lumikha ng iyong sariling function, 973 00:43:20,905 --> 00:43:22,780 mong literal isulat ang pangalan ng function. 974 00:43:22,780 --> 00:43:24,340 Pinili ko PrintName. 975 00:43:24,340 --> 00:43:26,159 Sa mga panaklong, ikaw pagkatapos ay tukuyin kung anong mga uri 976 00:43:26,159 --> 00:43:28,450 ng mga input, at kung gaano karaming mo gusto ang function na ito upang kumuha. 977 00:43:28,450 --> 00:43:31,906 Sa kasong ito, nais kong kunin 1 variable na tinatawag, pangalan, 978 00:43:31,906 --> 00:43:34,030 at ito ay pagpunta sa maging ng type, string, kaya ito ay pagpunta 979 00:43:34,030 --> 00:43:35,780 na ang ilang mga pagkakasunod-sunod ng mga character. 980 00:43:35,780 --> 00:43:39,170 At pagkatapos, ito program-- marami tulad ng sa simula, 981 00:43:39,170 --> 00:43:42,590 maaari kang magkaroon ng custom puzzle pieces-- ay pagpunta sa may ito pasadyang pag-uugali. 982 00:43:42,590 --> 00:43:46,760 Ito ay pagpunta sa tawagan printf pagpasa sa, hello, placeholder, 983 00:43:46,760 --> 00:43:49,110 at pagkatapos ito ay pagpunta sa plug sa kahit anong tinatawag user. 984 00:43:49,110 --> 00:43:51,450 >> Kaya ito ay isang halimbawa ng kung ano ang isang computer scientist gagawin 985 00:43:51,450 --> 00:43:55,090 call abstraction o functional agnas, na kung saan ay lamang 986 00:43:55,090 --> 00:43:58,110 magarbong paraan ng saying-- Ay kung gusto mo ang ideya na ito ng mataas na antas, 987 00:43:58,110 --> 00:44:01,569 tulad ng gusto ko ang pag-andar na Kopya pangalan ng isang tao, kung talagang 988 00:44:01,569 --> 00:44:04,360 maaaring literal isulat printf at pagkatapos ay At mangyayari sa mga argumento na gusto mo, 989 00:44:04,360 --> 00:44:07,340 at ang programa ay gumagana, tulad ng ito ay dahil Miyerkules. 990 00:44:07,340 --> 00:44:10,510 Ngunit maaari kang magsimula sa abstract layo ang paniwala ng pag-print ng isang pangalan. 991 00:44:10,510 --> 00:44:13,270 Maaari mong bigyan ito ng isang pangalan, tulad PrintName, at ito 992 00:44:13,270 --> 00:44:15,280 ay ito ideya ng layering mula sa linggo 0. 993 00:44:15,280 --> 00:44:19,910 >> Simula ngayon, hindi ko at mo na kailangang malaman o pag-aalaga kung paano PrintName ay ipinatupad. 994 00:44:19,910 --> 00:44:22,470 Oo ito ay gumagamit ng printf, marahil ito ay hindi, na nakakaalam kung ano ang gumagamit? 995 00:44:22,470 --> 00:44:23,410 Sino ang nagmamalasakit? 996 00:44:23,410 --> 00:44:26,034 Ngayon ako ng pakikipag-usap dito, sa halip ng mga down dito. 997 00:44:26,034 --> 00:44:28,700 At sa katunayan, bilang makakuha ng aming programa mas advanced at sopistikadong, 998 00:44:28,700 --> 00:44:32,550 kami ay pagpunta upang panatilihin ang pagkuha para sa ipinagkaloob na mas mababa ang antas ng mga piraso ng puzzle umiiral. 999 00:44:32,550 --> 00:44:34,780 Dahil kami ay sumulat ng mga ito o ang ibang tao ay, kaya 1000 00:44:34,780 --> 00:44:36,910 na maaari naming pagkatapos ay bumuo sa tuktok ng mga ito. 1001 00:44:36,910 --> 00:44:39,430 Tingnan natin ang isang pagtingin sa ito variant, aandar isa. 1002 00:44:39,430 --> 00:44:41,780 >> Kaya ang isang ito ay isang kaunti pa advanced, ngunit ito ay lumiliko out 1003 00:44:41,780 --> 00:44:44,570 na sa library CS50, mayroon lamang isang GetInt function. 1004 00:44:44,570 --> 00:44:47,720 Hindi namin naisip, taon na ang nakakaraan, upang ipatupad ang isang GetPositiveInt function. 1005 00:44:47,720 --> 00:44:50,970 At iyon ay isang maliit na nakakainis dahil kung ka guys ay pagsulat ng isang programa kung saan 1006 00:44:50,970 --> 00:44:53,325 nais mong makakuha ng isang positibong integer mula sa user, 1007 00:44:53,325 --> 00:44:55,010 Maaari mong ganap na gamitin ang GetInt. 1008 00:44:55,010 --> 00:44:57,840 At maaari mong ganap na i-tsek sa sa kalagayan at marahil isang loop 1009 00:44:57,840 --> 00:45:00,320 kung na int ay mas malaki kaysa sa 0 at sumigaw sa user ang 1010 00:45:00,320 --> 00:45:02,699 kung siya ay hindi nagbibigay sa ikaw ay isang positibong numero. 1011 00:45:02,699 --> 00:45:04,740 Ngunit sabihin bumuo ito ipaalam building harangan ang ating mga sarili, ang isang, 1012 00:45:04,740 --> 00:45:06,555 custom scratch piraso, kung ikaw ay. 1013 00:45:06,555 --> 00:45:08,680 Pupunta ako sa magkaroon ng isang programa dito na sa huli, ako 1014 00:45:08,680 --> 00:45:11,780 nais na ma-tawag GetPositiveInt, at gusto kong maging 1015 00:45:11,780 --> 00:45:14,200 ma-print out kahit na ano na int ay. 1016 00:45:14,200 --> 00:45:16,240 Ngunit ito ay lumilipad ang isip ang layo ngayon. 1017 00:45:16,240 --> 00:45:19,050 Ito lang ang na ibinigay ng isang mataas na antas name na nagsasabi kung ano ang ginagawa nito, 1018 00:45:19,050 --> 00:45:21,780 na kung saan ay kahanga-hanga dahil sa ito ay very intuitive ngayon na basahin. 1019 00:45:21,780 --> 00:45:24,710 At kung gagawin ko pag-aalaga kung ano ang sa ilalim hood, hayaan mo akong mag-scroll pababa. 1020 00:45:24,710 --> 00:45:27,140 At ito ay isang maliit na pananakot sa una, lalo na 1021 00:45:27,140 --> 00:45:29,470 kung ito ang iyong unang programa, ngunit hayaan ang isang pagtingin. 1022 00:45:29,470 --> 00:45:32,860 >> Hindi na ako na nagsasabi, walang bisa, dahil ito ay lumiliko out-andar, 1023 00:45:32,860 --> 00:45:34,777 marami tulad ng GetString, maaari nagbabalik ng halaga sa akin. 1024 00:45:34,777 --> 00:45:36,610 Sila ay hindi lamang magkaroon ng upang i-print sa screen, 1025 00:45:36,610 --> 00:45:38,410 sila ay maaaring aktwal kamay akin ng isang bagay sa likod. 1026 00:45:38,410 --> 00:45:41,535 At samantalang bago PrintName, Hindi ko na kailangan ng kahit ano sa likod. 1027 00:45:41,535 --> 00:45:44,160 Kailangan ko ng mga side effect ng isang bagay na nagpapakita up sa screen, 1028 00:45:44,160 --> 00:45:46,570 ngunit hindi ko na kailangan ng isang tao na ibigay sa akin ang isang bagay sa likod. 1029 00:45:46,570 --> 00:45:48,840 Dito, may GetPositiveInt, tulad ng sa GetInt, 1030 00:45:48,840 --> 00:45:50,640 Gusto kong makipag-kamay ng isang bagay sa likod. 1031 00:45:50,640 --> 00:45:53,220 Kaya ko sinasabi na hindi, walang bisa, sa 23 na linya, ngunit int, 1032 00:45:53,220 --> 00:45:55,570 na nagsasabing, ang function na ito na ako ay sumusulat, 1033 00:45:55,570 --> 00:45:58,860 tinatawag GetPositiveInt ay pagpunta sa kamay ako pabalik ng isang integer, hindi wala, 1034 00:45:58,860 --> 00:45:59,890 hindi walang bisa. 1035 00:45:59,890 --> 00:46:03,280 >> Samantala, ito ay pagpunta sa tumagal ng walang input, kaya ko na, uri ng, reverse ko ito. 1036 00:46:03,280 --> 00:46:08,280 Hindi ako nagbibigay GetPositiveInt anumang input, Gusto ko ito upang magbigay sa akin ang output nito. 1037 00:46:08,280 --> 00:46:09,800 At pagkatapos ay kung ano ang mangyayari ngayon? 1038 00:46:09,800 --> 00:46:11,640 Kaya narito kung paano ko maaaring magpahayag ng isang variable. 1039 00:46:11,640 --> 00:46:15,090 Ginawa ko na ito sa labas ng loop, para sa mga kadahilanang kami ay makakita, 1040 00:46:15,090 --> 00:46:17,700 ngunit ito lamang ay nagbibigay sa sa akin 32 bits tinatawag, n, 1041 00:46:17,700 --> 00:46:20,952 at na ako pre-pagtukoy ang mga ito sa mga tindahan ng integer. 1042 00:46:20,952 --> 00:46:23,660 At narito ang na, gawin habang tayuan, at ito ang dahilan kung bakit ito ay kapaki-pakinabang. 1043 00:46:23,660 --> 00:46:26,700 Literal gawin ito, habang n ay mas mababa sa 1. 1044 00:46:26,700 --> 00:46:28,030 Kaya sabihin makita kung ano ang mangyayari. 1045 00:46:28,030 --> 00:46:30,760 I-print out ko, mangyaring bigyan ako ng isang positibong int. 1046 00:46:30,760 --> 00:46:34,300 Pagkatapos ay kumuha ako ng isang int, gamit ang CS50 function at naka-imbak sa n. 1047 00:46:34,300 --> 00:46:38,990 >> At pagkatapos ay, kung ano ang linya ng code marahil ay naisakatuparan susunod, lohikal? 1048 00:46:38,990 --> 00:46:41,890 Aling line number? 1049 00:46:41,890 --> 00:46:42,571 Oo, kaya 31. 1050 00:46:42,571 --> 00:46:45,320 Hindi mo malalaman kung ito hanggang sa ikaw ay nasabihan o uri ng magpakilala ito, 1051 00:46:45,320 --> 00:46:45,986 ngunit iyan ay totoo. 1052 00:46:45,986 --> 00:46:48,280 Ito napupunta sa itaas sa ibaba at pagkatapos ay para mapigil ang paulit-ulit. 1053 00:46:48,280 --> 00:46:55,840 Kaya kung ako ay nag-type sa sabihin, ang bilang negatibong 1, ay n mas mababa sa negatibong 1? 1054 00:46:55,840 --> 00:46:56,340 Oo. 1055 00:46:56,340 --> 00:46:58,470 Dahil negatibong 1 ay mas mababa sa 1. 1056 00:46:58,470 --> 00:46:59,510 Kaya kung ano ang dapat mangyari? 1057 00:46:59,510 --> 00:47:03,260 Pupunta ako sa gawin ito habang n ay mas mababa sa 1, 1058 00:47:03,260 --> 00:47:05,760 kaya ako pagpunta upang bumalik sa 28 linya. 1059 00:47:05,760 --> 00:47:09,530 >> Ni patakbuhin this-- At sa bawat time-- at hayaan gumawa ng function 1 upang ipunin ito, 1060 00:47:09,530 --> 00:47:11,340 at ngayon tuldok slash function 1. 1061 00:47:11,340 --> 00:47:14,280 Kung nagta-type ako ng mga negatibong 1, ito ay pagpunta sa panatilihin ang sumisigaw sa akin 1062 00:47:14,280 --> 00:47:17,530 hanggang tumulong ako dahil ang bawat isa ng aking mga input ay mas mababa sa 1 1063 00:47:17,530 --> 00:47:20,070 at kung ito ay habang mas mababa sa 1, Pupunta ako sa panatilihin ang paggawa nito. 1064 00:47:20,070 --> 00:47:24,240 Kung sa wakas ay ibinigay ko sa isang numero tulad ng 50, Sa kabutihang palad, ang sinasabi nito, salamat para sa 50. 1065 00:47:24,240 --> 00:47:24,970 Bakit? 1066 00:47:24,970 --> 00:47:30,640 Dahil sa lalong madaling n ay hindi kukulangin sa 1, I itigil nagsisimula natigil sa loop na ito, 1067 00:47:30,640 --> 00:47:33,840 at ang bagong keyword sa ngayon, return, ginagawa literal na. 1068 00:47:33,840 --> 00:47:36,800 Kaya lamang ko na ipinatupad, sa isang kahulugan, ang katumbas ng GetString, 1069 00:47:36,800 --> 00:47:40,590 kung saan ako handing bumalik sa kahit sino ay gumagamit ng sa akin, ang ilang mga halaga. 1070 00:47:40,590 --> 00:47:42,820 Hindi nito kailangang maging isang string, ito ay isang int. 1071 00:47:42,820 --> 00:47:44,990 Kaya ang isang simple, mabilis na halimbawa, ngunit ipapakita namin sa lalong madaling panahon 1072 00:47:44,990 --> 00:47:47,930 makita ang ilang higit pang mga kumplikadong bersyon pa rin. 1073 00:47:47,930 --> 00:47:53,882 Sa katunayan, sabihin kumuha ng isang pagtingin sa isang isa pang numero, na kung saan ay tinatawag na return.c. 1074 00:47:53,882 --> 00:47:55,590 At ang isang ito ay aktwal na isang maliit na mas simple. 1075 00:47:55,590 --> 00:47:59,010 Kaya layunin ng programang ito sa life-- ni itala at patakbuhin ito ipaalam, 1076 00:47:59,010 --> 00:48:03,090 kaya bumalik, tuldok slash, return-- notice 1077 00:48:03,090 --> 00:48:05,530 cube lang programa ang halaga 2. 1078 00:48:05,530 --> 00:48:08,410 Ito ay medyo bobo, mahirap code, ito ay hindi kumuha ng anumang mga input, 1079 00:48:08,410 --> 00:48:12,220 ngunit ito ay nagpapakita ng isa pang function na iyong isinulat ko ang aking sarili. 1080 00:48:12,220 --> 00:48:15,760 Kaya dito, na ipinahayag ko ang isang variable, na tinatawag na x, uri ng int, 1081 00:48:15,760 --> 00:48:17,840 katumbas ng bilang 2, ganap na arbitrary. 1082 00:48:17,840 --> 00:48:19,530 Ito ang ilan lamang sa mga malalambot na printing. 1083 00:48:19,530 --> 00:48:23,070 Sinasabi nito x ay ngayon, tulad at tulad, cubing dot dot dot. 1084 00:48:23,070 --> 00:48:26,390 At ang magic ay tila sa 21 linya. 1085 00:48:26,390 --> 00:48:30,120 Ako ng pagtawag ng isang function na tinatawag na, kubo, Ako ito ibigay sa isang sheet ng papel 1086 00:48:30,120 --> 00:48:32,890 may number 2 na nakasulat dito, at kung ano ang halaga, mathematically, 1087 00:48:32,890 --> 00:48:34,860 gusto ko upang makakuha ng out ng mga ito? 1088 00:48:34,860 --> 00:48:36,570 Tulad ng isang katinuan check? 1089 00:48:36,570 --> 00:48:37,070 8. 1090 00:48:37,070 --> 00:48:37,570 Right? 1091 00:48:37,570 --> 00:48:40,160 2 gusto ko nakakubo back, 2 hanggang ang kapangyarihan ng 3, kaya 8 likod. 1092 00:48:40,160 --> 00:48:42,570 >> Kaya kung saan ipinapatupad ang kubo? 1093 00:48:42,570 --> 00:48:44,349 Well, abisuhan ang mga ito ay ipinatupad dito sa ibaba. 1094 00:48:44,349 --> 00:48:47,140 At tulad ng dati, lohikal, kahit na ang syntax ay marahil 1095 00:48:47,140 --> 00:48:49,320 sobrang bago sa marami sa inyo, Gusto ko ang function na ito 1096 00:48:49,320 --> 00:48:51,780 sa kamay ako sa likod ng isang sheet ng papel na may isang int sa mga ito. 1097 00:48:51,780 --> 00:48:53,990 Kaya Mayroon akong isang int, ang pangalan ay nagkataon, 1098 00:48:53,990 --> 00:48:55,530 ngunit Maginhawang tinatawag na kubo. 1099 00:48:55,530 --> 00:48:58,430 Ang input na ito, ay n ng type integer, kaya na 1100 00:48:58,430 --> 00:49:00,800 paano ko ipasa sa ang bilang 2 sa isang sheet ng papel. 1101 00:49:00,800 --> 00:49:03,910 At pagkatapos ito ay lumiliko out C suporta matematika, kaya hindi mo na kailangang x para sa mga panahon, 1102 00:49:03,910 --> 00:49:06,680 ikaw lamang gamitin ang asterisk para sa pagpaparami. 1103 00:49:06,680 --> 00:49:11,070 At ito ay nagbabalik ng n beses n ulit n, na kung saan ay lamang ng isang halaga nakakubo. 1104 00:49:11,070 --> 00:49:12,840 >> Kaya kung saan ay namin pagpunta sa lahat ng mga ito? 1105 00:49:12,840 --> 00:49:14,570 Ito ay talagang isang ipoipo tour, makatitiyak, 1106 00:49:14,570 --> 00:49:16,410 na sa sobrang seksyon at sa hanay ng problema 1, 1107 00:49:16,410 --> 00:49:18,368 ikaw ay lumakad sa pamamagitan ng ang lahat ng ito sa lahat ng iba pa. 1108 00:49:18,368 --> 00:49:22,490 At sa set problema 1, makikita namin sa paglipat mula sa mga graphical mundo ng mga scratch 1109 00:49:22,490 --> 00:49:25,640 isang bagay na mas command line sa C. Ngunit kami ay gumuhit ng inspirasyon 1110 00:49:25,640 --> 00:49:27,680 mula sa mga ito dito laro mula sa nakalipas na, kung saan 1111 00:49:27,680 --> 00:49:31,591 gamit C at ang standard na edisyon ng p set makikita mo ipatupad pyramid ni Mario. 1112 00:49:31,591 --> 00:49:34,340 At sa hacker na edisyon ng p set, kung pinili mo ito upang maghalal, 1113 00:49:34,340 --> 00:49:38,280 ikaw ay ipatupad ng kaunti pang Hinahamon pyramid na may dalawang Peaks. 1114 00:49:38,280 --> 00:49:41,239 Makikita mo rin ipatupad ang isang algorithm, isang sakim algorithm. 1115 00:49:41,239 --> 00:49:43,030 Ito ay lumiliko out doon ni ang ilang mga interesanteng logic 1116 00:49:43,030 --> 00:49:45,640 sa likod ng proseso ng tumatakbo station isang cashier 1117 00:49:45,640 --> 00:49:47,410 at talagang handing isang tao na pagbabago pabalik. 1118 00:49:47,410 --> 00:49:50,410 Mayroong isang algorithm na medyo tapat, na maaaring kahit na sa iyo 1119 00:49:50,410 --> 00:49:53,576 hawakang mahigpit intuitively noong una mong basahin it-- realizing na kung ano na hindi ko na laging 1120 00:49:53,576 --> 00:49:57,110 gawin anumang oras ko na ibinigay ng isang tao sa ilang pera back-- na nagbibigay-daan sa iyo upang palagi 1121 00:49:57,110 --> 00:50:00,679 i-minimize ang bilang ng mga mga tala sa papel o metal barya 1122 00:50:00,679 --> 00:50:02,220 na kayo ay handing bumalik sa user. 1123 00:50:02,220 --> 00:50:04,610 At ito, siyempre, ay nag-uudyok dahil kung ikaw ay pumunta sa CVS o watnat, 1124 00:50:04,610 --> 00:50:06,430 hindi mo nais na maging kamay isang buong grupo ng mga 1125 00:50:06,430 --> 00:50:07,596 o ng isang buong grupo ng mga pennies. 1126 00:50:07,596 --> 00:50:10,120 Gusto mong pinakakaunting barya, marahil, maaari. 1127 00:50:10,120 --> 00:50:13,070 >> Sa wakas, ikaw ay hinamon din sa magwilig sa mundo ng tubig 1128 00:50:13,070 --> 00:50:17,220 at talagang makakuha ng isang pagpapahalaga para sa isang mapping pagitan ng mga rate ng daloy, 1129 00:50:17,220 --> 00:50:19,890 ng gusto, tubig sa isang shower, lamang kung magkano ang tubig ay ginagamit. 1130 00:50:19,890 --> 00:50:22,640 At ang parunggit sa ganyang bagay, ay magiging dito ang clip na ito, 1131 00:50:22,640 --> 00:50:24,840 na kung saan kami magtatapos sa para sa 60 segundo lamang, na 1132 00:50:24,840 --> 00:50:29,070 paints isang larawan ng mababang-daloy shower ulo. 1133 00:50:29,070 --> 00:50:30,886 >> [Playback ng video] 1134 00:50:30,886 --> 00:50:31,385 -Ang Lahat ng karapatan. 1135 00:50:31,385 --> 00:50:32,774 Nakakuha ako ng lahat ng bagay dito. 1136 00:50:32,774 --> 00:50:35,800 Nakakuha ako ng Bagyong F Series, Hydra, Jetflow, Stockholm 1137 00:50:35,800 --> 00:50:37,660 Supersteam, pangalan mo ito. 1138 00:50:37,660 --> 00:50:39,265 >> -At Ano ang gagawin kayong magrekomenda? 1139 00:50:39,265 --> 00:50:40,460 >> Ano-ikaw ay naghahanap para sa? 1140 00:50:40,460 --> 00:50:41,300 >> -Power Tao. 1141 00:50:41,300 --> 00:50:42,285 Power. 1142 00:50:42,285 --> 00:50:42,910 -tulad Silkwood. 1143 00:50:42,910 --> 00:50:44,520 -Na Ay para sa radiation. 1144 00:50:44,520 --> 00:50:46,335 -Na Ang karapatan. 1145 00:50:46,335 --> 00:50:48,275 -Ngayon Kung ano ito? 1146 00:50:48,275 --> 00:50:49,704 -Na Ang Commando 450. 1147 00:50:49,704 --> 00:50:50,620 Hindi ako nagbebenta ng isang iyon. 1148 00:50:50,620 --> 00:50:51,700 >> -Pero Na kung ano ang gusto namin. 1149 00:50:51,700 --> 00:50:52,680 Ito ay isang commando 450. 1150 00:50:52,680 --> 00:50:53,882 >> Naniniwala -Hindi akin. 1151 00:50:53,882 --> 00:50:55,090 Ito ay ginagamit lamang sa sirko. 1152 00:50:55,090 --> 00:50:56,512 Ito ay para sa mga elepante. 1153 00:50:56,512 --> 00:50:59,356 >> -I'll Magbayad ng anumang bagay. 1154 00:50:59,356 --> 00:51:01,252 >> -Kung Ano ang tungkol Jerry? 1155 00:51:01,252 --> 00:51:02,760 >> -Hindi Maaaring hawakan na. 1156 00:51:02,760 --> 00:51:04,910 Siya ay maselan. 1157 00:51:04,910 --> 00:51:05,750 Oh oo. 1158 00:51:05,750 --> 00:51:36,737 1159 00:51:36,737 --> 00:51:37,320 [END playback] 1160 00:51:37,320 --> 00:51:37,700 DAVID J MALAN: Lahat ng karapatan. 1161 00:51:37,700 --> 00:51:38,820 Iyon ang dahilan kung para sa CS50. 1162 00:51:38,820 --> 00:51:40,050 Kami ay makikita mo sa susunod na linggo. 1163 00:51:40,050 --> 00:51:45,910 1164 00:51:45,910 --> 00:51:49,029 >> Tagapagsalita 1: [? Scully?], [? Ian,?] makasapit proyektong ito outro, 1165 00:51:49,029 --> 00:51:50,362 kung ano ang iyong guys makabuo ng? 1166 00:51:50,362 --> 00:51:51,990 >> Tagapagsalita 2: Well, binigyan ka namin ito ang iba't ibang mga pag-iisip, 1167 00:51:51,990 --> 00:51:53,250 at sa tingin namin na ang pinakamahusay na paraan to-- 1168 00:51:53,250 --> 00:51:53,660 >> Tagapagsalita 3: May I? 1169 00:51:53,660 --> 00:51:54,326 >> Tagapagsalita 2: Oo. 1170 00:51:54,326 --> 00:51:56,360 Sa pamamagitan ng lahat ng paraan, talaga. 1171 00:51:56,360 --> 00:51:59,425 >> Tagapagsalita 3: Kaya sa tingin ko Maaari naming sabihin sa ilang ang aming mga ideya 1172 00:51:59,425 --> 00:52:05,450 para sa outros may isa word-- wala. 1173 00:52:05,450 --> 00:52:08,950 1174 00:52:08,950 --> 00:52:10,409 >> DAVID J MALAN: Wala? 1175 00:52:10,409 --> 00:52:11,200 Tagapagsalita 3: Nothing. 1176 00:52:11,200 --> 00:52:12,990 DAVID J MALAN: Ano ang ibig sabihin nito? 1177 00:52:12,990 --> 00:52:16,260 Tagapagsalita 3: Ang outros ay tungkol sa wala. 1178 00:52:16,260 --> 00:52:21,720 Tagapagsalita 2: Well, ibig sabihin ko, sa pilosopiya, Ibig kong sabihin, walang ay palaging isang bagay. 1179 00:52:21,720 --> 00:52:24,200 Tagapagsalita 1: Kaya what's-- ano ang premise? 1180 00:52:24,200 --> 00:52:25,720 Tagapagsalita 3: Kaya ito ay tulad ng buhay. 1181 00:52:25,720 --> 00:52:26,680 OK. 1182 00:52:26,680 --> 00:52:28,294 Ano ang ginawa mo sa araw na ito? 1183 00:52:28,294 --> 00:52:31,811 >> DAVID J MALAN: Nakatanggap ako, nagkaroon almusal, at ang dumating sa trabaho. 1184 00:52:31,811 --> 00:52:34,056 >> Tagapagsalita 3: Iyan ay isang outro. 1185 00:52:34,056 --> 00:52:36,806 Tagapagsalita 2: Ngunit, ibig sabihin ko, hindi dapat isang bagay na mangyayari sa kanya sa the-- 1186 00:52:36,806 --> 00:52:37,889 Tagapagsalita 3: Hindi, hindi, hindi, hindi. 1187 00:52:37,889 --> 00:52:40,220 Walang mangyayari. 1188 00:52:40,220 --> 00:52:42,910 >> Tagapagsalita 1: kaya kung bakit kami pinapanood? 1189 00:52:42,910 --> 00:52:46,956 >> Tagapagsalita 3: Dahil ito ay isang outro para CS50. 1190 00:52:46,956 --> 00:52:48,652 >> DAVID J MALAN: Hindi pa. 1191 00:52:48,652 --> 00:52:49,151