• Älykästä kilpikonnagrafiikkaa

Tavoitteet

Tavoitteena on

  • kerrata ylipäätään Python-ohjelmointia

  • kerrata kilpikonnagrafiikkaa

  • kerrata for-silmukka

      • for-silmukan avulla koodissa vältetään tarpeetonta toistoa

  • opetella vakion käyttöä

      • ohjelmassa voidaan määritellä vakio kirjoittamalla se isoin kirjaimin tapaan:

OPPITUNNINPITUUS = 75

paivanPituus = 4 * OPPITUNNINPITUUS

  • harjoitella toimimaan etänä, jolloin ollaan yhteydessä verkon kautta toisiin (tämä on tavanomaista tämän päivän ohjelmointityössä)

Voit toimia Trinketissä tai ladata Python IDLE:n tai muun kehitysympäristön koneellesi

Suositeltavinta on toimia Trinketissä, koska mallikoodit toimivat ko. ympäristössä.

Voit halutessasi toimia Python IDLE:ssa tms. ympäristössä, mutta nämä mallikoodit eivät välttämättä toimi sellaisenaan siellä

Muistelua

Muistele, mitä seuraavat koodit tekevät. Koeta miettiä mahdollisimman tarkkaan, yksittäiset merkit ja välit huomioiden.

Testaa sitten koodi ja vertaa, toimiiko se siten kuin kuvittelit.

Kiinnitä huomio erityisesti for-silmukkaan tässä esimerkissä:

# Tämä on trinket.io -ympäristössä, jossa on Python 2 sukupolven tulkki ilmaiseksi käytössä

# Sillä print on komento, jolloin tulostettava merkkijono ympäröidään vain lainausmerkein

for i in range(5):

print i,"Terve maailma!"


# Tämä on sellaisessa ympäristössä, jossa on Python 3 sukupolven tulkki

# Sillä print on metodi, jolloin print-metodilla tulostettavat ympäröidään sulkumerkein

for i in range(5):

print (i,"Terve maailma!")

Osaatko jo selittää, mitä seuraavassa koodissa tapahtuu? Se on tuttu koodi. Mieti ensin ja kokeile sen jälkeen - älä aiemmin.

Kertaa sitten syksyn Turtle-grafiikkaa koskeva sivu

Tästä linkistä kyseiselle sivulle. Huomaa, että myös Python IDLE tukee kilpikonnagrafiikkaa.

Tutki mallikoodit huolellisesti. Harjoitukset voit jättää väliin.

Materiaaleja

Teemu Sirkiän pdf-dokumentti Ohjelmoinnin perusteet Pythonilla. Mm. for-silmukasta on hyvät kuvaukset.

Turtle-grafiikan dokumentaatio.

Harjoituksia

Palauttaminen

Tee harjoitukset haluamassasi ympäristössä. Suositeltu tällä kertaa on Trinket.io. Sitä mukaa kuin koodisi valmistuvat, lähetä niistä kopio opettajalle Teamsissa henkilökohtaisessa keskustelussa. Lähetä kopio myös silloin, kun tarvitset vihjeitä tai apua koodin parantamiseen.

Harjoitus 0

Kopioi seuraava koodi ja aja se.

from turtle import * # Ladataan koko turtle-kirjasto keskusmuistiin

t = Turtle() # Luodaan Turtle-tyyppinen olio nimeltään t

t.forward(100)

Harjoitus 1

Jatka edellistä koodia siten, että saat piirrettyä tasasivuisen kolmion. Lopputuloksen tulee siis olla tasasivuinen kolmio, jonka sivun pituus on sata.

VIHJE: lisää kääntymiskomento ja toista sitten piirtämistä

Harjoitus 2

"Refactoroi" eli parantele edellistä koodia siten, että kääntyminen ja piirtäminen tehdään for-silmukassa. Edelleen lopputuloksen tulee siis olla tasasivuinen kolmio, jonka sivun pituus on sata.

Harjoitus 3

"Tuunaa" eli muokkaa piirtämääsi kolmiota seuraavasti:

  • viivan paksuus on 5 yksikköä

  • viivan väri on punainen

  • täyttöväri on "orange"

  • Muuta vielä kolmio seisomaan kärjellään.

Kuinka hyvin kuva muistuttaa väistämisvelvollisuutta tarkoittavaa liikennemerkkiä? Tuunaa tarvittaessa lisää, jotta se muistuttaisi mahdollisimman hyvin sitä.

Harjoitus 4

Kopioi koodi ja tee siihen pyydetyt muutokset

import turtle


def draw_circle(turtle, color, size, x, y):

turtle.penup()

turtle.color(color)

turtle.fillcolor(color)

turtle.goto(x,y)

turtle.pendown()

turtle.begin_fill()

turtle.circle(size)

turtle.end_fill()


tommy = turtle.Turtle()

tommy.shape("turtle")

tommy.speed(500)


draw_circle(tommy, "green", 50, 25, 0)

draw_circle(tommy, "blue", 50, 0, 0)

draw_circle(tommy, "yellow", 50, -25, 0)


tommy.penup()

tommy.goto(-70,-50)

tommy.color("black")

tommy.write("Let's Learn Python!", None, None, "16pt bold")

tommy.goto(0,-80)

Muutokset:

  • lisää yksi ympyrä punainen vasemmalle

  • käytä vakiota SADE = 50 ympyrän piirtämiseen

  • piilota kilpikonna lopuksi

Harjoitus 5

Etsi jokin logo netistä ja piirrä sen ääriviivat Turtle-grafiikalla.

  • esimerkiksi edellisestä saisi Audin logon helposti

  • hyvä jos otat jonkin muun haasteen

Harjoitus 6

Piirrä tikkataulu.

Harjoitus 7

Korjaa (tarvittaessa) tikkataulun mittasuhteet aidoiksi. Etsi siis netistä viralliset mitat.

Harjoitus 8

Refactoroi tikkataulun koodi mm. seuraavasti:

  • käytä vakiota, joka ilmoittaa aina yhden kehän leveyden

  • mikäli suhteutat kympinkin tähän vakioon, voit muuttaa tikkataulun kokoa yhtä vakiota muuttamalla

  • käytä for-silmukkaa (tai jotain muuta silmukkaa) välttääksesi toistoa koodissasi