Tehtäväsarja 1: Perusteet

Kirjoittaminen ja ohjelman kääntäminen Python-ohjelmassa

Ohjelmoinnissa käytetään sovittuja sääntöjä, jotka on ennalta ohjelmoitu ohjelmointikieleen. Halutut käskyt kirjoitetaan tekstieditoriin ja sen jälkeen teksti käännetään. Kääntäminen tapahtuu run-komennolla tai selain-ohjelmassa -painikkeella. Käännetty teksti tulee näkyviin toiseen ruutuun.

HUOM! Kun ohjelma havaitsee koodissa virheen, niin se näytetään “error”-tekstinä. Tekstissä on kerrottu ensimmäinen rivi, missä virhe havitaan. Opettele lukemaan “error”-tekstiä ja selvittämään itse, miksi koodi ei toimi. Tähän oppii vain yrityksen ja erehdyksen kautta.

Alla olevassa kuvassa nähdään, että virhe on rivillä 2 (line 2). Seuraavalla rivillä näkyy virheen paikka.

2

Ohje tehtävien tekoon

Idea on tutustuttaa käyttäjää ohjelmointikieleen. Voit aluksi kokeilla kirjoittaa koodin ja opetella lukemaan error-tekstejä. Jos tämä tuntuu liian haasteelliselta, voit kirjoittaa ratkaisusta koodin Python-ohjelmaan ja “ajaa” koodin kääntäjällä. Kokeile koodin toimivuutta antamalla ohjelmassa arvoja kysymyksiin.

HUOM! Kysy opettajaltasi, miten hän haluaa tehtävän palautettavan: kopioidaanko teksti Docs- tai Word-tiedeostoon ja jaetaanko tiedosto opettajalle vai miten.

Kirjoittamasi koodin voi myös tulostaa tai tallentaa pdf-muodossa.

Tulostaminen = tekstin näyttäminen ohjelmassa

Tulostaminen tapahtuu käskyllä print(). Kun halutaan tulostaa sana, laitetaan sana lainausmerkkeihin.

Esimerkki 1.

Tulosta luku 7 ja sana kettu.

print(7)

print(kettu)

Tehtävä 1.

Lue ohjeet ja kokeile käskyjä Python-ohjelmassa.

HUOM! Älä pyyhi kirjoitettua koodia. Jatka koodin kirjoittamista seuraavalle riville.

print(6) = tulostaa numeron sulkeiden sisältä. Ymmärtää merkin lukuna.

HUOM! Muista painaa play- tai run-käskyä, jotta ohjelma lähtee kääntämään tekstiä.

print(“testi”) = tulostaa tekstin lainausmerkkien sisältä.

HUOM! Älä pyyhi kirjoitettua koodia. Anna uusi käsky seuraavalle riville.

print(“5”) = tulostaa merkin 5 lainausmerkkien sisältä, ei ymmärrä merkkiä 5 luvuksi, vaan “kirjaimena” 5.

HUOM! Voit kirjoittaa käskyn seuraavalle riville. Ohjelmakieli aloittaa lukemisen 1. riviltä ja toteuttaa rivi riviltä käskyt.

Tehtävä 2.

Kirjoita kolme eri tulostusta eri riveille siten, että ohjelma tulostaa kaikki käskyt.

Laskeminen Python-ohjelmalla 

Print käskyn sisään voit sijoittaa normaalit laskutoimitukset \(+,-,*, / \). Myös sulkeet toimivat print-käskyn sisällä.

Tehtävä 3.

Laske seuraavat laskut Python-ohjelmalla.

a) 5+6-9+7*8

b) 5*2*6+9-7+6

c) 2*3+3-(8-6)

HUOM! Älä pyyhi kirjoitettua koodia. Anna uusi käsky seuraavalle riville.

Muuttujat 

Lukujen arvot voidaan tallentaa kirjaimille tai sanoille. Kirjainta tai sanaa sanotaan muuttujaksi.

