Sisällysluettelo

Scratch ohjelmointia

Opitaan ohjelmoinnin perusteet havainnollisesti graafisella ohjelmointikielellä


2015-03-12

/ Heikin pohteita/ Ohjelmointia, matematiikkaa, fysiikkaa … Scratch ohjelmointia / Harjoitus: proseduraalisen ohjelmoinnin perusrakenteet Scratchilla

 

Harjoitus: proseduraalisen ohjelmoinnin perusrakenteet Scratchilla

../xml/Programming/Scratch/scratchKuvat/EsittelyKuva.png

Kuva 1.

 

Seuraavan harjoituksen tarkoitus on tutustuttaa proseduraalisen ohjelmoinnin perusajatukseen. Samalla voi tutustua ohjelmoinnin alkuopetusta varten kehitettyyn Scratch -ohjelmointiympäristöön.

Maaliskuu 2015

Proseduraalisen ohjelmoinnin ja oli-ohjelmoinnin periaatteet ovat pysyneet samoina ainakin viisikymmentä vuotta. Monet yleiset ohjelmointikielet kuten C++, Java, Python, perustuvat proseduraalisen ohjelmoinnin ja olio-ohjelmoinnin periaatteisiin.

Joihinkin tarkoituksiin sopii proseduraalista ohjelmointia paremmin esimerkiksi funktionaalinen ohjelmointi tai logiikkapohjainen ohjelmointi , mutta hyödyllisintä on aloittaa ohjelmoinnin opiskelu perehtymällä proseduraaliseen ohjelmointiin ja olio-ohjelmointiin.

Tämän harjoituksen tarkoitus on tutustuttaa proseduraalisen ohjelmoinnin keskeisiin asioihin, kuten kontrollirakenteisiin ja muuttujiin. Teemme ohjelman — algoritmin, joka piirtää kuvan 1 kaltaisia geometrisia kuvioita. Moinen kuvio tuskin sinänsä säväyttää ketään videopelien maailmaan tottunutta, mutta teemmekin piirto-ohjelman, koska scratch-kielisen piirto-ohjelman käskyjen vaikutus havainnollistuu selkeästi ohjelmoijalle. Geometristen kuvioiden piirtelyn myötä pääsee samalla harjoittelemaan geometrista ajattelua. Luvun lopussa on esimerkki olio-ohjelmoinnista Scratchilla.

Käynnistä scratch ohjelmointiympäristö tästä ja valitse kokeile sitä (tai try it out, jos selaimesi ei suosi suomen kieltä). Sinun pitäisi päästä vaiheen 1 mukaiselle aloitussivulle.

../xml/Programming/Scratch/scratchKuvat/alku.jpg

Vaihe 1: Aloitussivu. Mikäli aloitussivu on englanniksi, voit vaihtaa kielen suomeksi klikkaamalla mustan nuolen osoittamaa maapallonkuvaa.

 
../xml/Programming/Scratch/scratchKuvat/ekaLiike.jpg

Vaihe 2: Scratch-ohjelmia tehdään vetämällä keskipalkista ohjelmalohkoja oikealle työtilaan. Valitse aluksi mustalla ympyröidyltä alueelta tapahtumat ja vedä sieltä työtilaan lohko kun klikataan+vihreän lipun kuva. Hae muut kuvan lohkot valikoista kynä ja liike ja "naksauta" ne paikoilleen. Kirjoita valkeisiin soikioihin järkevät luvut. Komento liiku 100 askelta siirtää oikealla ylhäällä olevassa laatikossa näkyvää kissaa sata "askelta". Huomaa, että "hiekkalaatikon" koko on muutama sata "kissanaskelta" suuntaansa.

Ohjelmasi on valmis. Klikkaa kissan "hiekkalaatikon" ylälaidassa olevaa vihreää lippua. Jos kaikki meni hyvin, kissa siirtyi ja piirsi viivan.

 

