[Powered by Google Translate] Nate HARDISON: Þegar þú hefur fengið mörg forrit opin á a
tölva, það virðast eins og er allt
í gangi á sama tíma.
Til dæmis, þú gætir verið að vinna í a vefur flettitæki eins og
Firefox eða Internet Explorer, hlusta á tónlist í iTunes,
og að skrifa ritgerð með Word.
En undir hetta, forrit í raun
hlaupa einn í einu.
Það er hlutverk stýrikerfi, Windows, Mac OSX eða
Linux, að stjórna öllum þessum aðskildum ferli, sem
forrit eru þekkt, og skipta á milli þeirra þannig að þegar þú
fara frá stöðva Facebook síðuna þína til að vinna á ritgerðinni þinni
aftur, Word er sá sem er í gangi.
>> Stundum, þó, við viljum forrit sig til að geta
að gera marga hluti eins og þetta líka.
Ef þú ert eins og mig, þú hefur sennilega fullt af
mismunandi flipa opna í vafranum, einn fyrir tölvupóst,
einn með dagbók, og svo framvegis.
Við gætum við hverjum flipa sem sérstakt forrit eða aðferð,
eins og Google Chrome gerir, en mörg forrit nota
léttari-þyngd útgáfa af ferli kallast þráð.
>> A þráður er bara annað eining vinnslu, að setja af
leiðbeiningar eða kóða sem hægt er að "keyra", vitna unquote,
samhliða öðrum þráðum.
Þetta er það sem gerir það mögulegt fyrir þig að skoða Facebook
en hlusta á mig í bakgrunni eða til að hafa tvo
YouTube myndbönd spila á sama tíma.
Svo þetta almenna atriði, þekktur sem concurrency, oftast
ekki koma upp svona snemma í tölvunarfræði námskeið
því lægra stigi upplýsingar þurfa umfjöllun um
stýrikerfi og þess háttar.
Hins vegar forritunarmál við notkun við
ársbyrjun CS50, Scratch afla, sumir nifty tól til að
gera það auðveldara að skrifa forrit með mörgum hlutum
gangi í einu.
>> Þegar þú byggir upp grunni forrit, þú ert stöðugt
vinna með þræði.
Hver Scratch handrit, sem er kóðinn blokk sem hefst með
einn af "þegar" þraut stykki, hægt er að hugsa sér
sem sér þráð.
Við skulum líta á einfalt Scratch forrit til að sjá hvernig þetta virkar.
>> Hér höfum við fengið fisk hlut eða Sprite, með tveimur forskriftir
að bæði byrja þegar við smellur the lítill græna fána hnappinn.
Fyrsta handrit stjórna hreyfingu fiskurinn er.
Þegar græna fáninn er smellt fær fiskurinn settur
á vinstri hlið af the skjár, sem heitir svið
snúa til hægri.
Þá, í safn skipana sem mun keyra að eilífu, þangað til við
stöðva program, fiskurinn glides á hægri hlið,
snýr sér við, fer aftur til vinstri, og
snýr sér aftur.
Annað handrit stjórna hugsun aðferð fiskurinn er.
Það kemur í ljós að þetta er svöng fiskur.
Svo eftir að bíða í 3 sekúndur, fiskur verður að hugsa,
"Ég er svöng," fyrir fjórða sekúndu.
Þetta handrit rekur eilífu.
Og eins og við sjáum, að keyra forritið með því að smella á
græna fána birtast bæði skriftum að framkvæma
samtímis.
Fiskurinn fer og hugsar á sama tíma.
>> Þar sem fátækur fiskur lítur svo svöng, við skulum bæta við í sumum
cheesy Puffs fyrir það að borða.
Vonandi munu þeir ekki sundrast í vatni.
Þegar við bætum í öðru Sprite, munum við einnig að vera fær um að
bæta við í skrifta svarar þeirri Sprite.
Og þess vegna, það verður annað sett af
þræði sem mun keyra.
Til að gefa notandanum á stjórn áætlun okkar yfir þegar
svangur fiskur fær mat, segja skulum að þegar Space
Bar er högg, virðast cheesy Puffs á sviðinu fyrir
fiskur að borða.
Áður en við högg the Space Bar, munum við viljum halda cheesy
Puffs falin þannig að fiskurinn getur ekki séð þá.
Til að gera þetta þurfum við að fá nokkra forskriftir fyrir
cheesy Puffs Sprite.
Fyrsta handrit, græna fána, mun bara fela matinn.
Ólíkt öðrum skriftum við höfum skrifað, þetta mun ekki halda
keyra að eilífu.
Það verður að byrja og ljúka mjög fljótlega, rétt þegar við smellur
græna fána hnappinn.
>> Næsta handrit sem við höfum mun bíða fyrir Space Bar til að vera
þrýsta áður en framkvæmd.
Við getum hringt í að bíða eftir notandi inntak "bíða" eða "hlusta"
fyrir atburð.
Og kóða sem keyrir þegar atriði er móttekin eða
heyrt er kallað atburður meðhöndlun kóða.
Space Bar okkar atburður dýraþjálfari mun sýna cheesy úða á
á skjánum þannig að fiskurinn getur borðað þá.
Á þessum tímapunkti, allt er útlit gott.
>> The næstur hlutur sem við þurfum að gera er að reikna út hvernig á að fá
fiskur að átta sig á að það er matur að borða.
Við skulum bæta við öðru þráður í fiski sem stöðugt
tékka hvort það er snerta cheesy úða.
Við gerum þetta í sér þráð þar Þannig að við getum
stöðugt stöðva fyrir mat.
Annars viljum við bara vera fær um að athuga reglulega til matar
á milli svifflug, snúa við, bið, eða hugsa.
>> OK.
Nú skulum hlaupa Scratch kerfi okkar.
Eins og vænta, maturinn felur strax og
svangur fiskur syndir fram og til baka rétt eins og áður.
Þegar við högg the rúm bar, koma cheesy Puffs í augsýn,
og hungraður fiskur segir whoo.
En bíddu, það er skrýtið.
Hvernig koma fiskurinn er "ég er svöng" hugsaði truflar
önnur efni?
Þetta er vegna þess að við ekki setja neina samhæfingu
milli þriggja fisk forskriftir.
Hver er í gangi í eigin þráð þess, sem vissu ekkert hvað
aðrir eru að gera.
Við skulum laga þetta áður en við fara.
>> Samræming milli þræði er erfiður verkefni þar sem að við
ekki skýr stjórn á því hvenær hver þráður rekur eða
ekki hlaupa.
Til að senda skilaboð frá einum þráð til annars, þurfum við að fá
að nota breytu sem við getum sett, eða skrifa, á einum þræði
og lesa í öðrum.
Við skulum búa til breytu sem heitir foodFound sem við getum stillt
við þegar fiskurinn liggur í cheesy puffs.
Jæja, auðvitað viljum við að tryggja að við að setja hann
FALSE upphafi.
Þá, í þræði hugsun fiskurinn er, munum við athuga hvort
fiskurinn hefur fundið mat áður sýna "Ég er svöng"
hugsun kúla.
>> Nú keyra forritið aftur, sjáum við að fiskurinn
ekki fá rofin með hugsanir hungri þegar
cheesy skammtar eru út.
Endanleg Vandamálið sem við höfum er að cheesy Puffs ekki fara
burtu eftir fiskinn, vitna unquote, "borðar" þá.
Frá fiski forskriftir, það er engin auðveld leið til að fela cheesy
skammtar, þannig að við þurfum að senda skilaboð til cheesy puffs
Sprite til að fela sig.
Við gætum gert þetta með annarri breytu að cheesy Puffs
Sprite hefur aðgang að, sem og fiskur Sprite.
>> Hins vegar, það er hreinni leið til að gera þetta í þessu tilviki,
þar sem í stað þess að senda skilaboð til handrit sem er
einhvers staðar í miðri framkvæmd, getum við sent á
skilaboð til handrit sem er að bíða eftir að byrja.
Við gerum þetta með því að hafa fisk útvarpsþáttur atburði, sem við munum
kalla borðað.
Þá munum við búa til handrit fyrir cheesy puffs sem mun
bíða eftir þessum atburði.
Þetta er svipað og að Bar Space atburður, nema að þetta
tíma, sem notandinn er ekki einn beint kveiki á atburðinn.
Nú allt sem við þurfum að gera er að setja foodFound breyta aftur okkar
að rangar, og getum við nú gefið svangur fiskur eins og margir
skammta af cheesy puffs eins og það vill.
>> Svo ekki of slæmt, ekki satt?
Í C, skrifa multi-snittari forrit er flóknara,
en grunnatriði eru þau sömu.
Engu að síður, ég vona að þú hafa a mikill tími að byggja gaman
samhliða forrit í grunni.
Ég heiti Nate Hardison.
Þetta er CS50.