1 00:00:07,590 --> 00:00:09,920 [Powered by Google Translate] David J. MALAN: Ang lahat ng mga karapatan, ito ay CS50 at ito ang 2 00:00:09,920 --> 00:00:15,250 magtapos ng Linggo 1, kaya ang pag-aaral card ay sa at ang kabuuang bilang ng 3 00:00:15,250 --> 00:00:18,640 kaklase na mayroon ka sa taong ito ay 745. 4 00:00:18,640 --> 00:00:20,920 At sa gayon kami ay nanginginig na magkaroon ng marami sa inyo sa kurso 5 00:00:20,920 --> 00:00:23,680 semestre na ito, ngunit kahit na ang kursong ito kaya malaki, 6 00:00:23,680 --> 00:00:26,090 mapagtanto na ito ay ang mga bagay na ito tulad ng mga tanghalian ng Biyernes, tulad ng 7 00:00:26,090 --> 00:00:29,020 oras ng opisina, 15-taong seksyon, at iba pa na 8 00:00:29,020 --> 00:00:30,590 ang talagang nilalayong ito upang lumikha ng mas intimate 9 00:00:30,590 --> 00:00:31,140 kapaligiran. 10 00:00:31,140 --> 00:00:34,070 Kaya kahit maaari naming mangalap ng isa o dalawang beses sa isang linggo, dito sa 11 00:00:34,070 --> 00:00:36,420 Sanders, alam na magkano ng iyong karanasan sa kursong ito 12 00:00:36,420 --> 00:00:39,330 ay napaka hands-on sa tabi ng iyong mga kaklase 13 00:00:39,330 --> 00:00:40,730 at ang pagtuturo kawani. 14 00:00:40,730 --> 00:00:43,960 >> Kaya dito namin pumunta, Fall 2012. 15 00:00:43,960 --> 00:00:47,530 Kaya isipin ang na huling beses na namin natapos sa isang tala ng 16 00:00:47,530 --> 00:00:50,460 imprecision, pakikipag-usap tungkol sa mga representasyon ng mga numero. 17 00:00:50,460 --> 00:00:52,950 At kami ay tumingin sa isa sa mga pagkabigo na nangyari, sa 18 00:00:52,950 --> 00:00:54,920 tunay na mundo, kapag dumating ito sa hindi pagkakaunawaan 19 00:00:54,920 --> 00:00:55,890 kung paano computer gumana. 20 00:00:55,890 --> 00:00:58,590 Well, ngayon gagamitin namin muling bisitahin ng isa pa ng mga ideya bilang 21 00:00:58,590 --> 00:01:01,410 na rin na magpatuloy ang aming talakayan ng CS50 client 22 00:01:01,410 --> 00:01:04,090 at C at kung ano ang ibig sabihin nito talagang sa programa. 23 00:01:04,090 --> 00:01:06,430 Ngunit una, lamang ng ilang ng alimpuyo anunsyo. 24 00:01:06,430 --> 00:01:08,930 >> Mga seksyon simulan ito Linggo, at unang linggo ay palaging isang 25 00:01:08,930 --> 00:01:11,030 bit ng isang mabilis na pagsisimula, dahil Naging namin sa 26 00:01:11,030 --> 00:01:12,620 ang iyong mga seksyon ng form. 27 00:01:12,620 --> 00:01:14,450 Ginagawa namin ang parehong, ngayon, sa mga Fellows ng pagtuturo, ngayon 28 00:01:14,450 --> 00:01:16,410 na alam nila ang kanilang mga iskedyul, kaya kami ay apunta, sa pamamagitan ng 29 00:01:16,410 --> 00:01:19,380 Sabado umaga, mag-follow up sa iyo sa iyong seksyon 30 00:01:19,380 --> 00:01:20,760 pagtatalaga at tf. 31 00:01:20,760 --> 00:01:22,770 Napagtanto na sila simulan ang susunod na araw, Linggo 32 00:01:22,770 --> 00:01:24,510 o Lunes o Martes. 33 00:01:24,510 --> 00:01:27,730 At pagkatapos ay namin tumanggap mga pagbabago ng seksyon na lumitaw ang mga ito 34 00:01:27,730 --> 00:01:28,690 sa mga araw na darating. 35 00:01:28,690 --> 00:01:31,590 Office oras, samantala, ay, muli, ngayong gabi, 8 pm hanggang 11, sa 36 00:01:31,590 --> 00:01:33,740 Annenberg, pati na rin bukas gabi. 37 00:01:33,740 --> 00:01:36,150 Kahit na ang problema set sa pangkalahatan ay dahil sa Huwebes 38 00:01:36,150 --> 00:01:39,020 sa tanghali, Napagtanto na mayroon kang hanggang sa limang mga late araw na gumastos, 39 00:01:39,020 --> 00:01:42,430 samakatuwid ang availability ng mga oras ng opisina sa Huwebes kung 40 00:01:42,430 --> 00:01:45,930 ka ng cash sa isa sa mga late araw at, at dahil doon, isumite 41 00:01:45,930 --> 00:01:47,070 isang bagay sa Biyernes. 42 00:01:47,070 --> 00:01:50,850 Hayaan ang iminumungkahi sa akin na sa simula ay kabilang sa mga mas masaya, kabilang ang 43 00:01:50,850 --> 00:01:52,390 mas mababa ang key set ng problema. 44 00:01:52,390 --> 00:01:55,160 At Gusto ko hang patungo sa daloy ng mga sasakyan sa mga late na araw, madiskarteng, lamang 45 00:01:55,160 --> 00:01:57,380 para sa ibang pagkakataon sa semestre kapag ang buhay ay nagsisimula upang makakuha ng sa paraan 46 00:01:57,380 --> 00:01:59,470 may midterms at iba pang klase. 47 00:01:59,470 --> 00:02:01,580 Problema Set 1, samantala, ay nai-post sa kurso 48 00:02:01,580 --> 00:02:06,080 website na ito Biyernes, bilang ay sa kurso lakad 49 00:02:06,080 --> 00:02:08,789 sa pamamagitan ng video, na ay kumuha sa 2:30 PM sa Biyernes 50 00:02:08,789 --> 00:02:11,890 at pagkatapos ay nai-post online sa pamamagitan ng susunod na araw. 51 00:02:11,890 --> 00:02:13,880 >> Kaya namin natapos sa Lunes. 52 00:02:13,880 --> 00:02:15,450 Gusto kong - aktwal, tandaan isa dito. 53 00:02:15,450 --> 00:02:18,870 Dahil sa klase - dahil Sanders ay hindi eksakto bang ipahiram sa 54 00:02:18,870 --> 00:02:22,220 mismo sa kaswal na Q & A likod at balik katakut-takot na rin, hindi namin 55 00:02:22,220 --> 00:02:24,030 pagpunta upang subukan ang isang bagay ng isang maliit na bagong taong ito, kung saan 56 00:02:24,030 --> 00:02:26,160 kung hindi ka kumportable itaas ang iyong kamay o mo lamang 57 00:02:26,160 --> 00:02:28,800 ay sa halip hindi taasan ang iyong kamay sa isang kuwarto tulad nito, 58 00:02:28,800 --> 00:02:30,710 kami ay pagpunta upang magkaroon ng ilan sa mga Fellows ng pagtuturo at Cas 59 00:02:30,710 --> 00:02:33,260 Manning cs50.net/discuss sa panahon ng panayam. 60 00:02:33,260 --> 00:02:35,440 Kaya kung mayroon kang isang tanong dahil ako ay ganap na 61 00:02:35,440 --> 00:02:37,510 hindi malinaw tungkol sa isang bagay o hindi mausisa tungkol sa ilang 62 00:02:37,510 --> 00:02:39,640 paksa, subukan ang pag-post doon. 63 00:02:39,640 --> 00:02:42,670 Tag ito na may label ng panayam, at gagawin namin ang aming pinakamahusay na 64 00:02:42,670 --> 00:02:45,430 ngayon at sa susunod na linggo - we'll subukan ito - sa na FIELD ito 65 00:02:45,430 --> 00:02:47,990 alinman elektroniko, online, o kung ito nararamdaman tulad ng dapat namin 66 00:02:47,990 --> 00:02:50,430 talagang tugunan ang mga ito en masse, isa ng Fellows pagtuturo o 67 00:02:50,430 --> 00:02:52,080 Cas ay itaas ang kanilang mga kamay at hilingin 68 00:02:52,080 --> 00:02:53,480 hindi nagpapakilala sa iyong ngalan. 69 00:02:53,480 --> 00:02:55,650 Kaya bibigyan namin ito isang subukan at makita kung gaano kahusay ito gumagana. 70 00:02:55,650 --> 00:02:58,540 Subalit, sa pamamagitan ng lahat ng paraan, patuloy na itaas ang mga kamay hangga't nais mong. 71 00:02:58,540 --> 00:03:11,420 >> Kaya huling beses na inihayag namin na 10% o isang-ikasampu hindi, 72 00:03:11,420 --> 00:03:13,840 katunayan, 0.1, tulad mo ay itinuro maraming taon na ang nakakaraan. 73 00:03:13,840 --> 00:03:15,390 Ito ay sa katunayan, ng halaga tulad nito. 74 00:03:15,390 --> 00:03:16,970 Ngunit hindi ganap na pag totoo, i-right? 75 00:03:16,970 --> 00:03:19,585 Lang namin ito hadlang sa computer kung saan, kung ikaw 76 00:03:19,585 --> 00:03:22,450 lamang magkaroon ng isang tiyak na halaga ng memorya, RAM, o higit pa 77 00:03:22,450 --> 00:03:25,220 partikular na bit, maayos, may lamang ng isang tiyak na numero 78 00:03:25,220 --> 00:03:26,980 ng mga bagay na maaari mong kumatawan. 79 00:03:26,980 --> 00:03:29,780 Halimbawa, kung kami ay may numerong zero, at gusto naming 80 00:03:29,780 --> 00:03:32,790 kumatawan sa binary, gamit ang walong bits, kung saan isang bit, 81 00:03:32,790 --> 00:03:34,710 muli, ay zero o ng isa, maaari naming 82 00:03:34,710 --> 00:03:39,240 kumatawan sa ito bilang 00,000,000. 83 00:03:39,240 --> 00:03:41,160 At na ang isang maliit na hindi kinakailangan maligoy. 84 00:03:41,160 --> 00:03:43,700 Tulad sa decimal system sa tunay na mundo, 85 00:03:43,700 --> 00:03:47,040 pangkalahatan, kung nais mong isulat ang numero 123, namin 86 00:03:47,040 --> 00:03:52,240 mga tao ay marahil ay hindi sumulat ng 00000123 kahit, 87 00:03:52,240 --> 00:03:53,940 pagtakbo, na ang eksaktong parehong numero. 88 00:03:53,940 --> 00:03:56,580 Namin lamang drop ang nangungunang zero, kaya na magsalita. 89 00:03:56,580 --> 00:03:58,270 >> Sa binary, maaari naming gawin ang parehong. 90 00:03:58,270 --> 00:04:01,440 Binary at zero, zero at binary lang zero. 91 00:04:01,440 --> 00:04:02,870 Kailangan mo lamang ng isang sandali. 92 00:04:02,870 --> 00:04:05,020 Ngunit muli, ang pinaka-karaniwang yunit ng pagsukat sa mundo 93 00:04:05,020 --> 00:04:07,820 ng computing ay bytes, walong bits. 94 00:04:07,820 --> 00:04:09,720 Dahil lang sa isang bit, medyo walang silbi. 95 00:04:09,720 --> 00:04:12,020 Walong bits, hindi lubha kapaki-pakinabang, ngunit hindi bababa sa pa 96 00:04:12,020 --> 00:04:14,280 kapaki-pakinabang kaysa sa isang solong yunit ng pagsukat. 97 00:04:14,280 --> 00:04:17,100 Kaya may walong bits, makikita namin karaniwang kumakatawan sa binary. 98 00:04:17,100 --> 00:04:20,459 Kaya dito mayroon kaming ang mga numero zero, isa, dalawa, at pagkatapos, tulad ng 99 00:04:20,459 --> 00:04:24,200 Nate ginawa sa aming video huling Miyerkules, maaari naming magpatuloy 100 00:04:24,200 --> 00:04:25,940 pagbibilang ng hanggang sa pitong, sa walong. 101 00:04:25,940 --> 00:04:27,860 At pagkatapos ay kung ginagamit namin ang higit pa at higit pa na mga bits, namin 102 00:04:27,860 --> 00:04:29,880 maaaring bilangin sa infinity. 103 00:04:29,880 --> 00:04:32,800 Ngunit kung mayroon ka lamang ng isang tiyak na bilang ng mga bits, tulad ng 104 00:04:32,800 --> 00:04:35,030 ang kaso sa anumang sistema ng computer, o kahit misayl 105 00:04:35,030 --> 00:04:36,670 system, maayos, sa katunayan ka lamang magkaroon ng isang 106 00:04:36,670 --> 00:04:37,900 tiyak na halaga ng katumpakan. 107 00:04:37,900 --> 00:04:41,290 Kaya kung nais mong kumakatawan sa bilang tulad ng 0.1, na rin, ang 108 00:04:41,290 --> 00:04:43,410 computer na may upang pumili at piliin ang. 109 00:04:43,410 --> 00:04:45,970 At kung ito lamang ay may isang tiyak na bilang ng mga numero kaya nito 110 00:04:45,970 --> 00:04:50,490 kumatawan, maaari itong ay malapit sa 0.1 para sa iyo, ngunit hindi ito maaari 111 00:04:50,490 --> 00:04:53,730 kinakailangang magbibigay sa iyo ng eksaktong halaga na nais mong. 112 00:04:53,730 --> 00:04:55,660 At ito ay isa lamang ng mga hamon ng computer, 113 00:04:55,660 --> 00:04:57,090 sa ilalim ng hood, thankfully. 114 00:04:57,090 --> 00:04:59,110 >> Habang kami malayo sa semestre, mga mas mababang antas 115 00:04:59,110 --> 00:05:02,310 maging higit na mas mababa kawili-wili ang mga detalye, ngunit tiyak na ang 116 00:05:02,310 --> 00:05:05,700 application ng mga ideya na ito ay maaaring magkaroon ng ilang mga tunay na mundo 117 00:05:05,700 --> 00:05:06,760 ramifications. 118 00:05:06,760 --> 00:05:08,190 Isa ay isang bit na masaya. 119 00:05:08,190 --> 00:05:12,150 Gaano karaming mo nakita ang mga kamangha-manghang pelikula Office Space? 120 00:05:12,150 --> 00:05:13,620 Kung hindi mo pa, na ang iyong hindi opisyal na 121 00:05:13,620 --> 00:05:14,370 araling-bahay para sa linggo. 122 00:05:14,370 --> 00:05:16,730 Ngunit sa Office Space, ang mga Fellows sa pelikula na 123 00:05:16,730 --> 00:05:19,900 kalamangan ng tiyak na ito ideya, ngunit sila aktwal na balabal 124 00:05:19,900 --> 00:05:21,270 ito mula sa isa pang pelikula na maaaring mayroon ka 125 00:05:21,270 --> 00:05:22,760 nakita, kahit taon bago. 126 00:05:22,760 --> 00:05:24,920 Kaya ipaalam sa akin magbibigay sa iyo ng ilang segundo ng trailer na ito mula sa 127 00:05:24,920 --> 00:05:27,470 ito kamangha-manghang pelikula at ito ay napaka 128 00:05:27,470 --> 00:05:28,340 academically may-katuturan. 129 00:05:28,340 --> 00:05:30,310 >> [Nagpe-play ang pelikula] 130 00:05:30,310 --> 00:05:32,240 Aktwal na ako pino-promote. 131 00:05:32,240 --> 00:05:33,360 Ko programa ng virus na punitin na 132 00:05:33,360 --> 00:05:34,460 ilagay-off ang malaking oras. 133 00:05:34,460 --> 00:05:35,770 Well, paano ito gumagana? 134 00:05:35,770 --> 00:05:37,836 Sa bawat oras na may isang transaksyon sa bangko kung saan interes ay 135 00:05:37,836 --> 00:05:40,154 nakalkula, may mga libo-libo sa isang araw, ang computer ay nagtatapos 136 00:05:40,154 --> 00:05:41,040 may mga fraction na ito ng isang sentimo. 137 00:05:41,040 --> 00:05:43,050 Ngunit hindi ako pagpunta sa gawin ang anumang iligal. 138 00:05:43,050 --> 00:05:46,730 Ilegal na? Samir, ito ay America. 139 00:05:46,730 --> 00:05:48,010 Mayroon kang sumusumpa sa Diyos. 140 00:05:48,010 --> 00:05:51,870 Kung walang tao alam tungkol dito ngunit sa amin, lahat ng karapatan? Walang mga miyembro ng pamilya, walang 141 00:05:51,870 --> 00:05:52,490 girlfriends, walang sinuman. 142 00:05:52,490 --> 00:05:53,882 [Hindi marinig]. 143 00:05:53,882 --> 00:05:57,594 Huwag mag-alala, tao, hindi ko ay sabihin sa sinuman alinman. 144 00:05:57,594 --> 00:05:59,680 [Pelikula ay nagtatapos] 145 00:05:59,680 --> 00:06:01,900 >> Karapatan lahat, kaya siguro nakita ko ang pelikulang ito na mas mahusay kaysa sa karamihan ng 146 00:06:01,900 --> 00:06:05,530 mga tao dito, ngunit sa anumang kaso, ang virus na sila ay 147 00:06:05,530 --> 00:06:06,400 sinusubukang lumikha - 148 00:06:06,400 --> 00:06:08,410 at sa pelikula, anumang oras nais nilang tawagan ang isang bagay ng virus, 149 00:06:08,410 --> 00:06:09,770 pangkalahatan, hindi talagang isang virus. 150 00:06:09,770 --> 00:06:11,600 Ito ay isang programa na ang isang tao ay sinulat ni gawin ang isang bagay. 151 00:06:11,600 --> 00:06:13,800 At sa kasong ito, ang mga guys ay sinusubukan upang magsulat ng isang programa 152 00:06:13,800 --> 00:06:16,610 na kinuha kalamangan ng kanilang kumpanya na tinatawag Innotech ng 153 00:06:16,610 --> 00:06:19,740 computing system, kung saan ang computer, masyadong, kahit na kapag ito 154 00:06:19,740 --> 00:06:21,350 pagdating sa pera, maaari hindi kinakailangang 155 00:06:21,350 --> 00:06:23,490 kumatawan ang pera tiyak. 156 00:06:23,490 --> 00:06:27,630 Kaya kahit na maaaring mayroon ka ng $ 0.10 sa iyong bank account, 157 00:06:27,630 --> 00:06:31,060 0.10, well, ang computer ay maaaring aktwal na sa tingin na mayroon kang 158 00:06:31,060 --> 00:06:33,560 ito maraming sentimo sa iyong bank account. 159 00:06:33,560 --> 00:06:35,750 At kaya kung ano ang mga guys ito ay naghahangad gawin - at sila 160 00:06:35,750 --> 00:06:38,240 nakaagaw ng ideya, lumiliko mula sa superman III, kung saan 161 00:06:38,240 --> 00:06:41,210 Richard Pryor ginawa ang parehong bagay - sila ay mahalagang 162 00:06:41,210 --> 00:06:44,880 pagsulat programa na maghangad upang gawin ang lahat ng sumusunod na 163 00:06:44,880 --> 00:06:46,930 numero, ang lahat ng sa napakaliit, napakaliit, napakaliit fraction ng 164 00:06:46,930 --> 00:06:50,160 pennies, at siphoning mga upang ang ang mga tao lamang 165 00:06:50,160 --> 00:06:52,620 iisip, oh, ito lamang $ 0.10 doon, ngunit ang lahat ng mga 166 00:06:52,620 --> 00:06:54,410 sumusunod na kalaunan magdagdag ng mga numero. 167 00:06:54,410 --> 00:06:57,490 Kaya ang isang kahanga-hangang ideya at backfired hilariously sa na 168 00:06:57,490 --> 00:06:58,250 partikular na film. 169 00:06:58,250 --> 00:07:01,800 >> Ngunit sa tunay na mundo, masyadong, may mas tungkol 170 00:07:01,800 --> 00:07:03,190 implikasyon ng mga uri ng mga bagay. 171 00:07:03,190 --> 00:07:05,450 At isa sa mga dahilan na sumisid sa larangan ng computer 172 00:07:05,450 --> 00:07:07,620 agham ay, muli, nito applicability hindi sa 173 00:07:07,620 --> 00:07:09,740 engineering agham nag-iisa, ngunit para lamang 174 00:07:09,740 --> 00:07:10,650 iba pang mga patlang pati na rin. 175 00:07:10,650 --> 00:07:14,760 Kaya ito ay isang mas lighthearted pagtingin sa kung ano ang maaaring magkamali, ngunit 176 00:07:14,760 --> 00:07:17,630 ring masyadong ng pagbubukas ng mata, tingin ko, pagdating sa 177 00:07:17,630 --> 00:07:20,760 unawa nang eksakto kung paano sumasalahat ng dako teknolohiya tulad ng 178 00:07:20,760 --> 00:07:22,870 computer at programming o mga araw na ito, 179 00:07:22,870 --> 00:07:23,930 sa paraan ng software. 180 00:07:23,930 --> 00:07:26,500 Kaya ang susunod na clip na ito ay tungkol sa anim na minuto, patuloy 181 00:07:26,500 --> 00:07:30,320 kung saan kami tumigil nakaraang oras, ngunit nagbibigay-daan sa amin upang tumingin ng kaunti 182 00:07:30,320 --> 00:07:33,370 mas malalalim na sa isang tulad ng mga isyung ito. 183 00:07:33,370 --> 00:07:35,270 Hayaan akong lumaktaw sa kung saan namin tumigil, 184 00:07:35,270 --> 00:07:37,780 na sa dito. 185 00:07:37,780 --> 00:07:41,580 At mayroon kaming bahagi dalawang ng dalawang, para sa mga tungkol sa anim na minuto dito. 186 00:07:41,580 --> 00:07:41,980 >> [MAGLARO pelikula] 187 00:07:41,980 --> 00:07:45,430 Plagued ng modernong mga kuwitis teknolohiya. 188 00:07:45,430 --> 00:07:49,280 Noong 1991, ang simula ng unang Gulf War, ang Patriot 189 00:07:49,280 --> 00:07:51,350 misayl nakaranas ng isang katulad na uri ng 190 00:07:51,350 --> 00:07:52,645 problema sa conversion ng numero. 191 00:07:52,645 --> 00:07:57,460 At bilang isang resulta, 20 tao, 20 Amerikanong sundalo, pinatay 192 00:07:57,460 --> 00:08:01,130 at halos 100 iba nasugatan, kapag ang Patriot, na dapat 193 00:08:01,130 --> 00:08:03,400 upang maprotektahan laban sa mga papasok na Scuds, 194 00:08:03,400 --> 00:08:06,020 nabigong mag-sunog ng misayl. 195 00:08:06,020 --> 00:08:09,350 >> Kapag Iraq invaded Kuwait at Amerika Inilunsad ng Disyerto 196 00:08:09,350 --> 00:08:13,530 Bagyo sa unang bahagi ng 1991, Patriot misayl baterya ay 197 00:08:13,530 --> 00:08:16,970 na itinalaga upang protektahan ang Saudi Arabia at Israel mula sa Iraqi 198 00:08:16,970 --> 00:08:19,810 Tumakbo misil atake. 199 00:08:19,810 --> 00:08:23,740 Patriot ay isang US medium-range na ibabaw-to-air sistema, 200 00:08:23,740 --> 00:08:26,370 manufactured sa pamamagitan ng Raytheon ng kumpanya. 201 00:08:26,370 --> 00:08:30,860 Ang laki ng Patriot interceptor mismo, tungkol sa 202 00:08:30,860 --> 00:08:35,650 halos 20 talampakan ang haba at weighs tungkol sa £ 2000. 203 00:08:35,650 --> 00:08:38,809 At nagdadala ng warhed ng tungkol sa - tingin ko ito ay halos 204 00:08:38,809 --> 00:08:40,169 £ 150. 205 00:08:40,169 --> 00:08:45,820 At ang warhed mismo ay isang mataas na paputok na may 206 00:08:45,820 --> 00:08:48,120 fragment sa paligid nito. 207 00:08:48,120 --> 00:08:51,870 Ang casing ng warhed ay dinisenyo upang kumilos tulad buckshot. 208 00:08:51,870 --> 00:08:54,920 Ang mga missiles ay dinala apat bawat lalagyan at 209 00:08:54,920 --> 00:08:57,850 transported sa pamamagitan ng isang semi trailer. 210 00:08:57,850 --> 00:09:02,940 >> Ang Patriot anti-misayl sistema napupunta pabalik ng hindi bababa sa 211 00:09:02,940 --> 00:09:05,530 20 taon na ngayon. 212 00:09:05,530 --> 00:09:09,150 Orihinal na ito ay dinisenyo bilang isang air pagtatanggol misayl sa 213 00:09:09,150 --> 00:09:12,920 shoot eroplano kaaway, sa unang Gulf War. 214 00:09:12,920 --> 00:09:17,700 Kapag ang digmaan na dumating kasama, ang Army nais gamitin ito upang shoot 215 00:09:17,700 --> 00:09:19,880 down mga Scuds, hindi eroplano. 216 00:09:19,880 --> 00:09:24,860 Ang Air Iraqi Force ay hindi kaya magkano ng isang problema, ngunit ang Army 217 00:09:24,860 --> 00:09:27,260 nag-aalala tungkol sa mga Scuds. 218 00:09:27,260 --> 00:09:30,810 At kaya sila Sinubukan i-upgrade ang Patriot. 219 00:09:30,810 --> 00:09:33,770 Intercepting isang kaaway misayl na naglalakbay sa Mach 5 ay pagpunta 220 00:09:33,770 --> 00:09:35,790 na hamon ng sapat. 221 00:09:35,790 --> 00:09:39,460 Ngunit kapag Patriot ay rushed sa serbisyo, ang Army 222 00:09:39,460 --> 00:09:43,730 ay hindi malaman ng isang Iraqi pagbabago na ginawa ang kanilang 223 00:09:43,730 --> 00:09:46,510 Scuds halos imposible upang maabot. 224 00:09:46,510 --> 00:09:50,040 >> Ano ang nangyari mga Scuds na 225 00:09:50,040 --> 00:09:51,360 darating sa mga hindi matatag. 226 00:09:51,360 --> 00:09:52,266 Sila ay wobbling. 227 00:09:52,266 --> 00:09:56,300 Ang dahilan para sa ay Iraqis, upang makakuha ng 600 228 00:09:56,300 --> 00:10:00,650 kilometro ng 300 kilometro hanay ng misayl, kinuha 229 00:10:00,650 --> 00:10:02,423 bigat ng front warhed at 230 00:10:02,423 --> 00:10:03,990 ginawa warhed ang mas magaan. 231 00:10:03,990 --> 00:10:08,700 Kaya ngayon Patriot ng sinusubukan na dumating sa malaking ulan, at karamihan ng 232 00:10:08,700 --> 00:10:11,192 oras, napakatinding karamihan ng oras, gagawin ito 233 00:10:11,192 --> 00:10:13,450 lamang lumipad ng malaking ulan. 234 00:10:13,450 --> 00:10:16,300 Kapag ang operator ng sistema ng Patriot maisasakatuparan ang Patriot 235 00:10:16,300 --> 00:10:20,160 nasagot ang target nito, sila mina Patriot warhed. 236 00:10:20,160 --> 00:10:22,760 Upang maiwasan ang mga posibleng casualties, ito ay pinapayagan 237 00:10:22,760 --> 00:10:25,100 mahulog sa lupa. 238 00:10:25,100 --> 00:10:29,400 Iyon ay kung ano ang karamihan ng mga tao nakita, bilang malaking fireballs sa kalangitan, 239 00:10:29,400 --> 00:10:34,930 at gusot bilang intercepts ng malaking ulan warheads. 240 00:10:34,930 --> 00:10:37,490 >> Bagaman, sa kalangitan sa gabi, Patriots lumitaw na maging 241 00:10:37,490 --> 00:10:41,570 matagumpay na sirain Scuds, sa Dhahran, mayroong maaaring hindi 242 00:10:41,570 --> 00:10:43,730 pagkakamali tungkol sa pagganap nito. 243 00:10:43,730 --> 00:10:46,370 Doon, radar sistema ang Patriot nawala ang pagsubaybay ng isang 244 00:10:46,370 --> 00:10:50,090 papasok na tumakbo at hindi kailanman Inilunsad dahil 245 00:10:50,090 --> 00:10:51,340 sa isang depekto software. 246 00:10:54,030 --> 00:10:57,050 Ito ay ang Israelis na unang natuklasan na ang na 247 00:10:57,050 --> 00:11:02,000 system ay, mas malaki ang oras pagkakaiba naging, 248 00:11:02,000 --> 00:11:05,530 dahil sa isang orasan na naka-embed sa computer system ng. 249 00:11:05,530 --> 00:11:09,060 Tungkol sa dalawang linggo bago ang trahedya sa Dhahran, ang 250 00:11:09,060 --> 00:11:11,730 Israelis iniulat sa ang Kagawaran ng Depensa na ang 251 00:11:11,730 --> 00:11:13,250 sistema ay mawala ang oras. 252 00:11:13,250 --> 00:11:15,610 Matapos ang tungkol sa walong oras ng tumatakbo, napansin nila na ang 253 00:11:15,610 --> 00:11:18,330 sistema ay nagiging kapansin-pansing hindi gaanong tumpak. 254 00:11:18,330 --> 00:11:20,910 Ang Defense Department tumugon sa pamamagitan ng pagsasabi ng lahat ng 255 00:11:20,910 --> 00:11:23,710 ang Patriot baterya sa hindi iwan ang system 256 00:11:23,710 --> 00:11:25,450 sa para sa isang mahabang panahon. 257 00:11:25,450 --> 00:11:28,010 Hindi nila sinabi kung ano ang isang mahabang panahon ay - 8 oras, 10 258 00:11:28,010 --> 00:11:29,690 oras, 1,000 oras. 259 00:11:29,690 --> 00:11:31,940 Walang alam. 260 00:11:31,940 --> 00:11:35,020 >> Ang Patriot baterya na puwesto sa kuwartel sa Dhahran 261 00:11:35,020 --> 00:11:39,030 at ang mga flawed panloob na orasan ay sa higit sa 100 oras sa 262 00:11:39,030 --> 00:11:42,240 gabi ng Pebrero ika-25. 263 00:11:42,240 --> 00:11:46,580 Nasubaybayan ito ang oras ng katumpakan ng tungkol sa 1/10 ng isang segundo. 264 00:11:46,580 --> 00:11:48,830 Ngayon 1/10 ng ikalawang ay isang kawili-wiling bilang dahil 265 00:11:48,830 --> 00:11:52,660 hindi ito maaaring ipinahayag sa binary, eksakto, na nangangahulugan na 266 00:11:52,660 --> 00:11:54,940 hindi ito maaaring ipinahayag nang eksakto sa anumang 267 00:11:54,940 --> 00:11:57,330 modernong digital computer. 268 00:11:57,330 --> 00:11:59,130 Mahirap na paniwalaan. 269 00:11:59,130 --> 00:12:01,720 Ngunit gamitin ang mga ito bilang isang halimbawa. 270 00:12:01,720 --> 00:12:04,090 >> Natin ang bilang isang-katlo. 271 00:12:04,090 --> 00:12:07,950 Isang-katlo ay hindi ipinahayag sa decimal, eksakto. 272 00:12:07,950 --> 00:12:12,710 Isang-katlo .333 pagpunta sa para sa infinity. 273 00:12:12,710 --> 00:12:17,050 Walang paraan upang gawin na may ganap na kawastuhan sa decimal. 274 00:12:17,050 --> 00:12:19,340 Iyon mismo ang parehong uri ng problema na nangyari sa 275 00:12:19,340 --> 00:12:20,190 ang Patriot. 276 00:12:20,190 --> 00:12:24,680 Ang na system ang tumakbo, mas malala ang oras error ay naging. 277 00:12:24,680 --> 00:12:28,640 Matapos ang 100 oras ng pagpapatakbo, ang error sa panahon lamang 278 00:12:28,640 --> 00:12:29,870 tungkol sa isang ikatlo ng isang segundo. 279 00:12:29,870 --> 00:12:34,790 Ngunit sa mga tuntunin ng pag-target ng isang misayl na naglalakbay sa Mach 5, 280 00:12:34,790 --> 00:12:39,140 nagresulta ito sa isang tracking error ng higit sa 600 metro. 281 00:12:39,140 --> 00:12:42,510 Gusto ito ng malalang error para sa mga sundalo sa Dhahran. 282 00:12:42,510 --> 00:12:48,680 >> Ano ang nangyari ay isang malaking ulan launch ay nakita ng maagang babala 283 00:12:48,680 --> 00:12:52,440 satellite at alam nila na ang malaking ulan ay paparating na sa kanilang 284 00:12:52,440 --> 00:12:53,350 pangkalahatang direksyon. 285 00:12:53,350 --> 00:12:55,470 Hindi nila alam kung saan ito ay darating. 286 00:12:55,470 --> 00:12:58,210 Ito ay ngayon hanggang sa radar bahagi ng ang Patriot 287 00:12:58,210 --> 00:13:01,920 system, pagtatanggol Dhahran, upang mahanap at subaybayan ang mga 288 00:13:01,920 --> 00:13:03,700 papasok na misayl ng kaaway. 289 00:13:03,700 --> 00:13:05,390 Radar ay napaka sa smart. 290 00:13:05,390 --> 00:13:07,570 Aktwal mong subaybayan ang posisyon ng malaking ulan at pagkatapos ay 291 00:13:07,570 --> 00:13:10,340 hulaan kung saan ito marahil ay sa susunod na oras ang 292 00:13:10,340 --> 00:13:12,040 radar nagpadala ng pulso out. 293 00:13:12,040 --> 00:13:13,730 Na tinatawag na hanay ng gate. 294 00:13:13,730 --> 00:13:18,820 Pagkatapos, sa sandaling ang Patriot magdesisyon ang sapat na oras lumipas pumunta 295 00:13:18,820 --> 00:13:22,600 -back at suriin ang susunod na lokasyon para sa Nakita 296 00:13:22,600 --> 00:13:24,190 bagay, ito napupunta pabalik. 297 00:13:24,190 --> 00:13:27,940 Kaya kapag nagpunta ito sa maling lugar, pagkatapos nakikita walang 298 00:13:27,940 --> 00:13:31,000 bagay, at nagpasiya na mayroong hindi bagay. 299 00:13:31,000 --> 00:13:34,370 Ito ay isang maling detection at patak ng track. 300 00:13:34,370 --> 00:13:37,630 >> Ang papasok na tumakbo Naglaho mula sa radar screen. 301 00:13:37,630 --> 00:13:41,300 At segundo mamaya, slammed ito sa kuwartel. Ang malaking ulan 302 00:13:41,300 --> 00:13:44,730 pumatay ng 28 at ang huling fired panahon 303 00:13:44,730 --> 00:13:46,450 ang unang Gulf War. 304 00:13:46,450 --> 00:13:50,570 Tragically, ang na-update na software dumating sa Dhahran 305 00:13:50,570 --> 00:13:52,060 sa susunod na araw. 306 00:13:52,060 --> 00:13:56,210 At ang software depekto ay maayos, pagsasara ng isang kabanata sa 307 00:13:56,210 --> 00:13:58,370 ang ligalig kasaysayan ng misayl Patriot. 308 00:14:01,790 --> 00:14:04,990 Bayani ay talagang isang acronym para sa "Pagsubaybay sa Phased Array 309 00:14:04,990 --> 00:14:08,516 Harangin ng Target. " 310 00:14:08,516 --> 00:14:13,390 >> Lahat ng karapatan, kaya mas nalulungkot kinalabasan ng hindi pa 311 00:14:13,390 --> 00:14:14,430 pag-unawa sa mundo na ito. 312 00:14:14,430 --> 00:14:18,180 At takeaway, talagang, mula sa film na solusyon 313 00:14:18,180 --> 00:14:20,790 doon ay i-reboot ang iyong misayl pagtatanggol system 314 00:14:20,790 --> 00:14:21,770 bawat isang beses sa isang habang. 315 00:14:21,770 --> 00:14:24,280 At kaya muli, isa ng layunin ng kursong ito, tiyak 316 00:14:24,280 --> 00:14:26,900 sa isang mas mapagpakumbaba scale kaysa sa mga application na ito, ay 317 00:14:26,900 --> 00:14:30,710 mata talagang bukas sa lahat sa kung paano pumunta ka tungkol sa 318 00:14:30,710 --> 00:14:34,380 paggawa ng machine kung ano ang nais mong gawin nila at kung paano pumunta ka 319 00:14:34,380 --> 00:14:37,180 tungkol sa paggawa na tama, habang sa kahabaan ng paraan na gawin ito 320 00:14:37,180 --> 00:14:38,810 mahusay, elegante, at iba pa. 321 00:14:38,810 --> 00:14:41,680 At kaya ngayon, sabihin dive sa isang kaunti higit pa sa mga ito, ngunit 322 00:14:41,680 --> 00:14:44,210 sa gayon ay hindi namin pumunta masyadong mabilis, lalo na para sa mga mas 323 00:14:44,210 --> 00:14:46,590 kumportable, ngunit din upang maaari naming panatilihin ang interes ng 324 00:14:46,590 --> 00:14:49,390 mga mas kumportable, sabihin mabilis lang magsimula sa isang bit 325 00:14:49,390 --> 00:14:50,970 ng pagbabalik-tanaw ng ilan sa mga ideya na ito. 326 00:14:50,970 --> 00:14:53,710 At muli, hilingin ang layo, sa parehong tao o online, kung mayroon kang 327 00:14:53,710 --> 00:14:56,320 tanong upang maaari naming panatilihin ang lahat sa parehong pahina. 328 00:14:56,320 --> 00:14:58,820 >> Kaya ang CS50 Appliance, mabilis na hakbang pabalik, 329 00:14:58,820 --> 00:15:02,360 ano, sa iyong sariling mga salita? 330 00:15:02,360 --> 00:15:06,454 OK kung mayroon kang mga ideya kung ano ang mga salitang iyon ay maaaring pa. 331 00:15:06,454 --> 00:15:07,830 [Hindi marinig] 332 00:15:07,830 --> 00:15:10,950 Okay, kaya isang unibersal na interface para sa - 333 00:15:10,950 --> 00:15:11,900 na maaari namin ang lahat ng ibahagi. 334 00:15:11,900 --> 00:15:12,470 Ganap. 335 00:15:12,470 --> 00:15:14,840 Kaya kami, halimbawa, sabihin sa iyo upang pumunta sa ilang 336 00:15:14,840 --> 00:15:16,910 website, i-download ang software na ito para sa Mac OS. 337 00:15:16,910 --> 00:15:19,140 I-download ang software na ito para sa Windows, i-configure sa 338 00:15:19,140 --> 00:15:20,100 paroo't parito. 339 00:15:20,100 --> 00:15:22,370 Ngunit ang katotohanan ay nagsasagawa kami sa mabilang teknikal 340 00:15:22,370 --> 00:15:23,200 sumusuporta sa mga isyu. 341 00:15:23,200 --> 00:15:26,630 At mayroon ding mga araw na ito, karami ng kung ano ang nagawa server side, 342 00:15:26,630 --> 00:15:28,490 sa mundo ng computing, lalo na pagdating sa 343 00:15:28,490 --> 00:15:31,460 web development at web batay sa mga application, ay talagang 344 00:15:31,460 --> 00:15:35,110 medyo madalas na ginawa sa Unix o Linux computer, bilang kabaligtaran sa 345 00:15:35,110 --> 00:15:36,800 Mac o Windows PC. 346 00:15:36,800 --> 00:15:39,240 >> Kaya kabilang sa upsides, pagkatapos, ng gamit na ito bagay na tinatawag na 347 00:15:39,240 --> 00:15:41,500 CS50 Appliance namin ang lahat ng parehong kapaligiran. 348 00:15:41,500 --> 00:15:43,670 Kaya lahat sa parehong pahina kahit ano hardware mo 349 00:15:43,670 --> 00:15:46,650 dumating sa campus na may ngunit din ay dabbling sa eksaktong 350 00:15:46,650 --> 00:15:48,230 ang parehong kapaligiran na makikita mo gamit patungo sa 351 00:15:48,230 --> 00:15:51,080 pagtatapos semestre pati na rin para sa web development, pati na rin sa 352 00:15:51,080 --> 00:15:53,580 hinaharap para sa tunay na mundo application nito. 353 00:15:53,580 --> 00:15:56,350 Kaya mas concretely, ang CS50 Appliance ay isang libreng piraso ng 354 00:15:56,350 --> 00:15:59,400 software na nagpapahintulot sa iyo na magpatakbo ng ibang operating system, 355 00:15:59,400 --> 00:16:02,670 Linux, sa kasong ito, sa iyong sariling computer, sa isang window. 356 00:16:02,670 --> 00:16:04,750 Ngayon hindi lamang mo maaaring i-download ang appliance. 357 00:16:04,750 --> 00:16:08,170 Kailangan mo ng isang programa upang i-play o patakbuhin ang appliance. 358 00:16:08,170 --> 00:16:11,220 At na piraso ng software ay karaniwang kilala bilang isang 359 00:16:11,220 --> 00:16:11,520 hypervisor. 360 00:16:11,520 --> 00:16:14,050 Hypervisors ay sa anyo ng mga produkto tulad ng VMware, 361 00:16:14,050 --> 00:16:15,820 Virtual Box, parallel. 362 00:16:15,820 --> 00:16:18,390 Ang lahat ng mga uri ng mga kumpanya gumawa ng software, parehong libre at 363 00:16:18,390 --> 00:16:19,310 komersyal, magkamukha. 364 00:16:19,310 --> 00:16:21,480 Ano ang makikita mo sa Problema Set 1 ang mga tagubilin sa kung paano 365 00:16:21,480 --> 00:16:23,440 kumuha libreng software kung saan 366 00:16:23,440 --> 00:16:25,000 patakbuhin ang CS50 Appliance. 367 00:16:25,000 --> 00:16:28,060 At sa sandaling mo, makikita mo may, sa isang window sa iyong Mac o PC, 368 00:16:28,060 --> 00:16:30,710 isang desktop na kapaligiran na mukhang lubos na tulad nito, kung saan 369 00:16:30,710 --> 00:16:33,100 ito ay may Start menu-tulad ng bagay sa 370 00:16:33,100 --> 00:16:34,510 ibabang kaliwang sulok. 371 00:16:34,510 --> 00:16:38,030 Ito ay may Home folder, o direktoryo sa Home, sa kaliwang tuktok 372 00:16:38,030 --> 00:16:40,280 doon, basura ng lata, at iba pa. 373 00:16:40,280 --> 00:16:43,450 Kaya makikita namin manunudyo hiwalayin ang mga kinakailangang detalye bilang namin pumunta. 374 00:16:43,450 --> 00:16:46,430 >> Ngunit ngayon sabihin magsimula sa sumisid sa C. 375 00:16:46,430 --> 00:16:49,200 Kaya C programming language na ito, katulad sa espiritu sa 376 00:16:49,200 --> 00:16:52,390 Simula, ngunit higit na mas mababa graphical, ngunit ironically, malayo 377 00:16:52,390 --> 00:16:54,730 mas malakas na kapag kumuha ka ng mahusay dito. 378 00:16:54,730 --> 00:16:58,970 Kaya sa C, isulat namin mga programa sa pamamagitan ng pagsusulat ng source code, na 379 00:16:58,970 --> 00:17:01,640 ito Ingles-tulad ng syntax, katulad sa medyas 380 00:17:01,640 --> 00:17:05,609 demonstration na ginawa namin huling beses na nagpapahintulot sa iyo na 381 00:17:05,609 --> 00:17:07,910 ipahayag ang iyong sarili medyo tiyak, kung 382 00:17:07,910 --> 00:17:09,760 arcanely, sa computer. 383 00:17:09,760 --> 00:17:11,960 >> Kaya kung anong uri ng produkto software ang iyong aktwal na kailangan 384 00:17:11,960 --> 00:17:15,520 na magsulat ng mga programa sa isang wika tulad ng C, batay sa aming 385 00:17:15,520 --> 00:17:17,492 -uusap sa Lunes? 386 00:17:17,492 --> 00:17:19,650 [Hindi marinig] 387 00:17:19,650 --> 00:17:21,079 OK, kailangan mo lamang ng isang text editor. 388 00:17:21,079 --> 00:17:22,890 Hindi mo kailangang anumang espesyal na software 389 00:17:22,890 --> 00:17:24,460 per se sa sumulat ng mga programa. 390 00:17:24,460 --> 00:17:27,220 Kailangan mo lang ng isang text editor tulad ng Notepad, sa Windows, 391 00:17:27,220 --> 00:17:30,450 TextEdit sa Mac, o isang bagay na tinatawag gedit, sa mundo ng 392 00:17:30,450 --> 00:17:32,020 Linux, na gagamitin namin dito. 393 00:17:32,020 --> 00:17:33,750 At na ito, isulat ang mga programa. 394 00:17:33,750 --> 00:17:35,480 >> Ngunit pagsusulat lamang ng kalahati ng equation. 395 00:17:35,480 --> 00:17:36,630 Pagkatapos ay kakailanganin mong patakbuhin ang mga ito. 396 00:17:36,630 --> 00:17:38,320 Ngunit upang patakbuhin ang mga programa - 397 00:17:38,320 --> 00:17:39,600 hindi ka maaaring magpatakbo ng source code. 398 00:17:39,600 --> 00:17:41,500 Sa halip na gawin kung ano muna ito? 399 00:17:41,500 --> 00:17:41,900 Oo. 400 00:17:41,900 --> 00:17:43,200 David J. MALAN: Kailangan mong i- 401 00:17:43,200 --> 00:17:44,130 makatipon ito. 402 00:17:44,130 --> 00:17:49,010 At, ang ibang tao, kino-compile ang source code ay nangangahulugan - 403 00:17:49,010 --> 00:17:50,260 [Hindi marinig] 404 00:17:52,300 --> 00:17:52,700 David J. MALAN: Eksaktong. 405 00:17:52,700 --> 00:17:54,430 Tina-translate ito sa mga zero at mga. 406 00:17:54,430 --> 00:17:57,150 Dahil sa aming lahat, mga araw na ito, ay may computer na may CPUs, 407 00:17:57,150 --> 00:18:00,350 halos lahat ng mga ito ay ginawa ng isang kumpanya na tinatawag na Intel, at 408 00:18:00,350 --> 00:18:03,320 Intel Inside, nangangahulugan ito sa loob ng utak ng iyong 409 00:18:03,320 --> 00:18:04,990 computer, na kilala bilang ang CPU. 410 00:18:04,990 --> 00:18:07,570 At isa ng mga bagay na ginagawa ng utak na, alam 411 00:18:07,570 --> 00:18:10,390 kung paano upang maunawaan ang mga pattern ng mga zero at mga. 412 00:18:10,390 --> 00:18:13,240 Ito alam kung ano ang pattern ng bits ay kumakatawan karagdagan, kung ano ang 413 00:18:13,240 --> 00:18:15,500 pattern ay kumakatawan sa mga subtractions, ano ang pattern ng 414 00:18:15,500 --> 00:18:18,890 bit kinakatawan pag-print, at paglikha ng isang naririnig na tunog. 415 00:18:18,890 --> 00:18:22,450 >> Kaya sa maikling, CPU, isinama sa mga operating system, 416 00:18:22,450 --> 00:18:25,230 kung saan ay isang piraso ng software na tumatakbo sa tuktok ng CPU, 417 00:18:25,230 --> 00:18:26,050 kaya magsalita. 418 00:18:26,050 --> 00:18:29,850 Sama-sama, ang mga dalawang piraso alam kung paano magpatakbo ng mga programa na 419 00:18:29,850 --> 00:18:31,070 namin tao magsulat. 420 00:18:31,070 --> 00:18:34,040 >> Kaya kung pumunta ako sa CS50 Appliance dito, kailangan ko upang buksan 421 00:18:34,040 --> 00:18:35,660 up ng isang text editor at ko ma-access ito 422 00:18:35,660 --> 00:18:36,560 sa ilang mga paraan. 423 00:18:36,560 --> 00:18:39,060 Ko pumunta sa Menu, Programming, 424 00:18:39,060 --> 00:18:40,230 at pagkatapos ay maaari kong piliin - 425 00:18:40,230 --> 00:18:40,810 nope, hindi na menu. 426 00:18:40,810 --> 00:18:43,860 Maaari kong pumunta sa Mga Accessory / gedit dito upang buksan ang 427 00:18:43,860 --> 00:18:45,090 ang aking maliit na text editor. 428 00:18:45,090 --> 00:18:48,030 O higit pa lamang, maaari kong i-click ang maliit na icon sa ibaba 429 00:18:48,030 --> 00:18:48,970 kaliwang sulok. 430 00:18:48,970 --> 00:18:50,430 At ngayon ako makakakuha ng environment na ito dito. 431 00:18:50,430 --> 00:18:52,590 Medyo nakapagpapaalaala ng isang simpleng editor ng teksto, sa pamamagitan lamang ng 432 00:18:52,590 --> 00:18:53,820 isa o dalawang mga pagkakaiba. 433 00:18:53,820 --> 00:18:56,420 Sa itaas, kung saan ang cursor ay kumikislap na ngayon, ito ay kung saan 434 00:18:56,420 --> 00:18:57,900 Maaari kong simulan ang pagsusulat ng aking code. 435 00:18:57,900 --> 00:19:00,415 Sa ibaba ay ang bagay na ito na tinatawag na terminal na window. 436 00:19:00,415 --> 00:19:03,400 At kung ano ang mga uri ng mga bagay na maaari kong gawin sa 437 00:19:03,400 --> 00:19:04,960 gayon tinatawag na terminal na window? 438 00:19:04,960 --> 00:19:06,680 [Hindi marinig] 439 00:19:06,680 --> 00:19:07,890 >> Okay, kaya ba akong magpatakbo ng mga utos. 440 00:19:07,890 --> 00:19:10,300 At ang ilan sa mga utos na tumakbo namin sa Lunes ng kaunti 441 00:19:10,300 --> 00:19:15,070 misteriyoso sa unang, ngunit ls listahan, cd para sa direktoryo ng pagbabago, 442 00:19:15,070 --> 00:19:16,540 rm, para alisin. 443 00:19:16,540 --> 00:19:19,680 Kaya ito ay uri ng isang lumang-paaralan na paraan ng pag-navigate sa iyong 444 00:19:19,680 --> 00:19:22,310 computer, gamit lamang ang iyong keyboard at tekstuwal mga utos, 445 00:19:22,310 --> 00:19:24,130 at hindi, sa pangkalahatan, gamit ang isang mouse. 446 00:19:24,130 --> 00:19:25,960 Ngunit makikita namin makita, bago mahaba, ang aktwal na ay nagbibigay sa amin ng isang 447 00:19:25,960 --> 00:19:28,520 kaunti pa kapangyarihan at ng kaunti pa sa katumpakan kung saan 448 00:19:28,520 --> 00:19:29,600 ipahayag ang ating sarili. 449 00:19:29,600 --> 00:19:31,330 At pagkatapos ay sa dito sa kaliwa, lamang kami ay pagpunta upang makita, 450 00:19:31,330 --> 00:19:34,360 sisimulan namin ang software sa pagsulat, ang isang maliit na buod ng mga 451 00:19:34,360 --> 00:19:36,350 programa na namin ang nakasulat sa itaas na kaliwang. 452 00:19:36,350 --> 00:19:38,360 Ngunit makikita namin makita na muli mamaya. 453 00:19:38,360 --> 00:19:40,050 >> Kaya sabihin gawin ang isang bagay na medyo simple dito. 454 00:19:40,050 --> 00:19:43,440 Hayaan akong unang sige at pumunta sa File, I-save, at ako lamang 455 00:19:43,440 --> 00:19:45,970 i-click sa jharvard dito, sa paglipas ng sa kaliwa, at 456 00:19:45,970 --> 00:19:48,930 jharvard ay, muli, ang pangalan para sa aking home folder, ang aking 457 00:19:48,930 --> 00:19:52,110 mga personal na mga file, sa akin, ngayon pagiging John Harvard, tulad ng lahat ng iyong 458 00:19:52,110 --> 00:19:54,230 ay malapit John Harvard sa environment na ito. 459 00:19:54,230 --> 00:19:57,360 Niya nakuha ito Home direktoryo, ang Aking mga Dokumento at iba pa, 460 00:19:57,360 --> 00:19:58,900 na gusto kong i-save, ngayon, ang file na ito. 461 00:19:58,900 --> 00:20:01,520 Kaya ako pagpunta sa tumawag ito hello.c. Pagkatapos ako pagpunta sa pumunta 462 00:20:01,520 --> 00:20:05,770 magpatuloy at i-click ang I-save, at ngayon kung ano ang mayroon akong dito ay isang tab 463 00:20:05,770 --> 00:20:09,440 tinatawag hello.c, kaya tulad ng isa pang uri ng editor. 464 00:20:09,440 --> 00:20:11,760 >> Kaya ngayon hayaan mo akong sige at simulan ang pagsusulat ng programa. 465 00:20:11,760 --> 00:20:14,440 int pangunahing (walang bisa). 466 00:20:14,440 --> 00:20:18,150 At pagkatapos ko lang ang huling beses, printf, para sa mga naka-print na format, 467 00:20:18,150 --> 00:20:22,120 ("Hoy, mundo!" 468 00:20:22,120 --> 00:20:24,500 );. 469 00:20:24,500 --> 00:20:25,630 Halos makumpleto. 470 00:20:25,630 --> 00:20:27,130 Ngunit ako Kulang ng ilang mga detalye. 471 00:20:27,130 --> 00:20:30,210 Ano ay nawawala mula sa programang ito na kailangan ko talagang para sa 472 00:20:30,210 --> 00:20:31,890 aktwal na ito upang makatipon? 473 00:20:31,890 --> 00:20:32,130 Oo. 474 00:20:32,130 --> 00:20:33,980 [Hindi marinig]? 475 00:20:33,980 --> 00:20:35,770 >> David J. MALAN: Oo, kaya kailangan kong isama ang pamantayan 476 00:20:35,770 --> 00:20:36,700 I / O library. 477 00:20:36,700 --> 00:20:39,470 Kaya ang pangangailangan na ito upang pumunta sa itaas pangunahing, kaya lang ako pagpunta sa 478 00:20:39,470 --> 00:20:40,790 gumawa ng ilang mga kuwarto para sa doon. 479 00:20:40,790 --> 00:20:44,420 At ako pagpunta sa gawin # include . 480 00:20:44,420 --> 00:20:46,570 At mapansin ang angled bracket doon. 481 00:20:46,570 --> 00:20:49,410 At bilang isang bukod, gedit ng kaunti user friendly na, kung 482 00:20:49,410 --> 00:20:52,420 minsan isang maliit na nakalilito, na sinusubukan upang matulungan ang iyong 483 00:20:52,420 --> 00:20:54,770 mata mapansin kung ano ang linya sa kung ano. 484 00:20:54,770 --> 00:20:57,760 Kaya ang katunayan na ang aking cursor ay sa tabi mismo ito angled 485 00:20:57,760 --> 00:21:00,600 bracket, mapapansin kung paano ito highlight ang iba pang mga angled 486 00:21:00,600 --> 00:21:01,920 bracket kasama ang isang ito. 487 00:21:01,920 --> 00:21:03,770 At ito lamang ay upang gumuhit ang aking pansin sa ang katunayan na ang ko 488 00:21:03,770 --> 00:21:04,460 magkaroon ng mahusay na proporsyon. 489 00:21:04,460 --> 00:21:07,010 At mahusay na proporsyon sa programming ay isang magandang bagay. 490 00:21:07,010 --> 00:21:10,270 Katulad nito, kung ilipat ko ang aking cursor sa dulo, pansinin kung paano ang 491 00:21:10,270 --> 00:21:13,630 kulot tirante linya upang ipakita na, oo, mayroon akong isang bukas na 492 00:21:13,630 --> 00:21:15,160 at isang closed isa, kaya na magsalita. 493 00:21:15,160 --> 00:21:16,640 >> Lahat ng karapatan, at ako ay maaaring gawin ang isa sa iba pang mga bagay. 494 00:21:16,640 --> 00:21:20,090 Ito ay hindi mahigpit na kinakailangan, ngunit mahusay na kasanayan, sasabihin 495 00:21:20,090 --> 00:21:21,250 bumalik 0. 496 00:21:21,250 --> 00:21:24,140 At return 0 ang kung ano ang para sa amin dito? 497 00:21:24,140 --> 00:21:25,584 O Sumisimbolo kung ano? 498 00:21:25,584 --> 00:21:27,480 [Hindi marinig] 499 00:21:27,480 --> 00:21:28,300 David J. MALAN: Ngunit walang ang mali. 500 00:21:28,300 --> 00:21:30,280 At lantaran ito mahirap para sa mas magkamali sa isang 501 00:21:30,280 --> 00:21:31,250 programa ang maikling. 502 00:21:31,250 --> 00:21:33,930 Kaya lang ako sa sobrang tahasang na ang lahat na rin. 503 00:21:33,930 --> 00:21:36,740 Ko, ang mga tao, kapag nagpatakbo ako sa programang ito, ay malamang na hindi kailanman 504 00:21:36,740 --> 00:21:38,150 makita na 0. 505 00:21:38,150 --> 00:21:41,070 Sa pangkalahatan, ang mga bilang na ito na ibinalik mula sa pangunahing 506 00:21:41,070 --> 00:21:43,540 likuran lamang ang kanilang mga ulo sa mga tao kapag 507 00:21:43,540 --> 00:21:44,360 isang bagay na napupunta mali. 508 00:21:44,360 --> 00:21:46,640 At kumuha ka ng isang maliit na pop up sa sinasabi ng error sa sistema, isa, 509 00:21:46,640 --> 00:21:48,760 dalawa, tatlo, o anumang bilang ay 510 00:21:48,760 --> 00:21:50,100 ay aktwal na ibinalik. 511 00:21:50,100 --> 00:21:52,870 Kaya maling anumang bagay na ito? 512 00:21:52,870 --> 00:21:55,300 [Hindi marinig] 513 00:21:55,300 --> 00:21:58,100 >> David J. MALAN: Kaya ito ay hindi kaya magkano ang isang functional pagkakamali 514 00:21:58,100 --> 00:21:59,240 ngunit isang Aesthetic. 515 00:21:59,240 --> 00:22:02,340 Dapat ko marahil ilagay sa isang newline character doon sa 516 00:22:02,340 --> 00:22:05,240 dulo ng ang string na ito nang sa gayon ay namin ang aktwal na ilipat ang cursor sa 517 00:22:05,240 --> 00:22:08,340 sa susunod na linya, at ang programa hitsura ng kaunti prettier. 518 00:22:08,340 --> 00:22:10,340 >> Kaya ngayon hayaan mo akong pumunta pababa sa aking terminal na window 519 00:22:10,340 --> 00:22:11,490 at mag-zoom sa likod. 520 00:22:11,490 --> 00:22:13,390 At ito bagay dito, ito ay tinatawag na prompt. 521 00:22:13,390 --> 00:22:16,760 Lamang ito na nagpapaalala sa akin kung sino ako, jharvard @ appliance, kung saan 522 00:22:16,760 --> 00:22:18,850 appliance ay ang pangalan ng computer na ako. 523 00:22:18,850 --> 00:22:22,380 Sa panaklong ay ito tilda, ang squiggle simbolo, na 524 00:22:22,380 --> 00:22:24,160 kumakatawan sa kung ano ang? 525 00:22:24,160 --> 00:22:25,590 Madla: Home direktoryo. 526 00:22:25,590 --> 00:22:26,350 David J. MALAN: Home direktoryo. 527 00:22:26,350 --> 00:22:29,350 Kaya na lamang shorthand notation sa sinasabi ikaw ay nasa 528 00:22:29,350 --> 00:22:32,780 iyong personal na folder kung saan ang lahat ng iyong mga file sa pamamagitan ng default. 529 00:22:32,780 --> 00:22:36,080 Kaya ngayon, in dito, maaari kong i-type ls para sa listahan. 530 00:22:36,080 --> 00:22:40,020 At ang tanging bagay na nakikita ko dito sa sandaling hello.c. 531 00:22:40,020 --> 00:22:41,770 At ang magandang dahil ko lang sinulat ni ito. 532 00:22:41,770 --> 00:22:44,380 >> Kaya ipaalam sa akin sige at gumawa ng halo. 533 00:22:44,380 --> 00:22:46,830 At mapansin hindi nagta-type ako gumawa hello.c. 534 00:22:46,830 --> 00:22:50,300 Sa halip, lamang ako ng pag-type ang pangunahing pangalan ng file, kumusta. 535 00:22:50,300 --> 00:22:53,690 At gumawa, tulad ng nakita natin sa Lunes, lamang magpakilala na gusto ko 536 00:22:53,690 --> 00:22:54,920 ang file na. c. 537 00:22:54,920 --> 00:22:56,820 Kaya ngayon ko nai-type gumawa ng halo. 538 00:22:56,820 --> 00:22:59,280 Ngayon nakikita ko ito medyo mahaba utos at patuloy 539 00:22:59,280 --> 00:23:00,480 nakikita ito muli at muli. 540 00:23:00,480 --> 00:23:03,620 Ngunit upang maging malinaw, kumalatong, ang salita na lamang lumitaw, 541 00:23:03,620 --> 00:23:05,340 na ang aktwal na tagatala. 542 00:23:05,340 --> 00:23:08,200 Gawing lamang build utility. 543 00:23:08,200 --> 00:23:11,900 Lang ng mas user friendly na programa na sine-save sa akin, sa 544 00:23:11,900 --> 00:23:15,310 katagal tatakbo, na kinakailangang i-type ang kapani-paniwalang nakakapagod mahaba 545 00:23:15,310 --> 00:23:17,020 utos tulad na ang isa. 546 00:23:17,020 --> 00:23:18,950 Kaya maaari mong patakbuhin ang kumalatong mano-mano. 547 00:23:18,950 --> 00:23:20,530 Maaari mong i-type ang lahat ng iyon nang manu-mano. 548 00:23:20,530 --> 00:23:21,580 Lamang nagiging sobrang nakakapagod. 549 00:23:21,580 --> 00:23:24,720 At kaya gumawa lamang ng isang programa na pinapasimple sa aming mga buhay at 550 00:23:24,720 --> 00:23:27,120 tumatakbo ng mas kumplikadong mga utos para sa amin. 551 00:23:27,120 --> 00:23:29,410 >> Lahat ng karapatan, kaya ngayon kung ano ang file dapat na mayroon ako 552 00:23:29,410 --> 00:23:31,540 sa aking kasalukuyang direktoryo? 553 00:23:31,540 --> 00:23:36,310 Hindi lamang hello.c, ngunit din kumusta. 554 00:23:36,310 --> 00:23:39,710 Kaya kung gusto kong patakbuhin kumusta, isipin ang na sinasabi ko ang tuldok slash, 555 00:23:39,710 --> 00:23:42,220 kung saan ang mga tuldok paraan papunta sa kasalukuyang folder, kung saan mo man 556 00:23:42,220 --> 00:23:46,060 , at pagkatapos ay patakbuhin ang programa na tinatawag na halo, at sa katunayan, ngayon, 557 00:23:46,060 --> 00:23:48,080 Mayroon akong halo mundo. 558 00:23:48,080 --> 00:23:51,640 Lahat ng karapatan, anumang mga katanungan sa workflow o ang syntax ng 559 00:23:51,640 --> 00:23:52,890 kung ano lang namin ginawa? 560 00:23:55,380 --> 00:23:57,040 >> Lahat ng karapatan, kaya hayaan ng tumagal ang mga bagay up ng isang bingaw muli. 561 00:23:57,040 --> 00:24:00,430 Kaya ito ay underwhelming lamang na magsulat ng isang programa na lamang 562 00:24:00,430 --> 00:24:01,790 kailanman sinasabi halo, mundo. 563 00:24:01,790 --> 00:24:03,920 Kaya namin ay nagbago ito, sa Monday, sasabihin, kumusta, David. 564 00:24:03,920 --> 00:24:06,560 Ito ay isang maliit na mas personal, ngunit tulad ng hard code tulad ng sa 565 00:24:06,560 --> 00:24:07,410 unang bersyon. 566 00:24:07,410 --> 00:24:08,780 Kaya hindi lahat na nakapanghihimok. 567 00:24:08,780 --> 00:24:13,120 Ngunit mayroong umiiral, sa C, function tiyak na bukod sa 568 00:24:13,120 --> 00:24:15,700 naka-print, ang mga function na nagbibigay-daan sa iyo na makakuha ng user input. 569 00:24:15,700 --> 00:24:17,990 At ang paraan na ginawa namin ito, ang iba pang mga araw, ay tulad ng sumusunod. 570 00:24:17,990 --> 00:24:21,440 Bago aktwal ko i-print ang isang bagay, nakuha ko unang 571 00:24:21,440 --> 00:24:22,410 isang bagay mula sa user. 572 00:24:22,410 --> 00:24:23,370 Kaya ipaalam sa gawin sa akin ito muli. 573 00:24:23,370 --> 00:24:26,580 >> String s, kung saan s ay isang arbitrary na pangalan, dito, para sa isang 574 00:24:26,580 --> 00:24:30,600 string, katumbas GetString. 575 00:24:30,600 --> 00:24:32,070 Kaya kung ano ang GetString? 576 00:24:32,070 --> 00:24:34,630 Ito ay malinaw naman nakakakuha ng isang string, batay sa pangalan nito. 577 00:24:34,630 --> 00:24:37,560 Ngunit ano ito, mas technically? 578 00:24:37,560 --> 00:24:38,440 Ito ay isang function. 579 00:24:38,440 --> 00:24:41,790 Kaya ito ay isang function na ay hindi ay may C per se. 580 00:24:41,790 --> 00:24:43,660 Sinulat ni ito ng CS50 kawani. 581 00:24:43,660 --> 00:24:46,940 At sa gayon ay upang gamitin ito, hindi lamang mo maaaring isama stdio.h, 582 00:24:46,940 --> 00:24:49,630 Kailangan mo ring upang isama ang kung ano? 583 00:24:49,630 --> 00:24:50,060 Oo. 584 00:24:50,060 --> 00:24:54,210 Kaya cs50.h, na lamang ang isang file na aming sinulat ni ilang taon na ang nakakaraan. 585 00:24:54,210 --> 00:24:57,130 Naka-install na namin ito sa appliance para sa iyo sa tabi 586 00:24:57,130 --> 00:24:58,490 lahat ng standard na mga file. 587 00:24:58,490 --> 00:25:00,500 At iba pa sa mga unang ilang linggo ng klase, gagamitin namin 588 00:25:00,500 --> 00:25:02,820 ito lamang pasimplehin ang proseso ng paggawa napaka pangunahing 589 00:25:02,820 --> 00:25:04,600 user input ng mga bagay na gusto pagkuha. 590 00:25:04,600 --> 00:25:07,370 Dahil bilang ipapakita namin makita sa loob ng ilang linggo, pagkuha ng input ng user sa isang 591 00:25:07,370 --> 00:25:10,180 wika tulad ng C ay talagang nakakagulat na complex, 592 00:25:10,180 --> 00:25:14,360 partikular na dahil hindi mo alam nang maaga, kadalasan, kung paano 593 00:25:14,360 --> 00:25:17,030 magkano ang mga bagay-bagay ang user ay i-type in. 594 00:25:17,030 --> 00:25:20,340 At kapag hindi mo alam kung magkano ang data sa inaasahan, hindi mo pag- 595 00:25:20,340 --> 00:25:22,380 malaman kung gaano karaming memory ang maglaan. 596 00:25:22,380 --> 00:25:25,480 At kung aktwal mong magkaroon ng isang adversarial gumagamit na sinusubukan 597 00:25:25,480 --> 00:25:28,180 Hack sa iyong system, pag-crash ng iyong computer, na rin, 598 00:25:28,180 --> 00:25:31,600 pangkalahatan ang unang paraan ng pag-atake, tulad ng ginawa ko sa 599 00:25:31,600 --> 00:25:34,950 Lunes, type ng buong mahabang pagkakasunod-sunod ng mga random na mga character, 600 00:25:34,950 --> 00:25:37,020 pindutin ang Enter, at makita kung ano ang Pinaghihiwa. 601 00:25:37,020 --> 00:25:40,800 Dahil sa pangkalahatan, kung masira ang programa, na mga pahiwatig sa 602 00:25:40,800 --> 00:25:42,650 seguridad kapintasan, potensyal na. 603 00:25:42,650 --> 00:25:45,250 Tiyak na mga pahiwatig sa ka, programmer, pag-gumawa ng isang 604 00:25:45,250 --> 00:25:49,050 pagkakamali, ngunit mas dangerously, maaari mong ginawa ng 605 00:25:49,050 --> 00:25:52,430 seguridad-kaugnay na pagkakamali, at sa pangkalahatan naming makita na 606 00:25:52,430 --> 00:25:54,840 na kung paano machine ay nakompromiso sa araw na ito, parehong 607 00:25:54,840 --> 00:25:56,620 sa mundo ng web at mga programa sa 608 00:25:56,620 --> 00:25:58,070 command line, tulad nito. 609 00:25:58,070 --> 00:25:58,350 >> Ayos lang. 610 00:25:58,350 --> 00:26:00,460 Kaya string mga katumbas GetString. 611 00:26:00,460 --> 00:26:03,380 Kaya mas concretely ngayon, kung ano ang line 6 gawin dito? 612 00:26:03,380 --> 00:26:05,640 Kaya ang function na sa kanan ay nakakakuha ng string, 613 00:26:05,640 --> 00:26:06,890 tumatagal ng kung gaano karaming mga argumento? 614 00:26:09,458 --> 00:26:09,900 Okay. 615 00:26:09,900 --> 00:26:10,400 Kaya wala. 616 00:26:10,400 --> 00:26:11,360 Isang kaunti katinuan suriin. 617 00:26:11,360 --> 00:26:15,380 Argumento isang, muli, ay isang input lamang sa isang function na baguhin 618 00:26:15,380 --> 00:26:17,250 nito default na pag-uugali sa ilang mga paraan. 619 00:26:17,250 --> 00:26:19,540 Ngunit sa kasong ito, hindi ko nais na baguhin 620 00:26:19,540 --> 00:26:20,650 ang pag-uugali ng GetString. 621 00:26:20,650 --> 00:26:22,430 Gusto ko lang upang makakuha ng isang string. 622 00:26:22,430 --> 00:26:25,190 Kaya ko bang ilagay ang walang sa mga panaklong, at pagkatapos ko bang ilagay ang isang 623 00:26:25,190 --> 00:26:27,550 semicolon demarking ang dulo ng linya ng code. 624 00:26:27,550 --> 00:26:29,840 Ngayon, ang equals sign ay hindi nangangahulugan na katumbas, per se. 625 00:26:29,840 --> 00:26:32,690 Ito ay nangangahulugan ng pagtatalaga, na nangangahulugan na ilagay ang anumang nakakakuha ng 626 00:26:32,690 --> 00:26:36,060 outputted sa kanan sa loob ng anumang sa kaliwa. 627 00:26:36,060 --> 00:26:39,400 >> Kaya sa kaliwa, sinasabi namin na namin na ipinahayag ng 628 00:26:39,400 --> 00:26:41,630 string na tinatawag na mga. 629 00:26:41,630 --> 00:26:44,240 At higit na partikular, kami inilalaan memory sa loob ng 630 00:26:44,240 --> 00:26:46,340 na maglalagay kami ang mga bits na kumakatawan sa isang pagkakasunud-sunod ng mga 631 00:26:46,340 --> 00:26:46,850 character. 632 00:26:46,850 --> 00:26:49,400 Ngunit para sa ngayon, kami ay inilalaan 633 00:26:49,400 --> 00:26:51,450 o ipinahayag ng isang string. 634 00:26:51,450 --> 00:26:51,790 Ayos lang. 635 00:26:51,790 --> 00:26:54,760 Kaya ngayon kapag nagawa ko na ito, gusto kong i-plug sa ang halaga ng 636 00:26:54,760 --> 00:26:56,535 s, hindi ang halaga ng David. 637 00:26:56,535 --> 00:27:00,200 Kaya ito ay mali bakit? 638 00:27:03,060 --> 00:27:04,870 Kaya ito ay lamang literal hard-code na mga. 639 00:27:04,870 --> 00:27:06,870 Ito ay upang sabihin ang "kumusta, mga," na hindi kung ano ang gusto kong. 640 00:27:06,870 --> 00:27:07,790 Kaya ang maaari kong gawin ito. 641 00:27:07,790 --> 00:27:10,330 Ang porsyento sign ay isang placeholder, ngunit ngayon ay kailangan kong 642 00:27:10,330 --> 00:27:12,520 pumasa sa i-print ng pangalawang argumento. 643 00:27:12,520 --> 00:27:15,160 Manariwa sa diwa na ang mga argumento sa function ay pinaghiwalay sa pamamagitan ng 644 00:27:15,160 --> 00:27:20,300 mga kuwit, kaya ang susunod kuwit dito ko bang ilagay pagkatapos na ito ang titik s. 645 00:27:20,300 --> 00:27:23,740 At sa kontekstong ito ngayon, mga variable, at printf, 646 00:27:23,740 --> 00:27:25,550 kapag pagtanggap ng mga dalawang input - 647 00:27:25,550 --> 00:27:29,440 string sa kaliwa at ang mga variable na pangalan s sa kanan - 648 00:27:29,440 --> 00:27:32,750 ito plug ang huli sa dating para sa amin, at 649 00:27:32,750 --> 00:27:34,600 lang i-print ang isang magaling na magandang string na naglalaman ng 650 00:27:34,600 --> 00:27:36,770 anumang ito ay na-type namin. 651 00:27:36,770 --> 00:27:37,560 >> Kaya sabihin subukan ito. 652 00:27:37,560 --> 00:27:38,860 Pagpunta sa sige at mag-zoom out, bumalik 653 00:27:38,860 --> 00:27:40,250 sa aking terminal na window. 654 00:27:40,250 --> 00:27:41,840 Mag-zoom in sa ibaba dito. 655 00:27:41,840 --> 00:27:44,070 Type muli ang gumawa ng halo. 656 00:27:44,070 --> 00:27:45,870 Kumalatong Mukhang na-muling palabas ng pelikula. 657 00:27:45,870 --> 00:27:49,280 Ako i-type. / Kumusta, Ipasok. 658 00:27:49,280 --> 00:27:52,145 Walang mukhang nangyayari pa, ngunit ito sa prompt 659 00:27:52,145 --> 00:27:55,700 na maaari kong i-type ang isang bagay tulad ng Nate, Ipasok, at ngayon kami ay may 660 00:27:55,700 --> 00:27:56,380 Kumusta, Nate. 661 00:27:56,380 --> 00:27:59,600 At maaari kong gawin itong muli sa Rob, at iba pa. 662 00:27:59,600 --> 00:28:03,410 Kaya sana ngayon Ang program na ito ay kumikilos bilang nilayon ko. 663 00:28:03,410 --> 00:28:05,720 >> Ngayon, hindi lahat ng mga gumagamit na iyon friendly. 664 00:28:05,720 --> 00:28:07,930 Nag ko walang ideya kung ano ang inaasahan sa akin. 665 00:28:07,930 --> 00:28:09,620 Upang maaari naming tiyak na linisin ito up ng kaunti. 666 00:28:09,620 --> 00:28:13,270 Hayaan akong bumalik up dito, at sa halip ng diving sa at 667 00:28:13,270 --> 00:28:16,480 na humihiling ng user para sa isang string, hayaan mo akong tahasang sabihin ang 668 00:28:16,480 --> 00:28:17,750 user kung ano ang ako umaasa. 669 00:28:17,750 --> 00:28:21,610 Kaya printf ("Magpasok ng isang string:" 670 00:28:21,610 --> 00:28:24,080 ); 671 00:28:24,080 --> 00:28:25,510 Kaya walang variable sa dito. 672 00:28:25,510 --> 00:28:26,750 Walang palatandaan ng porsyento. 673 00:28:26,750 --> 00:28:28,550 Lamang ang simpleng Ingles parirala. 674 00:28:28,550 --> 00:28:34,030 Hayaan akong pupunta na ngayon sa ibaba dito at muling patakbuhin ang aking programa. 675 00:28:34,030 --> 00:28:35,380 Ngunit wala tila nagbago. 676 00:28:35,380 --> 00:28:37,350 Bakit? 677 00:28:37,350 --> 00:28:38,380 Mayroon akong mag-recompile ito. 678 00:28:38,380 --> 00:28:39,570 Kaya madaling pagkakamali sa. 679 00:28:39,570 --> 00:28:41,700 Ngunit mayroon kang hindi lamang i-save ang file ngunit 680 00:28:41,700 --> 00:28:43,260 mag-recompile sa programa. 681 00:28:43,260 --> 00:28:46,640 At kaya kung kong patakbuhin muli gumawa kumusta, ngayon kumalatong tumatakbo. 682 00:28:46,640 --> 00:28:51,800 Ngayon ay maaari ba akong magpatakbo. / Kumusta. At ngayon ko makita ang "Magpasok ng isang string:". 683 00:28:51,800 --> 00:28:52,050 Okay. 684 00:28:52,050 --> 00:28:53,440 Ngayon ito ng kaunti mas user-friendly. 685 00:28:53,440 --> 00:28:55,850 Nate, Ipasok, kumusta, Nate. 686 00:28:55,850 --> 00:28:57,310 >> Well, sabihin na subukan ulit ito at simulan ang pag-iisip 687 00:28:57,310 --> 00:28:58,080 tungkol sa mga sulok kaso. 688 00:28:58,080 --> 00:29:00,520 Kaya lang gusto sa simula, ikaw ay hinihikayat o pagiging 689 00:29:00,520 --> 00:29:03,180 hinihikayat sa spec sa uri ng isipin ang tungkol sa kung ano ang maaaring pumunta 690 00:29:03,180 --> 00:29:06,610 mali kung hindi mo inaasahan ng lahat ang user ay maaaring gawin. 691 00:29:06,610 --> 00:29:08,050 Bug, samakatuwid, maaaring mauwi. 692 00:29:08,050 --> 00:29:09,710 Kaya magpasok ng isang string - 693 00:29:09,710 --> 00:29:11,130 kung ano ang isang sulok ng kaso dito? 694 00:29:11,130 --> 00:29:13,320 Ano ang isang sitwasyon na ako, programmer, hindi maaaring magkaroon ng 695 00:29:13,320 --> 00:29:16,070 inaasahang? 696 00:29:16,070 --> 00:29:17,600 Oo. 697 00:29:17,600 --> 00:29:17,920 Okay. 698 00:29:17,920 --> 00:29:22,060 Kaya kung ano kung ako type sa isang numero tulad nito? 699 00:29:22,060 --> 00:29:22,500 Ayos lang. 700 00:29:22,500 --> 00:29:24,490 Kaya gumagana pa rin. 701 00:29:24,490 --> 00:29:25,880 Gramatically ginagawang walang kahulugan. 702 00:29:25,880 --> 00:29:27,180 Ngunit hindi bababa sa gumagana ang programa. 703 00:29:27,180 --> 00:29:28,650 >> Ano ang isa pang sulok kaso? 704 00:29:28,650 --> 00:29:29,610 Isang bagay na hindi ko inasahan. 705 00:29:29,610 --> 00:29:31,590 Oo? 706 00:29:31,590 --> 00:29:31,940 Okay. 707 00:29:31,940 --> 00:29:34,950 Kaya kami maaaring gawin ang isang bagay tulad talaga, talagang malaking bilang. 708 00:29:34,950 --> 00:29:37,270 Kaya natin gawin ito dito. 709 00:29:37,270 --> 00:29:40,880 Hayaan akong mag-zoom out para sa isang pangalawang, hayaan mo akong i-highlight. 710 00:29:40,880 --> 00:29:42,250 Hindi maaaring kopyahin at i-paste ang dito. 711 00:29:42,250 --> 00:29:42,470 Ayos lang. 712 00:29:42,470 --> 00:29:44,440 Kaya hindi ko maaaring kopyahin at i-paste sa terminal ang window na ito, kaya bibigyan namin 713 00:29:44,440 --> 00:29:46,950 lang gayahin ito. 714 00:29:46,950 --> 00:29:51,340 Hayaan akong mag-zoom out, pagpunta sa I-wrap. 715 00:29:51,340 --> 00:29:52,700 Hindi ako pagpunta sa gawin ito para sa masyadong mahaba, dahil hindi ito 716 00:29:52,700 --> 00:29:54,440 aktwal na masira sa programang ito. 717 00:29:54,440 --> 00:29:55,260 Ngunit dati. 718 00:29:55,260 --> 00:29:55,830 Enter. 719 00:29:55,830 --> 00:29:56,580 Ngunit ito ay hindi. 720 00:29:56,580 --> 00:29:57,050 Ayos lang. 721 00:29:57,050 --> 00:29:58,440 Ngunit ito ay isang tunay na kaso ng sulok. 722 00:29:58,440 --> 00:30:01,610 At ang tanging dahilan na sumusunod tama, kaya upang 723 00:30:01,610 --> 00:30:05,820 magsalita, ay dahil sa CS50 GetString function na ay talagang 724 00:30:05,820 --> 00:30:08,040 idinisenyo sa ilalim ng hood, dahil kakailanganin namin makita sa loob ng ilang linggo, 725 00:30:08,040 --> 00:30:11,570 upang awtomatikong magtalaga ng higit pa at higit pa RAM, higit pa at higit pa 726 00:30:11,570 --> 00:30:14,330 memorya mula sa operating system, kapag napagtanto, a, 727 00:30:14,330 --> 00:30:16,670 talagang iyong nai-type sa isang bagay na medyo mahaba. 728 00:30:16,670 --> 00:30:18,500 Ngayon, ito ay isang bit ng isang maliit na kasinungalingan. 729 00:30:18,500 --> 00:30:22,020 Kung naka-pause namin ang aktwal na para pa sa isang habang at ako na nai-type sa 730 00:30:22,020 --> 00:30:24,640 isang bagay tulad ng 5 bilyong mga character sa keyboard 731 00:30:24,640 --> 00:30:28,060 dito, o talagang pindutin ang kopya-paste pa bit, aming lubos posibleng 732 00:30:28,060 --> 00:30:29,730 maaaring magsanhi sa programa ng pag-crash. 733 00:30:29,730 --> 00:30:32,130 Sandali lang mahirap gayahin na may isang tiyak na 734 00:30:32,130 --> 00:30:33,740 tagal ng panahon. 735 00:30:33,740 --> 00:30:37,320 >> Ano ang isa pang sulok kaso kami subukan? 736 00:30:37,320 --> 00:30:38,730 Oo? 737 00:30:38,730 --> 00:30:39,020 Oo. 738 00:30:39,020 --> 00:30:40,360 Kaya bakit hindi namin sagutin ang walang? 739 00:30:40,360 --> 00:30:43,130 Kaya namin ang aktwal na tumagal ng ilang pagkilos, dahil kung hindi man 740 00:30:43,130 --> 00:30:45,060 ang programa pagpunta sa umupo doon kumikislap buong araw. 741 00:30:45,060 --> 00:30:46,860 Ngunit kung ko lang pindutin ang Enter - 742 00:30:46,860 --> 00:30:48,780 OK, ngayon, pa rin mukhang mali. 743 00:30:48,780 --> 00:30:51,670 Hindi pag-crash ng, ngunit maaaring mayroong ngayon ng pagkakataon na 744 00:30:51,670 --> 00:30:54,190 simulan ang pagpapatupad ng mas mahigpit na programa 745 00:30:54,190 --> 00:30:55,290 na aktwal na sumusuri. 746 00:30:55,290 --> 00:30:57,640 At kung ang string, pangungusap, salita na ako 747 00:30:57,640 --> 00:31:00,890 na nai-type sa may haba 0, well, siguro ang dapat kong sumigaw sa 748 00:31:00,890 --> 00:31:03,770 gumagamit, o sabihin sa kanya o kanya upang muling ipasok ang isang string, upang 749 00:31:03,770 --> 00:31:06,560 namin ang aktwal na makakuha ng kung ano ang hitsura tulad ng tamang pag-uugali at hindi 750 00:31:06,560 --> 00:31:08,570 lang kumpleto pangangasiwa sa aking bahagi. 751 00:31:08,570 --> 00:31:11,130 >> Tanong sa likod? 752 00:31:11,130 --> 00:31:11,970 Decimal number. 753 00:31:11,970 --> 00:31:13,120 Kaya maaari naming subukang na, masyadong. 754 00:31:13,120 --> 00:31:16,840 1,10000005. 755 00:31:16,840 --> 00:31:19,470 Tila na pagpunta sa lamang gumana aktwal okay. 756 00:31:19,470 --> 00:31:21,160 At na aktwal na ay inaasahan. 757 00:31:21,160 --> 00:31:24,550 Kahit na maaari naming na-type na numero doon, o isang 758 00:31:24,550 --> 00:31:28,200 mas malaking bilang mas maaga, Napagtanto na kapag tina-type namin ng user 759 00:31:28,200 --> 00:31:31,070 input at ginagamit namin ang GetString function, hindi 760 00:31:31,070 --> 00:31:34,380 bagay na kung ano ang nagta-type ako mukhang isang numero. 761 00:31:34,380 --> 00:31:36,720 Manariwa sa diwa na ang ayon sa ASCII, ang lahat sa iyong 762 00:31:36,720 --> 00:31:39,920 keyboard ay isang de-numerong halaga na maaaring mai-map sa isang 763 00:31:39,920 --> 00:31:41,480 karakter, magpasinda. 764 00:31:41,480 --> 00:31:44,490 Kaya sa kasong ito, kahit na maaaring ko type ng numero, ang 765 00:31:44,490 --> 00:31:48,190 computer ay pagpunta sa tingin nito, kaya na magsalita, bilang isang string - 766 00:31:48,190 --> 00:31:49,870 isang bagay na mukhang isang numero, ngunit 767 00:31:49,870 --> 00:31:51,090 hindi tunay na isang numero. 768 00:31:51,090 --> 00:31:53,450 Ngunit iyon lamang ang tunay na isang perpektong segue, dahil ngayon ng aming makakaya 769 00:31:53,450 --> 00:31:55,450 aktwal na paglipat sa pagsusulat ng programa na 770 00:31:55,450 --> 00:31:56,730 gumamit ng iba pang mga uri ng data. 771 00:31:56,730 --> 00:32:01,840 >> Kaya bukod sa gamit ng mga char, o sa halip, bukod sa gamit ng mga string, 772 00:32:01,840 --> 00:32:04,510 Napagtanto na mayroon kami ng mga iba pang mga uri ng data sa C pati na rin sa 773 00:32:04,510 --> 00:32:05,230 iba pang mga wika. 774 00:32:05,230 --> 00:32:08,480 Ang isang pansamantalang trabaho, pati na ang pangalan ay nagmumungkahi, ay lamang ng isang solong character. 775 00:32:08,480 --> 00:32:12,150 Float ay isang lumulutang na halaga ng point, at na lamang magarbong 776 00:32:12,150 --> 00:32:14,470 paraan ng sinasabi ng isang real numero - isang bagay na may isang decimal 777 00:32:14,470 --> 00:32:17,410 point sa ito sa ilang mga numero sa kaliwa at / o pakanan. 778 00:32:17,410 --> 00:32:21,370 Isang int ay isang integer, na lamang ang isang numero tulad ng 123. 779 00:32:21,370 --> 00:32:24,170 At ngayon mas nang kawili-wili ang mga bagay tulad ng double. 780 00:32:24,170 --> 00:32:28,540 Ano ang sinasabi namin double ng huling beses? 781 00:32:28,540 --> 00:32:30,050 Ito ay 64, sa kanan. 782 00:32:30,050 --> 00:32:33,560 Kaya kung saan karaniwang Float ng 32-bit - 783 00:32:33,560 --> 00:32:37,340 kaya ito mahaba sa memory, ginagamit nito ang 32 zero at mga 784 00:32:37,340 --> 00:32:40,530 kumatawan ang mga halaga - double ay literal na dalawang beses na, na 785 00:32:40,530 --> 00:32:43,810 ay nangangahulugan na maaari mong kumatawan sa mas malaking numero, o 786 00:32:43,810 --> 00:32:45,810 maaari mong kumatawan sa mas tumpak na mga numero. 787 00:32:45,810 --> 00:32:48,690 Sa gayon ay maaari kang magkaroon ng higit pang mga numero pagkatapos ng decimal point, ngunit 788 00:32:48,690 --> 00:32:51,520 bilang kapwa sinabi sa video, kahit na isang bagay 789 00:32:51,520 --> 00:32:55,360 conceptually tulad ng 1/3 ay hindi maaaring kinakatawan tiyak ng isang 790 00:32:55,360 --> 00:32:58,330 computer, dahil kalaunan kang magpatakbo ng mga bit, at 791 00:32:58,330 --> 00:33:02,510 samakatuwid maaari mo lamang gawin ng mga .33333333 kaya maraming beses, sa 792 00:33:02,510 --> 00:33:05,050 kung anong punto mo na lang ay upang sabihin ako ng representasyon 793 00:33:05,050 --> 00:33:08,120 espasyo, mayroon akong lamang ito tumawag sa isang araw at kumatawan ito 794 00:33:08,120 --> 00:33:10,200 medyo imprecisely bang na. 795 00:33:10,200 --> 00:33:11,110 At ng mahabang mahaba - 796 00:33:11,110 --> 00:33:13,880 bobo pangalan, ngunit ito ay dahil may isang uri ng data na kilala bilang isang 797 00:33:13,880 --> 00:33:19,350 mahaba sa C na coincidentally ay madalas 32 bit, tulad ng isang 798 00:33:19,350 --> 00:33:21,670 int ay 32 bit, ngunit ng mahabang mahaba ay 799 00:33:21,670 --> 00:33:23,560 pangkalahatan ay 64 bit. 800 00:33:23,560 --> 00:33:25,740 Kaya lamang ito ay nangangahulugan na maaari mong kumatawan sa mas malaking 801 00:33:25,740 --> 00:33:26,990 numero kaysa dito. 802 00:33:26,990 --> 00:33:27,410 >> Ayos lang. 803 00:33:27,410 --> 00:33:29,390 Kaya kung gusto namin aktwal upang simulan ang kumakatawan ng mga bagay, namin 804 00:33:29,390 --> 00:33:31,030 maaaring kailangan mas sopistikadong uri, at 805 00:33:31,030 --> 00:33:32,340 na ang dahilan kung bakit mayroon kaming string. 806 00:33:32,340 --> 00:33:36,450 Kaya sa CS50 library, na file na tinatawag na cs50.h, na namin 807 00:33:36,450 --> 00:33:41,110 aktwal na ipinahayag ng uri ng data, kaya na magsalita, na tinatawag na string, 808 00:33:41,110 --> 00:33:42,710 ngunit string ay hindi tunay na umiiral. 809 00:33:42,710 --> 00:33:44,780 Ito ay, muli, isa sa mga layer kami ay pagpunta sa alisan ng balat 810 00:33:44,780 --> 00:33:47,490 pabalik sa isang linggo o dalawang at magtapon ito ang layo, at aktwal 811 00:33:47,490 --> 00:33:49,640 tumingin sa ilalim ng hood sa kung ano talaga ang string ng, at 812 00:33:49,640 --> 00:33:50,840 kung paano ito ay kinakatawan. 813 00:33:50,840 --> 00:33:53,520 Din namin ay pagpunta sa tumingin sa Boolean halaga. 814 00:33:53,520 --> 00:33:56,040 >> Kaya kung ano ang isang bool sa konteksto ng scratch? 815 00:33:59,154 --> 00:34:00,300 Ito ay totoo o hindi. 816 00:34:00,300 --> 00:34:03,900 Kaya lang isang halaga na kung tama o mali, sa o off, 1 o 817 00:34:03,900 --> 00:34:06,140 0, gayunpaman nais mong tingnan ang mundo. 818 00:34:06,140 --> 00:34:09,739 Kaya sa C, salamat sa CS50 library, na siya namang 819 00:34:09,739 --> 00:34:12,179 may kasamang isa pang library sa ilalim ng hood, mayroon kaming 820 00:34:12,179 --> 00:34:14,909 access sa isang uri ng data na tinatawag bool, kung saan ay 821 00:34:14,909 --> 00:34:18,730 literal-daan sa amin upang magtalaga ang mga halaga tama o mali sa 822 00:34:18,730 --> 00:34:20,219 bagay sa isang programa. 823 00:34:20,219 --> 00:34:23,880 >> Kaya sabihin sige dito at magsulat ng isang maliit na programa na 824 00:34:23,880 --> 00:34:26,330 ang bagay na may kasamang numero sa halip. 825 00:34:26,330 --> 00:34:29,840 Kaya hayaan mo akong bumalik sa CS50 Appliance, hayaan mo akong magpatuloy at 826 00:34:29,840 --> 00:34:32,770 lumikha ng isang bagong file dito na tinatawag na - 827 00:34:32,770 --> 00:34:35,460 sabihin lamang sabihin ng isang bagay, tulad ng math.c. 828 00:34:38,270 --> 00:34:38,710 Ayos lang. 829 00:34:38,710 --> 00:34:41,600 At pupunta na ngayon sa tuktok ng aking mga programa, ako 830 00:34:41,600 --> 00:34:42,510 pagpunta sa gawin ang mga dati - 831 00:34:42,510 --> 00:34:44,780 # Include , kaya na maaari kong gamitin 832 00:34:44,780 --> 00:34:46,860 printf, int pangunahing (walang bisa) - 833 00:34:46,860 --> 00:34:49,270 magpapadala kami bumalik, kalaunan, ano ang int ay nangangahulugan 834 00:34:49,270 --> 00:34:52,389 dito, kung ano ang walang bisa ay nangangahulugan dito, ngunit sa ngayon, lamang malaman na 835 00:34:52,389 --> 00:34:54,270 kailangan mo upang simulan ang mga programa tulad nito. 836 00:34:54,270 --> 00:34:56,280 Ngayon ako pagpunta sa sige at sabihin na ang isang bagay na ng kaunti 837 00:34:56,280 --> 00:35:02,110 ibang - printf ("Bigyan mo ako ng isang numero:" 838 00:35:02,110 --> 00:35:03,570 );. 839 00:35:03,570 --> 00:35:09,220 Pagkatapos ako pagpunta sa gawin int n = GetInt, sapagkat ito 840 00:35:09,220 --> 00:35:12,770 liko out GetInt ay isa pang function sa CS50 library 841 00:35:12,770 --> 00:35:14,060 bukod GetString. 842 00:35:14,060 --> 00:35:17,340 At ngayon ako pagpunta sa gawin ang isang bagay bobo, tulad ng "salamat 843 00:35:17,340 --> 00:35:25,760 para sa% d, "para sa decimal integer, at pagkatapos pinaghihiwalay n, at 844 00:35:25,760 --> 00:35:26,620 pagkatapos ay bumalik sa 0. 845 00:35:26,620 --> 00:35:28,940 Kaya muli, bumalik 0 ay walang gawin ang bilang ako 846 00:35:28,940 --> 00:35:30,080 na humihiling sa gumagamit para sa. 847 00:35:30,080 --> 00:35:33,620 Lamang Sumisimbolo sa dulo na ang lahat, siguro, ay mahusay na. 848 00:35:33,620 --> 00:35:36,290 >> Kaya hayaan mo akong pumunta pababa sa aking terminal na window dito. 849 00:35:36,290 --> 00:35:39,590 Hayaan akong i-type gumawa ng matematika, ipasok. 850 00:35:39,590 --> 00:35:41,360 At ang isang bagay kung mali. 851 00:35:41,360 --> 00:35:44,620 Gawin ang matematika ay hindi gumagana. 852 00:35:44,620 --> 00:35:46,170 Narito ang unang ng aming mga mensahe ng error. 853 00:35:46,170 --> 00:35:46,570 Bakit? 854 00:35:46,570 --> 00:35:49,720 Ang isang maliit na misteriyoso, ngunit - 855 00:35:49,720 --> 00:35:50,060 Oo. 856 00:35:50,060 --> 00:35:51,240 Kaya cs50.h. 857 00:35:51,240 --> 00:35:53,900 Sa muli, lalo na sa maagang bahagi, makikita mo isulat ang iyong unang 858 00:35:53,900 --> 00:35:56,590 programa para sa pset 1 sa mga seksyon, sa opisina oras, at 859 00:35:56,590 --> 00:35:59,050 lantaran, ito ay napakalaki minsan kung ano ang mga bagay na ito 860 00:35:59,050 --> 00:36:00,000 ay talagang sinasabi. 861 00:36:00,000 --> 00:36:01,890 Ngunit magkakaroon ka Napagtanto napakabilis na simulan nila sa mahulog 862 00:36:01,890 --> 00:36:06,120 sa mga bucket kung saan ang isang ito ay nangangahulugan na ang mo na huminto isa 863 00:36:06,120 --> 00:36:08,290 ng # kasama ang sa tuktok ng file. 864 00:36:08,290 --> 00:36:10,960 At kumalatong, tagatala, nagpapaalam sa iyo ng ito sa pamamagitan ng 865 00:36:10,960 --> 00:36:14,090 sinasabi, sa halip fancifully, implicit deklarasyon ng 866 00:36:14,090 --> 00:36:15,990 function na GetInt ay hindi wasto. 867 00:36:15,990 --> 00:36:16,310 >> Ayos lang. 868 00:36:16,310 --> 00:36:17,520 Kaya kung ano ang na ibig sabihin nito? 869 00:36:17,520 --> 00:36:22,080 Ay nangangahulugan lamang ito nang kataon lamang na iyong ipinahayag GetInt sa 870 00:36:22,080 --> 00:36:24,850 ang kahulugan na hindi mo tahasang ipinahayag ito. 871 00:36:24,850 --> 00:36:27,300 Upang tahasang ipinapahayag int, mayroon kang magturo 872 00:36:27,300 --> 00:36:28,740 Kumalatong na ito umiiral. 873 00:36:28,740 --> 00:36:32,020 At ang napaka-simpleng solusyon para sa ay upang turuan ang mga ito sa pamamagitan ng 874 00:36:32,020 --> 00:36:34,780 kabilang ang iba pang mga file na ito, cs50.h, sa 875 00:36:34,780 --> 00:36:35,850 sa tuktok ng iyong mga file. 876 00:36:35,850 --> 00:36:40,380 Dahil literal, kung ano # include ang mga ito ay nagsasabi sa kumalatong 877 00:36:40,380 --> 00:36:44,030 medyo magkano upang pumunta mahanap ang file na tinatawag na cs50.h, kopyahin, 878 00:36:44,030 --> 00:36:48,150 awtomatikong i-paste ito sa tuktok ng aking mga programa para sa akin, 879 00:36:48,150 --> 00:36:50,850 at pagkatapos ay convert ang source code sa mga zero at mga. 880 00:36:50,850 --> 00:36:52,850 Ngunit na ay malinaw naman napaka nakakapagod kung namin tao ay may 881 00:36:52,850 --> 00:36:55,370 upang pumunta sa pagkopya at pag-paste ng mga malaking file sa lahat ng oras, 882 00:36:55,370 --> 00:36:58,540 kaya # include ginagawa ang lahat na awtomatikong nang walang 883 00:36:58,540 --> 00:37:01,550 muddying ang aking code sa ibang tao library. 884 00:37:01,550 --> 00:37:06,370 At library ay lamang ng isa pang file na naglalaman ng mga function at 885 00:37:06,370 --> 00:37:08,340 iba pang mga bagay na ang ibang tao ay nakasulat, na namin 886 00:37:08,340 --> 00:37:10,270 paggamit para sa aming sariling kapakanan. 887 00:37:10,270 --> 00:37:10,580 >> Ayos lang. 888 00:37:10,580 --> 00:37:11,200 Natin subukang muli. 889 00:37:11,200 --> 00:37:12,250 Gawing matematika. 890 00:37:12,250 --> 00:37:13,120 Enter. 891 00:37:13,120 --> 00:37:13,530 Mabuti. 892 00:37:13,530 --> 00:37:14,880 Kaya na mukhang nagtrabaho. 893 00:37:14,880 --> 00:37:18,330 Kaya ipaalam sa akin ngayon patakbuhin ang matematika; / matematika. 894 00:37:18,330 --> 00:37:21,100 Ipasok ang nagbibigay sa akin ang numero, 123. 895 00:37:21,100 --> 00:37:22,620 Salamat para sa 123. 896 00:37:22,620 --> 00:37:24,490 Ngayon sabihin subukan ang iba pang kaso ng sulok. 897 00:37:24,490 --> 00:37:26,530 String ay medyo mapagbigay, dahil isang 898 00:37:26,530 --> 00:37:27,620 string ay maaaring maging anumang. 899 00:37:27,620 --> 00:37:28,910 Maaaring magmukhang numero, hitsura 900 00:37:28,910 --> 00:37:30,600 character, hitsura ng mga salita. 901 00:37:30,600 --> 00:37:31,900 Ngunit int ng isang int. 902 00:37:31,900 --> 00:37:34,370 Kaya ngayon kung ako mahirap user, at ito ay nagsasabing "Bigyan mo ako 903 00:37:34,370 --> 00:37:38,730 isang numero, "kung ano ang kung sinusubukan kong gawin ang isang bagay tulad ng 0.1? 904 00:37:38,730 --> 00:37:41,510 Well, na isang numero, at ito ay pare-pareho sa 905 00:37:41,510 --> 00:37:44,180 grammar na ginamit ko dito, ngunit sa ilalim ng hood, ako ng 906 00:37:44,180 --> 00:37:45,610 kurso gamit ang function na GetInt. 907 00:37:45,610 --> 00:37:46,610 >> Kaya sabihin makita kung ano ang mangyayari. 908 00:37:46,610 --> 00:37:48,250 Ipasok muli. 909 00:37:48,250 --> 00:37:48,560 Ayos lang. 910 00:37:48,560 --> 00:37:50,570 Hayaan akong mahirap at pindutin ang Enter muli. 911 00:37:50,570 --> 00:37:51,700 Ipasok, ang Enter. 912 00:37:51,700 --> 00:37:53,890 Kaya ngayon tila GetInt na ng kaunti pa 913 00:37:53,890 --> 00:37:55,240 malakas na kaysa GetString. 914 00:37:55,240 --> 00:37:58,540 Namin, ang kawani, ipinatupad sa isang paraan na kung napansin namin 915 00:37:58,540 --> 00:38:02,100 hindi mo pa ibinibigay sa amin ang int ng - at isang int ay isang decimal na numero 916 00:38:02,100 --> 00:38:04,785 naglalaman ng mga zero, mga, twos, threes, fours, fives, sixes, 917 00:38:04,785 --> 00:38:05,540 sevens, eights, o nines. 918 00:38:05,540 --> 00:38:06,310 At na ito. 919 00:38:06,310 --> 00:38:08,810 Walang mga decimal point, walang character, walang bantas. 920 00:38:08,810 --> 00:38:10,390 Mukhang na mayroon kaming makikipagtulungan. 921 00:38:10,390 --> 00:38:13,680 Kaya hayaan mo akong subukan ang apat, limang, anim, at na hindi nakakaabala sa akin sa pamamagitan. 922 00:38:13,680 --> 00:38:16,760 Kaya talagang, anal dito, ang dapat kong marahil sabihin "Bigyan mo ako 923 00:38:16,760 --> 00:38:20,310 isang integer "upang ihatid sa user 924 00:38:20,310 --> 00:38:22,620 eksakto kung ano ang nilalayon ko. 925 00:38:22,620 --> 00:38:24,090 >> Ngayon sabihin isipin ang tungkol sa ilalim ng hood. 926 00:38:24,090 --> 00:38:27,930 Hindi namin ay pagpunta sa tumingin sa kung paano cs50.h ay ipinatupad ngayon, 927 00:38:27,930 --> 00:38:29,080 na library. 928 00:38:29,080 --> 00:38:33,600 Ngunit kung ito mapigil ang sinasabi na subukan muli, subukan muli, subukan muli, kung ano ang programming 929 00:38:33,600 --> 00:38:36,970 bumuo ako baka ginagamit sa ilalim ng hood sa 930 00:38:36,970 --> 00:38:39,000 ipatupad na? 931 00:38:39,000 --> 00:38:39,980 Kaya lamang loop, tama? 932 00:38:39,980 --> 00:38:41,930 Isa ng ang pinakasimpleng ideya na nakita natin sa simula. 933 00:38:41,930 --> 00:38:45,050 Ang Habang Panahon bumuo, Ulitin ang bumuo. 934 00:38:45,050 --> 00:38:47,320 Siguro, sa programang ito, sa ilalim ng hood, kahit 935 00:38:47,320 --> 00:38:49,470 kahit na ito ay nakasulat sa C at hindi scratch, ito ginagawa 936 00:38:49,470 --> 00:38:54,300 isang bagay na tinatawag katumbas ng magpakailanman kung ang user ay hindi 937 00:38:54,300 --> 00:38:58,710 na nai-type sa isang integer, sabihin subukan muli, muling subukan, subukan muli, muling subukan, kaya 938 00:38:58,710 --> 00:39:01,220 pagkatapos wakas kapag ginagawa namin makakuha ng isang integer, pagkatapos mo 939 00:39:01,220 --> 00:39:02,970 masira ang ng na loop. 940 00:39:02,970 --> 00:39:05,610 >> Kaya kung ano ang iba pang mga function na maaari naming gamitin dito sa CS50 ang library? 941 00:39:05,610 --> 00:39:07,880 Well, uri ng mga halatang mga, hindi bababa sa batay sa 942 00:39:07,880 --> 00:39:09,570 uri ng data na alam namin ngayon na umiiral. 943 00:39:09,570 --> 00:39:12,900 Ipinatupad namin ang GetString, GetInt, ngunit sa buong 944 00:39:12,900 --> 00:39:15,680 unang linggo ng termino, maaari mo ring gamitin ang GetFloat at 945 00:39:15,680 --> 00:39:18,870 GetDouble at GetLongLong upang makakuha ng tumpak na 946 00:39:18,870 --> 00:39:20,030 uri ng data na gusto mo. 947 00:39:20,030 --> 00:39:24,030 Dahil ang pangunahing detalye dito ay hindi tulad ng ilang mga wika, 948 00:39:24,030 --> 00:39:26,630 tulad ng Python at Ruby, kung saan hindi mo kailangang mag- 949 00:39:26,630 --> 00:39:29,730 ipinapahayag ang mga uri ng data ng isang variable - 950 00:39:29,730 --> 00:39:32,390 hindi mo na kailangang sabihin sa computer kung anong uri ng mga bagay-bagay 951 00:39:32,390 --> 00:39:34,000 ka pagpunta upang ilagay sa variable - 952 00:39:34,000 --> 00:39:36,640 sa C, mayroon kang napaka tumpak. 953 00:39:36,640 --> 00:39:40,060 Kaya kung nais mo ang isang variable na tinatawag na n, isang tipak ng imbakan 954 00:39:40,060 --> 00:39:42,900 na sa kasong ito ang mangyayari sa 32 bit sa pamamagitan ng convention, 955 00:39:42,900 --> 00:39:45,660 upang sabihin sa computer na ang mga bits ay 956 00:39:45,660 --> 00:39:47,840 pagpunta upang mag-imbak ng isang numero - 957 00:39:47,840 --> 00:39:50,630 hindi isang character, hindi isang string, hindi isang Float. 958 00:39:50,630 --> 00:39:52,620 At ito address ang isyu namin epektibong 959 00:39:52,620 --> 00:39:53,760 bumangga sa nakaraang linggo. 960 00:39:53,760 --> 00:39:57,050 Kung kami ay gumagamit ng mga zero at mga numero upang kumatawan hindi lamang 961 00:39:57,050 --> 00:40:00,770 numero ngunit Bilang at BS at CS, kung paano sa mundo ay isang 962 00:40:00,770 --> 00:40:03,460 computer na malaman na ang pattern na ito ng mga bits sa aktwal 963 00:40:03,460 --> 00:40:07,650 kumakatawan sa bilang 65, bilang kabaligtaran sa kumakatawan sa 964 00:40:07,650 --> 00:40:09,860 titik A, na coincidentally, ayon sa 965 00:40:09,860 --> 00:40:13,440 ASCII, isipin ang, ay katumbas sa 65? 966 00:40:13,440 --> 00:40:16,550 >> Kaya ang mga uri ng data na ito ay nagbibigay ng konteksto sa computer, kaya 967 00:40:16,550 --> 00:40:18,810 na ito alam kung ang mga bits ay dapat kahulugan bilang isang 968 00:40:18,810 --> 00:40:23,660 int o bilang isang string. 969 00:40:23,660 --> 00:40:26,500 Anumang mga katanungan, pagkatapos, ito? 970 00:40:26,500 --> 00:40:28,149 Oo? 971 00:40:34,780 --> 00:40:35,270 David J. MALAN: Magandang katanungan. 972 00:40:35,270 --> 00:40:39,140 Kung naming kumuha ng stdio.h, namin i-save ang file - 973 00:40:39,140 --> 00:40:44,360 hayaan mo akong pumunta down sa window ng terminal at patakbuhin ang matematika, zoom 974 00:40:44,360 --> 00:40:45,530 sa at ipasok - 975 00:40:45,530 --> 00:40:47,700 ngayon nakakuha ako ng ibang error, dahil ako nang kataon lamang 976 00:40:47,700 --> 00:40:49,650 deklarasyon kung ano ang gumana ngayon? 977 00:40:49,650 --> 00:40:50,700 Printf. 978 00:40:50,700 --> 00:40:52,970 Kaya ngayon Lumikha ako ng isang bagong problema, na ang solusyon ay 979 00:40:52,970 --> 00:40:53,890 mahalagang parehong. 980 00:40:53,890 --> 00:40:55,365 Kailangan kong maglagay na muli. 981 00:40:55,365 --> 00:40:56,615 Madla: [hindi marinig] 982 00:41:03,534 --> 00:41:04,030 David J. MALAN: Oh. 983 00:41:04,030 --> 00:41:04,850 Kaya kung ako kumuha ng - 984 00:41:04,850 --> 00:41:05,360 Okay, oo. 985 00:41:05,360 --> 00:41:08,960 Kaya kung ako alisin ang karaniwang I / O library ng pagsasama 986 00:41:08,960 --> 00:41:12,020 dito, at pagkatapos mo sinasabi kung nakukuha ko mapupuksa ng printf, kumuha ng 987 00:41:12,020 --> 00:41:13,450 alisan printf? 988 00:41:13,450 --> 00:41:13,810 Oo. 989 00:41:13,810 --> 00:41:18,450 Ito ay dapat na gumana, dahil hindi na ako gamit ang anumang - Whoops. 990 00:41:18,450 --> 00:41:20,110 Ibig ko lang nagsisinungaling? 991 00:41:20,110 --> 00:41:21,650 Oh, okay. 992 00:41:21,650 --> 00:41:25,640 Ito ay hindi gagana dahil sa isang bagong error na aming ipinakilala. 993 00:41:25,640 --> 00:41:28,390 At ang isang ito ay ng kaunti pa maliwanag. 994 00:41:28,390 --> 00:41:29,440 >> Ano ang problema? 995 00:41:29,440 --> 00:41:30,680 Hindi nagamit variable n. 996 00:41:30,680 --> 00:41:34,040 Kaya ang error na ito ay ang resulta ng aming mga nagki-configure ang 997 00:41:34,040 --> 00:41:36,640 appliance upang maging partikular na pilosopo, sa talagang sumigaw sa 998 00:41:36,640 --> 00:41:39,060 mo para sa bawat posibleng pagkakamali, kahit na kung ito uri ng 999 00:41:39,060 --> 00:41:41,950 isang di-nakamamatay pagkakamali tulad nito - ito talagang isang malaking 1000 00:41:41,950 --> 00:41:44,820 harapin na inilalaan ko sa isang int, maglagay ng numero sa loob nito, at pagkatapos ay 1001 00:41:44,820 --> 00:41:46,030 ginawa walang ito? 1002 00:41:46,030 --> 00:41:47,020 Sa pagtakbo, hindi. 1003 00:41:47,020 --> 00:41:50,410 Na hindi pagpunta sa basagin ang programa. 1004 00:41:50,410 --> 00:41:51,490 Lamang uri ng bobo, i-right? 1005 00:41:51,490 --> 00:41:54,220 Walang halaga sa pag-tinanong para sa numerong iyon, na naka-imbak 1006 00:41:54,220 --> 00:41:56,370 ito sa isang variable, kung hindi ka pagpunta sa gawin 1007 00:41:56,370 --> 00:41:58,000 sa ito, kung print ito o i-save ito. 1008 00:41:58,000 --> 00:42:00,270 Kaya sa kasong ito, kumalatong ay tinatanggap ng mas maraming, at 1009 00:42:00,270 --> 00:42:02,010 ito sinasabi ng mga hindi nagamit na variable n. 1010 00:42:02,010 --> 00:42:05,380 >> Upang maayos namin ito kung gusto talaga namin. 1011 00:42:05,380 --> 00:42:07,250 Ngunit muli, ito ay hindi magandang programming ngayon. 1012 00:42:07,250 --> 00:42:09,310 Kaya ko lang gawin ito - 1013 00:42:09,310 --> 00:42:12,060 bumaba dito, hayaan mo akong i-clear ang screen, gumawa ng matematika. 1014 00:42:12,060 --> 00:42:13,090 Na gumagana. 1015 00:42:13,090 --> 00:42:18,110 Ngayon ay maaari kong patakbuhin ang aking programa sa matematika, tumatagal ng input - 1016 00:42:18,110 --> 00:42:18,700 mabuti, ay hindi maganda. 1017 00:42:18,700 --> 00:42:23,450 Tumatagal ng input, at na ang lahat ng ginagawa nito, sa kasong ito. 1018 00:42:23,450 --> 00:42:25,220 >> Sa aktwal, sabihin subukan ang isa sa iba pang sulok ng kaso na namin 1019 00:42:25,220 --> 00:42:26,300 ay hindi nag-iisip ng mas maaga. 1020 00:42:26,300 --> 00:42:28,220 Sa kasong ito - dito, sabihin bumalik sa isa na ang isang 1021 00:42:28,220 --> 00:42:29,500 kaunti mas user-friendly. 1022 00:42:29,500 --> 00:42:32,580 Hayaan akong bumalik dito at patakbuhin ang gumawa ng matematika muli. 1023 00:42:32,580 --> 00:42:34,190 Whoops, kung ano ang gagawin ko mali? 1024 00:42:34,190 --> 00:42:35,400 May ibalik karagdagang. 1025 00:42:35,400 --> 00:42:36,390 Okay. 1026 00:42:36,390 --> 00:42:38,490 Ngayon ay hindi namin pabalik sa orihinal na katayuan, kung saan ang lahat ng 1027 00:42:38,490 --> 00:42:39,990 sana na rin. 1028 00:42:39,990 --> 00:42:43,360 At ngayon kung nagpatakbo ako ng matematika, 123 tila upang gumana. 1029 00:42:43,360 --> 00:42:46,010 Ngunit ito ay hindi talagang isang epektibong patunay, sa makatarungan sabihin 1030 00:42:46,010 --> 00:42:47,930 okay, na gumagana. 1031 00:42:47,930 --> 00:42:49,120 789, na gumagana. 1032 00:42:49,120 --> 00:42:50,100 Oras upang isumite. 1033 00:42:50,100 --> 00:42:51,870 Dahil mayroong iba pang mga kaso ng sulok dito. 1034 00:42:51,870 --> 00:42:55,040 String A ay hindi talagang bigyan kami ng magkano ang pag-sa pamamagitan ng pag-type sa isang 1035 00:42:55,040 --> 00:42:56,510 buong maraming ng mga character. 1036 00:42:56,510 --> 00:42:59,580 Ngunit ano kung type ko sa? 1037 00:42:59,580 --> 00:43:04,850 Pagpindot sa numero 1 isang buong maraming, buong maraming dito - 1038 00:43:04,850 --> 00:43:06,300 lahat ng karapatan, ito ng isang maliit na pagbubutas, kaya ako pagpunta sa 1039 00:43:06,300 --> 00:43:10,040 hihinto dito, at ako pagpunta sa pindutin ang Enter. 1040 00:43:10,040 --> 00:43:11,290 >> Ano ang impiyerno nangyari? 1041 00:43:14,110 --> 00:43:17,680 Kaya ito ay maaaring aktwal na naipaliwanag. 1042 00:43:17,680 --> 00:43:18,920 Kaya tumagal ito bilang binary? 1043 00:43:18,920 --> 00:43:21,130 Ang isang mabuting pag-iisip, ngunit hindi, ito ay hindi ang katotohanan na ito kinuha ito 1044 00:43:21,130 --> 00:43:22,815 bilang binary, dahil sa katunayan, na lamang uri ng 1045 00:43:22,815 --> 00:43:23,080 pagkakataon. 1046 00:43:23,080 --> 00:43:23,930 Maaari naming gawin ito muli. 1047 00:43:23,930 --> 00:43:26,530 Kaya walang 2 sa sistema ng binary, na 1048 00:43:26,530 --> 00:43:27,420 marahil sapat pa rin. 1049 00:43:27,420 --> 00:43:28,780 Enter. 1050 00:43:28,780 --> 00:43:30,140 Kaya na ay hindi ang problema. 1051 00:43:30,140 --> 00:43:31,390 Ano pa? 1052 00:43:34,650 --> 00:43:35,400 Eksakto. 1053 00:43:35,400 --> 00:43:37,830 >> Kaya sa tingin bumalik sa kung ano ang int isang aktwal ay. 1054 00:43:37,830 --> 00:43:40,970 Ito ay 32 bit na kung saan pinagsama-sama ay kahulugan 1055 00:43:40,970 --> 00:43:42,090 bilang isang numero. 1056 00:43:42,090 --> 00:43:44,730 Kung mayroon kang 32 bit, na nangangahulugan na ang bawat isa sa ang mga bits ay maaaring maging 1057 00:43:44,730 --> 00:43:46,690 0 o 1, 0 o 1. 1058 00:43:46,690 --> 00:43:49,090 Kaya ito ay nangangahulugan na may dalawang posibilidad para sa bit, 1059 00:43:49,090 --> 00:43:51,140 dalawang mga posibilidad para sa ito, dalawang mga posibilidad para sa 1060 00:43:51,140 --> 00:43:52,570 bit - kaya na 2 beses 2 beses - 1061 00:43:52,570 --> 00:43:55,480 kaya na 2 sa 32 kapangyarihan ay ang kabuuang bilang ng 1062 00:43:55,480 --> 00:43:58,960 permutations ng mga zero at mga kung mayroon kang 32 1063 00:43:58,960 --> 00:44:01,400 placeholder, zero o na, sa harap mo. 1064 00:44:01,400 --> 00:44:04,250 Kaya kung mayroon akong 2 sa 32, mathematically, na kung ano? 1065 00:44:07,080 --> 00:44:07,840 Kaya ito ng maraming. 1066 00:44:07,840 --> 00:44:09,910 Ito ay 4 na bilyong, bigyan o. 1067 00:44:09,910 --> 00:44:13,510 At 4 bilyong ay mukhang hindi sa kung ano ang naka-print dito. 1068 00:44:13,510 --> 00:44:16,290 Sa katunayan, ito mukhang mas malapit sa 2 bilyong. 1069 00:44:16,290 --> 00:44:17,970 Ngunit ito ay hindi isang pagkakataon. 1070 00:44:17,970 --> 00:44:21,590 Ang katotohanan na computer na iyon ay misinterpreted ang aking malaking bilang, 1071 00:44:21,590 --> 00:44:24,260 aking malaking pagkakasunud-sunod ng mga bago at pagkatapos ay ang aking malaking pagkakasunud-sunod ng mga twos, 1072 00:44:24,260 --> 00:44:26,880 halos 2 bilyong, ay ipinaliwanag kung paano? 1073 00:44:30,250 --> 00:44:32,180 May isang cap sa int. 1074 00:44:32,180 --> 00:44:34,970 Mayroong isang tiyak na isang maximum na halaga na maaari mong kumatawan. 1075 00:44:34,970 --> 00:44:36,370 Ngunit ito ay karaniwang 4 bilyong, i-right? 1076 00:44:36,370 --> 00:44:39,100 Kung 2 sa 32 ay halos 4 bilyong, na tila 1077 00:44:39,100 --> 00:44:40,350 na ang pinakamalaking bilang. 1078 00:44:42,420 --> 00:44:45,240 Kaya hindi natitira, ngunit isang mahusay na pag-iisip. 1079 00:44:45,240 --> 00:44:46,340 Negatibong numero. 1080 00:44:46,340 --> 00:44:49,570 Kaya kung mayroon kang 4 bilyong posibleng bagay maaari mong 1081 00:44:49,570 --> 00:44:52,970 kumatawan na may mga iba't-ibang permutations ng 32 0s at 1082 00:44:52,970 --> 00:44:55,600 1s, na rin, ito ay nakatayo sa dahilan na namin ang mga tao ay maaaring gusto sa 1083 00:44:55,600 --> 00:44:57,110 kumatawan hindi lamang positibong integer 1084 00:44:57,110 --> 00:44:58,240 ngunit negatibong integer. 1085 00:44:58,240 --> 00:45:00,410 At sa katunayan, na palagay na C ginagawang. 1086 00:45:00,410 --> 00:45:03,550 Kaya may 32 bit, maaari mong kumatawan halos negatibong 2 1087 00:45:03,550 --> 00:45:06,630 bilyon ang lahat ng mga paraan sa positibong 2 bilyong. 1088 00:45:06,630 --> 00:45:08,750 At ito sa kasong ito, kung ano talaga namin nakikita lamang 1089 00:45:08,750 --> 00:45:13,600 palawit ng kapasidad ng aming integer, at kami ay may, kaya 1090 00:45:13,600 --> 00:45:15,860 magsalita, overflowed isang integer. 1091 00:45:15,860 --> 00:45:19,180 Na sinubukan namin magsiksik ng higit pang mga piraso ito kaysa maaaring aktwal na magkasya. 1092 00:45:19,180 --> 00:45:22,960 Kaya ang resulta ay namin mahalagang lahat ng 1 bit. 1093 00:45:22,960 --> 00:45:25,280 Namin ang Binaligtad nang lahat ng aming mga bit sa, na sinubukan namin upang kumatawan 1094 00:45:25,280 --> 00:45:27,630 ang pinakamalaking bilang na posible, ngunit ito ay malinaw na hindi halos 1095 00:45:27,630 --> 00:45:30,960 sapat na malaki ay kumakatawan sa dalawang bagay na lang ako nai-type ka. 1096 00:45:30,960 --> 00:45:31,730 Oo? 1097 00:45:31,730 --> 00:45:32,980 Madla: [hindi marinig] 1098 00:45:37,230 --> 00:45:37,830 >> David J. MALAN: Magandang katanungan. 1099 00:45:37,830 --> 00:45:40,080 Bakit hindi lang namin kumakatawan na negatibong 1100 00:45:40,080 --> 00:45:41,500 mag-sign bilang isang character lamang? 1101 00:45:41,500 --> 00:45:44,200 Kaya maaari namin talagang, at maaari naming pagkatapos ay i-save ang 1102 00:45:44,200 --> 00:45:45,470 ng karagdagang bit. 1103 00:45:45,470 --> 00:45:49,100 Ngunit ka pa rin upang kumatawan na gitling, at 1104 00:45:49,100 --> 00:45:50,700 na pagpunta sa gastos sa iyo ng hindi bababa sa isang bagay, 1105 00:45:50,700 --> 00:45:52,220 baka isang bit. 1106 00:45:52,220 --> 00:45:55,610 Kaya oo, kami may 32 bit na ginamit para sa aming mga numero, ngunit ngayon 1107 00:45:55,610 --> 00:45:57,610 kailangan namin ng isa pang bit na ginamit para sa aming mga gitling 1108 00:45:57,610 --> 00:45:58,810 simbolo, ang simbolong minus. 1109 00:45:58,810 --> 00:46:01,470 Kaya ngayon kami ay may 33 bit na halaga, na kung saan kami maaaring gawin, ngunit ito ay 1110 00:46:01,470 --> 00:46:02,570 lamang hindi paraan ang tapos na ito. 1111 00:46:02,570 --> 00:46:05,140 Ginawa namin ang isang paghatol tawag taon na ang nakakaraan, 32 bit ay uri ng ang 1112 00:46:05,140 --> 00:46:06,170 yunit ng pagsukat dito. 1113 00:46:06,170 --> 00:46:08,120 Kaya kami ay pagpunta sa gamitin ang isa sa mga bits epektibo sa 1114 00:46:08,120 --> 00:46:12,950 kumatawan negatibiti, at 31 bit sa kumakatawan sa bilang. 1115 00:46:12,950 --> 00:46:15,550 Iba pang mga tanong? 1116 00:46:15,550 --> 00:46:15,670 Ayos lang. 1117 00:46:15,670 --> 00:46:16,030 Na ang isang maraming. 1118 00:46:16,030 --> 00:46:17,930 Bakit hindi namin magpatuloy at ang aming limang minutong pahinga dito? 1119 00:46:23,580 --> 00:46:24,270 >> Ayos lang. 1120 00:46:24,270 --> 00:46:31,250 Kaya muli, hindi sa overemphasize ang matematika application 1121 00:46:31,250 --> 00:46:33,840 ng programming, sabihin lang kumalbit-off ang isang halimbawa 1122 00:46:33,840 --> 00:46:36,590 bago ilipat namin sa iba pang mga constructs, dahil lang 1123 00:46:36,590 --> 00:46:39,430 ay ilarawan ang ilang mga karaniwang stumbling punto sa ilan sa 1124 00:46:39,430 --> 00:46:41,520 ang mga pangunahing kaalaman pagdating sa pagsusulat ng programa. 1125 00:46:41,520 --> 00:46:44,360 Sa kasong ito, ang paggawa ng expression sa aritmetika na may ilang 1126 00:46:44,360 --> 00:46:48,010 kawili-wili kaugnayan sa syntax. 1127 00:46:48,010 --> 00:46:50,430 >> Kaya ito ay isang formula na kung saan maaari naming-convert 1128 00:46:50,430 --> 00:46:52,690 temperatura mula Fahrenheit sa Celsius. 1129 00:46:52,690 --> 00:46:54,600 Kung hindi mo isipin ang, ito ay ang formula. 1130 00:46:54,600 --> 00:46:58,870 Kaya kung plug namin sa Fahrenheit halaga ng 32 degrees, na kung saan ay 1131 00:46:58,870 --> 00:47:02,850 nagyeyelo, na magiging 32 minus 32 ay 0, at sa katunayan, 1132 00:47:02,850 --> 00:47:05,130 0 sa Celsius ay nagyeyelo din. 1133 00:47:05,130 --> 00:47:08,210 Kaya mabilis katinuan suriin doon - na ang pamilyar na formula. 1134 00:47:08,210 --> 00:47:10,880 Ipaalam sa akin pumunta sa appliance, bagaman, at simulan ang 1135 00:47:10,880 --> 00:47:13,920 pagsusulat ng isang programa na tinatawag na, tulad ng, f2c; "Fahrenheit sa 1136 00:47:13,920 --> 00:47:15,920 Celsius tuldok c ". 1137 00:47:15,920 --> 00:47:18,930 At hanggang sa tuktok dito, ako magsimula sa # include 1138 00:47:18,930 --> 00:47:22,190 stdio.h, at ako pagpunta sa gawin int pangunahing (walang bisa), at 1139 00:47:22,190 --> 00:47:24,680 muli, makikita namin bumalik sa hinaharap sa kung ano ang int ay nangangahulugan 1140 00:47:24,680 --> 00:47:26,820 doon at kung ano ang walang bisa ay nangangahulugan doon. 1141 00:47:26,820 --> 00:47:28,770 At ngayon hayaan mo akong magpatuloy at ipatupad ang isang programa na 1142 00:47:28,770 --> 00:47:31,170 mahalagang ito ng conversion para sa amin. 1143 00:47:31,170 --> 00:47:36,830 >> Kaya printf, sabihin nating, temperatura sa Fahrenheit. 1144 00:47:36,830 --> 00:47:40,140 At pagkatapos ay hayaan mo akong magpatuloy at makuha ang halaga mula sa mga gumagamit. 1145 00:47:40,140 --> 00:47:43,120 Anong uri ng halaga ang dapat kong makakuha ng mula sa user kung gusto ko 1146 00:47:43,120 --> 00:47:45,620 kanila upang magbigay sa akin ng temperatura sa Fahrenheit? 1147 00:47:45,620 --> 00:47:48,090 Oo? 1148 00:47:48,090 --> 00:47:50,090 Ano ang gusto mong ipanukala? 1149 00:47:50,090 --> 00:47:50,410 Oo. 1150 00:47:50,410 --> 00:47:51,960 Kaya Float nararamdaman medyo makatwirang. 1151 00:47:51,960 --> 00:47:53,950 Mayroon kaming, muli, lamang ng ilang mga pagpipilian na 1152 00:47:53,950 --> 00:47:55,310 nasaksihan namin sa gayon malayo. 1153 00:47:55,310 --> 00:48:00,100 Mayroon kaming mga bagay tulad ng pansamantalang trabaho, double, Float, int, mahaba ang haba, 1154 00:48:00,100 --> 00:48:01,150 bool, string. 1155 00:48:01,150 --> 00:48:03,510 Kaya sa mga ito, Float nararamdaman medyo makatwirang. 1156 00:48:03,510 --> 00:48:06,340 Maaari naming gamitin ang double, kanan, dahil kung gusto talaga namin sa 1157 00:48:06,340 --> 00:48:07,580 kumakatawan sa temperatura ng tao - 1158 00:48:07,580 --> 00:48:10,730 98,60000 - 1159 00:48:10,730 --> 00:48:12,990 maaari naming gamitin ang 64 bit upang gawin iyon, ngunit ito nararamdaman tulad ng 1160 00:48:12,990 --> 00:48:14,200 overkill para sa temperatura. 1161 00:48:14,200 --> 00:48:16,380 Kaya sabihin pumunta lamang may Float. 1162 00:48:16,380 --> 00:48:18,100 Ngayon ay kailangan ko ng variable. 1163 00:48:18,100 --> 00:48:20,500 Lamang upang panatilihing simple ang mga bagay, ako na tumawag ito f, ngunit ko 1164 00:48:20,500 --> 00:48:23,370 maaaring lamang bilang tama tumawag ito temperatura, 1165 00:48:23,370 --> 00:48:24,600 ngunit alinman ay pinong. 1166 00:48:24,600 --> 00:48:27,610 Kaya lumutang f = GetFloat. 1167 00:48:27,610 --> 00:48:30,220 Sa lalong madaling ako ngayon nagpasya upang gamitin ang GetFloat, bagaman, ako 1168 00:48:30,220 --> 00:48:33,340 kailangang gumawa ng isang pagwawasto. 1169 00:48:33,340 --> 00:48:33,720 Oo. 1170 00:48:33,720 --> 00:48:37,460 Kaya kailangan namin # include , kung hindi man, tagatala ay 1171 00:48:37,460 --> 00:48:39,000 pagpunta sa sumigaw sa amin. 1172 00:48:39,000 --> 00:48:41,720 Ngayon na mayroon akong isang Float, hayaan mo akong magpatuloy at gawin ang 1173 00:48:41,720 --> 00:48:42,460 conversion. 1174 00:48:42,460 --> 00:48:44,980 >> Kaya unang, hayaan mo akong ring makakuha dito sa ugali ng 1175 00:48:44,980 --> 00:48:46,310 pagkomento ang aking code. 1176 00:48:46,310 --> 00:48:49,820 Kaya muli, ang komento ng isang notation sa tao na 1177 00:48:49,820 --> 00:48:52,600 hindi bahagi ng programa per se, ngunit isa, ay tumutulong sa iyo 1178 00:48:52,600 --> 00:48:55,010 maunawaan kung ano ang ginawa mo sa susunod na umaga, o sa susunod 1179 00:48:55,010 --> 00:48:57,570 buwan, ito ay tumutulong sa iyong pagtuturo kapwa maunawaan kung ano ang ginawa mo 1180 00:48:57,570 --> 00:48:59,230 o kung ano ang balak mong gawin, kaya ito 1181 00:48:59,230 --> 00:49:00,950 sa pangkalahatan ay napaka mahusay na kasanayan. 1182 00:49:00,950 --> 00:49:02,940 Bawat ilang linya ng code, makapagsulat ng isang komento sa 1183 00:49:02,940 --> 00:49:04,490 iyong sarili o sa iyong mga kasamahan. 1184 00:49:04,490 --> 00:49:08,460 Sa dito, ako pagpunta sa sabihin, "Magtanong ng gumagamit para sa temperatura." 1185 00:49:08,460 --> 00:49:10,890 Ay hindi isang kumpletong pangungusap, lamang ng isang maikling parirala. 1186 00:49:10,890 --> 00:49:14,270 Ngunit ang ideya sa likod ng pagkomento sa C ay na ang bawat isa sa iyong 1187 00:49:14,270 --> 00:49:17,980 komento dapat magbigay ng kapangyarihan sa iyo - o, sabihin nating, tf o isang kasamahan - 1188 00:49:17,980 --> 00:49:21,290 sa sagap ang iyong programa at malaman eksakto kung ano ang ginagawa nito, sa pamamagitan ng hindi 1189 00:49:21,290 --> 00:49:24,650 kaya magkano pagbabasa ang code, ngunit sa pamamagitan ng pagbabasa ng mga komento, na 1190 00:49:24,650 --> 00:49:26,220 dapat na maikli at malinaw at malinaw. 1191 00:49:26,220 --> 00:49:29,030 Lahat ng karapatan, kaya ngayon hayaan mo akong sige at sabihin, "-convert 1192 00:49:29,030 --> 00:49:32,660 Farenheit sa Celsius. "Kaya ako pagpunta sa sige at gawin, 1193 00:49:32,660 --> 00:49:34,340 sabihin nating, lumutang ang c. 1194 00:49:34,340 --> 00:49:36,610 Patuloy kaming Celsius bilang isang lumulutang na halaga ng point. 1195 00:49:36,610 --> 00:49:37,630 >> At hayaan mo akong gumawa ng isang ulos sa. 1196 00:49:37,630 --> 00:49:40,350 Ang formula ay, muli, dito. 1197 00:49:40,350 --> 00:49:45,510 Bilang 5/9 beses F minus 32. 1198 00:49:45,510 --> 00:49:46,360 Kaya sabihin gawin ito. 1199 00:49:46,360 --> 00:49:50,450 Kaya 5 na hinati sa pamamagitan ng 9, minus - 1200 00:49:50,450 --> 00:49:52,330 Whoops, messed ko ito na. 1201 00:49:52,330 --> 00:49:53,070 Beses. 1202 00:49:53,070 --> 00:49:56,550 Kaya 5/9 beses F minus 32. 1203 00:49:56,550 --> 00:49:59,650 Kaya ng F minus 32, semicolon. 1204 00:49:59,650 --> 00:50:02,000 At ngayon, pababa dito, ako pagpunta sa magpatuloy 1205 00:50:02,000 --> 00:50:03,220 at sabihin, i-print ang resulta. 1206 00:50:03,220 --> 00:50:05,160 At bahagi ito madali. Printf. 1207 00:50:05,160 --> 00:50:07,980 Paano ko pumunta tungkol sa pag-print ito? 1208 00:50:07,980 --> 00:50:16,890 Well, maaari kong sabihin "Iyon numero sa Celsius ay% f \ n", 1209 00:50:16,890 --> 00:50:18,060 para lamang sa ilang mga aesthetics. 1210 00:50:18,060 --> 00:50:20,450 At pagkatapos ay kung ano ang halaga ang gusto kong mag-plug in dito bilang printf ng 1211 00:50:20,450 --> 00:50:21,360 pangalawang argumento? 1212 00:50:21,360 --> 00:50:21,650 Okay. 1213 00:50:21,650 --> 00:50:22,540 Kaya lamang c. 1214 00:50:22,540 --> 00:50:24,760 Kaya makikita namin magsimula sa mga ito at pagkatapos lamang bumalik sa 0. 1215 00:50:24,760 --> 00:50:25,960 Muli, ito ay walang upang gawin ang matematika. 1216 00:50:25,960 --> 00:50:27,610 Ito lamang ay nangangahulugan na lahat na rin. 1217 00:50:27,610 --> 00:50:31,210 >> Ngayon, ito tama, ang program na ito? 1218 00:50:31,210 --> 00:50:31,520 Ayos lang. 1219 00:50:31,520 --> 00:50:33,630 Kaya ko na ginawa ng ilang mga pagkakamali. 1220 00:50:33,630 --> 00:50:35,980 Kahit na kung mayroon kang walang ideya kung ano ang programming ay, maaari mong pag-uri-uriin 1221 00:50:35,980 --> 00:50:37,120 ng magpakilala pabalik sa mababang paaralan kung ano ang 1222 00:50:37,120 --> 00:50:38,740 maaaring maging ang mga pagkakamali dito. 1223 00:50:38,740 --> 00:50:40,050 Ano ang isa sa mga unang? 1224 00:50:40,050 --> 00:50:41,256 Madla: [hindi marinig] 1225 00:50:41,256 --> 00:50:41,660 David J. MALAN: Oo. 1226 00:50:41,660 --> 00:50:42,940 Kaya kami ay nawawala panaklong. 1227 00:50:42,940 --> 00:50:45,420 Ito ay sinadya na ginawa ko mga panaklong sa ang pangunahing tono 1228 00:50:45,420 --> 00:50:48,130 slide dito, dahil mayroong talagang ito paniwala ng pagkakasunod-sunod 1229 00:50:48,130 --> 00:50:51,590 ng mga pagpapatakbo, o mangingibabaw, kung saan ang ilang mga pagpapatakbo - 1230 00:50:51,590 --> 00:50:52,890 pagpaparami - 1231 00:50:52,890 --> 00:50:56,000 may mas mataas na nagbubuklod, may mas mataas na mangingibabaw, kaysa sa mga bagay 1232 00:50:56,000 --> 00:50:58,050 tulad ng karagdagan o pagbabawas. 1233 00:50:58,050 --> 00:51:00,550 Kaya ginawa namin ito para sa mga taon lamang upang gumawa ng malinaw na eksakto 1234 00:51:00,550 --> 00:51:02,840 kung ano ang matematika na operasyon ay dapat gawin muna. 1235 00:51:02,840 --> 00:51:05,010 Kaya dapat ko marahil gayahin eksakto ito. 1236 00:51:05,010 --> 00:51:08,990 Kung hindi man, ang computer baka upang subukang gawin 1237 00:51:08,990 --> 00:51:13,090 isang bagay tulad ng hatiin 5 sa pamamagitan ng 9, multiply pagkatapos F, pagkatapos ibawas 1238 00:51:13,090 --> 00:51:14,850 32 mula sa ang buong bagay. 1239 00:51:14,850 --> 00:51:16,480 Alin ang hindi, sa katunayan, kung ano ang gusto naming gawin. 1240 00:51:16,480 --> 00:51:17,340 Kaya sabihin parenthesize. 1241 00:51:17,340 --> 00:51:20,860 Natin idagdag ang aking mga panaklong dito, ang mga panaklong dito. 1242 00:51:20,860 --> 00:51:22,670 Natin ilagay ito sa paglipas dito. 1243 00:51:22,670 --> 00:51:25,130 Dito, napansin ko lang ang isa pang pagkakamali na ginawa ko sa kahabaan ng paraan. 1244 00:51:25,130 --> 00:51:25,680 Oo? 1245 00:51:25,680 --> 00:51:26,930 Madla: [hindi marinig] 1246 00:51:29,632 --> 00:51:30,130 >> David J. MALAN: Ah. 1247 00:51:30,130 --> 00:51:30,470 Mabuti. 1248 00:51:30,470 --> 00:51:32,400 Kaya namin ang aktwal na may parehong integer 1249 00:51:32,400 --> 00:51:34,020 division ng isyu mula sa bago. 1250 00:51:34,020 --> 00:51:35,800 Itama ko na, sabihin makita kung ano ang sintomas sa. 1251 00:51:35,800 --> 00:51:36,990 Ngunit kami ay upang itama ng isa 1252 00:51:36,990 --> 00:51:37,680 iba pang mga pagkakamali dito. 1253 00:51:37,680 --> 00:51:38,015 Oo? 1254 00:51:38,015 --> 00:51:39,540 Madla: [hindi marinig] 1255 00:51:39,540 --> 00:51:40,070 David J. MALAN: Oo. 1256 00:51:40,070 --> 00:51:43,130 Kaya, ang bobo pagkakamali na aking ginawa, ngunit hindi mapaniniwalaan o kapani-paniwala mahalaga. 1257 00:51:43,130 --> 00:51:45,870 Ang computer ay hindi lang pumikit ang mga mata at ipaalam 1258 00:51:45,870 --> 00:51:48,770 gamitin sa akin ang kabisera F, kapag ako ay aktwal na ipinahayag sa variable 1259 00:51:48,770 --> 00:51:51,360 bilang ng lowercase na f dito, sa linya 8. 1260 00:51:51,360 --> 00:51:54,470 Kaya kailangan ko upang iwasto ang sa linya 11 capitalization aking, na isang 1261 00:51:54,470 --> 00:51:56,820 sandali ang nakalipas ay isang kabisera F nang hindi sinasadya. 1262 00:51:56,820 --> 00:51:57,610 Paano ang tungkol dito? 1263 00:51:57,610 --> 00:51:59,980 Dapat ito ay lowercase pati na rin? 1264 00:51:59,980 --> 00:52:02,260 Ito ay dapat, ngunit na ang isang pagkakataon. 1265 00:52:02,260 --> 00:52:05,070 Na% f ay walang gawin sa mga variable. 1266 00:52:05,070 --> 00:52:07,980 Kaya lang sa sobrang malinaw dito, hayaan mo akong magpatuloy at 1267 00:52:07,980 --> 00:52:10,710 palitan ang pangalan ng ito, maikling, "temperatura." Hayaan akong palitan ang pangalan 1268 00:52:10,710 --> 00:52:15,050 ito "temperatura." Hayaan akong hindi palitan ang pangalan na ito. 1269 00:52:15,050 --> 00:52:18,180 Dahil, muli,% f buong mundo ay nangangahulugan, "lumulutang point halaga." 1270 00:52:18,180 --> 00:52:19,950 May walang gawin sa aking variable. 1271 00:52:19,950 --> 00:52:23,080 Ngunit "temperatura" lahat ng dako ng lugar sandali lang labis sa mga salita, 1272 00:52:23,080 --> 00:52:25,370 kaya ako pagpunta upang bumalik sa aking lowercase s "f". 1273 00:52:25,370 --> 00:52:27,890 >> Ngayon, hayaan mo akong magpatuloy down sa aking window dito. 1274 00:52:27,890 --> 00:52:29,190 Gawing f2c - 1275 00:52:29,190 --> 00:52:31,200 na, muli, ang arbitrary pangalan ko 1276 00:52:31,200 --> 00:52:32,590 ibinigay sa ang file na ito. 1277 00:52:32,590 --> 00:52:33,690 Mukhang inipon. 1278 00:52:33,690 --> 00:52:35,080 Hayaan akong magpatakbo ng f2c. 1279 00:52:35,080 --> 00:52:35,780 Enter. 1280 00:52:35,780 --> 00:52:37,786 Temperatura sa Fahrenheit - sabihin gawin ang isang madaling. 1281 00:52:37,786 --> 00:52:39,370 32. 1282 00:52:39,370 --> 00:52:40,910 OK, itama. 1283 00:52:40,910 --> 00:52:45,910 Ngunit, kung ako ngayon gawin 212 para sa bulak - 1284 00:52:45,910 --> 00:52:46,630 mapahamak. 1285 00:52:46,630 --> 00:52:47,030 Ayos lang. 1286 00:52:47,030 --> 00:52:50,780 Kaya, malinaw na hindi iwasto, kung sinusubukan ang iyong tf 1287 00:52:50,780 --> 00:52:51,800 hindi bababa sa dalawang halaga. 1288 00:52:51,800 --> 00:52:53,340 Kaya kung ano ang problema dito? 1289 00:52:53,340 --> 00:52:55,970 Well, ikaw ay ilagay ang iyong mga daliri sa kung ano ang isyu. 1290 00:52:55,970 --> 00:52:57,600 Ngunit bakit na ang kaso? 1291 00:52:57,600 --> 00:53:00,630 Up dito, kapag ako ginagawa ang matematika sa 5 na hinati sa pamamagitan ng 9. 1292 00:53:00,630 --> 00:53:02,190 Sa conceptually, na perpektong tama. 1293 00:53:02,190 --> 00:53:03,690 Lubos na pare-pareho sa mga formula. 1294 00:53:03,690 --> 00:53:05,940 Ngunit computer lamang gawin tiyak kung ano ang iyong 1295 00:53:05,940 --> 00:53:06,760 sabihin sa kanila na gawin. 1296 00:53:06,760 --> 00:53:08,940 At kung ano ang epektibong namin ay nagsasabi sa ang computer dito 1297 00:53:08,940 --> 00:53:12,320 hatiin ang integer 5 ng integer 9 1298 00:53:12,320 --> 00:53:13,670 at magbigay sa akin ang mga resulta. 1299 00:53:13,670 --> 00:53:16,230 Ang problema, bagaman, kapag mo division gamit ang data 1300 00:53:16,230 --> 00:53:20,220 uri, output ay ang parehong uri ng data bilang ng mga input. 1301 00:53:20,220 --> 00:53:23,670 At kaya kung ang dalawang input ay parehong ints, ang output ay pagpunta 1302 00:53:23,670 --> 00:53:25,110 sa isang int. 1303 00:53:25,110 --> 00:53:28,770 At kaya 5 na hinati sa pamamagitan ng 9 ang punto ng isang bagay. 1304 00:53:28,770 --> 00:53:32,320 Ngunit ano ang pinakamalapit na integer upang ituro ang isang bagay? 1305 00:53:32,320 --> 00:53:33,630 Kaya, ito ay aktwal na 0. 1306 00:53:33,630 --> 00:53:36,620 Kaya bilang namin tinalakay sa Monday, ang lahat pagkatapos ng decimal 1307 00:53:36,620 --> 00:53:37,940 punto ay makakakuha pinutol. 1308 00:53:37,940 --> 00:53:39,495 Ito lamang ay makakakuha itinapon ang layo. 1309 00:53:39,495 --> 00:53:42,760 Kaya ito ay isang kumpletong pagkakamali, dahil maaari ko pati na rin lamang 1310 00:53:42,760 --> 00:53:44,700 multiply ang lahat ng 0 dito. 1311 00:53:44,700 --> 00:53:46,550 >> Ngayon, maaari ko aayusin ang mga ito sa ilang mga paraan. 1312 00:53:46,550 --> 00:53:48,080 Maaari kong gawin ito. 1313 00:53:48,080 --> 00:53:50,490 5.0 na hinati sa pamamagitan ng siyam. 1314 00:53:50,490 --> 00:53:52,110 Technically, hindi ko kailangan upang gawin iyon. 1315 00:53:52,110 --> 00:53:55,780 Ginagawa sumapat sa lamang gumawa ng isa ng mga numero ng Float - 1316 00:53:55,780 --> 00:53:58,290 o double - sa pamamagitan ng paglalagay ng decimal point dito. 1317 00:53:58,290 --> 00:54:01,740 Dahil kung ano ang mangyayari ngayon kapag hatiin mo ang isang integer sa pamamagitan ng 1318 00:54:01,740 --> 00:54:04,670 Float, o ng double, computer pagpunta sa mapagtanto 1319 00:54:04,670 --> 00:54:06,830 oh, isa sa mga mas tumpak na. 1320 00:54:06,830 --> 00:54:09,420 Hayaan ang maligaw sa akin sa gilid na nagbibigay sa iyo ng higit pang katumpakan kaysa 1321 00:54:09,420 --> 00:54:10,310 nilayon mo. 1322 00:54:10,310 --> 00:54:12,700 Kaya ito i-convert ang resulta - 1323 00:54:12,700 --> 00:54:16,240 ito ay bumalik ang resulta bilang isang lumulutang na halaga ng point at pati na rin. 1324 00:54:16,240 --> 00:54:17,330 Kaya na gagana. 1325 00:54:17,330 --> 00:54:18,060 Ito ay gumagana. 1326 00:54:18,060 --> 00:54:20,010 At may isa pang mekanismo na namin makita sa 1327 00:54:20,010 --> 00:54:21,390 mas detalyado sa susunod na linggo. 1328 00:54:21,390 --> 00:54:24,690 Maaari mong aktwal na, bilang programmer, sabihin sa computer 1329 00:54:24,690 --> 00:54:27,930 sa aktwal na ituturing ng isang uri ng data bilang 1330 00:54:27,930 --> 00:54:29,260 bagaman ito ay isa pa. 1331 00:54:29,260 --> 00:54:30,990 >> Kaya ko maaaring aktwal na gawin ito. 1332 00:54:30,990 --> 00:54:35,280 Sa panaklong, ang maaari kong sabihin na ang isang bagay tulad ng (Float), bukas 1333 00:54:35,280 --> 00:54:36,350 paren, malapit paren. 1334 00:54:36,350 --> 00:54:39,050 At ito ay kung ano ang tinatawag na "Casting." Muli, higit pa 1335 00:54:39,050 --> 00:54:39,940 sa susunod na linggo. 1336 00:54:39,940 --> 00:54:42,280 Ngunit ito lang ang program na paraan ng nagsasabi sa 1337 00:54:42,280 --> 00:54:45,910 computer, oo alam ko 9 ay isang integer o ng mahabang. 1338 00:54:45,910 --> 00:54:47,700 Alam ko ito ay hindi isang lumulutang na halaga ng point. 1339 00:54:47,700 --> 00:54:49,420 Ngunit ituring ito bilang tulad pa rin. 1340 00:54:49,420 --> 00:54:52,000 Kaya nagsumite ng isang uri ng data ibig sabihin nito ay i-convert 1341 00:54:52,000 --> 00:54:53,310 mula sa isa sa iba pang mga. 1342 00:54:53,310 --> 00:54:55,790 Lantaran, ito ay sandali lang pangit, kaya Gusto ko ipinapanukala naming umalis 1343 00:54:55,790 --> 00:54:58,830 -back sa orihinal na mungkahi ng nagko-convert 1344 00:54:58,830 --> 00:55:00,770 ang mga bagay na ito sa lumulutang halaga punto nang manu-mano. 1345 00:55:00,770 --> 00:55:02,890 Dahil ngayon lang sobrang i-clear kung anong nangyayari sa, at 1346 00:55:02,890 --> 00:55:04,280 ito ay hindi lahat na distracting. 1347 00:55:04,280 --> 00:55:06,710 >> Kaya natin ngayon ay bumalik sa aking terminal na window. 1348 00:55:06,710 --> 00:55:07,990 Gawing f2c. 1349 00:55:07,990 --> 00:55:09,430 Hayaan akong magpatuloy at patakbuhin ang. 1350 00:55:09,430 --> 00:55:12,340 At, bilang isang bukod, na makukuha mo nababato type mga utos 1351 00:55:12,340 --> 00:55:14,910 muli at muli, nauunawaan natin na computer, tulad ng Linux dito, 1352 00:55:14,910 --> 00:55:16,010 may posibilidad na medyo na smart. 1353 00:55:16,010 --> 00:55:18,890 At kung ako pindutin Up, maaari naming pumunta sa pamamagitan ng aking buong kasaysayan ng 1354 00:55:18,890 --> 00:55:20,380 command, Pataas at Pababa. 1355 00:55:20,380 --> 00:55:23,840 Kaya sa kasong ito dito, maaari kong pumunta lamang Up na tumakbo na f2c. 1356 00:55:23,840 --> 00:55:25,830 Ako yelled sa, dahil ko lang ginawa na ang isang segundo na nakalipas. 1357 00:55:25,830 --> 00:55:27,030 Nang hanggang sa petsa. 1358 00:55:27,030 --> 00:55:30,720 Kaya ngayon maaari ba akong magpatakbo ng f2c muli. 1359 00:55:30,720 --> 00:55:33,260 Natin subukan ang 32 Fahrenheit. 1360 00:55:33,260 --> 00:55:36,720 Ngayon sabihin subukan ang 212 Fahrenheit. 1361 00:55:36,720 --> 00:55:37,250 >> Phew. 1362 00:55:37,250 --> 00:55:38,250 Tila upang gumana. 1363 00:55:38,250 --> 00:55:41,760 Ngayon, ito ay mabuti, ngunit ito nararamdaman ng kaunti arbitrary na 1364 00:55:41,760 --> 00:55:44,890 Nagpapakita ako ng mga anim na numero pagkatapos ng decimal point. 1365 00:55:44,890 --> 00:55:45,070 Tama? 1366 00:55:45,070 --> 00:55:47,830 Kung ikaw ang panahon ng tao sa TV, ikaw ay ang uri ng isang doofus 1367 00:55:47,830 --> 00:55:49,150 kung binabasa mo ang temperatura sa 1368 00:55:49,150 --> 00:55:50,070 ang antas ng katumpakan. 1369 00:55:50,070 --> 00:55:51,270 Kaya sabihin pasimplehin ito. 1370 00:55:51,270 --> 00:55:53,880 Kaya ipaalam sa aktwal na pumunta dito, sa aking printf. 1371 00:55:53,880 --> 00:55:55,490 At oo, gusto kong lumutang. 1372 00:55:55,490 --> 00:55:57,570 Ngunit nais ko na ngayong tukuyin ang katumpakan. 1373 00:55:57,570 --> 00:55:59,070 At ako pagpunta sa isang maliit na maikli at malinaw. 1374 00:55:59,070 --> 00:56:03,090 Ako pagpunta upang sabihin, bigyan ako ng isang punto pagkatapos ng decimal na lugar. 1375 00:56:03,090 --> 00:56:07,590 Kaya sa halip na nating ang% f, ako pagpunta sa sabihin% .1 f. 1376 00:56:07,590 --> 00:56:09,760 At ito ay nangangahulugan lamang ninyo akong bigyan ng isang posisyon 1377 00:56:09,760 --> 00:56:11,410 pagkatapos ng decimal point. 1378 00:56:11,410 --> 00:56:11,700 Ayos lang. 1379 00:56:11,700 --> 00:56:12,570 Natin subukan ito muli. 1380 00:56:12,570 --> 00:56:15,590 Hayaan akong muling patakbuhin ang mga ito pagkatapos ng kino-compile ang. 1381 00:56:15,590 --> 00:56:18,160 At ngayon ko type sa 32, at nakukuha ko pabalik ng 1382 00:56:18,160 --> 00:56:19,310 higit pang mga halaga ng maikli at malinaw. 1383 00:56:19,310 --> 00:56:22,480 At maaari ba akong type sa, ngayon, 212, at makakuha ng isang mas maikli at malinaw 1384 00:56:22,480 --> 00:56:23,260 halaga pati na rin. 1385 00:56:23,260 --> 00:56:25,190 At may iba pang mga bagay na maaari mong gawin sa printf. 1386 00:56:25,190 --> 00:56:27,950 Maaari mong aktwal na tukuyin kung gaano malawak ang numero ay dapat na. 1387 00:56:27,950 --> 00:56:30,900 Kung gusto mong magkaroon ng padding dito, kaya maaari mong i-right-ihanay o 1388 00:56:30,900 --> 00:56:32,360 kaliwang ihanay ang lahat ng iyong mga numero o 1389 00:56:32,360 --> 00:56:33,400 subukan sa sentro ng mga bagay. 1390 00:56:33,400 --> 00:56:35,340 Kaya Napagtanto may maliit na trick maaari mong gawin may. 1391 00:56:35,340 --> 00:56:38,420 Ngunit sila lamang pasingawan sa code format, 1392 00:56:38,420 --> 00:56:39,600 tulad namin magkaroon doon. 1393 00:56:39,600 --> 00:56:41,090 >> Kaya sa mga tuntunin ng ang isyu na ito ng mangingibabaw. 1394 00:56:41,090 --> 00:56:43,820 Ito ay pagbubutas talahanayan upang pumunta sa pamamagitan ng methodically. 1395 00:56:43,820 --> 00:56:46,780 Ngunit Napagtanto na ang mga may-akda ng C makabuo ng 1396 00:56:46,780 --> 00:56:50,190 panuntunan na tukuyin kung aling mga operator ay may mas mataas na 1397 00:56:50,190 --> 00:56:53,680 mangingibabaw, mas may-bisang kapangyarihan, kaysa sa iba. 1398 00:56:53,680 --> 00:56:55,890 Kaya kung saan sa mababang paaralan, alam namin sa pangkalahatan na ito ay 1399 00:56:55,890 --> 00:56:58,930 multiplikasyon at dibisyon, pagkatapos karagdagan at pagbabawas, 1400 00:56:58,930 --> 00:56:59,950 pagkatapos ilang iba pang mga bagay-bagay. 1401 00:56:59,950 --> 00:57:01,720 Sa mundo ng programming, may isang mas 1402 00:57:01,720 --> 00:57:03,360 mas mahabang listahan ng mga bagay. 1403 00:57:03,360 --> 00:57:05,150 At ito ay hindi isang bagay na nagkakahalaga memorizing ngayon. 1404 00:57:05,150 --> 00:57:07,310 Makakakuha ka ng acclimated dito bago mahaba. 1405 00:57:07,310 --> 00:57:10,690 Ngunit tulad ng sa mababang paaralan, panaklong pangkalahatan malutas 1406 00:57:10,690 --> 00:57:12,990 ang mga isyu ng mangingibabaw, sa pamamagitan ng sobrang maliwanag sa 1407 00:57:12,990 --> 00:57:15,620 computer at tao magkamukha kung ano ang nilalayon. 1408 00:57:15,620 --> 00:57:17,770 Kaya isaalang-alang ang isang maliit na sheet ng impostor doon. 1409 00:57:17,770 --> 00:57:21,690 Ngunit karamihan ng mga detalye hindi namin ay makakakuha para sa ilang oras. 1410 00:57:21,690 --> 00:57:21,900 >> Ayos lang. 1411 00:57:21,900 --> 00:57:24,120 Ngayon, sabihin bumuo ng up at ilipat ang layo mula sa mga ulok maliit 1412 00:57:24,120 --> 00:57:25,460 mathematical halimbawa. 1413 00:57:25,460 --> 00:57:27,500 Pa ring gamitin ang parehong batayan, ngunit magsimula 1414 00:57:27,500 --> 00:57:29,960 pagpapahayag ng ating sarili ng kaunti pa tulad ng sa simula. 1415 00:57:29,960 --> 00:57:31,660 Kaya sa simula, nagkaroon kami ng mga Boolean expression. 1416 00:57:31,660 --> 00:57:34,890 At sa Ingles, Boolean expression ay ang? 1417 00:57:34,890 --> 00:57:35,580 Totoo o hindi. 1418 00:57:35,580 --> 00:57:38,300 Ito ay isang bagay na sinusuri sa true o false. 1419 00:57:38,300 --> 00:57:39,060 1 o 0. 1420 00:57:39,060 --> 00:57:39,870 On o off. 1421 00:57:39,870 --> 00:57:41,000 Anuman ang nais mong tawagan ito. 1422 00:57:41,000 --> 00:57:43,210 Ngayon sa simula, ang mga piraso ng puzzle ay tumingin tulad nito. 1423 00:57:43,210 --> 00:57:45,850 At na ang kumbinasyon, sa ibaba doon, ng tatlong 1424 00:57:45,850 --> 00:57:47,980 puzzle piraso. 1425 00:57:47,980 --> 00:57:48,980 Isa kasama - 1426 00:57:48,980 --> 00:57:51,710 isang bagay na may blangko at blangko. 1427 00:57:51,710 --> 00:57:53,970 At pagkatapos ay dalawang Boolean expression sa loob nito. 1428 00:57:53,970 --> 00:57:56,460 Kaya maaari mong ma-nest ang Boolean expression upang makakuha ng higit pa 1429 00:57:56,460 --> 00:57:59,360 kumplikado Boolean expression. 1430 00:57:59,360 --> 00:58:03,930 Halimbawa, kung ito ay Sabado, at maganda 1431 00:58:03,930 --> 00:58:06,180 panahon, pagkatapos ay pumunta sa labas. 1432 00:58:06,180 --> 00:58:07,500 O isang bagay na arbitrary tulad na. 1433 00:58:07,500 --> 00:58:10,090 Kaya maaari mong sumali Boolean expression up sa isang 1434 00:58:10,090 --> 00:58:12,780 mas malaking halaga ng katotohanan, na ang sagot ay batay 1435 00:58:12,780 --> 00:58:13,800 sa mas maliit na mga. 1436 00:58:13,800 --> 00:58:15,770 >> Ngayon, sa C, thankfully, mapping na ito ay 1437 00:58:15,770 --> 00:58:16,720 aktwal na medyo simple. 1438 00:58:16,720 --> 00:58:18,820 Panaklong makatulong sa gumawa ang mga bagay na i-clear dito. 1439 00:58:18,820 --> 00:58:21,700 && Kung ano ay nangangahulugan "at." Kaya na kung paano 1440 00:58:21,700 --> 00:58:24,700 kami ay i-convert ang mga bloke mula sa simula sa C. 1441 00:58:24,700 --> 00:58:27,590 At para sa mga kundisyon nakita natin sa simula, sa kaliwang banda 1442 00:58:27,590 --> 00:58:31,150 bahagi doon, maaari ko stack ang mga ito katulad sa C. Kung x ay mas 1443 00:58:31,150 --> 00:58:32,970 kaysa y, pagkatapos ay gawin ito. 1444 00:58:32,970 --> 00:58:35,100 Iba Pa kung ang x ay mas malaki kaysa sa y, pagkatapos ay gawin ito. 1445 00:58:35,100 --> 00:58:38,030 Iba Pa lohikal na dapat silang magiging katumbas, kaya sabihin 1446 00:58:38,030 --> 00:58:39,140 na ang mga ito ay pantay-pantay. 1447 00:58:39,140 --> 00:58:41,210 Upang maaari naming ngayon simulan upang makabuo ng mga bagay na ito. 1448 00:58:41,210 --> 00:58:42,170 >> Kaya natin ang isang halimbawa. 1449 00:58:42,170 --> 00:58:45,550 Hayaan akong buksan ang isang file na sa website ng kurso na 1450 00:58:45,550 --> 00:58:47,270 Sinulat ni ako nang maaga. 1451 00:58:47,270 --> 00:58:50,540 Na tinatawag na nonswitch.c. 1452 00:58:50,540 --> 00:58:52,270 At kami na makita kung bakit sa sandali lamang. 1453 00:58:52,270 --> 00:58:54,770 Kaya sa ang file na ito - nonswitch.c-- 1454 00:58:54,770 --> 00:58:56,830 unang mapagtanto na may isang buong grupo ng mga 1455 00:58:56,830 --> 00:58:58,460 mga komento sa itaas. 1456 00:58:58,460 --> 00:59:00,110 Na lamang na nagpapaliwanag ng mga pangalan ng file, kung ano ang 1457 00:59:00,110 --> 00:59:01,260 , at iba pa. 1458 00:59:01,260 --> 00:59:04,390 At tila nagpapakita ng paggamit ng Boolean AT-Pina - 1459 00:59:04,390 --> 00:59:06,220 conjoining dalawang expression. 1460 00:59:06,220 --> 00:59:07,670 >> Kaya sabihin makita kung paano gumagana ang programang ito. 1461 00:59:07,670 --> 00:59:10,840 Isinama ko ang aking dalawang mga file, cs50.h at stdio.h. 1462 00:59:10,840 --> 00:59:13,180 Kung mag-scroll ko pababa, ngayon, sa programa, ito ay isang maliit na na 1463 00:59:13,180 --> 00:59:15,730 kaysa sa nakasulat na namin ang bago, ngunit medyo nababasa. 1464 00:59:15,730 --> 00:59:18,360 Kaya ko munang mag-print sa gumagamit, sa linya 18, 1465 00:59:18,360 --> 00:59:20,460 "Bigyan mo ako ng isang integer sa pagitan ng 1 at 10." Kaya 1466 00:59:20,460 --> 00:59:21,530 na doon. 1467 00:59:21,530 --> 00:59:23,410 Ngayon na nakukuha ko ang integer. 1468 00:59:23,410 --> 00:59:25,380 Ngunit Napagtanto na GetInt - medyo simple. 1469 00:59:25,380 --> 00:59:26,510 Lamang ito upang makakuha ng isang int. 1470 00:59:26,510 --> 00:59:28,830 Ito ay upang matiyak na makakuha ng isang int at hindi isang 1471 00:59:28,830 --> 00:59:30,060 string o isang Float. 1472 00:59:30,060 --> 00:59:32,390 Ngunit hindi ito ay pagpunta sa gawin ang anumang uri ng hangganan checking. 1473 00:59:32,390 --> 00:59:34,750 Hindi ito upang i-filter ang mga numero sa pagitan ng isang 1474 00:59:34,750 --> 00:59:35,630 ilang mga hanay. 1475 00:59:35,630 --> 00:59:37,730 Kaya mayroon kaming ipatupad na ating sarili. 1476 00:59:37,730 --> 00:59:40,680 Kaya lang gusto sa simula, kung saan maaari kong gawin kaugnay ng 1477 00:59:40,680 --> 00:59:43,560 dalawang expression, maaari kong gawin na sa C tulad ng sumusunod. 1478 00:59:43,560 --> 00:59:48,660 Kung ang n ay mas malaki kaysa sa o katumbas ng 1, at n ay mas mababa at 1479 00:59:48,660 --> 00:59:52,220 o patas sa 3, ako pagpunta sa napaka-mang mag-atas na 1480 00:59:52,220 --> 00:59:53,830 bilang isang maliit na bilang. 1481 00:59:53,830 --> 00:59:56,730 Para lamang sa ang kapakanan ng isang pahayag. 1482 00:59:56,730 --> 01:00:00,210 Iba Pa kung ang n ay sa pagitan ng 4 at 6, print "Pinili mo ang isang medium 1483 01:00:00,210 --> 01:00:03,440 numero. "Iba Pa kung ang n ay sa pagitan ng 7 at 10, print" Pinili mo ang isang 1484 01:00:03,440 --> 01:00:06,390 malaking bilang. "Iba Pa-print" kang pumili ng isang wastong numero. " 1485 01:00:06,390 --> 01:00:07,900 Dahil lohikal, na sumusunod kung na namin 1486 01:00:07,900 --> 01:00:09,230 naubos ang aming hanay. 1487 01:00:09,230 --> 01:00:12,400 >> Kaya Napagtanto ito ay hindi masyadong kung paano sumulat namin mas malaki kaysa sa o 1488 01:00:12,400 --> 01:00:15,000 katumbas ng sa isang klase matematika. 1489 01:00:15,000 --> 01:00:15,160 Tama? 1490 01:00:15,160 --> 01:00:17,430 Mong karaniwang gumuhit ang mga ito tulad nito, ang linya sa ilalim nito. 1491 01:00:17,430 --> 01:00:19,250 Ngunit walang ganoong susi sa aking keyboard. 1492 01:00:19,250 --> 01:00:22,390 Kaya ang simbolo sa C para sa pagpapahayag ng mas malaki kaysa sa o 1493 01:00:22,390 --> 01:00:25,770 katumbas ng dalawang character, at ang simbolo para sa mas mababa sa 1494 01:00:25,770 --> 01:00:29,100 o katumbas ng dalawang character pati na rin. 1495 01:00:29,100 --> 01:00:29,330 Ayos lang. 1496 01:00:29,330 --> 01:00:31,910 Kaya kung nagpatakbo ako ng programang ito, maaari mong marahil hulaan kung ano ito 1497 01:00:31,910 --> 01:00:32,650 pagpunta sa gawin. 1498 01:00:32,650 --> 01:00:36,180 Kung pumunta ako magpatuloy at gumawa ng nonswitch, ang Enter. 1499 01:00:36,180 --> 01:00:38,130 At pagkatapos ay magpatakbo ng nonswitch. 1500 01:00:38,130 --> 01:00:39,530 Bigyan mo ako ng isang numero sa pagitan ng 1 at 10. 1501 01:00:39,530 --> 01:00:40,870 Ako pagpunta upang bigyan ito ng 11. 1502 01:00:40,870 --> 01:00:42,280 Kinuha ko ang isang di-wastong numero. 1503 01:00:42,280 --> 01:00:44,090 Hayaan akong subukan ang bilang 3. 1504 01:00:44,090 --> 01:00:45,990 Kinuha ko ang isang maliit na bilang. 1505 01:00:45,990 --> 01:00:48,360 Kaya medyo direkta doon. 1506 01:00:48,360 --> 01:00:52,230 >> Paano kung gusto kong baguhin ang pag-uugali ng programang ito at 1507 01:00:52,230 --> 01:00:54,250 gawin ang isang bagay ng kaunti ibang sa halip? 1508 01:00:54,250 --> 01:00:57,620 Hayaan akong magpatuloy at sabihin ito. 1509 01:00:57,620 --> 01:00:59,480 Hayaan akong mapupuksa ng lahat ng ito. 1510 01:00:59,480 --> 01:01:03,780 At hayaan mo akong sabihin kung (n == 42). 1511 01:01:03,780 --> 01:01:08,730 At pagkatapos ay ako pagpunta sa magpatuloy at sabihin ang naka-print na "Pinili mo ang 1512 01:01:08,730 --> 01:01:16,340 tamang sagot. "Iba Pa kami ay pagpunta sa sige at sabihin, 1513 01:01:16,340 --> 01:01:18,460 printf ("Pinili mo ang 1514 01:01:18,460 --> 01:01:21,170 maling kasagutan ");. Okay. 1515 01:01:21,170 --> 01:01:22,040 Dahil lamang. 1516 01:01:22,040 --> 01:01:23,890 >> Ngayon, ang ilang mga puntos na maaari naming gumawa dito. 1517 01:01:23,890 --> 01:01:26,570 Isa, hindi ko i-type ang mga simbolo na gusto mong isipin ay ang 1518 01:01:26,570 --> 01:01:27,390 pinaka-makatwirang. 1519 01:01:27,390 --> 01:01:30,110 Kapag gusto kong suriin ang pagkakapantay-pantay, lumiliko out na hindi mo gamitin ang 1520 01:01:30,110 --> 01:01:30,910 katumbas sign. 1521 01:01:30,910 --> 01:01:34,000 Sa halip ay gamitin ang pantay na pantay-pantay na mag-sign. 1522 01:01:34,000 --> 01:01:36,440 At kung bakit maaaring na, lamang intuitively? 1523 01:01:36,440 --> 01:01:37,030 Oo. 1524 01:01:37,030 --> 01:01:39,330 Madla: [hindi marinig] 1525 01:01:39,330 --> 01:01:39,615 David J. MALAN: Tama. 1526 01:01:39,615 --> 01:01:41,630 Ang katumbas sign na ginagamit para sa pagtatalaga. 1527 01:01:41,630 --> 01:01:43,020 Isang tao ay hindi talagang sa tingin ito sa pamamagitan ng. 1528 01:01:43,020 --> 01:01:45,820 At kaya ngayon, pagdating sa pagkakapantay-pantay pagsubok, mayroon kaming upang 1529 01:01:45,820 --> 01:01:48,850 mas tahasang, at sabihin katumbas katumbas. 1530 01:01:48,850 --> 01:01:52,110 Ang isang karaniwang pagkakamali ay upang gawin ito. 1531 01:01:52,110 --> 01:01:54,800 At, kung sa mga oras ng opisina o minsan sa susunod na linggo o sa 1532 01:01:54,800 --> 01:01:58,340 susunod na dalawang linggo ka ng isang bagay tulad nito at pagkatapos ay 1533 01:01:58,340 --> 01:02:00,920 pagpakasakitan dito para sa 10, 20 minuto sinusubukan upang malaman kung 1534 01:02:00,920 --> 01:02:03,330 kung ano ang mapahamak bug, Napagtanto na ikaw ay isa sa mga 1535 01:02:03,330 --> 01:02:04,470 mga tao na ginawa ang pagkakamaling ito. 1536 01:02:04,470 --> 01:02:06,030 Kaya, napakadaling upang gumawa. 1537 01:02:06,030 --> 01:02:08,240 Ngunit ang layunin ngayon ay salagin ang pagkakamaling ito. 1538 01:02:08,240 --> 01:02:11,840 Ito ay maaaring suriin, dahil kung ano ang ito talagang sinasabi? 1539 01:02:11,840 --> 01:02:15,010 Kung n nakakakuha ng 42. 1540 01:02:15,010 --> 01:02:18,250 Kaya ang mga pandiwa na ginagamit ng mga tao, pasalita, upang ipahayag ang 1541 01:02:18,250 --> 01:02:21,800 paniwala ng pagtatalaga ay "ay nakakakuha." Kaya kung n nakakakuha ng 42. 1542 01:02:21,800 --> 01:02:24,060 Kaya na ibig sabihin nito ay magtalaga ng 42 sa n. 1543 01:02:24,060 --> 01:02:26,250 Ngayon Mayroon akong isang Boolean expression sa mga panaklong, 1544 01:02:26,250 --> 01:02:30,230 sa loob ng kondisyon na ito, ang halaga ng kung saan ay 42. 1545 01:02:30,230 --> 01:02:30,390 Tama? 1546 01:02:30,390 --> 01:02:32,690 Dahil kung mong suriin ang mga ito mula sa loob out, ang kabuuang 1547 01:02:32,690 --> 01:02:34,100 sagot, ngayon, ay 42. 1548 01:02:34,100 --> 01:02:37,360 >> Kaya kung Tinanong ko ang tanong, "kung (42)," kung ano ang 1549 01:02:37,360 --> 01:02:38,410 na talagang sinasabi? 1550 01:02:38,410 --> 01:02:40,990 Well, Boolean expression ay maaari lamang maging totoo o hindi. 1551 01:02:40,990 --> 01:02:42,010 1 o 0. 1552 01:02:42,010 --> 01:02:43,010 On o off. 1553 01:02:43,010 --> 01:02:45,240 Kaya tila namin upang magkaroon ng isang kaso ng sulok dito, kung saan lahat ng 1554 01:02:45,240 --> 01:02:50,060 biglaang, ako sinasabi "kung (42)". Ito ay hindi isang Boolean halaga. 1555 01:02:50,060 --> 01:02:54,500 Kaya kung ano ang computer gawin, bagaman, ay mahalagang equates 1556 01:02:54,500 --> 01:02:58,620 anumang bagay na hindi 0 kahulugan upang maging totoo. 1557 01:02:58,620 --> 01:02:59,340 1. 1558 01:02:59,340 --> 01:02:59,690 On. 1559 01:02:59,690 --> 01:03:01,510 Ito ay lahat ng pagtakbo katumbas. 1560 01:03:01,510 --> 01:03:05,070 Tanging ang halaga 0, o ang keyword maling, bibigyan namin 1561 01:03:05,070 --> 01:03:07,860 ay makakita, ay talagang hindi. 1562 01:03:07,860 --> 01:03:15,040 Kaya "kung (42)" ay aktwal na totoo, dahil ito ay non-zero. 1563 01:03:15,040 --> 01:03:18,620 Kaya mas tumpak na dito, Boolean halaga ay talagang hindi kaya 1564 01:03:18,620 --> 01:03:20,680 mas tama o mali, ngunit para sa 1565 01:03:20,680 --> 01:03:24,650 kaso, kung ay 0 o non-zero. 1566 01:03:24,650 --> 01:03:26,330 Kaya hindi totoo o hindi maling. 1567 01:03:26,330 --> 01:03:28,640 At na nagbibigay-daan sa amin upang sumaklaw sa lahat ng higit pa 1568 01:03:28,640 --> 01:03:30,980 posibilidad sa parenthetical expression. 1569 01:03:30,980 --> 01:03:33,840 Kaya kailangan namin upang, napaka mabuti, sabihin ito - 1570 01:03:33,840 --> 01:03:35,620 kung (n == 42). 1571 01:03:35,620 --> 01:03:39,100 Nang simple dahil kailangan namin upang tukuyin ang isang test ng pagkakapantay-pantay, 1572 01:03:39,100 --> 01:03:40,930 hindi isang pagtatalaga ng isang halaga. 1573 01:03:40,930 --> 01:03:42,830 >> Ano pa ay nagkakahalaga ng noting dito? 1574 01:03:42,830 --> 01:03:46,030 Mga kulot tirante ay talagang hindi kinakailangan. 1575 01:03:46,030 --> 01:03:48,650 Ko na ginagawa sa kanila lamang ng lisa-picky dito. 1576 01:03:48,650 --> 01:03:51,350 Ngunit kapag mayroon kang isang kondisyon na lamang ay may isang linya ng 1577 01:03:51,350 --> 01:03:55,100 code, bilang isang kaginhawahan, programmer ay hindi kailangang gamitin 1578 01:03:55,100 --> 01:03:56,030 ang kulot tirante. 1579 01:03:56,030 --> 01:03:59,370 Ito suffices lamang i-indent, para sa Aesthetic dahilan, at 1580 01:03:59,370 --> 01:04:01,050 pagkatapos ay isulat ang iyong linya ng code. 1581 01:04:01,050 --> 01:04:04,160 Lamang kapag nais mong magsulat ng dalawang linya ng code - 1582 01:04:04,160 --> 01:04:08,230 Halimbawa, iba pa printf ("Bye!"). Kung gusto mong gawin 1583 01:04:08,230 --> 01:04:09,540 na, ito ay nasira. 1584 01:04:09,540 --> 01:04:11,700 Maaari mong i-indent ang lahat ng gusto mo, ngunit ang katotohanan na mayroon kang 1585 01:04:11,700 --> 01:04:14,600 -type ng dalawang linya ng code nang hindi gumagamit ng mga kulot tirante 1586 01:04:14,600 --> 01:04:16,860 nangangahulugan na programa na ito ay hindi tatakbo nang tama o maaari 1587 01:04:16,860 --> 01:04:18,530 kahit hindi makatipon tama. 1588 01:04:18,530 --> 01:04:21,040 Kaya sa ngayon, upang maging matapat, tingin ko ang pinakamahusay na ugali ay lamang 1589 01:04:21,040 --> 01:04:24,460 gamitin ang kulot tirante, at makikita mo na gumagawa ng mga ito 1590 01:04:24,460 --> 01:04:25,750 sobrang malinaw kung ano ang nangyayari. 1591 01:04:25,750 --> 01:04:29,410 >> Gayundin, bilang isang bukod - lalo na kung ikaw ay kabilang sa mga na gumagamit 1592 01:04:29,410 --> 01:04:31,700 ng mga inirekumendang libro o mapagkukunan online - 1593 01:04:31,700 --> 01:04:33,480 Napagtanto na may ito paniwala ng estilo sa 1594 01:04:33,480 --> 01:04:34,130 programming. 1595 01:04:34,130 --> 01:04:37,280 At ang ilang mga tao ay aktwal na ginusto upang ilagay ang kulot suhay 1596 01:04:37,280 --> 01:04:38,720 sa paglipas dito sa isang linya. 1597 01:04:38,720 --> 01:04:41,520 Ang ilang mga tao ginusto upang gawin ang mga bagay sa katawa-tawa, 1598 01:04:41,520 --> 01:04:43,830 bang ilagay ang mga ito dito. 1599 01:04:43,830 --> 01:04:45,140 Walang maling sagot pagdating sa 1600 01:04:45,140 --> 01:04:46,710 estilo, ngunit ito ay mali. 1601 01:04:46,710 --> 01:04:47,700 Ngunit ang ilang mga tao na gawin ito. 1602 01:04:47,700 --> 01:04:49,160 [Tawa] 1603 01:04:49,160 --> 01:04:51,760 David J. MALAN: Kaya banggitin ko ito ngayon, kailangan lang dahil bilang 1604 01:04:51,760 --> 01:04:54,400 mong basahin sa mga bagay sa mga libro o online, ikaw ay upang makakuha ng 1605 01:04:54,400 --> 01:04:55,990 iba't-ibang mga mensahe mula sa iba't ibang mga guro at 1606 01:04:55,990 --> 01:04:56,730 iba't-ibang mga may-akda. 1607 01:04:56,730 --> 01:04:58,640 At lamang Napagtanto na, pagtakbo, sila 1608 01:04:58,640 --> 01:05:00,740 pangkalahatang katumbas, ngunit maging pare-pareho. 1609 01:05:00,740 --> 01:05:02,850 Kaya sa kasong ito, makikita namin ilagay sa pamantayan sa kulot 1610 01:05:02,850 --> 01:05:04,650 tirante lining dito sa kaliwa. 1611 01:05:04,650 --> 01:05:04,910 >> Ayos lang. 1612 01:05:04,910 --> 01:05:07,040 Kaya sabihin magpatuloy ngayon at patakbuhin ito, at makita kung ano ang mangyayari 1613 01:05:07,040 --> 01:05:07,780 sa programang ito. 1614 01:05:07,780 --> 01:05:09,970 Gawing nonswitch. 1615 01:05:09,970 --> 01:05:11,040 Pagkatapos patakbuhin ang nonswitch. 1616 01:05:11,040 --> 01:05:13,900 Bigyan mo ako ng isang integer sa pagitan ng 0 at - kaya na hindi nauugnay 1617 01:05:13,900 --> 01:05:16,480 ito, ngunit lamang ako pagpunta sa mang sabihin ng 42. 1618 01:05:16,480 --> 01:05:17,850 At pinili ko ang tamang sagot. 1619 01:05:17,850 --> 01:05:20,430 Na rin ngayon, sabihin aktwal na tumagal ito sa ibang direksyon. 1620 01:05:20,430 --> 01:05:22,070 Ito ay lumiliko out ang ilang iba pang mga syntax na namin 1621 01:05:22,070 --> 01:05:23,480 maaaring gamitin sa isang programa. 1622 01:05:23,480 --> 01:05:27,310 Narito ang isang bagong piraso ng syntax na halos pareho sa pagtakbo, 1623 01:05:27,310 --> 01:05:30,680 ngunit lamang introduces ng isa pang paraan ng pagpapahayag ng ating sarili. 1624 01:05:30,680 --> 01:05:32,830 Kaya ito ay kung ano ang tinatawag na isang "lumipat statement." At 1625 01:05:32,830 --> 01:05:34,820 Tumatakbo ang switch statement bilang mga sumusunod. 1626 01:05:34,820 --> 01:05:37,580 Ito ay tumatagal, sa mga panaklong, ang isang halaga na nais mong 1627 01:05:37,580 --> 01:05:38,860 "Lumipat". 1628 01:05:38,860 --> 01:05:41,490 Nais mong upang kumilos naiiba batay sa halaga. 1629 01:05:41,490 --> 01:05:44,360 Kaya, ang ibig sabihin nito ay lumipat sa ang halaga ng n. 1630 01:05:44,360 --> 01:05:45,480 At kung ano ang ibig sabihin nito? 1631 01:05:45,480 --> 01:05:50,530 Well, kung ang n ay 1 o 2 o 3, sige at i-print ang "Ikaw 1632 01:05:50,530 --> 01:05:52,680 kinuha ang isang malaking bilang "at pagkatapos ay masira. 1633 01:05:52,680 --> 01:05:55,720 Ang dahilan para sa pahinga na paraan C gumagana bilang 1634 01:05:55,720 --> 01:05:59,790 lalong madaling nahahanap nito sa isang kaso na tumutugma, nagsisimula execute 1635 01:05:59,790 --> 01:06:01,610 lahat ng code sa ibaba nito. 1636 01:06:01,610 --> 01:06:04,580 Kaya kung mayroon akong isang linya ng code, tulad ng ginagawa ko dito sa linya 27, 1637 01:06:04,580 --> 01:06:05,360 ay makakakuha pinaandar. 1638 01:06:05,360 --> 01:06:07,520 Kung nagdagdag ako ng isa pang linya dito, maipo-pinaandar. 1639 01:06:07,520 --> 01:06:09,350 Linya ng isa pang dito, maipo-pinaandar. 1640 01:06:09,350 --> 01:06:12,460 Ang programa lamang hinto execute kung ano ang sa ilalim ng 1641 01:06:12,460 --> 01:06:14,680 naaangkop na pahayag kaso kapag ako ay tahasang 1642 01:06:14,680 --> 01:06:17,210 sabihin ang "masira." Kaya mali. 1643 01:06:17,210 --> 01:06:19,220 Karapatan, sa kasong ito, bilang isang resulta. 1644 01:06:19,220 --> 01:06:22,130 Kaso 4 o 5 o 6, katulad, ay pagpunta 1645 01:06:22,130 --> 01:06:23,160 upang i-print ang isang mensahe. 1646 01:06:23,160 --> 01:06:24,410 Sa kasong ito, medium numero. 1647 01:06:24,410 --> 01:06:25,200 Masira. 1648 01:06:25,200 --> 01:06:28,160 Kaso 7, 8, 9, 10, ito upang i-print out "Pinili mo ang isang malaking 1649 01:06:28,160 --> 01:06:28,950 numero. "Hatiin. 1650 01:06:28,950 --> 01:06:31,290 At pagkatapos ay may literal ng keyword na tinatawag na "default" 1651 01:06:31,290 --> 01:06:34,090 na epektibo tulad ng "pang tao" bumuo. 1652 01:06:34,090 --> 01:06:36,010 Kaya bagong syntax, ngunit intellectually, 1653 01:06:36,010 --> 01:06:37,060 wala sa lahat ng mga bagong dito. 1654 01:06:37,060 --> 01:06:38,280 Ito ay tulad ng sa simula. 1655 01:06:38,280 --> 01:06:41,040 Kung, tao kung, sa ibang tao kung, uri ng bloke. 1656 01:06:41,040 --> 01:06:44,560 >> Kaya, na lumipat na bersyon ng programang ito. 1657 01:06:44,560 --> 01:06:46,280 Ngunit mapansin na ginawa namin ito na may mga numero dito. 1658 01:06:46,280 --> 01:06:49,040 Hayaan akong buksan up ng isang pangalawang bersyon, lamang upang ipakita 1659 01:06:49,040 --> 01:06:50,670 isang bagay ng kaunti pa kongkreto. 1660 01:06:50,670 --> 01:06:52,840 Kaya dito mayroon kaming grado sa halip. 1661 01:06:52,840 --> 01:06:55,540 Lumiliko out maaari mong gamitin ang mga switch hindi lang sa integer, ngunit sa 1662 01:06:55,540 --> 01:06:56,340 character. 1663 01:06:56,340 --> 01:06:58,930 Hindi sa lahat ng mga uri ng data, ngunit hindi bababa sa sa character. 1664 01:06:58,930 --> 01:07:02,670 Kaya dito, maaari naming gawin ang isang bagay tulad ng kung ang halaga ng C na 1665 01:07:02,670 --> 01:07:06,230 ang user na nai-type sa, sa ika-19 linya, sa pamamagitan ng paggamit ng GetChar function na, 1666 01:07:06,230 --> 01:07:09,410 ay kabisera A o lowercase ng, sabihin bigyang-kahulugan ito bilang isang grado, 1667 01:07:09,410 --> 01:07:11,340 at sabihin nila pinili ng isang mahusay na grado. 1668 01:07:11,340 --> 01:07:14,690 At pababa sa kahabaan ng switch statement, mayroon kaming iba pang 1669 01:07:14,690 --> 01:07:17,950 kaso para sa "B" s at "C" s, at iba pa. 1670 01:07:17,950 --> 01:07:19,780 Ngunit ipaalam sa ngayon isalin ang isa pang bagay. 1671 01:07:19,780 --> 01:07:21,130 At muli, ang uri ng lumilipad sa pamamagitan ng 1672 01:07:21,130 --> 01:07:22,200 ilan sa mga halimbawa. 1673 01:07:22,200 --> 01:07:26,990 Subalit talagang upang maaari naming ilapat ang mga ito, ngayon - 1674 01:07:26,990 --> 01:07:28,880 o talagang, lamang isalin ang mga ito ngayon - 1675 01:07:28,880 --> 01:07:32,220 sa C. 1676 01:07:32,220 --> 01:07:33,310 >> Kaya hayaan mo akong magpatuloy at gawin ito. 1677 01:07:33,310 --> 01:07:34,830 Ako pagpunta upang buksan ang isang bagong file. 1678 01:07:34,830 --> 01:07:39,430 At ako pupunta gawin isama . 1679 01:07:39,430 --> 01:07:42,770 At pagkatapos ay ako pagpunta sa gawin int pangunahing (walang bisa). 1680 01:07:42,770 --> 01:07:46,390 Hayaan akong i-save ang file bilang isang loop.c. 1681 01:07:46,390 --> 01:07:48,280 Lamang ng isang halimbawa. 1682 01:07:48,280 --> 01:07:49,910 At ako pagpunta sa magpatuloy at gawin ang mga sumusunod. 1683 01:07:49,910 --> 01:07:54,180 Gusto kong magsulat ng pagod sa programa. 1684 01:07:54,180 --> 01:07:56,170 Kaya 10. 1685 01:07:56,170 --> 01:07:58,862 Natin gawin ito. 1686 01:07:58,862 --> 01:07:59,320 9. 1687 01:07:59,320 --> 01:08:00,360 Ayos lang. 1688 01:08:00,360 --> 01:08:02,120 Sa lalong madaling simulan mo ang paggawa nito sa programming, ikaw 1689 01:08:02,120 --> 01:08:03,490 marahil paggawa ng isang bagay mali. 1690 01:08:03,490 --> 01:08:04,950 Ngunit magsisimula kami doon pa rin. 1691 01:08:04,950 --> 01:08:05,430 Oops. 1692 01:08:05,430 --> 01:08:06,950 Na aktwal na mali. 1693 01:08:06,950 --> 01:08:08,230 7. 1694 01:08:08,230 --> 01:08:09,440 6. 1695 01:08:09,440 --> 01:08:10,750 5. 1696 01:08:10,750 --> 01:08:11,200 4. 1697 01:08:11,200 --> 01:08:12,450 Walang pagpunta sa mangyayari kapag makuha namin sa 0. 1698 01:08:12,450 --> 01:08:13,290 3. 1699 01:08:13,290 --> 01:08:14,590 2. 1700 01:08:14,590 --> 01:08:15,630 1. 1701 01:08:15,630 --> 01:08:16,020 Okay. 1702 01:08:16,020 --> 01:08:17,560 0. 1703 01:08:17,560 --> 01:08:18,689 Tanggalin. 1704 01:08:18,689 --> 01:08:19,029 >> Ayos lang. 1705 01:08:19,029 --> 01:08:20,029 Kaya bumalik ang 0. 1706 01:08:20,029 --> 01:08:22,010 Kaya Ang program na ito ay malinaw naman pagpunta sa gawin kung ano ang mas 1707 01:08:22,010 --> 01:08:23,310 sabi ni ito tediously pagpunta sa gawin. 1708 01:08:23,310 --> 01:08:24,060 Ito ay upang i-print ang lahat ng mga 1709 01:08:24,060 --> 01:08:25,290 halaga, mula sa itaas hanggang sa ibaba. 1710 01:08:25,290 --> 01:08:27,140 Kaya ipaalam sa akin gumawa ng loop. 1711 01:08:27,140 --> 01:08:28,640 At pagkatapos - Whoops. 1712 01:08:28,640 --> 01:08:29,700 Gawing loop. 1713 01:08:29,700 --> 01:08:31,479 Ako ay sa maling direktoryo. 1714 01:08:31,479 --> 01:08:33,300 At ngayon hayaan mo akong magpatakbo ng loop. 1715 01:08:33,300 --> 01:08:34,140 Enter. 1716 01:08:34,140 --> 01:08:34,620 Yehey. 1717 01:08:34,620 --> 01:08:35,270 Napakabuti. 1718 01:08:35,270 --> 01:08:36,279 Nice, mahaba programa. 1719 01:08:36,279 --> 01:08:38,109 >> Lahat ng karapatan, ngunit ngayon sabihin gawin ito mas mahusay na. 1720 01:08:38,109 --> 01:08:40,810 Tulad sa simula, kapag nagsimula ka gamit ang isang looping 1721 01:08:40,810 --> 01:08:43,149 bumuo, sa halip ng pagkopya at pag-paste ng lahat ng 1722 01:08:43,149 --> 01:08:45,580 piraso puzzle, hayaan mo akong ipakilala ito bagay. 1723 01:08:45,580 --> 01:08:48,609 Kaya sa C, may mga iba't-ibang looping constructs, 1724 01:08:48,609 --> 01:08:50,540 isa kung saan ganito ang hitsura. 1725 01:08:50,540 --> 01:08:55,069 A "para sa" loop ay may tatlong bagay, na pinaghiwalay ng dalawang semicolons. 1726 01:08:55,069 --> 01:08:57,770 At pagkatapos, sa loob ng katawan ng loop, kaya na magsalita - ang 1727 01:08:57,770 --> 01:08:59,390 mga bagay-bagay sa loob ng kulot tirante - 1728 01:08:59,390 --> 01:09:01,010 maaari naming gawin ang isang bagay muli at muli. 1729 01:09:01,010 --> 01:09:02,310 Kaya kung ano ang mayroon akong dito sa screen, ito ay 1730 01:09:02,310 --> 01:09:03,300 literal isang komento. 1731 01:09:03,300 --> 01:09:05,380 Ang / / ay nangangahulugang dito ay isang komento. 1732 01:09:05,380 --> 01:09:06,180 Na ito ay hindi code. 1733 01:09:06,180 --> 01:09:08,890 Ito lamang ang Ingles na paglalarawan, sa akin, ang mga tao. 1734 01:09:08,890 --> 01:09:11,300 >> Kaya initializations, kundisyon, at mga update. 1735 01:09:11,300 --> 01:09:12,770 Well, sabihin makita kung paano ito gumagana. 1736 01:09:12,770 --> 01:09:15,520 Ito ay nagbibigay-daan sa akin upang muling isulat ang programang ito tulad ng sumusunod. 1737 01:09:15,520 --> 01:09:16,399 Para sa - 1738 01:09:16,399 --> 01:09:18,029 kaya dito ay ang aking loop - 1739 01:09:18,029 --> 01:09:19,439 int i - 1740 01:09:19,439 --> 01:09:21,330 dito ay isang variable na tinatawag na "i" - 1741 01:09:21,330 --> 01:09:23,140 nakakakuha ng nasimulan sa 10. 1742 01:09:23,140 --> 01:09:25,260 Kaya ang aking Pinasimulan. 1743 01:09:25,260 --> 01:09:29,450 Gusto kong gawin ito loop kaya mahaba bilang "i" ay mas malaki kaysa sa o 1744 01:09:29,450 --> 01:09:30,899 patas sa 0. 1745 01:09:30,899 --> 01:09:32,880 At sa bawat pag-ulit ng loop na ito, gusto kong 1746 01:09:32,880 --> 01:09:34,979 upang gawin i -. 1747 01:09:34,979 --> 01:09:36,310 Kaya nakita namin + + sa Lunes. 1748 01:09:36,310 --> 01:09:37,660 - Ng kabaligtaran. 1749 01:09:37,660 --> 01:09:39,410 Ito decrements ang halaga ng 1. 1750 01:09:39,410 --> 01:09:43,319 Inside ng loop na ito, gusto kong sa aktwal na gawin ang isang bagay. 1751 01:09:43,319 --> 01:09:46,390 Kaya ako pagpunta sa sabihin na ang isang bagay tulad ng printf. 1752 01:09:46,390 --> 01:09:48,939 Hindi ko nais na sabihin 10 ngayon, dahil ito ay malinaw naman lamang 1753 01:09:48,939 --> 01:09:50,000 pagpunta sa i-print ang parehong halaga. 1754 01:09:50,000 --> 01:09:52,246 Ano ang gusto kong i-print sa halip, marahil? 1755 01:09:52,246 --> 01:09:52,590 Oo. 1756 01:09:52,590 --> 01:09:55,270 Kaya "i." Kaya% d, i. 1757 01:09:55,270 --> 01:09:57,340 >> Kaya ako pagpunta sa nakawin ang isa ng mga ideya mula sa mas maaga - 1758 01:09:57,340 --> 01:09:59,640 ito pagpapalit para sa mga code ng format - 1759 01:09:59,640 --> 01:10:01,620 at pagkatapos ay down na dito, sa ibaba, makikita ko bumalik 0, lang 1760 01:10:01,620 --> 01:10:02,710 para sa mabuting panukala. 1761 01:10:02,710 --> 01:10:04,740 Ngunit ngayon, mayroon akong higit pa maikli at malinaw programa. 1762 01:10:04,740 --> 01:10:07,490 Lamang ng ilang linya, at hindi ilang 10 o 11 na linya. 1763 01:10:07,490 --> 01:10:09,440 Hayaan akong pumunta sa aking prompt pababa dito. 1764 01:10:09,440 --> 01:10:10,630 Gumawang muli loop. 1765 01:10:10,630 --> 01:10:12,140 Muling palabas ng pelikula loop. 1766 01:10:12,140 --> 01:10:13,570 At lumalabas na ito ay ang parehong. 1767 01:10:13,570 --> 01:10:15,550 Ngayon, ang programa ay hindi mas kawili-wiling. 1768 01:10:15,550 --> 01:10:17,180 Ngunit ngayon ang maaari kong i-type ang isang bagay tulad nito. 1769 01:10:17,180 --> 01:10:18,970 Ko maaaring baguhin ito sa 100. 1770 01:10:18,970 --> 01:10:21,400 Ko mag-recompile ang aking programa. 1771 01:10:21,400 --> 01:10:23,360 At pagkatapos ay maaari kong muling patakbuhin ang aking programa. 1772 01:10:23,360 --> 01:10:26,390 At ngayon ito napupunta sa napakabilis na sa computer na ngayon. 1773 01:10:26,390 --> 01:10:27,820 Ngunit mayroong Mayroon akong - 1774 01:10:27,820 --> 01:10:29,620 at aktwal na, ang aking scrollback buffer hindi 1775 01:10:29,620 --> 01:10:30,890 kahit pumunta na malayo. 1776 01:10:30,890 --> 01:10:31,680 Doon kami. 1777 01:10:31,680 --> 01:10:34,090 Kaya mayroon kaming ang lahat ng 100. 1778 01:10:34,090 --> 01:10:35,880 Ngunit madali upang gumawa ng mga pagkakamali dito. 1779 01:10:35,880 --> 01:10:37,920 Kung ano ang nangyayari ang inaasahang pag-uugali kung ako 1780 01:10:37,920 --> 01:10:41,150 sinasadyang gawin iyon? 1781 01:10:41,150 --> 01:10:42,550 Kaya ito nararamdaman tulad ng walang katapusan. 1782 01:10:42,550 --> 01:10:44,670 Kaya sabihin makita kung ang computer behaves. 1783 01:10:44,670 --> 01:10:47,020 >> Kaya hayaan mo akong magpatuloy at gumawa ng loop. 1784 01:10:47,020 --> 01:10:48,355 At hayaan mo akong magpatakbo ng loop. 1785 01:10:53,590 --> 01:10:55,210 Kaya sabihin bumalik na sa sandali lamang. 1786 01:10:55,210 --> 01:10:56,720 Ipapaalam namin na run. 1787 01:10:56,720 --> 01:10:59,520 Dahil kung ano ang dapat naming bilangin hanggang sa, Nagnais ng pinakamababang? 1788 01:10:59,520 --> 01:11:02,200 Marahil hindi bababa sa 2 bilyong, kung mayroon namin na maraming bit, at 1789 01:11:02,200 --> 01:11:03,660 kami ay gumagamit ng mga positibong halaga. 1790 01:11:03,660 --> 01:11:04,890 Kaya sabihin tumalon pabalik dito. 1791 01:11:04,890 --> 01:11:07,810 Bukod sa mga ganitong uri ng mga loop, mayroon kaming kung ano ay tinatawag na habang 1792 01:11:07,810 --> 01:11:09,430 loop. Kaya, tulad ng sa simula, nagkaroon ka nang Tuluyan 1793 01:11:09,430 --> 01:11:11,240 bloke, at nagkaroon ka ng mga bloke Ulitin. 1794 01:11:11,240 --> 01:11:13,270 Katulad nito, sa C, mo lamang iba pang mga paraan 1795 01:11:13,270 --> 01:11:14,260 ng pagpapahayag ng iyong sarili. 1796 01:11:14,260 --> 01:11:17,110 Kaya mayroon kang ang paniwala na ito ng isang habang loop na nagpapahintulot sa iyo na 1797 01:11:17,110 --> 01:11:18,860 ipahayag ang iyong sarili sa isang maliit na naiiba. 1798 01:11:18,860 --> 01:11:21,490 At pagkatapos ay mayroon kang isang bagay na tinatawag do-habang loop, 1799 01:11:21,490 --> 01:11:24,200 kung saan ay nagpapatakbo ng bahagyang naiiba rin. 1800 01:11:24,200 --> 01:11:25,320 At kami na manunudyo mga bukod sa paglipas ng panahon. 1801 01:11:25,320 --> 01:11:28,630 >> Ngunit sabihin tingnan sa huling isa dito. 1802 01:11:28,630 --> 01:11:30,160 Kung pumunta kami sa - 1803 01:11:30,160 --> 01:11:31,466 tumatakbo pa rin. 1804 01:11:31,466 --> 01:11:32,770 Medyo walang katapusan. 1805 01:11:32,770 --> 01:11:36,870 Kaya hayaan mo akong pumunta sa positibong, at nagpapakita kung paano maaari naming aktwal 1806 01:11:36,870 --> 01:11:39,410 mamamahala sa user input ng kaunti mas epektibo. 1807 01:11:39,410 --> 01:11:40,910 Ito ay isang medyo maikling programa. 1808 01:11:40,910 --> 01:11:43,730 At dito mayroon kami, sa pangunahing, isang int n deklarasyon. 1809 01:11:43,730 --> 01:11:46,570 Kaya bigyan ako ng isang variable na tinatawag n. Ngayon, sinasabi ko literal 1810 01:11:46,570 --> 01:11:48,340 "Gawin." At pagkatapos Mayroon akong bukas kulot 1811 01:11:48,340 --> 01:11:49,630 suhay, malapit kulot suhay. 1812 01:11:49,630 --> 01:11:52,000 At pagkatapos ay mapansin, karapatan pagkatapos na ito, sabi habang n 1813 01:11:52,000 --> 01:11:53,790 ay mas mababa sa 1. 1814 01:11:53,790 --> 01:11:55,300 Kaya mapapansin na ang mga linya na ito - 1815 01:11:55,300 --> 01:11:56,740 19-24 - 1816 01:11:56,740 --> 01:11:59,450 sumulat ng sama-sama sa isang Do-habang loop. 1817 01:11:59,450 --> 01:12:01,280 At muli, bagong syntax, hindi isang bagong ideya. 1818 01:12:01,280 --> 01:12:03,740 Ito ay isa lamang paraan ng looping, syntactically. 1819 01:12:03,740 --> 01:12:04,890 Kaya ano ang gagawin? 1820 01:12:04,890 --> 01:12:08,000 Gawin ang mga sumusunod habang n ay mas mababa sa 1. 1821 01:12:08,000 --> 01:12:09,080 Kaya kung ano ang gusto kong gawin? 1822 01:12:09,080 --> 01:12:11,390 Hinihiling ko na ba ninyo akong bigyan ng isang positibong integer. 1823 01:12:11,390 --> 01:12:14,110 Pagkatapos ko aktwal na subukan upang makakuha ng isang integer mula sa user. 1824 01:12:14,110 --> 01:12:16,740 Ngunit sa mga tuntunin ng pagkakasunud-sunod ng mga pagpapatakbo dito, dahil ang 1825 01:12:16,740 --> 01:12:21,850 habang ang kundisyon ay down na dito, pagkatapos ay ako pagpunta upang suriin, ay n 1826 01:12:21,850 --> 01:12:23,100 mas mababa sa 1? 1827 01:12:23,100 --> 01:12:24,600 Kaya ipagpalagay na ang gumagamit - 1828 01:12:24,600 --> 01:12:26,450 matapos na demanded sa ganitong paraan - 1829 01:12:26,450 --> 01:12:29,190 uri sa ang halaga 0. 1830 01:12:29,190 --> 01:12:34,510 Ang kondisyon na ito ay totoo o hindi? 1831 01:12:34,510 --> 01:12:35,820 Well, aktwal na ito ay totoo. 1832 01:12:35,820 --> 01:12:38,700 Dahil ang n ay 0, at 0 ay mas mababa sa 1. 1833 01:12:38,700 --> 01:12:40,140 Kaya kung ano ang na magpahiwatig? 1834 01:12:40,140 --> 01:12:41,160 Gawin itong muli. 1835 01:12:41,160 --> 01:12:41,990 Gawin itong muli. 1836 01:12:41,990 --> 01:12:42,640 Gawin itong muli. 1837 01:12:42,640 --> 01:12:46,080 Isang beses lamang kondisyon na sinusuri sa False. 1838 01:12:46,080 --> 01:12:47,510 Kung type ko sa 42. 1839 01:12:47,510 --> 01:12:49,690 Well hindi, 42 ay hindi mas mababa sa 1. 1840 01:12:49,690 --> 01:12:52,320 Samakatuwid loop na ito ay tapos na e-execute. 1841 01:12:52,320 --> 01:12:54,650 At kaya sa puntong iyon, ang programa ay sabihin, salamat sa 1842 01:12:54,650 --> 01:12:57,530 ang 42, sa kasong ito. 1843 01:12:57,530 --> 01:13:00,320 Ngayon na mayroon kang ganitong paraan ng pagpapahayag ng iyong sarili - 1844 01:13:00,320 --> 01:13:02,360 Hindi namin ay dapat na maghintay para sa upang matapos. 1845 01:13:02,360 --> 01:13:03,620 Ito ay pagpunta sa tumagal ng ilang oras. 1846 01:13:03,620 --> 01:13:04,990 Upang patuloy sa susunod na oras, marahil. 1847 01:13:04,990 --> 01:13:08,050 >> Ngunit ngayon, mayroon kang kakayahan upang sana upang maunawaan ang isang 1848 01:13:08,050 --> 01:13:09,060 bit ng geek katatawanan. 1849 01:13:09,060 --> 01:13:11,560 Paumanhin. 1850 01:13:11,560 --> 01:13:13,620 Ito ay hindi kinatawan ng katatawanan sa computer agham 1851 01:13:13,620 --> 01:13:14,870 mundo, ngunit ito ay nakatutuwa. 1852 01:13:21,020 --> 01:13:23,890 [LAUGHS] sabihin katapusan sa na tandaan. 1853 01:13:23,890 --> 01:13:25,750 At kami ay nakikita mo sa Lunes. 1854 01:13:25,750 --> 01:13:31,629 [Palakpakan]