Hyvä työtä säästävä tapa on tallentaa ohjelma uudella nimellä ennen kuin alkaa tehdä isoja muutoksia. Klikkaa yläpalkista tiedosto — lataa tietokoneellesi. Anna tiedoston nimeksi vaikka "piirtely-v1". Seuraavalla kerralla tallenna ohjelma nimellä "piirtely-v2" jne. Jos jossain vaiheessa satut sotkemaan ohjelmasi tosi pahasti, voit ladata edellisen version eikä sinun tarvitse aloittaa kaikkea alusta. Pienet virheet voi korjata yläpalkin komennolla muokkaa — peruuta.

../xml/Programming/Scratch/scratchKuvat/ekaLiikejaReset.png

Vaihe 3: Tee kuvan oikean laidan mukainen "siivousohjelma", joka palauttaa kissan ja "hiekkalaatikon" alkutilaan. Vaikka kissasi karkaisi näytön ulkopuolelle, voit kutsua sen takaisin painamalla välilyöntiä. Samalla vanhat piirrokset pyyhkiytyvät pois.

(Minun mielestäni Scratchissä pitäisi olla valmiina reset-komento, joka tekisi ylläolevan.)

 
../xml/Programming/Scratch/scratchKuvat/Kolmion_osat.png

Vaihe 4: Hae kuvan ohjelmalohkot valikosta ja kokoa niistä ohjelma, joka piirtää kolmion. Oikeaa kääntymiskulmaa voi olla vaikea keksiä. Voit nousta seisomaan ja kävellä kolmion muotoisen polun. Montako astetta käännyit kaikkiaan?

 
../xml/Programming/Scratch/scratchKuvat/OsatRepeatKolmio.png

Vaihe 5: Kolmiota piirtävässä ohjelmassa toistuu sama komentosarja kolme kertaa. Kokoa kuvan lohkoja käyttäen ohjelma, joka piirtää kolmion. Sujauta toistettavat komennot toista-lohkon haarukkaan.

 
../xml/Programming/Scratch/scratchKuvat/sanoKaannos.png

Vaihe 6: Kissa piirtää kuvan niin nopeasti, ettei sen liikkeitä ehdi seurata. Laita kissa pysähtymään ja sanomaan "käännös" kolmion joka kulmassa, sujauttamalla sano-käsky sopivaan kohtaan ohjelmaa.

 
../xml/Programming/Scratch/scratchKuvat/teeMuuttuja.png

Vaihe 7: Entä jos haluaisimme piirtää neliön tai mikä hyvänsä monikulmion? Helppo juttu. Toistetaan komennot useamman kerran ja käännytään kussakin kulmassa vähän vähemmän. Tätä varten tarvitsemme muuttujan, joka kertoo, montako kulmaa haluamme kuvioomme.

Valitse tieto-valikosta komento tee muuttuja ja anna sille nimeksi vaikka KulmienLkm. Laiskempi ehkä antaa muuttujalle nimeksi n tai lkm. Näin pienessä ohjelmassa tuskin unohtuu, mitä varten muuttuja on luotu.

 
../xml/Programming/Scratch/scratchKuvat/KulmienLkm.png

Vaihe 8: Lisää ohjelmaasi oheiset lohkot niin, että se piirtää minkä hyvänsä monikulmion. Kulmien lukumäärälle pitää asettaa haluttu arvo ennen toista-lohkoa. Toistoja tehdään KulmienLkm kertaa. Vihreä pallukka suorittaa jakolaskun. Sillä voi laskea kääntymiskulman, joten sijoita se lohkoon käänny ja sijoita jakolaskuun sopivat arvot ja muuttujat.

Kokeile, toimiiko ohjelmasi. Hienoa, jos toimii. Läheskään aina ohjelma ei toimi ekalla yrityksellä ja virheen etsiminen voi olla rasittavaa. Ohjelmointi on kiehtovaa ja koukuttavaa, mutta joskus myös raskasta.

 
../xml/Programming/Scratch/scratchKuvat/Piiri.png

