[Powered by Google Translate] NATE Hardison: Kun olet saanut useita ohjelmia auki
tietokone, se tuntuu kaiken olevan
käynnissä samaan aikaan.
Esimerkiksi, saatat olla työskentelevät selaimella, kuten
Firefox tai Internet Explorer, kuunnella musiikkia iTunesiin,
ja esseen kirjoittaminen Wordissa.
Kuitenkin konepellin alla, ohjelmat todellisuudessa
suorittaa yksi kerrallaan.
Se on työtä käyttöjärjestelmä, Windows, Mac OSX, tai
Linux, hallita jokainen erillisiä prosesseja, kuten
ohjelmat ovat tunnettuja, ja vaihtaa niiden välillä siten, että kun
mennä tarkistaa Facebook-sivun työstää essee
uudelleen, Word on yksi, joka on käynnissä.
>> Joskus kuitenkin haluamme itse ohjelmia pystyä
tehdä useita asioita, kuten tämäkin.
Jos olet kuten minä, sinulla todennäköisesti on joukko
erilaisia ​​välilehtiä auki selaimessasi, yksi sähköpostin,
yksi kalenteri, ja niin edelleen.
Voisimme hoitaa kukin välilehti erillisenä ohjelma tai prosessi,
kuten Google Chrome tekee, mutta monet ohjelmat käyttävät
kevyempiä versiota prosessia kutsutaan säiettä.
>> Lanka on vain yksi yksikkö käsittely, joukko
ohjeita tai koodia, joka voi "ajaa", lainaus lainaus päättyy,
samanaikaisesti muiden kierteet.
Tämä tekee mahdolliseksi voit selata Facebook
kuunnellessa minulle taustalla tai kaksi
YouTube-videoita pelaa samaan aikaan.
Joten tämä yleinen aihe, kutsutaan samanaikaisuuden, tyypillisesti
ei tule niin aikaisin tietojenkäsittelytieteen kursseja
koska alemman tason tiedot vaativat keskustelua
käyttöjärjestelmiä ja vastaavia.
Kuitenkin ohjelmointikieli käytämme
alussa CS50, Scratch, tarjoaa joitakin näppäriä työkaluja
helpompi kirjoittaa ohjelmia useita asioita
meneillään kerralla.
>> Kun rakentaa Scratch ohjelmia, olet jatkuvasti
kanssa kierteet.
Kunkin Scratch-skripti, joka on koodin lohko, joka alkaa
yksi "kun" palapelin palaset, voidaan ajatella
erillisenä säiettä.
Katsotaanpa yksinkertainen Scratch ohjelman nähdä miten tämä toimii.
>> Täällä meillä kala esine tai sprite, kaksi skriptejä
että molemmat alku kun klikkaa pieni vihreä lippu painiketta.
Ensimmäinen käsikirjoitus ohjaa kalan liikettä.
Kun vihreä lippu napsautetaan, kala saa sijoittaa
vasemmalla puolella näytön, jota kutsutaan vaiheessa,
oikealta.
Sitten joukko ohjeita, jotka juoksee ikuisesti, kunnes
lopettaa ohjelman, kala liukuu oikealle puolelle,
kääntyy, menee takaisin vasemmalle puolelle ja
kääntyy uudelleen.
Toinen käsikirjoitus ohjaa kalan ajattelua.
On käynyt ilmi, että tämä on nälkäinen kala.
Joten kun odottaa 3 sekuntia, kalat ajattelevat,
"Olen nälkäinen" neljättä toinen.
Tämä skripti toimii myös ikuisesti.
Ja kuten näemme, mistä käynnissä ohjelma klikkaamalla
vihreä lippu, molemmat skriptit näyttävät toteuttaa
samanaikaisesti.
Kala liikkuu ja ajattelee samaan aikaan.
>> Koska huono kala näyttää niin nälkäinen, lisätään joissakin
cheesy haikua sitä syödä.
Toivottavasti ne eivät hajoa vedessä.
Kun tähän lisätään toisessa sprite, me myös voitava
lisätä skriptejä joka vastaa sprite.
Ja näin ollen siellä tulee olla toinen joukko
säikeiden juoksee.
Voit antaa käyttäjälle ohjelmamme valvoa, kun
nälkäinen kala saa ruokaa, sanotaanko että aina Space
Baari on osuma, cheesy tyynyt näkyvät vaiheessa
kalaa syödä.
Ennen kuin välilyöntiä, me haluamme pitää cheesy
puffs piilossa niin että kalat eivät näe niitä.
Voit tehdä tämän, tarvitsemme pari skriptit
cheesy suihketta sprite.
Ensimmäinen käsikirjoitus, vihreä lippu, joka vain piilottaa ruokaa.
Toisin kuin muut komentosarjat olemme kirjoittaneet, tämä ei pidä
käynnissä ikuisesti.
Se alkaa ja päättyy hyvin nopeasti, oikealla kun klikkaa
Vihreä lippu-painiketta.
>> Seuraava skripti meillä odottaa Space Bar on
painetaan ennen sen suorittamista.
Voimme kutsua odottaa käyttäjän syötettä "odottaa" tai "kuuntelee"
tapahtumaan.
Ja koodi, joka suoritetaan, kun tapahtuma on saanut tai
kuullut kutsutaan tapahtuman käsittely koodi.
Meidän Space Bar tapahtumakäsittely näyttää cheesy suihketta päälle
näytön niin, että kalat voivat syödä niitä.
Tässä vaiheessa kaikki on hyvä.
>> Seuraava asia meidän täytyy tehdä, on selvittää, miten saada
kalat ymmärtää, että siellä on ruokaa.
Katsotaanpa lisätä toisen langan kalat jatkuvasti
tarkistaa onko se koskettaa cheesy suihketta.
Teemme tämän erillisen säikeen, koska näin voimme
jatkuvasti tarkistaa ruokaa.
Muuten olisimme vain voi tarkistaa säännöllisesti ruokaa
välillä luisto, kääntää ympäri, odottamassa, tai ajattelua.
>> OK.
Nyt ajaa meidän Scratch ohjelmaa.
Kuten odotettua, ruoka välittömästi piilottaa ja
nälkäinen kala ui edestakaisin aivan kuten ennen.
Kun me välilyöntiä, cheesy tyynyt tulevat näkyviin,
ja nälkäinen kala sanoo whoo.
Mutta hetkinen, se on outoa.
Miten tulla kalan "Olen nälkäinen" ajatus keskeyttää
muita juttuja?
Tämä johtuu siitä, että emme ole asettanut yhteensovittamisen
välillä kolme kalaa skriptejä.
Jokainen toimii omalla lanka, tietämättömänä mitä
muut tekevät.
Katsotaanpa korjata ennen kuin siirrymme.
>> Välinen koordinointi kierteet on hankala tehtävä, sillä me
ei ole nimenomaisia ​​valvoa kun jokainen lanka loppuu tai
ei toimi.
Jos haluat lähettää viestin yhdeltä lanka toiseen, tarvitsemme
käyttää muuttujaa että voimme asettaa, tai kirjoittaa, yhden säikeen
ja lukea muiden.
Luodaan muuttuja nimeltä foodFound että voimme asettaa
totta, kun kala joutuu cheesy suihketta.
No, tietysti, haluamme varmistaa, että asetamme sen
false aluksi.
Sitten kala ajattelussa lanka, me tarkistamme onko
kala on löytänyt ruokaa ennen näyttämistä "Olen nälkäinen"
ajatteli kupla.
>> Nyt käynnissä ohjelman uudelleen, näemme, että kalat
ei saa keskeyttää ajatuksilla nälkä kun
cheesy suihketta ovat poissa.
Viimeinen ongelma meillä on, että cheesy tyynyt eivät mene
pois, kun kala, lainatakseni lainaus päättyy, "syö" niitä.
Kaloja skriptejä, ei ole helppo tapa piilottaa cheesy
puffs, joten meidän täytyy lähettää viestin cheesy suihketta
sprite piiloutua.
Voisimme tehdä tästä toisen muuttujan että cheesy suihketta
sprite on pääsy, sekä kalan sprite.
>> Kuitenkin on olemassa puhtaampi tapa tehdä tämä tässä tapauksessa,
koska lähettämisen sijaan viestin kirjoitus, joka on
jossain keskellä suorituksen, voimme lähettää
viestin skripti, joka odottaa aloittaa.
Teemme tämän ottaa kala lähettää tapauksessa yksi käymme
soita syönyt.
Sitten luomme käsikirjoituksen cheesy puffs joka
odottaa tätä tapahtumaa.
Tämä on samanlainen kuin välilyöntinäppäintä tapauksessa, paitsi että tämä
aika, käyttäjä ei yksi suoraan laukaisee tapahtuman.
Nyt meidän täytyy tehdä, on asettaa meidän foodFound muuttuja takaisin
arvoksi false, ja voimme nyt antaa nälkäinen kala niin monta
annosta cheesy tyynyt koska se haluaa.
>> Joten ei ole kovin paha, eikö?
C-, kirjoitus-monisäikeinen ohjelmia on monimutkaisempi,
mutta perusasiat ovat samat.
Anyway, toivottavasti on hyvä aika rakentaa hauskaa
samanaikainen ohjelmia Scratch.
Nimeni on Nate Hardison.
Tämä on CS50.