1 00:00:00,000 --> 00:00:09,870 2 00:00:09,870 --> 00:00:13,360 >> ZAMYLA Чан: Ну, вось мы, апошні р-мноствам ў CS50. 3 00:00:13,360 --> 00:00:17,040 Павіншаваць сябе ад неабходнасці так далёка з моманту вашага першага Добры дзень 4 00:00:17,040 --> 00:00:20,090 Міры і друк Уверх Піраміды для Марыё. 5 00:00:20,090 --> 00:00:21,930 Вы зрабілі сайт на мінулым тыдні. 6 00:00:21,930 --> 00:00:25,110 І мы збіраемся рабіць яшчэ адзін на гэтым тыдні, які дазваляе 7 00:00:25,110 --> 00:00:28,570 ездзіць вакол кампуса Гарвардскага, выбіраючы да CS50 супрацоўнікаў і 8 00:00:28,570 --> 00:00:31,910 вяртаючы іх да іх жылыя дамы. 9 00:00:31,910 --> 00:00:35,400 >> Цяпер, на мінулым тыдні мы працавалі ў PHP, сервера мова бок. 10 00:00:35,400 --> 00:00:38,250 Для гэтага р-мноства, мы становімся уведзены на JavaScript, які 11 00:00:38,250 --> 00:00:40,610 мову на боку кліента. 12 00:00:40,610 --> 00:00:44,020 Такім чынам, давайце зірнем на некаторыя з Код размеркавання, які прадастаўляецца 13 00:00:44,020 --> 00:00:46,210 Вы для гэтага р-мноства. 14 00:00:46,210 --> 00:00:49,700 У тэчцы JavaScript, там будзе быць куча файлаў JavaScript. 15 00:00:49,700 --> 00:00:53,600 >> Там у buildings.js, які ўтрымлівае Масіў будынкаў вакол Гарвардзе 16 00:00:53,600 --> 00:00:57,340 кампус з іх інфармацыяй і становішча. 17 00:00:57,340 --> 00:01:01,630 Houses.js ўяўляе сабой масіў з Гарварда жылыя дамы з іх 18 00:01:01,630 --> 00:01:04,030 шыраты і даўгаты. 19 00:01:04,030 --> 00:01:08,600 Passengers.js ўтрымлівае масіў пасажыры, супрацоўнікі CS50 20 00:01:08,600 --> 00:01:11,640 што вы будзеце вярнуць да іх жылых дамоў. 21 00:01:11,640 --> 00:01:16,450 >> Math3D.js, што змяшчае шмат функцыі, каб зрабіць з рухам. 22 00:01:16,450 --> 00:01:19,500 Калі вы матэматычна настроеных, то Я вітаю вас, каб зірнуць. 23 00:01:19,500 --> 00:01:23,530 Але вы не павінны разумець ўсё там. 24 00:01:23,530 --> 00:01:26,710 Shuttle.js, што мае справу з Рух шатла. 25 00:01:26,710 --> 00:01:31,450 І index.html з'яўляецца хатняя старонка, дзе усё адбываецца, на самай справе, дзе 26 00:01:31,450 --> 00:01:33,610 карыстальнік ўзаемадзейнічае з сайтам. 27 00:01:33,610 --> 00:01:39,110 >> Service.css з'яўляецца ліст CSS стыль, якія ў дадатак да Twitter 28 00:01:39,110 --> 00:01:43,960 Пачатковая загрузка Бібліятэка, элементы кіравання як index.html выглядае. 29 00:01:43,960 --> 00:01:48,190 А потым у нас таксама ёсць service.js, якія ўтрымлівае сэрвісныя функцыі для 30 00:01:48,190 --> 00:01:49,010 Трансфер. 31 00:01:49,010 --> 00:01:53,010 І вось тое, дзе вы збіраецеся быць запоўніўшы некаторыя з да-рабіць,. 32 00:01:53,010 --> 00:01:56,600 >> Зараз давайце зірнем на аб'ектах і асацыятыўныя масівы ў JavaScript, 33 00:01:56,600 --> 00:01:59,360 якія, для ўсіх намераў і мэтаў, з'яўляюцца ўзаемазаменнымі. 34 00:01:59,360 --> 00:02:03,030 Калі б я хацеў зрабіць аб'ект зменную называецца палачка, я б 35 00:02:03,030 --> 00:02:04,290 аб'явім яго. 36 00:02:04,290 --> 00:02:09,350 І ўнутры гэтых фігурных дужак, я б паказаць, ядро ​​аднарог, лес 37 00:02:09,350 --> 00:02:12,710 вішнёвага, а даўжыня складае 13. 38 00:02:12,710 --> 00:02:16,370 >> Зараз, я магу таксама доступ да значэнняў аб'ектаў з выкарыстаннем 39 00:02:16,370 --> 00:02:18,270 асацыятыўная абазначэння масіва. 40 00:02:18,270 --> 00:02:22,610 Так палачка Базавы індэкс, я магу ўсталяваць што роўна аднарог, або 41 00:02:22,610 --> 00:02:24,710 праверыць, што калі мне трэба. 42 00:02:24,710 --> 00:02:28,890 Ці я магу выкарыстоўваць аператар пункту wand.wood роўна вішня, і 43 00:02:28,890 --> 00:02:30,280 гэтак далей і таму падобнае. 44 00:02:30,280 --> 00:02:33,930 Такім чынам, вы бачыце, што асацыятыўныя масівы і аб'екты ў JavaScript будуць 45 00:02:33,930 --> 00:02:37,710 ўзаемазаменныя, і воля прыйсці ў вельмі зручна. 46 00:02:37,710 --> 00:02:41,570 >> Затым мы бачым масіў будынкаў у buildings.js, 47 00:02:41,570 --> 00:02:43,870 зноў, масіў аб'ектаў. 48 00:02:43,870 --> 00:02:48,500 Калі б я хацеў зрабіць масіў з лепшых будынка на Гарвардскага універсітэцкага гарадка, то 49 00:02:48,500 --> 00:02:49,710 Я хацеў бы зрабіць гэта наступным чынам. 50 00:02:49,710 --> 00:02:55,250 Выкарыстоўваючы гэтыя абазначэння аб'екта, дзе Я захоўваю каранёвай, імя, адрас, 51 00:02:55,250 --> 00:03:00,260 шырата, і даўгата для кожнага адзін аб'ект будаўніцтва. 52 00:03:00,260 --> 00:03:02,930 >> Давайце хутка казаць аб зменных у JavaScript. 53 00:03:02,930 --> 00:03:07,760 Як PHP, JavaScript зменныя слаба або свабодна набралі. 54 00:03:07,760 --> 00:03:14,120 Каб стварыць лакальную зменную, Вы папярэднічаючы імя зменнай з V-A-R, вар. 55 00:03:14,120 --> 00:03:17,010 Зараз, у JavaScript, функцыі будуць абмежаваць вобласць бачнасці зменных. 56 00:03:17,010 --> 00:03:20,600 Так што калі ў вас ёсць лакальная пераменная у функцыя, то іншыя функцыі 57 00:03:20,600 --> 00:03:22,060 не можа атрымаць да яго доступ. 58 00:03:22,060 --> 00:03:26,090 >> Але ў адрозненне ад C, завесы і ўмовы не абмежавання аб'ёму зменнай. 59 00:03:26,090 --> 00:03:30,600 Так што нават калі вы аб'яўляеце яго ўнутры стан, уся функцыя будзе 60 00:03:30,600 --> 00:03:32,810 мець доступ да яго. 61 00:03:32,810 --> 00:03:35,820 Зараз, не вар, пераменная будзе насіць глабальны характар. 62 00:03:35,820 --> 00:03:39,170 Так што калі вы проста абвясціць імя і прысвоіць значэнне, тое, што пераменная 63 00:03:39,170 --> 00:03:41,900 будзе глабальная пераменная у JavaScript. 64 00:03:41,900 --> 00:03:48,480 >> Зараз, у дамах, у нас ёсць асацыятыўную Масіў аб'ектаў тыпу хост, дзе 65 00:03:48,480 --> 00:03:52,100 кожны дом знаходзіцца ўсяго ў шыраты і даўгата. 66 00:03:52,100 --> 00:03:55,140 Тады ў нас ёсць пасажыраў масіў, які з'яўляецца масівам 67 00:03:55,140 --> 00:03:57,370 тыпу аб'екта пасажыра. 68 00:03:57,370 --> 00:04:01,620 Такім чынам, кожны пасажыр мае карыстальніка імя, імя, і дом. 69 00:04:01,620 --> 00:04:04,840 >> Звярніце ўвагу, што я кажу тыпу Пасажыр, які на самай справе проста азначае, 70 00:04:04,840 --> 00:04:08,150 што кожны аб'ект мае ж пар ключ-значэнне. 71 00:04:08,150 --> 00:04:12,830 Такім чынам, кожны аб'ект тыпу пасажыра мае імя карыстальніка, імя, і дом. 72 00:04:12,830 --> 00:04:14,850 Дык што ж нам трэба зрабіць для р-набору? 73 00:04:14,850 --> 00:04:20,779 Ну, мы павінны дазволіць карыстальнікам выбіраць да супрацоўнікаў, каб паказаць усе 74 00:04:20,779 --> 00:04:25,080 супрацоўнікі, якія ў цяперашні наш маршрутны аўтобус, і высадзіць іх. 75 00:04:25,080 --> 00:04:29,395 І тады мы будзем таксама казаць аб дадатковых асаблівасці, якія могуць быць рэалізаваны для 76 00:04:29,395 --> 00:04:30,980 Трансфер р-мноства. 77 00:04:30,980 --> 00:04:33,610 >> Але давайце пагаворым пра пікапе ў першую чаргу. 78 00:04:33,610 --> 00:04:37,480 Асобы CS50 персаналу была пасадзілі ва ўсім кампусе, дзе кожны 79 00:04:37,480 --> 00:04:41,750 Твар рэалізаваны як месца маркі на 3D Зямлі, і ў якасці 80 00:04:41,750 --> 00:04:44,020 маркер на 2D-карце. 81 00:04:44,020 --> 00:04:47,880 Так што, калі карыстальнік націскае на Pickup Кнопка, мы хочам дадаць непадалёк 82 00:04:47,880 --> 00:04:49,590 пасажыраў у маршрутным аўтобусе. 83 00:04:49,590 --> 00:04:53,650 І мы таксама хочам, каб выдаліць іх месца пазначыць ад свету і выдаліць іх 84 00:04:53,650 --> 00:04:58,060 Маркер з карты, паказваючы, што яны ў нашым трансферным аўтобусе цяпер. 85 00:04:58,060 --> 00:05:02,520 >> Так як жа нам вызначыць, што пасажыры знаходзіцца ў зоне нашага чоўна? 86 00:05:02,520 --> 00:05:06,670 Ну, функцыя адлегласці, так што shuttle.distance, перадаючы 87 00:05:06,670 --> 00:05:10,630 шырыня і даўжыня, разлічыць адлегласць ад бягучай пазіцыі 88 00:05:10,630 --> 00:05:14,220 чоўна да таго, што Вы вызначаеце з прыведзеных 89 00:05:14,220 --> 00:05:15,860 шырыня і даўжыня. 90 00:05:15,860 --> 00:05:19,180 Такім чынам, вы можаце выкарыстаць гэта для вылічэнні Адлегласць ад маршрутнага аўтобуса, каб 91 00:05:19,180 --> 00:05:20,310 пасажыраў. 92 00:05:20,310 --> 00:05:24,040 >> Але як вы ведаеце, дзе пасажыры? 93 00:05:24,040 --> 00:05:27,510 Ну, вось дзе мы павінны будзем рэдагаваць функцыю запаўнення. 94 00:05:27,510 --> 00:05:32,500 Запоўніце Places ўсё з супрацоўнікаў ў пасажыраў у свет 95 00:05:32,500 --> 00:05:36,300 і ў карце, але не захоўваць іх размяшчэнне. 96 00:05:36,300 --> 00:05:39,850 Так што, магчыма, вы можаце захоўваць іх размясціць знакі і маркеры 97 00:05:39,850 --> 00:05:41,570 у некаторым глабальным масіве. 98 00:05:41,570 --> 00:05:45,780 >> Цяпер ужо ёсць глабальны масіў захоўвання інфармацыі ад пасажыраў. 99 00:05:45,780 --> 00:05:49,960 Пасажыры масіва крамы кожны Імя пасажыра, і іх дом. 100 00:05:49,960 --> 00:05:54,985 Таму, магчыма, вы можаце дадаць некалькі параметраў там пасажырскіх аб'ектаў. 101 00:05:54,985 --> 00:05:58,150 >> Каб дапамагчы нам выявіць усе пасажыры у спектр нашых 102 00:05:58,150 --> 00:06:02,485 Трансфер, давайце цыкл па ўсіх пасажыры ў масіве пасажыраў. 103 00:06:02,485 --> 00:06:07,790 Для завесы ў JavaScript можа выглядаць нешта накшталт гэтага, вельмі падобны на 104 00:06:07,790 --> 00:06:13,200 тыя, для завес ў С. Ці мы можам выкарыстоўваць Альтэрнатыва для структуры завесы, для 105 00:06:13,200 --> 00:06:18,680 вар я ў масіве, дзе я ўсё яшчэ будзе індэкс, але вы не павінны 106 00:06:18,680 --> 00:06:23,310 пазначыць array.length стан, і я + +. 107 00:06:23,310 --> 00:06:26,130 >> Размяшчэнне кожнага пасажыра складае даецца іх месцы пазнакі. 108 00:06:26,130 --> 00:06:29,800 Але месца знак не шырыня і даўжыня. 109 00:06:29,800 --> 00:06:34,170 У нас ёсць доступ да гэтых параметры, атрыманне геаметрыю, выкарыстоўваючы Пошук 110 00:06:34,170 --> 00:06:38,180 геаметрыі на месцы знака, а затым як толькі мы маем геаметрыю, атрымліваючы 111 00:06:38,180 --> 00:06:42,580 альбо шырата або даўгата з дапамогай гэтых функцый. 112 00:06:42,580 --> 00:06:45,680 >> Так што цяпер мы ведаем, як выявіць ці пасажыры знаходзяцца ў межах 113 00:06:45,680 --> 00:06:47,920 Асартымент нашага шатла. 114 00:06:47,920 --> 00:06:52,050 Як толькі мы атрымаем тых пасажыраў, мы будзем хочаце дадаць любыя пасажыраў, якія 115 00:06:52,050 --> 00:06:53,140 ў межах гэтага дыяпазону. 116 00:06:53,140 --> 00:06:57,580 Мы хочам, каб дазволіць ім скакаць на і прыняць месца на нашым трансферным аўтобусе, але толькі 117 00:06:57,580 --> 00:06:59,630 калі ў нас ёсць досыць месцы для іх. 118 00:06:59,630 --> 00:07:04,120 >> Масіў shuttle.seats пакажа сядзенні, ці з'яўляюцца пустымі, або 119 00:07:04,120 --> 00:07:05,890 хто ў гэтым крэсле. 120 00:07:05,890 --> 00:07:11,160 Так што, калі месца пуста, то што месца будзе нулявы. 121 00:07:11,160 --> 00:07:15,930 Так ітэрацыі па масіве месцаў, праверка на пустыя месцы, захоўвання 122 00:07:15,930 --> 00:07:20,020 пасажыры ў гэтыя месцы, пакуль Вы няма ніякіх больш пустыя месцы. 123 00:07:20,020 --> 00:07:23,330 І, на жаль, ніякіх іншых пасажыраў прыйдзецца чакаць 124 00:07:23,330 --> 00:07:26,000 у наступны раз шатл ідзе ўніз. 125 00:07:26,000 --> 00:07:30,280 >> Як толькі яны атрымаюць на шатле, мы хочам выдаліць іх месца знак, які 126 00:07:30,280 --> 00:07:32,580 з'яўляецца іх фота ў 3D-свеце. 127 00:07:32,580 --> 00:07:38,030 Калі б я хацеў, каб выдаліць месца Mark P, то я хацеў бы атрымаць усе функцыі, 128 00:07:38,030 --> 00:07:42,820 ад майго Зямлі, ад Google Earth, , А затым выдаліць, што канкрэтнае месца 129 00:07:42,820 --> 00:07:45,910 пазначыць з дапамогай функцыі RemoveChild. 130 00:07:45,910 --> 00:07:51,360 Тады, нарэшце, давайце прыбярэм маркер, значок на 2D-карце, для любога 131 00:07:51,360 --> 00:07:53,650 пасажыр, што мы ўстаюць. 132 00:07:53,650 --> 00:07:59,790 >> Каб выдаліць маркер т, то я буду проста выканаць m.setMap нуль. 133 00:07:59,790 --> 00:08:03,670 Рабіце гэта на працягу любых пасажыраў у межах дыяпазону, і вы скончылі пікап. 134 00:08:03,670 --> 00:08:07,890 Функцыянальная схема павінна адлюстроўваць ўсе з пасажыраў, якія знаходзяцца ў вашым 135 00:08:07,890 --> 00:08:11,000 Трансфер і вольнае месца, калі пустымі. 136 00:08:11,000 --> 00:08:14,420 Так графік павінен перабраць shuttle.seats, адлюстравання 137 00:08:14,420 --> 00:08:21,350 інфармацыя аб пасажырах для кожнага індэкса, і вольнае месца, калі, што індэкс з'яўляецца несапраўдным. 138 00:08:21,350 --> 00:08:26,160 >> Цяпер, калі HTML тэкст змяшчаецца ўсярэдзіне JavaScript пераменная, то з дапамогай 139 00:08:26,160 --> 00:08:31,950 document.getElementById, графік можа рэдагаваць ўнутраную HTML з, што дадзены 140 00:08:31,950 --> 00:08:36,140 элемент, прызначыўшы HTML тэкст 141 00:08:36,140 --> 00:08:40,840 document.getElementById ўнутраная зменная HTML. 142 00:08:40,840 --> 00:08:46,180 Калі карыстальнікі націскаюць кнопку Drop Off у index.html, ён патэлефануе 143 00:08:46,180 --> 00:08:47,160 Функцыя пакінеце машыну. 144 00:08:47,160 --> 00:08:49,510 І гэта наша праца, каб ажыццявіць гэта. 145 00:08:49,510 --> 00:08:54,150 >> У Dropoff, мы хочам, каб выдаліць любыя пасажыры з шатла, толькі калі 146 00:08:54,150 --> 00:08:58,740 мы знаходзімся ў дыяпазоне іх прызначэння, іх жылы дом. 147 00:08:58,740 --> 00:09:03,300 Так пакінеце машыну прыйдзецца праверыць, ці з'яўляецца трансфер у дыяпазоне любы з 148 00:09:03,300 --> 00:09:08,200 дома, і выдаліце ​​ўсе неабходныя пасажыры з шатла. 149 00:09:08,200 --> 00:09:11,020 Так як жа мы правяраем, калі мы ў дыяпазоне любых дамоў? 150 00:09:11,020 --> 00:09:16,630 Ну, яшчэ раз, мы будзем выкарыстоўваць shuttle.distance функцыю, перадаючы ў 151 00:09:16,630 --> 00:09:20,990 шырыня і даўжыня пункту што мы правяраем супраць. 152 00:09:20,990 --> 00:09:22,730 >> Але тое, што гэта тыя кропкі? 153 00:09:22,730 --> 00:09:27,210 Ну, масіў дома, калі вы памятаеце, у houses.js, захоўвае 154 00:09:27,210 --> 00:09:32,790 шырыня і даўжыня кожнага дома ў асацыятыўны масіў, дзе кожны 155 00:09:32,790 --> 00:09:35,980 індэкс імя гэтага дома. 156 00:09:35,980 --> 00:09:37,590 Тады, каб выдаліць пасажыраў - 157 00:09:37,590 --> 00:09:41,820 ну, толькі калі мы знаходзімся ў дыяпазоне іх Дом, які яны хочуць пайсці. 158 00:09:41,820 --> 00:09:46,380 Такім чынам, яшчэ раз, памятаеце, што пасажыры захоўвае дом, што кожны пасажыр 159 00:09:46,380 --> 00:09:48,850 хоча пайсці ў. 160 00:09:48,850 --> 00:09:51,670 Калі яны знаходзяцца ў межах дыяпазону іх дом, то мы будзем вымушаныя выдаліць, што 161 00:09:51,670 --> 00:09:57,200 пасажыр ад shuttle.seats і набору іх становішча ў масіве да нуля. 162 00:09:57,200 --> 00:10:00,220 >> Зараз давайце пагаворым аб некаторых дадатковых функцый , Якія могуць быць рэалізаваны ў 163 00:10:00,220 --> 00:10:02,690 CS50 Трансфер р-мноства. 164 00:10:02,690 --> 00:10:05,850 Там у бальнай сістэме ў выніку чаго вам адсочваць, колькі 165 00:10:05,850 --> 00:10:07,520 паказвае карыстальнік мае. 166 00:10:07,520 --> 00:10:11,120 Для высаджваючы пасажыраў паспяхова, яны могуць атрымаць ачкі. 167 00:10:11,120 --> 00:10:15,100 Але за тое, каб высадзіць пасажыраў дзе няма ніякага дома паблізу, 168 00:10:15,100 --> 00:10:16,980 добра, яны могуць атрымаць пакаранне за гэта. 169 00:10:16,980 --> 00:10:21,790 Так што, магчыма, вы хочаце, каб адсочваць кропкі ў глабальнай зменнай. 170 00:10:21,790 --> 00:10:25,970 >> Вы можаце рэалізаваць, магчыма, таймер, дзе карыстальнік мае пэўную колькасць 171 00:10:25,970 --> 00:10:29,800 час, каб забраць і сыходзяць а, пэўную колькасць пасажыраў. 172 00:10:29,800 --> 00:10:33,280 Можа быць, нават інтэграваць гэта з сістэмай кропкі. 173 00:10:33,280 --> 00:10:39,970 Ці вы можаце рэдагаваць дыяграмы такім чынам, каб пасажыры сартуюцца па хаце. 174 00:10:39,970 --> 00:10:45,250 Так што, верагодна, будзе свайго роду функцыянаваць у shuttle.seats. 175 00:10:45,250 --> 00:10:49,240 >> Вы можаце рэалізаваць лятаючую функцыю, дзе, калі карыстальнік ўводзіць Konami 176 00:10:49,240 --> 00:10:53,460 Код, то трансфер ўзлятае зямля і трансфер можа лятаць. 177 00:10:53,460 --> 00:10:58,890 Але для бяспечнай высадкі, усё магчымае, каб Трансфер прызямліцца свае колы на 178 00:10:58,890 --> 00:11:00,700 зямлю ў першую чаргу. 179 00:11:00,700 --> 00:11:05,910 Вы таксама можаце ажыццявіць тэлепартацыю, дзе вы зрабіць выпадальны спіс 180 00:11:05,910 --> 00:11:08,380 будынка ў index.html. 181 00:11:08,380 --> 00:11:12,270 І выбраўшы адзін з тых,, Карыстальнік будзе транспартавацца ў 182 00:11:12,270 --> 00:11:14,220 што будаўніцтва на тэрыторыі кампуса. 183 00:11:14,220 --> 00:11:16,760 У парадку, хоць, падарожнічаць па сцены некаторыя 184 00:11:16,760 --> 00:11:19,290 будынка па дарозе туды. 185 00:11:19,290 --> 00:11:22,960 >> Вы таксама можаце змяніць хуткасць Трансфер, што дазваляе карыстальніку, каб павялічыць 186 00:11:22,960 --> 00:11:25,490 або паменшыць хуткасць. 187 00:11:25,490 --> 00:11:28,840 Магчыма, вы хочаце глабальную зменную ў адсочваць, колькі паліва 188 00:11:28,840 --> 00:11:31,520 Трансфер мае, памяншаючы гэта, як вы ідзяце наперад. 189 00:11:31,520 --> 00:11:35,860 Калі вы дабярэцеся да нуля, хоць, трансфер не зможа рухацца, калі вы не маеце 190 00:11:35,860 --> 00:11:40,610 запраўляцца, магчыма, з дапамогай кнопкі або нават зрабіць свой уласны АЗС. 191 00:11:40,610 --> 00:11:43,240 >> Але гэта, вядома, не вычарпальны спіс. 192 00:11:43,240 --> 00:11:46,340 Праверце спецыфікацыю для поўнага спіс, або, магчыма, прапанаваць 193 00:11:46,340 --> 00:11:47,840 самастойна на свой TF. 194 00:11:47,840 --> 00:11:48,950 Неба гэта мяжа. 195 00:11:48,950 --> 00:11:53,110 Гэта твой апошні CS50 р-набор, так весела з ім. 196 00:11:53,110 --> 00:11:56,360 Гэта было CS50 Трансфер. 197 00:11:56,360 --> 00:11:59,230 >> Я павінен сказаць, гэта было вельмі прыемна што робіць гэта для вас з 198 00:11:59,230 --> 00:12:00,400 здымачная група. 199 00:12:00,400 --> 00:12:04,330 І я спадзяюся, што вы атрымліваць асалоду ад імі, а таксама. 200 00:12:04,330 --> 00:12:06,040 Мяне клічуць Zamyla. 201 00:12:06,040 --> 00:12:08,310 І гэта было CS50. 202 00:12:08,310 --> 00:12:16,363