Riistvarast

Arvuti struktuur ja põhikomponendid

fg

Suvaline arvuti, üldisemalvõiks öelda - programmjuhtimisega seade (PJS): arvuti, telefon, robot jm, koosneb või kasutab tüüpiliselt järgmisi seadmeid:

  • protsessor(id): personaalarvutitel tavaliselt 1...4
  • sisemälu: muutmälu (RAM), püsimälu(ROM)
  • laienduskaardid: videokaart, helikart, võrgukaart ...
  • välismälu: kõvakettas, DVD, mälupulk, ...
  • sisend- / väljundseadmed: hiir, kuvar, klaviatuur, kõlarid, mikrofon jm
  • lokaalne ja globaalne (Internet) võrk

Kõikide seadmete liikide osas valitseb väga suur mitmekesisus ning tänapäeval rakenduse koostaja ei pruugigi alati teada, millise konkreetse arvutiga ta parasjagu töötab. See käib näiteks ka Scratch 2.0 kohta, kus rakenduste loomine ja täitmine võib toimuda nii kohalikus arvutis instaleeritud tarvara abil kui ka brauseri vahendusel nö "pilvedes" - Scratchi koduserveris. Scratch 2.0 rakendusi saab täita ka veebidokumentidesse salvestatud Flashi kasutajaliidestes (klippides).
Alguses ei pea rakenduste koostaja, eriti Scratchi kasutamisel. väga täpselt teadma riistvaraga seotud tehnilisi küsimusi, kuid järkjärgult võiks üritada süvendada sellealaseid teadmisi. Arvatavasti lugeja teab, et informatsiooni salvestamine ja töötlemine toimub kahendsüsteemis, iformatsiooni esituse põhiüksuseks on bait, mis koosneb 8-st bittist. Bitt on informatsiooniühik, sellel saab olla ainult kaks väärtust: 0 või 1. Edaspidise jaoks on kasulik omada ettekujutust informatsiooni esitamisest arvutis.

Informatsiooni esitamise põhimõtte

Märkandmed: eeskätt arvud ja tekstid, esitatakse rahvusvaheite standarditega reglamenteeritud koodeerimissüsteemide abil. Peamine kodeerimissüsteem on ASCII (American Standard Code for Information Interchange), viimasel ajal ka UNICODE. Arvude jaoks, milledega tehakse arvutusi, on spetsiaalsed kodeerimissüsteemid, mis võimaldavad esitada arve tunduvalt kompaktemalt ja täita tehteid kiiremini, kui seda võimaldab ASCII. Need kodeerimissüsteemid teatud määral sõltuvad arvuti (protsessori) liigist ja operatsioonisüsteemist. Esialgu ei ole neid asju vaja eriti täpselt teada, kuid on kasulik teada et täisarvude ja reaalarvude salvestamisel kasutatakse erinevaid viise. Scratchis valib süsteem salvestusviisi ise, kuid mõnikord kaudselt tuleb sellega kokku puutuda (n. ümardamise probleemid). Esialgse visiooni tekitamiseks, on allpool toodud mõned näited.

koodid

Graafika- ja heliandmete salvestatakse kindlate standarditega määratud vormingutes. Scratchi kasutamisel täpsemat infot vormingute kohtaeriti vaja ei ole. Nende andmete käsitlemist Scratchis vaadeldakse eraldi. On kasulik teada ja arvestatada kahe erineva graafika esitusviisiga: rastergraafika ja vektorgraafika. Neid saab kasutada Scratchi joonistamisredaktoris, pilide loomisel ja redigeerimisel. Programmides erinevustega ei arvestada.

Arvutis täidetav programm on alati masinakeeles ehk masinakoodis. Masinakeel, on setud konkreetse protsessori liigga (Intel, AMD, IBM jm). Keel koosneb elementaarsetest käskudest: liitmine, lahutamine, korrutamine, võrdlemine, suunamine jm. Allpool on toodud võimalik masinakeele nn kolmeaadressiline käsk. Lihtsustalt käsk koosneb käsukoodist (n 110 - korrutanine) ja kolmwat aadressist, mis näitavad mäluvälju, kust võtta operandid ja kuhu salvestada tulemus. Taolisele masinakäsule vastab näiteks taoline omistamislause c = a * b enamikus programmeerimiskeeltes või korkask Scratchis.

kask

Translaator

