1 00:00:07,360 --> 00:00:09,360 [Powered by Google Translate] Nate HARDISON: Ko imaš več programov odpirati 2 00:00:09,360 --> 00:00:11,250 računalnik, se zdi, kot da je vse v 3 00:00:11,250 --> 00:00:12,880 teče ob istem času. 4 00:00:12,880 --> 00:00:15,350 Na primer, boste morda delo v spletnem brskalniku kot 5 00:00:15,350 --> 00:00:19,360 Firefox ali Internet Explorer, poslušanje glasbe na iTunes, 6 00:00:19,360 --> 00:00:21,490 in pisanje eseja z besedo. 7 00:00:21,490 --> 00:00:24,240 Vendar je pod pokrovom, se programi dejansko 8 00:00:24,240 --> 00:00:25,830 teči eno naenkrat. 9 00:00:25,830 --> 00:00:29,750 To je naloga operacijskega sistema Windows, Mac OS X ali 10 00:00:29,750 --> 00:00:33,070 Linux, upravljanje vsakega od teh ločenih procesih, kot je 11 00:00:33,070 --> 00:00:35,900 Programi so znani, ter preklapljate med njimi, tako da, ko 12 00:00:35,900 --> 00:00:38,610 gredo od preveritev vaš Facebook stran za delo na vašem eseju 13 00:00:38,610 --> 00:00:41,590 spet Beseda je tista, ki se izteka. 14 00:00:41,590 --> 00:00:44,890 >> Včasih, čeprav, želimo programov sami, da je sposoben 15 00:00:44,890 --> 00:00:47,440 narediti več stvari, kot je ta, preveč. 16 00:00:47,440 --> 00:00:49,630 Če ste kot jaz, boste verjetno imeli kup 17 00:00:49,630 --> 00:00:52,730 različne zavihke odpre v spletnem brskalniku, enega za e-pošto, 18 00:00:52,730 --> 00:00:55,070 1 s koledarjem, in tako naprej. 19 00:00:55,070 --> 00:00:58,270 Mi lahko obravnava vsako kartico kot poseben program ali proces, 20 00:00:58,270 --> 00:01:01,300 kot je Google Chrome ne, vendar mnogi programi uporabljajo 21 00:01:01,300 --> 00:01:04,430 lahek različica procesu, imenovanem nit. 22 00:01:04,430 --> 00:01:07,190 >> Nit je samo še ena enota predelave niz 23 00:01:07,190 --> 00:01:10,100 navodila ali kodo, ki lahko "prost dostop", citiram, konec citata 24 00:01:10,100 --> 00:01:12,560 hkrati z drugimi nitmi. 25 00:01:12,560 --> 00:01:15,150 To je tisto, kar omogoča, da za brskanje Facebook 26 00:01:15,150 --> 00:01:17,940 Med poslušanjem se mi v ozadju ali do 2 27 00:01:17,940 --> 00:01:20,790 YouTube video posnetke predvajal ob istem času. 28 00:01:20,790 --> 00:01:24,660 Torej, to splošno temo, znan kot vzporednosti, običajno 29 00:01:24,660 --> 00:01:26,930 ne prihaja do tako zgodaj tečajev računalništva 30 00:01:26,930 --> 00:01:29,790 ker nižji ravni podrobnosti zahtevajo razpravo 31 00:01:29,790 --> 00:01:31,930 operacijskih sistemov in podobno. 32 00:01:31,930 --> 00:01:34,170 Vendar pa je programski jezik, ki jih uporabljamo pri 33 00:01:34,170 --> 00:01:38,000 začetek CS50, Scratch, ponuja nekaj Izvanredan orodja 34 00:01:38,000 --> 00:01:40,390 lažje pisati programe z več stvarmi 35 00:01:40,390 --> 00:01:42,390 dogaja naenkrat. 36 00:01:42,390 --> 00:01:45,050 >> Ko gradite Scratch programe, ste nenehno 37 00:01:45,050 --> 00:01:46,760 delo z nitmi. 38 00:01:46,760 --> 00:01:49,770 Vsak Scratch scenarij, ki je koda blok, ki se začne z 39 00:01:49,770 --> 00:01:52,600 eden od "kdaj" koščke, lahko pomislil 40 00:01:52,600 --> 00:01:54,380 kot ločeno nit. 41 00:01:54,380 --> 00:01:58,040 Oglejmo si preprost program Scratch da vidim kako to deluje. 42 00:01:58,040 --> 00:02:01,730 >> Tu imamo rib predmet, ali Sprite, z dvema skripte 43 00:02:01,730 --> 00:02:05,000 da se začnejo, ko smo še malo zeleni gumb zastave. 44 00:02:05,000 --> 00:02:07,290 Prvi scenarij Kontrolira ribje predlog. 45 00:02:07,290 --> 00:02:09,850 Ko uporabnik klikne na zeleno zastavo, dobi dajo ribe 46 00:02:09,850 --> 00:02:12,450 na levi strani zaslona, ​​ki se imenuje faza, 47 00:02:12,450 --> 00:02:14,090 obrnjen v desno. 48 00:02:14,090 --> 00:02:17,070 Potem, v kompletu z navodili, da boste vedno potekajo, dokler ne bomo 49 00:02:17,070 --> 00:02:20,270 program ustaviti, ribe drsi na desni strani, 50 00:02:20,270 --> 00:02:22,900 obrne, gre nazaj na levi strani, 51 00:02:22,900 --> 00:02:24,470 obrne še enkrat. 52 00:02:24,470 --> 00:02:27,410 Drugi scenarij Kontrolira ribje miselni proces. 53 00:02:27,410 --> 00:02:29,290 Izkazalo se je, da je to lačen ribe. 54 00:02:29,290 --> 00:02:32,080 Torej, ko čakajo za 3 sekunde, se bodo ribe mislim, 55 00:02:32,080 --> 00:02:34,420 "Jaz sem lačen," za četrto sekundo. 56 00:02:34,420 --> 00:02:36,440 Ta skript deluje tudi večno. 57 00:02:36,440 --> 00:02:38,940 In kot smo videli, od teče program s klikom na 58 00:02:38,940 --> 00:02:41,730 zeleno zastavo, tako se zdi, da izvajanje skript 59 00:02:41,730 --> 00:02:43,100 hkrati. 60 00:02:43,100 --> 00:02:46,460 Ribe se premika in misli ob istem času. 61 00:02:46,460 --> 00:02:49,030 >> Ker je slaba riba izgleda tako lačen, greva dodajte v nekaterih 62 00:02:49,030 --> 00:02:50,670 Ženski puder za to, da bi jedli. 63 00:02:50,670 --> 00:02:53,060 Upajmo, da ne bo razpadla v vodi. 64 00:02:53,060 --> 00:02:55,560 Ko smo dodali v drugi Vilenjak, bomo lahko tudi 65 00:02:55,560 --> 00:02:58,020 dodaj v skripti, ki ustrezajo tej Vilenjak. 66 00:02:58,020 --> 00:02:59,580 In zato se bodo v drugem nizu 67 00:02:59,580 --> 00:03:00,830 Niti, da boste teči. 68 00:03:03,590 --> 00:03:06,270 Da bi uporabniku našega programa nadzora nad ko 69 00:03:06,270 --> 00:03:09,340 lačen ribe dobi hrano, recimo, da kadar koli prostor 70 00:03:09,340 --> 00:03:11,840 Bar je udaril, sirast puder pojavi na odru za 71 00:03:11,840 --> 00:03:13,300 ribe jedo. 72 00:03:13,300 --> 00:03:15,760 Preden smo zadeti preslednico, bomo želeli ohraniti sirast 73 00:03:15,760 --> 00:03:19,020 puder skriti tako, da ribe ne morejo videti. 74 00:03:19,020 --> 00:03:21,140 Da bi to naredili, bomo potrebovali nekaj scenarijev za 75 00:03:21,140 --> 00:03:22,750 Ženski puder Sprite. 76 00:03:22,750 --> 00:03:26,980 Prvi scenarij, zelena zastava, bo samo skrivanje hrane. 77 00:03:26,980 --> 00:03:29,530 Za razliko od drugih scenarijev, ki smo jih napisali, ta ne bo vodila 78 00:03:29,530 --> 00:03:30,560 deluje vedno. 79 00:03:30,560 --> 00:03:33,250 To bo začetek in konec zelo hitro, prav, ko smo kliknite 80 00:03:33,250 --> 00:03:35,000 zelena zastava gumb. 81 00:03:35,000 --> 00:03:37,180 >> Naslednji skript imamo bo počakati na preslednico, da je 82 00:03:37,180 --> 00:03:39,590 pritisnili pred izvršitvijo. 83 00:03:39,590 --> 00:03:42,770 Mi lahko pokličete čaka na vnos uporabnika "čaka" ali "poslušanje" 84 00:03:42,770 --> 00:03:43,860 za dogodek. 85 00:03:43,860 --> 00:03:46,750 In kodo, ki izvaja, ko je dogodek prejme ali 86 00:03:46,750 --> 00:03:50,280 Slišal se imenuje dogodek ravnanje kodo. 87 00:03:50,280 --> 00:03:53,550 Naša Space obravnavo dogodkov bo pokazal cheesy puder za 88 00:03:53,550 --> 00:03:56,330 zaslon, tako da lahko ribe jedo. 89 00:03:56,330 --> 00:03:58,880 Na tej točki, vse je videti dobro. 90 00:03:58,880 --> 00:04:00,990 >> Naslednja stvar, ki jo morate storiti, je, da ugotovimo, kako priti do 91 00:04:00,990 --> 00:04:03,570 ribe se zavedati, da je hrana za jesti. 92 00:04:03,570 --> 00:04:06,030 Naj dodamo še niti za ribe, ki stalno 93 00:04:06,030 --> 00:04:08,790 preverjanje, ali se je Touching the cheesy puder. 94 00:04:08,790 --> 00:04:11,510 To naredimo v ločenem nit, saj ta način smo lahko 95 00:04:11,510 --> 00:04:13,710 stalno preverjati hrano. 96 00:04:13,710 --> 00:04:16,829 V nasprotnem primeru, bi le lahko redno preverja za hrano 97 00:04:16,829 --> 00:04:21,180 vmes drsenje se je obrnil in čaka, ali misli. 98 00:04:21,180 --> 00:04:22,000 >> OK. 99 00:04:22,000 --> 00:04:23,785 Zdaj pa deluje naš blok za program. 100 00:04:23,785 --> 00:04:26,921 Kot je bilo pričakovati, je hrana takoj skrije in 101 00:04:26,921 --> 00:04:28,920 lačna riba plava sem in tja tako kot prej. 102 00:04:32,050 --> 00:04:35,060 Ko smo zadeti preslednico, da sirast puder pridejo v pogledu, 103 00:04:35,060 --> 00:04:37,470 in lačna riba pravi Whoo. 104 00:04:37,470 --> 00:04:39,340 Čakajte, to je čudno. 105 00:04:39,340 --> 00:04:42,150 Kako to, da so ribe v "Jaz sem lačen" Mislil sem, da prekine 106 00:04:42,150 --> 00:04:43,580 druge stvari? 107 00:04:43,580 --> 00:04:45,780 To je zato, ker ni navedlo nobenega usklajevanja 108 00:04:45,780 --> 00:04:47,590 med tremi scenariji rib. 109 00:04:47,590 --> 00:04:50,610 Vsak teče v svojem nit, pozablja na tisto, kar 110 00:04:50,610 --> 00:04:52,120 počnejo drugi. 111 00:04:52,120 --> 00:04:54,980 Naj popravim, preden gremo naprej. 112 00:04:54,980 --> 00:04:57,700 >> Usklajevanje med nitmi je zapletena naloga, saj smo 113 00:04:57,700 --> 00:05:00,940 nimajo izrecne nadzora nad ko vsaka nit teče ali 114 00:05:00,940 --> 00:05:02,190 ne deluje. 115 00:05:02,190 --> 00:05:04,710 Če želite poslati sporočilo iz ene niti v drugo, bomo morali 116 00:05:04,710 --> 00:05:08,300 uporabljati spremenljivke, ki jih lahko nastavite, ali pisati, niti v enem 117 00:05:08,300 --> 00:05:10,170 in berejo drugi. 118 00:05:10,170 --> 00:05:12,920 Ustvarimo spremenljivko z imenom foodFound, da bomo lahko nastavite na 119 00:05:12,920 --> 00:05:15,530 Res, ko riba v vodi sirast puder. 120 00:05:15,530 --> 00:05:17,540 No, seveda, želimo prepričati, da smo jo nastavite na 121 00:05:17,540 --> 00:05:19,240 neresnično začetku. 122 00:05:19,240 --> 00:05:22,540 Nato v razmišljanju ribjem nit, bomo preverite, če 123 00:05:22,540 --> 00:05:25,400 riba je našel hrano pred prikazom "Jaz sem lačen" 124 00:05:25,400 --> 00:05:26,770 Mislil mehurček. 125 00:05:26,770 --> 00:05:29,670 >> Zdaj teče program znova vidimo, da so ribe 126 00:05:29,670 --> 00:05:31,580 tega ne bo prekinil z mislimi lakote, ko 127 00:05:31,580 --> 00:05:33,820 Ženski puder so zunaj. 128 00:05:33,820 --> 00:05:36,820 Končno imamo problem je, da je cheesy puder ne presegajo 129 00:05:36,820 --> 00:05:39,800 stran po ribah, citiram konec citata, "poje" njih. 130 00:05:39,800 --> 00:05:42,305 Od rib skriptov, ni enostaven način za skrivanje sirast 131 00:05:42,305 --> 00:05:44,710 puder, zato moramo poslati sporočilo na sirast puder 132 00:05:44,710 --> 00:05:46,780 sprite, da se skrijejo. 133 00:05:46,780 --> 00:05:49,550 Mi lahko to storite z drugo spremenljivko, da so sirast puder 134 00:05:49,550 --> 00:05:52,680 sprite ima dostop do, kot tudi rib Sprite. 135 00:05:52,680 --> 00:05:55,720 >> Vendar pa je čistejši način, da to v tem primeru, 136 00:05:55,720 --> 00:05:57,840 ker namesto pošiljanja sporočila v pisavi, ki je 137 00:05:57,840 --> 00:06:00,570 nekje v sredini izvršitve, lahko pošlje 138 00:06:00,570 --> 00:06:03,710 Sporočilo na scenarij, ki je čakal na začetek. 139 00:06:03,710 --> 00:06:07,360 To storimo tako, imajo ribe prenašanja dogodka, enega bomo 140 00:06:07,360 --> 00:06:08,800 pokličite jedel. 141 00:06:08,800 --> 00:06:11,510 Nato bomo ustvarili scenarij za sirast puder, ki bo 142 00:06:11,510 --> 00:06:13,030 čakati na ta dogodek. 143 00:06:13,030 --> 00:06:15,560 To je podobno primeru preslednico, razen, da je to 144 00:06:15,560 --> 00:06:19,250 čas, uporabnik ni tisti neposredno sproži dogodek. 145 00:06:19,250 --> 00:06:22,800 Zdaj je vse, kar moramo storiti, je naš foodFound spremenljivka nazaj 146 00:06:22,800 --> 00:06:25,750 kot neresnično, in smo lahko zdaj dal lačen ribe, kot mnogi 147 00:06:25,750 --> 00:06:28,470 obrokov sirast puder, kakor hoče. 148 00:06:28,470 --> 00:06:30,040 >> Torej ni tako slabo, kajne? 149 00:06:30,040 --> 00:06:33,400 V C, pisanje večnitni programov je bolj zapletena, 150 00:06:33,400 --> 00:06:35,700 ampak osnove so enake. 151 00:06:35,700 --> 00:06:38,690 Kakorkoli že, upam, da boste imeli veliko časa gradijo zabavo 152 00:06:38,690 --> 00:06:41,030 vzporedni programi v Scratch. 153 00:06:41,030 --> 00:06:42,570 Moje ime je Nate Hardison. 154 00:06:42,570 --> 00:06:45,260 To je CS50.