Vaihe 9: Jos piirsit ohjelmallasi esimerkiksi 13-kulmion, se saattoi venyä kuvaruudun ulkopuolelle. Muuta ohjelmaasi niin, että monikulmion piiri on kulmien lukumäärästä riippumatta sama.

Tee muuttuja piiri ja laita sille ohjelman alussa, ennen toista silmukkaa joku järkevä arvo. Senjälkeen aseta sivun pituudeksi piiri/KulmienLkm eli liiku kerrallaan piiri/KulmienLkm. Kuvassa näet tarvittavat lohkot.

 
../xml/Programming/Scratch/scratchKuvat/kysyNkulmat.png

Vaihe 10: Entäpä jos kissa kysyisi, minkälaisen monikulmion haluamme piirtää?

Sijoita kysymys ohjelman alkuun ennen kuin tarvitset tietoa kulmien lukumäärästä. Sen jälkeen loksauta vastaus sinne, mihin olet tähän asti kirjoittanut käsin muuttujien lukumäärän.

 
../xml/Programming/Scratch/scratchKuvat/Laskuri.png

Vaihe 11: Harjoitellaan lisää muuttujien käyttöä. Tee muuttuja Laskuri , jolla seuraamme, montako sivua kissa on jo piirtänyt.

Aseta Laskurin arvoksi 0 ohjelman alussa ja lisää sen arvoa yhdella aina kun on tullut piirrettyä lisää yksi sivu. Muuta komento sano käännä niin, että kissa sanoo, montako sivua se on jo piirtänyt. Eli korvaa "käännä!" muuttujalla Laskuri.

 
../xml/Programming/Scratch/scratchKuvat/pikkuKolmio.png

Vaihe 12: Kokoa kuvan mukainen lohko ja sujauta se monikulmio-ohjelmasi toista-lohkon sisään aiempien komentojen lisäksi. Koeta, mitä tapahtuu.

 
../xml/Programming/Scratch/scratchKuvat/pikkuKolmiot.png

Vaihe 13: Minulle kävi näin. Jos laitoit lohkon eri paikkaan kuin minä, sait varmaankin vähän toisenlaisen kuvion.

 
../xml/Programming/Scratch/scratchKuvat/Lopetus.png
Vaihe 14: Lisää oheiset komennot ohjelmaasi niin, että kuvion piirrettyään kissa siirtyy sen sisään kuten kuvassa 1. 

Vaiheissa 12 ja 13 piirsit monikulmion nurkkaan pienen kolmion. Muuta ohjelmaa niin, että joka kulmaan piirtyy iso monikulmio pienoiskoossa niin, että kunkin sivun pituus on viidesosa ison kuvion sivun pituudesta eli pienemmän kuvion piiri on viidesosa isomman kuvion piiristä. Voit joko luoda uuden muuttuja vaikka nimellä piiri2 ja käyttää sitä sisemmässä toista-haarukassa tai käyttää kahta sisäkkäistä jakolaskua. (Tämä tehtävä saattaa vaatia pikkuisen miettimistä ja kokeilua.)

Scracthilla voi tehdä paljon muutakin, monen mielestä ehkä hauskempaakin kuin monikulmioiden piirtely, joten kannattaa tutustua scratchin aloitussivun oikean laidan tutoriaaleihin. Voit vaikka tehdä ohjelman, jossa kissat tanssivat, mikäli geometria alkaa tympiä. Voit myös vilkaista lisäharjoituksia , jotka esittelevät muutamia ohjelmoinnin perusrakenteita.


 

Kiitokset

Helsingin yliopiston aineenopettajakoulutuksessa valmistelimme ryhmätyönä ohjelmoinnin oppitunnin. En tiedä, vastaako ylläoleva ensinkään ryhmän muiden jäsenten ajatuksia, mutta joka tapauksessa ylläoleva perustuu ryhmätyössä oppimaani.