1 00:00:07,360 --> 00:00:09,360 [Powered by Google Translate] Nate HARDISON: Þegar þú hefur fengið mörg forrit opin á a 2 00:00:09,360 --> 00:00:11,250 tölva, það virðast eins og er allt 3 00:00:11,250 --> 00:00:12,880 í gangi á sama tíma. 4 00:00:12,880 --> 00:00:15,350 Til dæmis, þú gætir verið að vinna í a vefur flettitæki eins og 5 00:00:15,350 --> 00:00:19,360 Firefox eða Internet Explorer, hlusta á tónlist í iTunes, 6 00:00:19,360 --> 00:00:21,490 og að skrifa ritgerð með Word. 7 00:00:21,490 --> 00:00:24,240 En undir hetta, forrit í raun 8 00:00:24,240 --> 00:00:25,830 hlaupa einn í einu. 9 00:00:25,830 --> 00:00:29,750 Það er hlutverk stýrikerfi, Windows, Mac OSX eða 10 00:00:29,750 --> 00:00:33,070 Linux, að stjórna öllum þessum aðskildum ferli, sem 11 00:00:33,070 --> 00:00:35,900 forrit eru þekkt, og skipta á milli þeirra þannig að þegar þú 12 00:00:35,900 --> 00:00:38,610 fara frá stöðva Facebook síðuna þína til að vinna á ritgerðinni þinni 13 00:00:38,610 --> 00:00:41,590 aftur, Word er sá sem er í gangi. 14 00:00:41,590 --> 00:00:44,890 >> Stundum, þó, við viljum forrit sig til að geta 15 00:00:44,890 --> 00:00:47,440 að gera marga hluti eins og þetta líka. 16 00:00:47,440 --> 00:00:49,630 Ef þú ert eins og mig, þú hefur sennilega fullt af 17 00:00:49,630 --> 00:00:52,730 mismunandi flipa opna í vafranum, einn fyrir tölvupóst, 18 00:00:52,730 --> 00:00:55,070 einn með dagbók, og svo framvegis. 19 00:00:55,070 --> 00:00:58,270 Við gætum við hverjum flipa sem sérstakt forrit eða aðferð, 20 00:00:58,270 --> 00:01:01,300 eins og Google Chrome gerir, en mörg forrit nota 21 00:01:01,300 --> 00:01:04,430 léttari-þyngd útgáfa af ferli kallast þráð. 22 00:01:04,430 --> 00:01:07,190 >> A þráður er bara annað eining vinnslu, að setja af 23 00:01:07,190 --> 00:01:10,100 leiðbeiningar eða kóða sem hægt er að "keyra", vitna unquote, 24 00:01:10,100 --> 00:01:12,560 samhliða öðrum þráðum. 25 00:01:12,560 --> 00:01:15,150 Þetta er það sem gerir það mögulegt fyrir þig að skoða Facebook 26 00:01:15,150 --> 00:01:17,940 en hlusta á mig í bakgrunni eða til að hafa tvo 27 00:01:17,940 --> 00:01:20,790 YouTube myndbönd spila á sama tíma. 28 00:01:20,790 --> 00:01:24,660 Svo þetta almenna atriði, þekktur sem concurrency, oftast 29 00:01:24,660 --> 00:01:26,930 ekki koma upp svona snemma í tölvunarfræði námskeið 30 00:01:26,930 --> 00:01:29,790 því lægra stigi upplýsingar þurfa umfjöllun um 31 00:01:29,790 --> 00:01:31,930 stýrikerfi og þess háttar. 32 00:01:31,930 --> 00:01:34,170 Hins vegar forritunarmál við notkun við 33 00:01:34,170 --> 00:01:38,000 ársbyrjun CS50, Scratch afla, sumir nifty tól til að 34 00:01:38,000 --> 00:01:40,390 gera það auðveldara að skrifa forrit með mörgum hlutum 35 00:01:40,390 --> 00:01:42,390 gangi í einu. 36 00:01:42,390 --> 00:01:45,050 >> Þegar þú byggir upp grunni forrit, þú ert stöðugt 37 00:01:45,050 --> 00:01:46,760 vinna með þræði. 38 00:01:46,760 --> 00:01:49,770 Hver Scratch handrit, sem er kóðinn blokk sem hefst með 39 00:01:49,770 --> 00:01:52,600 einn af "þegar" þraut stykki, hægt er að hugsa sér 40 00:01:52,600 --> 00:01:54,380 sem sér þráð. 41 00:01:54,380 --> 00:01:58,040 Við skulum líta á einfalt Scratch forrit til að sjá hvernig þetta virkar. 42 00:01:58,040 --> 00:02:01,730 >> Hér höfum við fengið fisk hlut eða Sprite, með tveimur forskriftir 43 00:02:01,730 --> 00:02:05,000 að bæði byrja þegar við smellur the lítill græna fána hnappinn. 44 00:02:05,000 --> 00:02:07,290 Fyrsta handrit stjórna hreyfingu fiskurinn er. 45 00:02:07,290 --> 00:02:09,850 Þegar græna fáninn er smellt fær fiskurinn settur 46 00:02:09,850 --> 00:02:12,450 á vinstri hlið af the skjár, sem heitir svið 47 00:02:12,450 --> 00:02:14,090 snúa til hægri. 48 00:02:14,090 --> 00:02:17,070 Þá, í safn skipana sem mun keyra að eilífu, þangað til við 49 00:02:17,070 --> 00:02:20,270 stöðva program, fiskurinn glides á hægri hlið, 50 00:02:20,270 --> 00:02:22,900 snýr sér við, fer aftur til vinstri, og 51 00:02:22,900 --> 00:02:24,470 snýr sér aftur. 52 00:02:24,470 --> 00:02:27,410 Annað handrit stjórna hugsun aðferð fiskurinn er. 53 00:02:27,410 --> 00:02:29,290 Það kemur í ljós að þetta er svöng fiskur. 54 00:02:29,290 --> 00:02:32,080 Svo eftir að bíða í 3 sekúndur, fiskur verður að hugsa, 55 00:02:32,080 --> 00:02:34,420 "Ég er svöng," fyrir fjórða sekúndu. 56 00:02:34,420 --> 00:02:36,440 Þetta handrit rekur eilífu. 57 00:02:36,440 --> 00:02:38,940 Og eins og við sjáum, að keyra forritið með því að smella á 58 00:02:38,940 --> 00:02:41,730 græna fána birtast bæði skriftum að framkvæma 59 00:02:41,730 --> 00:02:43,100 samtímis. 60 00:02:43,100 --> 00:02:46,460 Fiskurinn fer og hugsar á sama tíma. 61 00:02:46,460 --> 00:02:49,030 >> Þar sem fátækur fiskur lítur svo svöng, við skulum bæta við í sumum 62 00:02:49,030 --> 00:02:50,670 cheesy Puffs fyrir það að borða. 63 00:02:50,670 --> 00:02:53,060 Vonandi munu þeir ekki sundrast í vatni. 64 00:02:53,060 --> 00:02:55,560 Þegar við bætum í öðru Sprite, munum við einnig að vera fær um að 65 00:02:55,560 --> 00:02:58,020 bæta við í skrifta svarar þeirri Sprite. 66 00:02:58,020 --> 00:02:59,580 Og þess vegna, það verður annað sett af 67 00:02:59,580 --> 00:03:00,830 þræði sem mun keyra. 68 00:03:03,590 --> 00:03:06,270 Til að gefa notandanum á stjórn áætlun okkar yfir þegar 69 00:03:06,270 --> 00:03:09,340 svangur fiskur fær mat, segja skulum að þegar Space 70 00:03:09,340 --> 00:03:11,840 Bar er högg, virðast cheesy Puffs á sviðinu fyrir 71 00:03:11,840 --> 00:03:13,300 fiskur að borða. 72 00:03:13,300 --> 00:03:15,760 Áður en við högg the Space Bar, munum við viljum halda cheesy 73 00:03:15,760 --> 00:03:19,020 Puffs falin þannig að fiskurinn getur ekki séð þá. 74 00:03:19,020 --> 00:03:21,140 Til að gera þetta þurfum við að fá nokkra forskriftir fyrir 75 00:03:21,140 --> 00:03:22,750 cheesy Puffs Sprite. 76 00:03:22,750 --> 00:03:26,980 Fyrsta handrit, græna fána, mun bara fela matinn. 77 00:03:26,980 --> 00:03:29,530 Ólíkt öðrum skriftum við höfum skrifað, þetta mun ekki halda 78 00:03:29,530 --> 00:03:30,560 keyra að eilífu. 79 00:03:30,560 --> 00:03:33,250 Það verður að byrja og ljúka mjög fljótlega, rétt þegar við smellur 80 00:03:33,250 --> 00:03:35,000 græna fána hnappinn. 81 00:03:35,000 --> 00:03:37,180 >> Næsta handrit sem við höfum mun bíða fyrir Space Bar til að vera 82 00:03:37,180 --> 00:03:39,590 þrýsta áður en framkvæmd. 83 00:03:39,590 --> 00:03:42,770 Við getum hringt í að bíða eftir notandi inntak "bíða" eða "hlusta" 84 00:03:42,770 --> 00:03:43,860 fyrir atburð. 85 00:03:43,860 --> 00:03:46,750 Og kóða sem keyrir þegar atriði er móttekin eða 86 00:03:46,750 --> 00:03:50,280 heyrt er kallað atburður meðhöndlun kóða. 87 00:03:50,280 --> 00:03:53,550 Space Bar okkar atburður dýraþjálfari mun sýna cheesy úða á 88 00:03:53,550 --> 00:03:56,330 á skjánum þannig að fiskurinn getur borðað þá. 89 00:03:56,330 --> 00:03:58,880 Á þessum tímapunkti, allt er útlit gott. 90 00:03:58,880 --> 00:04:00,990 >> The næstur hlutur sem við þurfum að gera er að reikna út hvernig á að fá 91 00:04:00,990 --> 00:04:03,570 fiskur að átta sig á að það er matur að borða. 92 00:04:03,570 --> 00:04:06,030 Við skulum bæta við öðru þráður í fiski sem stöðugt 93 00:04:06,030 --> 00:04:08,790 tékka hvort það er snerta cheesy úða. 94 00:04:08,790 --> 00:04:11,510 Við gerum þetta í sér þráð þar Þannig að við getum 95 00:04:11,510 --> 00:04:13,710 stöðugt stöðva fyrir mat. 96 00:04:13,710 --> 00:04:16,829 Annars viljum við bara vera fær um að athuga reglulega til matar 97 00:04:16,829 --> 00:04:21,180 á milli svifflug, snúa við, bið, eða hugsa. 98 00:04:21,180 --> 00:04:22,000 >> OK. 99 00:04:22,000 --> 00:04:23,785 Nú skulum hlaupa Scratch kerfi okkar. 100 00:04:23,785 --> 00:04:26,921 Eins og vænta, maturinn felur strax og 101 00:04:26,921 --> 00:04:28,920 svangur fiskur syndir fram og til baka rétt eins og áður. 102 00:04:32,050 --> 00:04:35,060 Þegar við högg the rúm bar, koma cheesy Puffs í augsýn, 103 00:04:35,060 --> 00:04:37,470 og hungraður fiskur segir whoo. 104 00:04:37,470 --> 00:04:39,340 En bíddu, það er skrýtið. 105 00:04:39,340 --> 00:04:42,150 Hvernig koma fiskurinn er "ég er svöng" hugsaði truflar 106 00:04:42,150 --> 00:04:43,580 önnur efni? 107 00:04:43,580 --> 00:04:45,780 Þetta er vegna þess að við ekki setja neina samhæfingu 108 00:04:45,780 --> 00:04:47,590 milli þriggja fisk forskriftir. 109 00:04:47,590 --> 00:04:50,610 Hver er í gangi í eigin þráð þess, sem vissu ekkert hvað 110 00:04:50,610 --> 00:04:52,120 aðrir eru að gera. 111 00:04:52,120 --> 00:04:54,980 Við skulum laga þetta áður en við fara. 112 00:04:54,980 --> 00:04:57,700 >> Samræming milli þræði er erfiður verkefni þar sem að við 113 00:04:57,700 --> 00:05:00,940 ekki skýr stjórn á því hvenær hver þráður rekur eða 114 00:05:00,940 --> 00:05:02,190 ekki hlaupa. 115 00:05:02,190 --> 00:05:04,710 Til að senda skilaboð frá einum þráð til annars, þurfum við að fá 116 00:05:04,710 --> 00:05:08,300 að nota breytu sem við getum sett, eða skrifa, á einum þræði 117 00:05:08,300 --> 00:05:10,170 og lesa í öðrum. 118 00:05:10,170 --> 00:05:12,920 Við skulum búa til breytu sem heitir foodFound sem við getum stillt 119 00:05:12,920 --> 00:05:15,530 við þegar fiskurinn liggur í cheesy puffs. 120 00:05:15,530 --> 00:05:17,540 Jæja, auðvitað viljum við að tryggja að við að setja hann 121 00:05:17,540 --> 00:05:19,240 FALSE upphafi. 122 00:05:19,240 --> 00:05:22,540 Þá, í þræði hugsun fiskurinn er, munum við athuga hvort 123 00:05:22,540 --> 00:05:25,400 fiskurinn hefur fundið mat áður sýna "Ég er svöng" 124 00:05:25,400 --> 00:05:26,770 hugsun kúla. 125 00:05:26,770 --> 00:05:29,670 >> Nú keyra forritið aftur, sjáum við að fiskurinn 126 00:05:29,670 --> 00:05:31,580 ekki fá rofin með hugsanir hungri þegar 127 00:05:31,580 --> 00:05:33,820 cheesy skammtar eru út. 128 00:05:33,820 --> 00:05:36,820 Endanleg Vandamálið sem við höfum er að cheesy Puffs ekki fara 129 00:05:36,820 --> 00:05:39,800 burtu eftir fiskinn, vitna unquote, "borðar" þá. 130 00:05:39,800 --> 00:05:42,305 Frá fiski forskriftir, það er engin auðveld leið til að fela cheesy 131 00:05:42,305 --> 00:05:44,710 skammtar, þannig að við þurfum að senda skilaboð til cheesy puffs 132 00:05:44,710 --> 00:05:46,780 Sprite til að fela sig. 133 00:05:46,780 --> 00:05:49,550 Við gætum gert þetta með annarri breytu að cheesy Puffs 134 00:05:49,550 --> 00:05:52,680 Sprite hefur aðgang að, sem og fiskur Sprite. 135 00:05:52,680 --> 00:05:55,720 >> Hins vegar, það er hreinni leið til að gera þetta í þessu tilviki, 136 00:05:55,720 --> 00:05:57,840 þar sem í stað þess að senda skilaboð til handrit sem er 137 00:05:57,840 --> 00:06:00,570 einhvers staðar í miðri framkvæmd, getum við sent á 138 00:06:00,570 --> 00:06:03,710 skilaboð til handrit sem er að bíða eftir að byrja. 139 00:06:03,710 --> 00:06:07,360 Við gerum þetta með því að hafa fisk útvarpsþáttur atburði, sem við munum 140 00:06:07,360 --> 00:06:08,800 kalla borðað. 141 00:06:08,800 --> 00:06:11,510 Þá munum við búa til handrit fyrir cheesy puffs sem mun 142 00:06:11,510 --> 00:06:13,030 bíða eftir þessum atburði. 143 00:06:13,030 --> 00:06:15,560 Þetta er svipað og að Bar Space atburður, nema að þetta 144 00:06:15,560 --> 00:06:19,250 tíma, sem notandinn er ekki einn beint kveiki á atburðinn. 145 00:06:19,250 --> 00:06:22,800 Nú allt sem við þurfum að gera er að setja foodFound breyta aftur okkar 146 00:06:22,800 --> 00:06:25,750 að rangar, og getum við nú gefið svangur fiskur eins og margir 147 00:06:25,750 --> 00:06:28,470 skammta af cheesy puffs eins og það vill. 148 00:06:28,470 --> 00:06:30,040 >> Svo ekki of slæmt, ekki satt? 149 00:06:30,040 --> 00:06:33,400 Í C, skrifa multi-snittari forrit er flóknara, 150 00:06:33,400 --> 00:06:35,700 en grunnatriði eru þau sömu. 151 00:06:35,700 --> 00:06:38,690 Engu að síður, ég vona að þú hafa a mikill tími að byggja gaman 152 00:06:38,690 --> 00:06:41,030 samhliða forrit í grunni. 153 00:06:41,030 --> 00:06:42,570 Ég heiti Nate Hardison. 154 00:06:42,570 --> 00:06:45,260 Þetta er CS50.