[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.