Ohjelmointi4

Monikulmioiden piirtäminen

Monikulmioiden piirtämisessä konna liikkuu joko eteenpäin tai tekee käännöksiä. Kääntymiskulma määritetään konnan etenemissuunnan suhteen.

Esimerkki 1

Tee ohjelma, jolla voit piirtää suunnikkaan. Tee ohjelma siten, että sitä voi helposti hyödyntää erilaisten suunnikkaiden piirtämiseen. Tutki ohjelman toimintaa suunnikkaalla, jonka sivujen pituudet ovat 85 ja 46 yksikköä. Suunnikkaan terävä kulma on 37°.

Ratkaisu

Tehdään ohjelmaan muuttujat sivu1, sivu2 ja kulma, jotta ohjelmaa voi helposti testata erilaisilla suunnikkailla.

Hahmo tekee käännöksen etenemissuuntansa suhteen. Komento left(37) tuottaa suunnikkaan tylpän kulman, jonka suuruus on (180° − 37° =)143°. Jotta saadaan määritettyä oikea kääntymiskulma, haluttu kulma täytyy vähentää oikokulmasta eli 180 asteesta. 

KOODI

PIIRROS

Ohjelma piirtää erilaisen suunnikkaan muuttujien arvoja muuttamalla.

Tehtävä 3

Tavoitteena on harjoitella kääntymiskulmien laskemista.Tee ohjelma, jolla voit piirtää tasasivuisen kolmion, jonka sivun pituus on 200 yksikköä.

Tehtävä 4 (Palautettava tehtävä)

Tavoitteena on harjoitella kuvion täydentämistä.Tee ohjelma, jolla voit piirtää puolisuunnikkaan.

  • Määritä koordinaatiston piste, josta aloitat piirtämisen. Oletuksena on, että kuvion piirtäminen alkaa pisteestä (0, 0).
  • Liikuta konnaa niin, että vaakasuuntaisen sivun pituudeksi saadaan 45 yksikköä. Sivun jälkeen konnan täytyy kääntyä 90 astetta.
  • Liikuta konnaa niin, että pystysuuntaisen sivun pituudeksi tulee 30 yksikköä. Sivun jälkeen konnan täytyy kääntyä 90 astetta.
  • Liikuta konnaa niin, että pidemmän vaakasuuntaisen sivun pituudeksi tulee 65 yksikköä.
  • Liikuta konna lähtöpisteeseen, jolloin kuvion täydentyy puolisuunnikkaaksi.

Tehtävä 5

Tavoitteena on piirtää kuvio ja laskea sen piiri ja pinta-ala. Tee ohjelma, joka piirtää suorakulmion. Suorakulmion sivujen pituudet kysytään käyttäjältä. Piirtämisen jälkeen ohjelma laskee ja tulostaa kuvion piirin sekä pinta-alan. Sivujen pituuksille ei anneta tässä tehtävässä pituusyksikköä eikä vastaustulosteisiin tule yksiköitä.

Silmukkarakenne For

Jos tiettyä komentoa halutaan toistaa useamman kerran, se voidaan sijoittaa silmukkarakenteen sisään. Silmukkarakennetta toistetaan ohjelmaan kirjoitettujen toistojen verran. Silmukkarakenteeseen kuuluvat komennot sisennetään.

For-silmukkarakenteessa tarvitaan laskuri, joka laskee toistokertojen lukumäärän. Tätä kutsutaan silmukkamuuttujaksi. Silmukkamuuttujaa voi nimetä myös jollakin kirjaimella. Toistojen lukumäärä ilmoitetaan komennolla range().  Kierrosten laskeminen alkaa aina nollasta ja päättyy yhtä ennen viimeistä arvoa, ellei range-komennossa muuta määrätä.




Esimerkki 2

Tee ohjelma, jolla voit tutkia, mitä range()-komento tekee, kun sulkeiden sisään kirjoitetaan
a) 3
b) 1, 10
c) 0, 11, 2.

Ratkaisu
for laskuri in range (1):
print laskuri

for laskuri in range(1, 10):
print laskuri


for laskuri in range (0, 11, 2):
print laskuri