Tallentaminen tapahtuu kirjoittamalla muuttujan nimi, yhtäsuuruusmerkki ja luku, jota muuttuja käyttää.

Esimerkki 2.

Tallennetaan ohjelmaan muuttujan \(x\) arvoksi luku \(15\).

x=15

Tehtävä 4.

Muodosta muuttuja \(x\) ja anna sille arvo \(6\). Tulosta muuttuja.

Ratkaisu:

HUOM! Älä pyyhi kirjoitettua koodia. Anna uusi käsky seuraavalle riville.

Viimeisen rivin muuttujan arvo

Viimeisin uusi arvo korvaa edellisen muuttuja arvon.

Tehtävä 5.

Korvaa muuttujan \(x\) arvo luvulla \(7\) ja tulosta muuttuja. Tämän jälkeen anna muuttujalle uusi arvo \(9\) ja tulosta muuttuja.

Ratkaisu:

HUOM! Älä pyyhi kirjoitettua koodia. Anna uusi käsky seuraavalle riville.

Tekstin tulostaminen uselle riville

Käsky \n katkaisee tekstin ja tulostaa loput toiselle riville.

Esimerkki 3.

Tulostetaan lause “Koira on musta” kahdelle eri riville.

print("koira \n on musta")

Tehtävä 6.

Tulosta lause homman nimi on matematiikka sekä yhdelle riville ja niin, että rivi vaihtuu jokaisen sanan jälkeen.

Ratkaisu:

HUOM! Älä pyyhi kirjoitettua koodia. Anna uusi käsky seuraavalle riville.

Tietojen kysyminen käyttäjältä

Muuttujan arvot voidaan kysyä käyttäjältä input käskyllä.

Aluksi kirjoitetaan muuttuja, jolle käyttäjän antama arvo tallennetaan, tulostettava teksti kirjoitetaan input käskyn sisään.

Esimerkki 4.

Kysytään käyttäjän nimeä, joka tallentuu muuttujan nimi arvoksi.

nimi=input("Mikä on nimesi? ")

Tehtävä 7.

Kysy käyttäjältä luku, joka tallennetaan muuttujan \(x\) arvoksi. Tulosta muuttujan arvo.

Ratkaisu: (lue alla oleva punainen teksti!)

HUOM! Älä pyyhi kirjoitettua koodia. Jatka koodin kirjoittamista seuraavalle riville.

Muuttuja ja teksti erotetaan tulosteessa pilkulla, teksti tulee lainausmerkkien sisään, muuttuja ei.

Huom! Ohjelma kysyy käyttäjältä arvoa ja odottaa, että arvo annetaan. Kirjoita mustaan pohjaan jokin luku. Kun luku on annettu, ohjelma jatkaa eteenpäin koodissa.


Käyttäjä antaa luvuksi 1000 ja painaa enter. Ohjelma tulostaa luvun.

HUOM! Älä pyyhi kirjoitettua koodia. Jatka koodin kirjoittamista seuraavalle riville.

Tehtävä 8.

Kysy käyttäjältä ikä ja tallenna sen arvo muuttujalle ikä. Tulosta teksti, jossa lukee “Sinun ikäsi on:” annettu muuttujan arvo.

Ratkaisu:

HUOM! Älä pyyhi kirjoitettua koodia. Anna uusi käsky seuraavalle riville.

Tulosteessa voit yhdistää useita tekstejä ja muuttujia

Tehtävä 9.

Tulosta kysymys: “onko oikeasti ikäsi annettu ika vuotta?”

Ratkaisu:

HUOM! Älä pyyhi kirjoitettua koodia. Anna uusi käsky seuraavalle riville.

Useita muuttujia

Voit pyytää käyttäjältä useita muutujan arvoja. Eri pyynnöt kirjoitetaan eri riveille.

Tehtävä 10.