Masinakeeles vist praegu juba keegi ei programmeeri. Kasutatakse erinevaid nn kõrgtaseme programmeerimiskeeli (C, C++, C#, Java, Python, PHP, Scratch, Logo, Alice jt). Kõikide programmeerimissüsteemide kõige tähtsam osa on spetsiaalne programm: translaator, mis tõlgib programmi lähtekeelest vastava arvuti protsessori masinakeelde. On kaks translaator tüüpi:

  • kompilaator ja
  • interpretaator

Veidi lihtsustatult.
Kompilaator tõlgib masinakeelde korraga terve masinakeelse programmi, mida saab kasutada ilma, et oleks enam vaja seda progammeerimisüsteemi ja translaatorit, millega programm loodi. Windows'is on tegemist nn EXE-failiga. Kompilaatori poolt loodud programmu töö on kiirem, kui interpreteeritava programmi töö.
Interpretaator tõlgib (interpreteerjb) programmi masinakeelde osade kaupa. Kuidas ja kui palju korraga, sõltub realisatsioonis, sageli on selleks käsk või skript. Programmi täitmiseks on alati vaja ka interpretaatorit ja programmi töö on aeglasem. Võrreldes interpretaatoriga, on programmi loomine lihtsam ja paindlikum.

Mõnikord translaator tõlgib lähteprogrammi kõgepealt nn vahekoodi ja juba sealt masinakoodi. Allpool on toodud taolise töötluse üsna tinglik skeem (mudel).

proge

Virtuaalarvuti

Toodud lihtsustatud arvutimudel ja selle tööpõhimõtete käsitlemine tugineb eeskätt Scratchi programme töödeldavatele süsteemidele, kuid üldised põhimõtted on praktiliselt samad kõikides programmjuhtimisega süsteemides, kus kasutatakse mälus salvestatud andmeid ja programme.
Tänapäeval on rakenduse looja ja kasutaja jaoks määravaks mitte riistvara, vaid vastav tarkvara: eeskätt programmeerimis- ehk arendussüsteem nagu näiteks Scratch. See loob kasutaja jaoks võiks öela nö virtuaalarvuti, mida võiks nimetada ka Scratch-arvutiks, Scratchi, nagu paljude teiste nn interpreteeritavate programmeerimissüsteemide, peamisteks komponentideks on:

  • redaktor
  • interpretaator

Redaktor on vahendite kompleks, mille abil toimub rakenduse loomine, redigeerimine ja silumine. Sctatchis see seisneb peamiselt skriptide koostamises.
Interpretaator korraldab rakenduste täitmist arvutis.Rakenduse looja seisukohast on just interpretasator see, mis täidab programme ja selle tööpõhimõtetega on kasulik olla veidi kursis. Interpretaator eraldab OSi vahendusel täitmisele kuuluvale programmile või selle üksusele (skriptile) tööpiirkonna sisemälus: programmiploki ja andmeploki. Nagu ütlevad nimetused: sisaldab esimene prokrammi üksusi (skripte), teine - andmeid. Interpretaatori juhtplokk loeb järjest programmiplokist programmi käske, teeb kindlaks, mida on vaja teha ning annab teistele komponentildele, eeskätt täiteplokile, korraldused vastavate tegevuste täitmiseks.
Toodud skeem ja järgnevad kirjeldused kajastavad eeskätt programmide täitmise põhimõtteid, mille tundmine ja teadvustamine on esmatähtis programmide loojale.

arvuk

Andmed

Rakenduse loojale oleks väga kasulik teada ja tunnetada andmete ja andmeploki olemust ja põhiomadusi. Programmisüsteemi spetsifikatsioonisga on täpselt määratletud andmete liigid ja organsatsioon ning fikseeritud võimalikud tegevused ja operatsioonid sõltuvalt liigist ja organisatsioonid.

  • graafikaobjektid: spraidid, kostüümid, taustad, pildid
  • heliobjektid ehk heliklipid: kõne, muusika, laulud
  • muutujad ja märkandmed: arvud ja tekstid,
  • loendid ehk andmekogumikud
  • graafikaandmed ehk joonistused,
  • helindid ehk hetkehelid: noodid

Näide "Krapsu sünnipäev"

Allpool esitatud Flashi klipis on toodud kõikide peamiste andmeliikide ja mõnede skriptide kasutamise näited. Ei tasu püüda saada kohe aru kõikidest detailidest. Hiljem võib pöörduda tagasi, käivitades ka toodud lingilt rakenduse Scratchi koduserveril. Siis saate tutvuda täpsemal rakenduse struktuuriga, teha ka programmis muudatusi ja täiendusi, veebi klipi kasutamisel skripte ei näe ja neid muuta ei saa. Kui Teil on instaleeritud oma arvutis Scratch 2.0, võite käsuga Fail/Lae oma arvutisse, salvestada rakenduse oma arvutisse,

 

Rakenduses on kasutusel üks aktiivne sprait: Kraps, sellel on kaks kostüümi, mis kujutavad endast graafikaobjekte (pilte). Kasutusel on ka kaks, võiks öelda passiivset spraiti: skriptide pildid ja selgituste tekst. Rakenduse töötavad skriptid asuvad loomulikult skripide alas, siin kasutakse nende pilte illustratsiooniks ja selgituseks. Formaalselt on tegemist spraitidega, milledel on mitu kostüümi. Klõpsates spraiti, saab näha järgmist kostüümi (paegu järgmise skripti pilti).
Ega vist erilisi segitusi vaja ei ole vaja, rakendus näitab ja räägib ise. Kuid alustuseks veidi siiski. Kõigepealt Kraps viikse käsuga [mine x..., y...] eteantud punkti, ta jääb skripti pildi varju. Seejärel käskudega [mängi heli...] mängitakse kaks heliklippi "tere" ja "birthday". Esimine on lindistatud heliklipp ja skript ootab seni kuni see täidetakse, teine on importditud süsteemi heliteegist. Selle käsu korral ei oodata lõpetamist, vaid minnakse kohe edasi.
Korduskäsu [korda n] ja selle sisekäskudega pannakse Kraps liikuma ja imiteerima käimist. Muutuja n liuguriga saab muuta piiratud ulatuses liikumise kaugust.
Järgmise korduse käskudega imiteeritakse Krapsu hüppamist. Hüpete (korduste) arv (3 kuni 5) määratakse juhuarvude funktsiooniga. Hüppete kõrgust saab valida muutuja h liuguri abil.
Edasi käsk [teata Salto] paneb käima skripti, mis märab, et Kraps teeb pöörde 360 kraadi (30*12) ja ühtlasi joonistab ringi, mis hakkab olema sõõrina tema ümber. Joonistada saab iga sprait, liikudes ja kasutades pliiatsi käske.
Skriptist Salto käivitakse käsuga [teata Kes] skript, milles Kraps kutsub sünnipäevale külalisi. Siin demonstreeritakse loendie ehk massiivide kasutamist. Loendite kasutamist vaadeldakse täsemalt hiljem.
Edasi aga vaadeldakse veidi täpsemat ernevat liiki andmete salvestamist arvutis ja tüüpilisi tegevusi nendega,

Graafikaobjektid

Graafikaobjektid on olulisemad Scratch programmide komponendid. Scratchi peamine objekt: spraitkoosneb ühest või mitmest kostüümist, mis on lihtsalt graafikaobjekt: pilt. Kasutatakse erineva vormingus graafikat: JPG, BMP, PNG, GIF (kaasaarvatud animeeritud GIF). Süsteemis on olemas suur valik spraite (täpsemalt kostüüme: graafikaobjekte) ja saab kasutada oma graafikafaile spraitide loomiseks, lihtsalt importideks neid projekti. Seega võiks veelkord öelda, et peamine Scratchi programmides seisneb graafikaobjektide kasutamises. Ühtlasi see võimaldab tutvuda objektorienteeritud lähenemisviisiga ja modelleerimisega.
Info rakenduses kasutatavate spraitide kohta salvestatake rakenduse tööpiirkonna andmeplokis. Lisaks kostüümide graafilisele kujutistele, hoitakse spraidi kohta ka muid andmeid ehk selle omaduste väärtusi; kostüümide arv ning nende nimed, asukoht (koordinaadid laval), suurus, suund ja pöördenurk jm. Neid omadusi kasutatakse ja muudetakse skriptide täitmisel. Ühe spraidi põhiomadused on samad, Näideks, kui muudetakse spraidi asukohta laval või suurust, siis tehakse seda korraga kõikide kostüümide jaoks. Igal ajahetkel on nähtav üks nn aktiivne kostüüm (kui sprait ei ole peidetud või ei ei ole teise spraidi all), Aktiivset kostüümi saab muuta nii programmselt kui ka "käsitsi" rakenduse loomise faasis.
Lava võib vaadelda eriliiki spraidina. Lava on projektis alati üks, taustu võib olla mitu. Oma olemuselt vastavad taustad kostüümidele: on samuti lihtsalt graafikaobjektid. Lava on alati üks suurus (sõltub lava olekust: normaalne, väike, suur), ta ei saa liikuda ja täita mõningaid funktsioone (n. joonistamind).
Tinglikult võib eristada aktiivseid ja aktiivseid spraite. Aktiivne sprait (skriptide toimel) täidab mingeid tegevusi: liigub, tantsib, arvutab, joonistab jm, Passiivne sprait, võiks öelda, on lihtsalt dekoratsiooniks või informatsiooni (n teadete) esitamiseks.
Spraitide ja lavaga seotud andmete salvestamise vormingu valib süsteem ja rakenduse looja ei pea selle eest eriti muretsema. Rakenduste loomise ajal ei saa lisada või eemaldada spraite, kostüüme ja taustu ning muuta nende struktuuri ja väljanägemist. Küll aga saab seda teha loomise faasis, kasutades vastavaid käske ja joonistamisredaktorit.

graafK

Tegevuste määramiseks graafikaobjektidega on Scratchis suur hulk käske. Võiks isegi öelda, et põhiosa neist on just mõeldud manipuleerimiseks spraitidega (asukoha, suuruse, värvuse muutmine jm) või spraitide poolt täidetavate tegevuste (arvutamine, joonistamine, rääkimine jm). Käskude abil loodud programmiüksus: skript, kuulub ainut ühele spraidile ja saab määrata ainult selle tegevusi. Taoline käsitlus on üsna lähedane objektorienteeritud programmerimis-süsteemides (Java, C, Python jt) kasutatavates meetodite kasutamisele.
Efektiivsete ja paindlike rakendute loomiseks on otstarbekas kasutada juhtimiskäske korduste ja valikute kirjeldamiseks. Neid sab kasutada ka teiste andmeliikide töötlemise ning taolised käsud on kõikide programmeerimiskelte lahutamatu osa. Spraidid ja lava reageerivad teatud sündmustele: hiireklõps, vajutus kindlale klahvile, teate saamine teiselt spraidilt (skriptilt) jm. Seda kasutatakse laialdaselt programmide töökorralduses.

Heliobjektid ja helindid

Heliandmed leiavad tänapäeval üha laiemat kasutamist infotehnoloogias. Seda eeskätt mäluseamete mahu ning andmete ülekande kiiruse olulisele kasvusele. Ka Scratch 2.0 on olulist tähelepanu pööratud heliandmete kasutamisele. Rakenduste loojale on nende kasutamine oma projektides väga lihtne. Saab kasutada MP3 ja WAV faile. Neid saab importida vastava vorminguga failidest või lindistada ise.
Iga spraidil ja laval on vaheleht Helid (v'i Helindid), kus on juurdepääs heliobjektide haldurile, mille abil saab importida, lindistada ja redigeerida heliandmeid.

heli

Scratch 2.0-s on võrdlemisi efektiivsed ja paindlikud vahendid heli salvestamiseks ja redakteerimiseks (eeskätt kõne), Heliredaktor kuvab linndistatud heli "lainete" pildi. Saab kuulata lindistaud heli ja peatada seda vajalikus kohtades, kerida edasi ja tagasi. Nö tavaliste redigeerimise käskude (kopeeri, lõika, kleebi, eemalda jm) abil, saab muuta salvestatud heli. Saab muuta ka lindistatud heli vaiksemas ja tugevamaks.
Olemasoleva heliklipi saab käivitada skripti täiitmisel käsuga [mängi heli nimi] või [mängi heli nimi kuni valmis].

Helindite kasutamisel siin pikemalt ei peatu. Neid saab panna kõlama käskudega [mängi nooti nr ...] ja [mängi trummi nr ...]. Käskudest koostatud skriptide abil saab koostada lihtsamaid komposatsioone, kui selleks peab veidi tundma muusikat.

Muutujad

Muutuja on keskseks mõisteks kõikides pr0grammeerimiskeeltes. Nende kasutamine sageli tekitab algajale programmeerijale teatud probleeme. Üheks põhjuseks on muutuja. matemaatikast tuleneva, liiga abstrakse käsitlemine. Programmeerimises on muutuja näol tegemist hoopis füüsikalise objektiga - mäluvälja ehk mälupesaga. Mäluvälja kasutatakse muutuva suuruse salvestamiseks, kusjuures väärtus programmi täitmisel ei pruugigi muutuda.

Muutuja on nimega varustatud koht arvuti mälus: mäluväli ehk pesa. Programm saab salvestada muutujasse (mäluvälja) väärtusi ja kasutada neid hiljem näiteks uute väärtuste leidmiseks. Scratchis luuakse muutuja nö "käsitsi" käsuga Loo muutuja grupis Andmed. Väärtuse salvestamiseks muutujasse ehk omistamiseks kasutatakse Scratchis käsku:
omis. Avaldis leiab väärtuse, kasutades tavaliselt varem leitud väärtusi. Saadud väärtus salvestatakse antud muutujas (muutujale eraldatud väljas). Algoritmides ja tekstipõhistes programmeerimiskeeltes esitatakse omistamiskäsk (lause) kujul: muutuja = avaldis, olemus on sama. Muutujat võib käsitleda eriliiki objektina, mille põhiomadusteks on: nimi, väärtus, välja pikkus.

Allpool on toodud skeem, mis näitab muutujate esitamise põhimõtted arvuti sisemälus.

malu

Näide "Korrutamine"

Rakendus simuleerib (imiteerib) programmi täitmist virtuaalarvutis. Põhirõhk on siin muutujate kasutamisel, kuid peegeldatakse ka mõningaid teisi elemente. Objektide ja veidi ka muutujate kasutamist oli demonstreeritud ka esimeses näites "Krapsu sünnipäev".
Rakendus loob sisefunktsiooni abil kaks juhsliku arvu ja kuvab korrutamise ülesande, loeb kasutaja vastuse ja hindab seda. Rakenduses on kasutusel kolm muutujat: a ja b - operandid ja vastus - kasutaja poolt sisestatud vastus.
On esitatud kaks varianti:

  • algoritm pseudokoodis (D_algo)
  • Scratchi skript (D_Scratch)

 

Väärtuste väljastamine

Scratch ei saa printida andmeid ega väljastada neid välismälu faili, Andmeid saab ainult kuvada kuvari ekraanile kahel viisil:

  • muutujate monitorides ehk näidikutes
  • käskudega [ütle avaldis] ja [mõtle avaldis] nn kõnebaloonides

Näidikute abil väärtuse kuvamine kaasneb väärtuse leidmisele käskudega
[võta muutuja = avaldis] ja [muuda muutuja avaldis võrra], avadise erijuhuks on konstant või muutuja. Näidikuid saab peita ja kuvada vajalikul hetkel käskudega [peida muutuja...] ja [näita muutujat...]. Muide, taolist väärtuste kuvamise viisi kasutatakse teistes programmeeri-miskeeltes tekstiboksides vormidel.
Käskudes [ütle ...] ja [mõtle ...] saab lasta kuvada suvalisi avaldisi. Naitek toodud avaldis kuvab taolise teate:

ytle

Väärtuste sisestamine klaviatuurilt

Väärtuse lugemiseks klaviatuurilt saab kasutada käsku [küsi...]:kysi
Käsu täitmisel skripti töö peatakse, lava alumisse serva ilmub tekstiväli, kuhu saab tippida vajaliku väärtuse. Ploki sisendväljas olev teade (tekst) kuvatakse kõneballoonis vastava spraidi juures (käsk on spraidi skriptis) või lava alumises ääres (käsk on lava skriptis).

knimi lai

Kui kasutaja tipib tekstiväljas väärtuse (tekst või arv) ja vajutab klahvile Enter või klõpsab märkeringi tekstivälja paremas otsas, võetakse väärtus ploki  vastusväärtuseks. Ploki [vastus] näol on tegemist omamoodi süsteemi sisemuutujaga. Seda võib kasutada avaldistes ja käskudes või selle väärtuse võib omistada muutujale. Järgmise käsu [küsi …] täitmisel asendab uus sisend ploki (muutuja) [vastus] eelmise väärtuse.

Näide "Liikumine"

Antud rakenduses demonstreeritakse korduse ja selles muutujate kasutamist objekti (Krapsu) asukoha muutmiseks. Kasutusel on kaks põhimuutujat: n - kordamiste (sammude) arv ja h - sammu pikkus (pikslites). Igal kordamisel teeb Kraps ühe sammu, vahetab kostüümi ja teeb väikese pausi.
Ka siin on demonstreeritud kahte varianti: algoritmi pseudokoodis ja Scratchi skripte, neid on kaks: Liigu ja Hyppa. Andmed on näidatud veidi lihtsamalt: muutujate näidikute abil. Proovige erinevaid variante ja jälgige kuidas toimub muutujate muutumine.

 

Näide "Naturaalarvude ruutude summa"

Rakendus simuleerib programmi tööd, mis leiab naturaalarvude ruutude summa, Kasutusel on kolm muutujat: k - liikme jooksev number, n - liikmete arv, Sum - liikmete ruutude summa. Siin on näidatud Scratchi spraidi täitmist.

 

 

 

 

Loendid. Maksimumi leidmine

 

 

 

 




 

Objektid_5_

KPP_1

Rehmaatika_