Jos lukujono halutaan tulostaan yhdelle riville, tulostusrivi kirjoitetaan seuraavasti: print laskuri, Numerot tulostuvat tällöin yhdelle riville välilyönnillä erotettuina.

Jos lukujono halutaan tulostaa yhdelle riville luvut pilkulla erotettuna, kirjoitetaan tulostusrivi seuraavasti: print (str(laskuri)+', '),  Numerot tulostuvat yhdelle riville välilyönneillä erotettuna ja myös viimeisen luvun perän tulee pilkku.

Tehtävä 6 

Tavoitteena on harjoitella for-silmukkarakennetta.Tee ohjelma, joka käyttää for-silmukkarakennetta ja piirtää neliön, jonka sivun pituus on 200 yksikköä.

Tehtävä 7 (Palautettava tehtävä)

Tavoitteena on hyödyntää for-silmukkarakennetta.Tee ohjelma, joka hyödyntää for-silmukkarakennetta ja piirtää halutun säännöllisen monikulmion. Piirrä ensin tasasivuinen kolmio.

  • Pyydä käyttäjältä sivun pituus.
  • Pyydä käyttäjältä tieto, kuinka monta kärkipistettä monikulmiossa on. Esim. kolmiossa on kolme kärkipistettä ja neliössä neljä kärkipistettä.
  • Muista muuntaa käyttäjän antamat vastaukset kokonaislukumuuttujiksi (int).
  • Tee for-silmukka, jota toistetaan kärkipisteiden lukumäärän verran.
  • Määritä eteenpäin liikuttava matka.
  • Määritä kääntymiskulma. Se saadaan jakamalla 360° kärkipisteiden määrällä.
  • Testaa ohjelma.
  • Kokeile ohjelman toiminta viisikulmiolla ja kahdeksankulmiolla.
Vihje: tee ohjelma ensin ilman käyttäjältä kysyttäviä tietoja.

Tehtävä 8 (Palautettava tehtävä)

Tavoitteena on harjoitella for-silmukan silmukkamuuttujan hyödyntämistä tulosteissa.Tee ohjelma, joka tulostaa kahden kertotaulun vastaukset.

  • Silmukkamuuttujaa voi käyttää laskulausekkeissa kuten mitä tahansa muuttujaa.
  • Ohjelma tulostaa luvun 2 ja laskurimuuttujan tulon jokaisella silmukkakierroksella.

Sisäkkäiset silmukat*

Silmukkarakenteita voi kirjoittaa sisäkkäin. Ulompi silmukkarakenne etenee vasta sitten, kun sisempää silmukkarakennetta on toistettu haluttu määrä. Molempiin silmukoihin tulee oma silmukkamuuttuja.

Esimerkki 4

Tee ohjelma, joka laskee ja tulostaa oheisen tulosteen mukaiset laskut vastauksineen.  

Ratkaisu

Ohjelman tulee tulostaa kokonaislukujen 1–4 tulot lukujen 5 ja 10 kanssa.

Tarvitaan kaksi silmukkarakennetta. Ulompi silmukkarakenne muodostaa luvut väliltä 1–4. Määritetään uloimman silmukan silmukkamuuttujaksi laskuri1.

Sisempi silmukkarakenne huolehtii viidellä jaollisista luvuista välillä 1–10. Määritetään sisemmän silmukkarakenteen silmukkamuuttujaksi laskuri2.

Tulosteessa tulostetaan näkyviin kertolasku ja sen vastaus.



KOODI

Tehtävä 9

Tavoitteena on harjoitella sisäkkäisten for-silmukkarakenteiden käyttämistä.Tee ohjelma, jolla voit tulostaa kahden luvun summan, kun molemmat luvut ovat väliltä 1–5.

  • Määritä silmukkamuuttuja uloimmalle silmukalle ja sille alue.
  • Määritä silmukkamuuttuja sisemmälle silmukalle ja sille alue.
  • Tulosta summa.

Tehtävä 10

Tavoitteena on harjoitella sisäkkäisten for-silmukoiden käyttämistä. Tee ohjelma, jolla voit tulostaa kertotaulut 1−10. Tulosteessa täytyy näkyä, mitkä luvut kerrotaan ja mikä on niiden vastaus. Esimerkiksi tulosteessa näkyy 7 * 8 = 56.