Kysy käyttäjältä kolmen muuttujan \(x\),\(y\) ja \(z\) arvot. Tulosta teksti “Annoit arvot muuttuja \(x\), muuttuja \(y\)  ja muuttuja \(z\)”

HUOM! Älä pyyhi kirjoitettua koodia. Anna uusi käsky seuraavalle riville.

Kommentointi #

Koodin eteen laitettu # muuttaa koodin kommentiksi

Tehtävä 11.

Laita edellisten rivien käskyjen eteen #.

Ratkaisu:

Kun saat tehtävän tehtyä oikein, laita # merkki tehtäviän koodirivien eteen.

Muuttujien tyypit

Jotta muuttujilla tehtävät laskut laskettaisiin oikein, on ohjelmassa muuttujille määritettävä muuttujatyypit.

str = merkkijono. Tällöin kaikki syötetty on merkkeinä. Ohjelma ei ymmärrä luvuksi (oletus muutujille).

int = kokonaisluku (katkaisee luvun pisteen kohdalta EI PYÖRISTÄ)

float = liukuluku (desimaaliluku)

Esimerkki 5.

Annetaan muuttujalle x arvo 7 ja muutetaan tämän jälkeen muuttujan tyyppiä str, int ja float tyypeiksi. Huom viimeisen rivin tyyppi jää voimaan.

x=7
x =str(7)
x =int(7)
x =float(7)

Tehtävä 12.

Pyydä käyttäjätä muuttujalle \(x\) arvo. Tulosta lauseke \(x+x\).

Ratkaisu:

Tehtävä 13.

Pyydä käyttäjältä muuttujalle \(x\) arvo. Muunna annettu \(x\):n arvo liukuluvuksi käskyllä float.  Tulosta lauseke \(x+x\)

Ratkaisu:

Desimaaliluvun pyöristäminen

Pyöristäminen tapahtuu round käskyllä. Käskyssä round(x,3) ensin tulee luku tai muuttuja ja pilkun jälkeen haluttu tarkkuus (kolme desimaalia). Jos haluttua desimaaliarvoa ei ole, niin ohjelma tulostaa kokonaislukujen tarkkuuteen.

Esimerkki 6.

Pyöristetään luku 23456.3456 kahden desimaalin tarkkuudella.

round(23456.3456,2)

Tehtävä 14.

Pyydä käyttäjältä muuttujalle \(x\) desimaalilukuarvo. Muunna muuttujan \(x\):n tyypiksi liukuluku käskyllä float.  Tulosta lauseke \(x+x\). Tulosta myös pyöristetty lauseke \(x+x\).

Ratkaisu:

Muuttujilla laskeminen

Ennen laskemista muuttujien tyypit pitää muuttaa liukuluvuiksi float käskyllä.

Ennen laskemista muuttujien tyypit pitää muuttaa liukuluvuiksi float käskyllä.

Esimerkki 7.

Muutetaan muuttujien x ja y tyypiksi float eli liukuluku.

x=float(x)

y=float(y)

Tehtävä 15.

Pyydä käyttäjältä muuttujille \(x\), \(y\) ja \(z\) arvot. Muunna luvut liukuluvuiksi. Tulosta lauseke “Lukujen summa on:” muuttujan \(x\) arvomuuttujan \(y\) arvo + muuttujan \(z\) arvo. Tulosta myös lauseke: “Lukujen tulo on:” muuttujan \(x\) arvomuuttujan \(y\) arvo * muuttujan \(z\) arvo.

Muuttujatyypin määrittäminen arvoa kysyessä

Voit määrittää muuttujatyypin float, str tai int, kun pyydät muuttujille arvoja. Muuttujatyyppi kerrotaan ennen input käskyä.

Esimerkki 8.

Kysytään käyttäjältä lukua. Tallennetaan luku muuttujaksi \(x\)  ja määritellään luku liukuluvuksi (float).

x=float(input("Anna luvulle jokin arvo: "))

