1 00:00:07,360 --> 00:00:09,360 [Powered by Google Translate] NATE Хардисон: Калі ў вас ёсць некалькі праграм адкрыць на 2 00:00:09,360 --> 00:00:11,250 кампутар, здаецца, што ўсё ў 3 00:00:11,250 --> 00:00:12,880 працуе ў той жа час. 4 00:00:12,880 --> 00:00:15,350 Напрыклад, вы маглі б працаваць у вэб-браўзэры, як 5 00:00:15,350 --> 00:00:19,360 Firefox або Internet Explorer, праслухоўвання музыкі на ITunes, 6 00:00:19,360 --> 00:00:21,490 і напісанне эсэ з Word. 7 00:00:21,490 --> 00:00:24,240 Тым не менш, пад капотам, на самай справе праграм 8 00:00:24,240 --> 00:00:25,830 запускаць па адным за раз. 9 00:00:25,830 --> 00:00:29,750 Гэта праца аперацыйнай сістэмы, Windows, Mac OSX, або 10 00:00:29,750 --> 00:00:33,070 Linux, для кіравання кожнай з гэтых асобных працэсаў, а 11 00:00:33,070 --> 00:00:35,900 Праграмы, як вядома, і перамыкацца паміж імі, так што, калі вы 12 00:00:35,900 --> 00:00:38,610 перайсці ад праверкі Facebook старонкі працаваць на вашым эсэ 13 00:00:38,610 --> 00:00:41,590 зноў, Word з'яўляецца той, які працуе. 14 00:00:41,590 --> 00:00:44,890 >> Часам, праўда, мы хочам самі праграмы, каб мець магчымасць 15 00:00:44,890 --> 00:00:47,440 зрабіць некалькі рэчаў, як гэта, таксама. 16 00:00:47,440 --> 00:00:49,630 Калі вы падобныя на мяне, вы, верагодна, ёсць куча 17 00:00:49,630 --> 00:00:52,730 розных адкрытых укладак ў вэб-браўзэры, па адным для электроннай пошты, 18 00:00:52,730 --> 00:00:55,070 адзін з календаром, і гэтак далей. 19 00:00:55,070 --> 00:00:58,270 Мы маглі б разглядаць кожную ўкладку як асобны працэс або праграму, 20 00:00:58,270 --> 00:01:01,300 як Google Chrome робіць, але шматлікія праграмы выкарыстоўваюць 21 00:01:01,300 --> 00:01:04,430 палегчаную версію працэсу, які завецца струменем. 22 00:01:04,430 --> 00:01:07,190 >> Нітка гэта проста яшчэ адзін блок апрацоўкі, набор 23 00:01:07,190 --> 00:01:10,100 інструкцый або кода, які можа "запусціць", канец цытаты цытаты, 24 00:01:10,100 --> 00:01:12,560 адначасова з іншымі патокамі. 25 00:01:12,560 --> 00:01:15,150 Гэта тое, што дазваляе вам праглядаць Facebook 26 00:01:15,150 --> 00:01:17,940 Падчас праслухоўвання мяне ў фонавым рэжыме або мець два 27 00:01:17,940 --> 00:01:20,790 YouTube відэа гуляе ў той жа час. 28 00:01:20,790 --> 00:01:24,660 Такім чынам, гэта агульная тэма, вядомая як паралелізм, як правіла, 29 00:01:24,660 --> 00:01:26,930 не прыходзіць так рана ў курсах інфарматыкі 30 00:01:26,930 --> 00:01:29,790 таму што больш нізкім узроўні дэталі патрабуюць абмеркавання 31 00:01:29,790 --> 00:01:31,930 аперацыйных сістэм і таму падобнае. 32 00:01:31,930 --> 00:01:34,170 Тым не менш, мова праграмавання, мы выкарыстоўваем у 33 00:01:34,170 --> 00:01:38,000 пачатак CS50, Scratch, дае некаторыя класныя інструменты 34 00:01:38,000 --> 00:01:40,390 палягчаюць напісанне праграм з некалькімі рэчамі 35 00:01:40,390 --> 00:01:42,390 адбываецца адразу. 36 00:01:42,390 --> 00:01:45,050 >> Калі вы будуеце драпін праграм, вы ўвесь час 37 00:01:45,050 --> 00:01:46,760 праца з патокамі. 38 00:01:46,760 --> 00:01:49,770 Кожны драпін сцэнар, які з'яўляецца блок кода, які пачынаецца з 39 00:01:49,770 --> 00:01:52,600 адзін з "калі" часткі галаваломкі, можна разглядаць 40 00:01:52,600 --> 00:01:54,380 як асобны паток. 41 00:01:54,380 --> 00:01:58,040 Давайце паглядзім на простую праграму нуля, каб паглядзець, як гэта працуе. 42 00:01:58,040 --> 00:02:01,730 >> Тут, у нас ёсць рыбу аб'екта, або спрайт, з двума сцэнарамі 43 00:02:01,730 --> 00:02:05,000 што абодва пачатку, калі мы націсніце на маленькую зялёную кнопку сцяг. 44 00:02:05,000 --> 00:02:07,290 Першы сцэнар кантралюе рух рыбы. 45 00:02:07,290 --> 00:02:09,850 Калі зялёны сцяг націску, рыба атрымлівае змешчаны 46 00:02:09,850 --> 00:02:12,450 на левай баку экрана, званай стадыі, 47 00:02:12,450 --> 00:02:14,090 сутыкаецца з правага боку. 48 00:02:14,090 --> 00:02:17,070 Тады, у набор інструкцый, які будзе працаваць вечна, пакуль мы не 49 00:02:17,070 --> 00:02:20,270 спыніць праграму, рыба слізгае на правай баку, 50 00:02:20,270 --> 00:02:22,900 абгортваецца, вяртаецца да левай баку, і 51 00:02:22,900 --> 00:02:24,470 абгортваецца зноў. 52 00:02:24,470 --> 00:02:27,410 Другі сцэнар кантралюе разумовы працэс рыбы. 53 00:02:27,410 --> 00:02:29,290 Аказваецца, што гэта галодная рыба. 54 00:02:29,290 --> 00:02:32,080 Такім чынам, пасля чакання на працягу 3 секунд, рыба будзе думаць, 55 00:02:32,080 --> 00:02:34,420 "Я галодны", на чацвёртай секундзе. 56 00:02:34,420 --> 00:02:36,440 Гэты сцэнар таксама працуе вечна. 57 00:02:36,440 --> 00:02:38,940 І як мы бачым, ад запуску праграмы, націснуўшы 58 00:02:38,940 --> 00:02:41,730 зялёны сьцяг, як сцэнары з'яўляюцца для выканання 59 00:02:41,730 --> 00:02:43,100 адначасова. 60 00:02:43,100 --> 00:02:46,460 Рыба рухаецца і думае, што ў той жа час. 61 00:02:46,460 --> 00:02:49,030 >> Паколькі бедныя рыба выглядае так галодны, давайце дадамо ў некаторых 62 00:02:49,030 --> 00:02:50,670 сырны клубы для таго, каб паесці. 63 00:02:50,670 --> 00:02:53,060 Спадзяюся, яны не будуць распадацца ў вадзе. 64 00:02:53,060 --> 00:02:55,560 Калі мы дадамо ў другой спрайт, мы будзем таксама мець магчымасць 65 00:02:55,560 --> 00:02:58,020 Дадаць у сцэнарах, якія адпавядаюць, што спрайт. 66 00:02:58,020 --> 00:02:59,580 І, такім чынам, там будзе іншы набор 67 00:02:59,580 --> 00:03:00,830 патокаў, якія будзе працаваць. 68 00:03:03,590 --> 00:03:06,270 Каб даць карыстачу нашай праграмы кантролю над калі 69 00:03:06,270 --> 00:03:09,340 галоднага рыба атрымлівае ежу, скажам, што кожны раз, калі касмічны 70 00:03:09,340 --> 00:03:11,840 Бар ўдар, сырны клубы з'яўляюцца на сцэне 71 00:03:11,840 --> 00:03:13,300 рыба ёсць. 72 00:03:13,300 --> 00:03:15,760 Перш чым мы патрапілі ў Прабел, мы хочам захаваць кепскай 73 00:03:15,760 --> 00:03:19,020 зацяжак схаваныя, так што рыба не можа бачыць іх. 74 00:03:19,020 --> 00:03:21,140 Каб зрабіць гэта, нам трэба пару сцэнарыяў для 75 00:03:21,140 --> 00:03:22,750 сырны клубы спрайт. 76 00:03:22,750 --> 00:03:26,980 Першы сцэнар, зялёны сьцяг, будзе проста схаваць ежы. 77 00:03:26,980 --> 00:03:29,530 У адрозненне ад іншых сцэнарыяў мы ўжо пісалі, на гэты раз не будзе трымаць 78 00:03:29,530 --> 00:03:30,560 працуе вечна. 79 00:03:30,560 --> 00:03:33,250 Яна будзе пачынацца і заканчвацца вельмі хутка, права, калі мы націскаем 80 00:03:33,250 --> 00:03:35,000 Зялёная кнопка сцяг. 81 00:03:35,000 --> 00:03:37,180 >> Наступны сцэнар у нас будзе чакаць прабел, каб быць 82 00:03:37,180 --> 00:03:39,590 націснутая перад выкананнем. 83 00:03:39,590 --> 00:03:42,770 Мы можам назваць чаканні ўводу карыстальніка "чакання" або "слухае" 84 00:03:42,770 --> 00:03:43,860 для падзеі. 85 00:03:43,860 --> 00:03:46,750 І код, які выконваецца пры атрыманні падзеі або 86 00:03:46,750 --> 00:03:50,280 чуў называецца код апрацоўкі падзей. 87 00:03:50,280 --> 00:03:53,550 Нашы Space Bar апрацоўшчык падзеі пакажуць сырны зацяжак на 88 00:03:53,550 --> 00:03:56,330 экран, так што рыба можа з'есці іх. 89 00:03:56,330 --> 00:03:58,880 На дадзены момант, усё выглядае добра. 90 00:03:58,880 --> 00:04:00,990 >> Наступнае, што нам трэба зрабіць, гэта высветліць, як атрымаць 91 00:04:00,990 --> 00:04:03,570 Рыба разумець, што ёсць ежа. 92 00:04:03,570 --> 00:04:06,030 Давайце дадамо іншы струмень для рыбы, якая ўвесь час 93 00:04:06,030 --> 00:04:08,790 правярае, ці з'яўляецца ён ці не кранальна сырны зацяжак. 94 00:04:08,790 --> 00:04:11,510 Мы робім гэта ў асобным патоку, так як такім чынам мы можам 95 00:04:11,510 --> 00:04:13,710 пастаянна правяраць на харчаванне. 96 00:04:13,710 --> 00:04:16,829 У адваротным выпадку, мы б толькі мець магчымасць перыядычна правяраць ежу 97 00:04:16,829 --> 00:04:21,180 паміж слізгаценне, паварочваючыся, чаканне, або думаць. 98 00:04:21,180 --> 00:04:22,000 >> OK. 99 00:04:22,000 --> 00:04:23,785 Зараз давайце запусцім нашу праграму да драпін. 100 00:04:23,785 --> 00:04:26,921 Як і чакалася, ежа адразу ж хаваецца і 101 00:04:26,921 --> 00:04:28,920 галоднага рыба плавае туды і назад як і раней. 102 00:04:32,050 --> 00:04:35,060 Калі мы трапілі ў Прабел, сырны клубы прыходзяць у поле зроку, 103 00:04:35,060 --> 00:04:37,470 і галодных рыб кажа Whoo. 104 00:04:37,470 --> 00:04:39,340 Але пачакайце, гэта дзіўна. 105 00:04:39,340 --> 00:04:42,150 Як атрымалася, што рыба "Я галодны" перарывае думкі 106 00:04:42,150 --> 00:04:43,580 іншыя рэчы? 107 00:04:43,580 --> 00:04:45,780 Гэта таму, што мы не ўстанаўлівае якіх-небудзь каардынацыі 108 00:04:45,780 --> 00:04:47,590 паміж трыма сцэнарамі рыбы. 109 00:04:47,590 --> 00:04:50,610 Кожны працуе ў сваім уласным патоку, не звяртаючы ўвагі на тое, што 110 00:04:50,610 --> 00:04:52,120 робяць іншыя. 111 00:04:52,120 --> 00:04:54,980 Давайце выправім гэта, перш чым рухацца далей. 112 00:04:54,980 --> 00:04:57,700 >> Каардынацыя паміж патокамі з'яўляецца няпростай задачай, так як мы 113 00:04:57,700 --> 00:05:00,940 не маюць відавочнага кантролю над калі кожны паток працуе ці 114 00:05:00,940 --> 00:05:02,190 не працуе. 115 00:05:02,190 --> 00:05:04,710 Каб адправіць паведамленне з аднаго струменя ў іншы, мы павінны будзем 116 00:05:04,710 --> 00:05:08,300 выкарыстоўваць зменную, што мы можам ўсталяваць, ні пісаць, у адным струмені 117 00:05:08,300 --> 00:05:10,170 і прачытаць у іншы. 118 00:05:10,170 --> 00:05:12,920 Давайце створым зменную foodFound, што мы можам усталяваць для 119 00:05:12,920 --> 00:05:15,530 дакладна, калі рыба ўпадае ў сырны зацяжак. 120 00:05:15,530 --> 00:05:17,540 Ну, вядома, мы хочам пераканацца, што мы ўсталяваць яго на 121 00:05:17,540 --> 00:05:19,240 ілжывым першапачаткова. 122 00:05:19,240 --> 00:05:22,540 Тады, у мысленні паток рыбы, мы будзем правяраць, каб пераканацца, 123 00:05:22,540 --> 00:05:25,400 Рыба знайшла ежу перад паказам "Я галодны" 124 00:05:25,400 --> 00:05:26,770 думаў бурбалка. 125 00:05:26,770 --> 00:05:29,670 >> Цяпер, запусціўшы праграму зноў, мы бачым, што рыба 126 00:05:29,670 --> 00:05:31,580 не атрымаць перапыніў думкі ад голаду, калі 127 00:05:31,580 --> 00:05:33,820 сырны клубы знаходзяцца па-за. 128 00:05:33,820 --> 00:05:36,820 Апошняя праблема ў нас у тым, што сырны клубы не хаджу 129 00:05:36,820 --> 00:05:39,800 ж пасля рыбы, працытаваць канец цытаты, "з'ядае" іх. 130 00:05:39,800 --> 00:05:42,305 З рыбы скрыпты, не існуе просты спосаб схаваць дрэнь 131 00:05:42,305 --> 00:05:44,710 зацяжак, так што нам трэба адправіць паведамленне на кепскай клубы 132 00:05:44,710 --> 00:05:46,780 спрайт схаваць сябе. 133 00:05:46,780 --> 00:05:49,550 Мы маглі б зрабіць гэта з іншай зменнай, што сырны клубы 134 00:05:49,550 --> 00:05:52,680 спрайт мае доступ, а таксама рыба спрайт. 135 00:05:52,680 --> 00:05:55,720 >> Аднак, ёсць больш чыстага спосабу зрабіць гэта ў дадзеным выпадку, 136 00:05:55,720 --> 00:05:57,840 так як замест адпраўкі паведамлення на скрыпт, які 137 00:05:57,840 --> 00:06:00,570 дзесьці ў сярэдзіне выканання, мы можам адправіць 138 00:06:00,570 --> 00:06:03,710 Паведамленне для сцэнара, які чакае, каб пачаць. 139 00:06:03,710 --> 00:06:07,360 Мы робім гэта, маючы рыбы трансляваць падзея, якое мы будзем 140 00:06:07,360 --> 00:06:08,800 тэлефануйце елі. 141 00:06:08,800 --> 00:06:11,510 Затым, мы створым скрыпт для сырны клубы, якія будуць 142 00:06:11,510 --> 00:06:13,030 чакаць гэтай падзеі. 143 00:06:13,030 --> 00:06:15,560 Гэта падобна на падзеі Bar прасторы, акрамя таго, што гэта 144 00:06:15,560 --> 00:06:19,250 час, карыстальнік не той, непасрэдна запуск падзеі. 145 00:06:19,250 --> 00:06:22,800 Зараз усе мы павінны зрабіць, гэта ўсталяваць наш foodFound назад пераменная 146 00:06:22,800 --> 00:06:25,750 ХЛУСНЯ, і цяпер мы можам даць галоднаму рыбу, як шмат 147 00:06:25,750 --> 00:06:28,470 порцый сырны зацяжак, як ён хоча. 148 00:06:28,470 --> 00:06:30,040 >> Так што не так ужо дрэнна, праўда? 149 00:06:30,040 --> 00:06:33,400 У C, напісанне шматструменных праграм з'яўляецца больш складаным, 150 00:06:33,400 --> 00:06:35,700 але асновы тыя ж. 151 00:06:35,700 --> 00:06:38,690 Ва ўсякім выпадку, я спадзяюся, што вы добра праведзяце час будаўніцтва павесяліцца 152 00:06:38,690 --> 00:06:41,030 паралельных праграм у Scratch. 153 00:06:41,030 --> 00:06:42,570 Мяне клічуць Нейт Хардисон. 154 00:06:42,570 --> 00:06:45,260 Гэта CS50.