[Powered by Google Translate] Nate HARDISON: Ko imaš več programov odpirati računalnik, se zdi, kot da je vse v teče ob istem času. Na primer, boste morda delo v spletnem brskalniku kot Firefox ali Internet Explorer, poslušanje glasbe na iTunes, in pisanje eseja z besedo. Vendar je pod pokrovom, se programi dejansko teči eno naenkrat. To je naloga operacijskega sistema Windows, Mac OS X ali Linux, upravljanje vsakega od teh ločenih procesih, kot je Programi so znani, ter preklapljate med njimi, tako da, ko gredo od preveritev vaš Facebook stran za delo na vašem eseju spet Beseda je tista, ki se izteka. Včasih, čeprav, želimo programov sami, da je sposoben narediti več stvari, kot je ta, preveč. Če ste kot jaz, boste verjetno imeli kup različne zavihke odpre v spletnem brskalniku, enega za e-pošto, 1 s koledarjem, in tako naprej. Mi lahko obravnava vsako kartico kot poseben program ali proces, kot je Google Chrome ne, vendar mnogi programi uporabljajo lahek različica procesu, imenovanem nit. Nit je samo še ena enota predelave niz navodila ali kodo, ki lahko "prost dostop", citiram, konec citata hkrati z drugimi nitmi. To je tisto, kar omogoča, da za brskanje Facebook Med poslušanjem se mi v ozadju ali do 2 YouTube video posnetke predvajal ob istem času. Torej, to splošno temo, znan kot vzporednosti, običajno ne prihaja do tako zgodaj tečajev računalništva ker nižji ravni podrobnosti zahtevajo razpravo operacijskih sistemov in podobno. Vendar pa je programski jezik, ki jih uporabljamo pri začetek CS50, Scratch, ponuja nekaj Izvanredan orodja lažje pisati programe z več stvarmi dogaja naenkrat. Ko gradite Scratch programe, ste nenehno delo z nitmi. Vsak Scratch scenarij, ki je koda blok, ki se začne z eden od "kdaj" koščke, lahko pomislil kot ločeno nit. Oglejmo si preprost program Scratch da vidim kako to deluje. Tu imamo rib predmet, ali Sprite, z dvema skripte da se začnejo, ko smo še malo zeleni gumb zastave. Prvi scenarij Kontrolira ribje predlog. Ko uporabnik klikne na zeleno zastavo, dobi dajo ribe na levi strani zaslona, ​​ki se imenuje faza, obrnjen v desno. Potem, v kompletu z navodili, da boste vedno potekajo, dokler ne bomo program ustaviti, ribe drsi na desni strani, obrne, gre nazaj na levi strani, obrne še enkrat. Drugi scenarij Kontrolira ribje miselni proces. Izkazalo se je, da je to lačen ribe. Torej, ko čakajo za 3 sekunde, se bodo ribe mislim, "Jaz sem lačen," za četrto sekundo. Ta skript deluje tudi večno. In kot smo videli, od teče program s klikom na zeleno zastavo, tako se zdi, da izvajanje skript hkrati. Ribe se premika in misli ob istem času. Ker je slaba riba izgleda tako lačen, greva dodajte v nekaterih Ženski puder za to, da bi jedli. Upajmo, da ne bo razpadla v vodi. Ko smo dodali v drugi Vilenjak, bomo lahko tudi dodaj v skripti, ki ustrezajo tej Vilenjak. In zato se bodo v drugem nizu Niti, da boste teči. Da bi uporabniku našega programa nadzora nad ko lačen ribe dobi hrano, recimo, da kadar koli prostor Bar je udaril, sirast puder pojavi na odru za ribe jedo. Preden smo zadeti preslednico, bomo želeli ohraniti sirast puder skriti tako, da ribe ne morejo videti. Da bi to naredili, bomo potrebovali nekaj scenarijev za Ženski puder Sprite. Prvi scenarij, zelena zastava, bo samo skrivanje hrane. Za razliko od drugih scenarijev, ki smo jih napisali, ta ne bo vodila deluje vedno. To bo začetek in konec zelo hitro, prav, ko smo kliknite zelena zastava gumb. Naslednji skript imamo bo počakati na preslednico, da je pritisnili pred izvršitvijo. Mi lahko pokličete čaka na vnos uporabnika "čaka" ali "poslušanje" za dogodek. In kodo, ki izvaja, ko je dogodek prejme ali Slišal se imenuje dogodek ravnanje kodo. Naša Space obravnavo dogodkov bo pokazal cheesy puder za zaslon, tako da lahko ribe jedo. Na tej točki, vse je videti dobro. Naslednja stvar, ki jo morate storiti, je, da ugotovimo, kako priti do ribe se zavedati, da je hrana za jesti. Naj dodamo še niti za ribe, ki stalno preverjanje, ali se je Touching the cheesy puder. To naredimo v ločenem nit, saj ta način smo lahko stalno preverjati hrano. V nasprotnem primeru, bi le lahko redno preverja za hrano vmes drsenje se je obrnil in čaka, ali misli. OK. Zdaj pa deluje naš blok za program. Kot je bilo pričakovati, je hrana takoj skrije in lačna riba plava sem in tja tako kot prej. Ko smo zadeti preslednico, da sirast puder pridejo v pogledu, in lačna riba pravi Whoo. Čakajte, to je čudno. Kako to, da so ribe v "Jaz sem lačen" Mislil sem, da prekine druge stvari? To je zato, ker ni navedlo nobenega usklajevanja med tremi scenariji rib. Vsak teče v svojem nit, pozablja na tisto, kar počnejo drugi. Naj popravim, preden gremo naprej. Usklajevanje med nitmi je zapletena naloga, saj smo nimajo izrecne nadzora nad ko vsaka nit teče ali ne deluje. Če želite poslati sporočilo iz ene niti v drugo, bomo morali uporabljati spremenljivke, ki jih lahko nastavite, ali pisati, niti v enem in berejo drugi. Ustvarimo spremenljivko z imenom foodFound, da bomo lahko nastavite na Res, ko riba v vodi sirast puder. No, seveda, želimo prepričati, da smo jo nastavite na neresnično začetku. Nato v razmišljanju ribjem nit, bomo preverite, če riba je našel hrano pred prikazom "Jaz sem lačen" Mislil mehurček. Zdaj teče program znova vidimo, da so ribe tega ne bo prekinil z mislimi lakote, ko Ženski puder so zunaj. Končno imamo problem je, da je cheesy puder ne presegajo stran po ribah, citiram konec citata, "poje" njih. Od rib skriptov, ni enostaven način za skrivanje sirast puder, zato moramo poslati sporočilo na sirast puder sprite, da se skrijejo. Mi lahko to storite z drugo spremenljivko, da so sirast puder sprite ima dostop do, kot tudi rib Sprite. Vendar pa je čistejši način, da to v tem primeru, ker namesto pošiljanja sporočila v pisavi, ki je nekje v sredini izvršitve, lahko pošlje Sporočilo na scenarij, ki je čakal na začetek. To storimo tako, imajo ribe prenašanja dogodka, enega bomo pokličite jedel. Nato bomo ustvarili scenarij za sirast puder, ki bo čakati na ta dogodek. To je podobno primeru preslednico, razen, da je to čas, uporabnik ni tisti neposredno sproži dogodek. Zdaj je vse, kar moramo storiti, je naš foodFound spremenljivka nazaj kot neresnično, in smo lahko zdaj dal lačen ribe, kot mnogi obrokov sirast puder, kakor hoče. Torej ni tako slabo, kajne? V C, pisanje večnitni programov je bolj zapletena, ampak osnove so enake. Kakorkoli že, upam, da boste imeli veliko časa gradijo zabavo vzporedni programi v Scratch. Moje ime je Nate Hardison. To je CS50.