Tehtävä 16.

Pyydä käyttäjältä muuttujalle \(x\) arvo siten, että arvo tallentuu suoraan liukuluvuksi (float).

Tulosta lauseke “Lukujen summa on:” muuttujan \(x\) arvomuuttujan \(x\) arvo + muuttujan \(x\) arvo.

Ratkaisu:

Piirtäminen Pythonilla

Piirtämistä varten on otettava käyttöön konnagrafiikka-kirjasto. Kirjasto otetaan käyttöön kirjoittamalla koodin alkuun from turtle import *. 

Kun halutaan piirtää suoraviiva eteenpäin kirjoitetaan forward(). Sulkeisiin tulee matka pikselein, joka halutaan liikkua. Sulkeisiin voi laittaa myös muuttujan.

Kääntyminen tapahtuu kirjoittamalla käsky right() tai left(). Sulkeisiin tulee asteluku, joka halutaan kääntyä. Sulkeisiin voi laittaa myös muuttujan.

Esimerkki 7.

Piirrä kuva, joka etenee \(50\) pikseliä, kääntyy \(90^o\), etenee \(50\) pikseliä, kääntyy \(90^o\), etenee \(50\) pikseliä, kääntyy \(90^o\),etenee \(50\) pikseliä, kääntyy \(90^o\).

from turtle import * # otetaan piirto-ohjelma käyttöön
forward(50)
right(90)
forward(50)
right(90)
forward(50)
right(90)
forward(50)
right(90)

Tehtävä 17.

Piirrä kahdeksikko piirto-ohjelmalla.

Tarkista:

Tehtävä 18.

Tee ohjelma, joka kysyy käyttäjältä kuinka paljon edetään ja piirtää suoran. Tämän jälkeen ohjelma kysyy, kuinka paljon käännytään ja kääntää kilpikonnaa. Toista kysymykset kolme kertaa.

Muista:

Avata piirto-ohjelma

Annettu lukuarvo pitää muuntaa float-tyypiksi.

Tarkista:

Tehtävän toistaminen

For-silmukka

Tehtävien toistaminen for i in range(): käskyllä. Sulkeisiin laitetaan, kuinka monta kertaa toistaminen halutaan tehdä.  Toistorakenne kirjoitetaan sisennettynä.

Esimerkki 8.

Piirrä neliö toistorakenteen avulla.

from turtle import * # otetaan piirto-ohjelma käyttöön 
for i in range(4):
 forward(50) 
 right(90)

Tehtävä 19.

Piirrä kahdeksikko toistorakenteiden avulla.

Tarkista:

Tehtävä 20.

Tee ohjelma, joka kysyy käyttäjältä kuinka paljon edetään ja piirtää suoran. Tämän jälkeen ohjelma kysyy, kuinka paljon käännytään ja kääntää kilpikonnaa. Toista 10 kertaa. Käytä silmukkaa.

Tarkista:

While-silmukka

Silmukka toisuu niin kauan kuin annettu ehto on tosi.

Ehdot:

== tosi

!= erisuuri kuin

Esimerkki 9.

jatketaanko = "k" # jatketaanko on muuttuja

while jatketaanko == "k" : # while käskyssä jatketaanko on muuttuja ja jatkuu aina kun jatketaanko on k.

  print("joo") 

  jatketaanko = input("Jatketaanko k/e?: ") # kysyy uudelleen. "jatketaanko"

Tehtävä 21.

Tee ohjelma, joka kysyy käyttäjältä kuinka paljon edetään ja piirtää suoran. Tämän jälkeen ohjelma kysyy, kuinka paljon käännytään ja kääntää kilpikonnaa. Toista silmukkaa, kunnes käyttäjä ei enään halua (kirjoittaa e).

Tarkista:

Kynä ylös tai alas ja kuvan puhdistus

Kynän saa ylös penup() ja alas pendown() käskyllä. clear() käsky puhdistaa ruudun.