1 of 29

Viikko 5

OHjelmoinnin PErusteet

30.9.2024

2 of 29

Viikolla 4

  • muodolliset ja todelliset parametrit
  • funktioiden paluuarvot
  • parametrien tyyppivihjeet
  • listat
  • iterointi for-lauseella
  • range-funktio
  • count ja replace
  • lisää f-merkkijonoista

Palautteesta:

  • Paljon asiaa, hankala muistaa kaikkia metodeita
  • Enemmän esimerkkejä kaivataan
  • Viimeinen tehtävä hankala

3 of 29

Kurssin tehtävistä

Ohjelmointitaidon kehittyminen edellyttää vahvaa rutiinia ja myös omaa soveltavaa oivaltamista. Tämän takia kurssilla on paljon tehtäviä. Osa tehtävistä on kohtuullisen suoraviivaisesti materiaalia hyödyntäviä ja osa taas aivan tarkoituksella haastavampia soveltavia tehtäviä.

Ei kannata huolestua vaikka osa kurssin tehtävistä tuntuisikin ensiyrittämällä liian vaikealta. Kaikkia tehtäviä ei ole missään nimessä pakko tehdä, kuten arvosteluperusteet toteavat: Kurssin läpipääsyyn vaaditaan vähintään 25% jokaisen osan ohjelmointitehtävien pisteistä.

Kurssin osien tehtävät eivät etene vaikeusjärjestyksessä. Jokaisessa aliosassa esitellään yleensä muutama uusi konsepti, joita harjoitellaan sekä helpommilla että soveltavimmilla tehtävillä. Jos törmäät liian haastavan tuntuiseen tehtävään, hyppää seuraavaan. Voit palata vaikeimpiin tehtäviin osan lopuksi jos aikaa vielä jää.

Lohdutuksen sanana todettakoon että tällä viikolla mahdottomalta vaikuttava tehtävä näyttää melko varmasti neljän viikon päästä helpolta.

4 of 29

Muut kuin lukulistat

Listoihin voi tallentaa mitä tahansa arvoja, esimerkiksi merkkijonoja...

5 of 29

Muut kuin lukulistat (2)

...tai vaikka liukulukuja

6 of 29

Sisäkkäiset listat

Listan alkiot voivat olla myös listoja:

7 of 29

Matriisit

Sisäkkäiset listat ovat mainio tapa mallintaa matriisia:

8 of 29

Alkioihin viittaaminen

Matriisin alkioon viittaamiseen tarvitaan kaksi indeksiä

Ensimmäisellä poimitaan rivi, toisella alkio riviltä

print(m[1][1])

9 of 29

Alkioihin viittaaminen

Matriisin alkioon viittaamiseen tarvitaan kaksi indeksiä

Ensimmäisellä poimitaan rivi, toisella alkio riviltä

print(m[0][2])

10 of 29

Alkioihin viittaaminen

Matriisin alkioon viittaamiseen tarvitaan kaksi indeksiä

Ensimmäisellä poimitaan rivi, toisella alkio riviltä

print(m[2][0])

11 of 29

Matriisin iterointi

Matriisin voi iteroida kätevästi kahdella for-silmukalla

Yhdellä silmukalla iteroidaan rivit…

...ja tarvittaessa toisella sisäkkäisellä rivien alkiot

12 of 29

Alkioiden muuttaminen

Jos alkoiden arvoja halutaan muuttaa, voidaan käyttää kahta for-lausetta range-funktioilla

13 of 29

Viittaukset

Pythonissa kaikki muuttujat ovat viittaustyyppisiä

Muuttujan arvo on siis oikeasti viittaus olioon

14 of 29

Merkkijonot ovat muuttumattomia

15 of 29

Listat ovat muuttuvia

16 of 29

Listat ovat muuttuvia (2)

17 of 29

Listan kopiointi

Listan voi kopioida ottamalla siitä "alilistan", joka sisältää kaikki alkiot

...eli lista[0 : len(lista)]

...tai paljon helpommin lista[:]

18 of 29

Lista funktion parametrina

Koska parametrin arvo on viittaus, funktio voi muuttaa parametrinaan saamaansa listaa

19 of 29

Sivuvaikutukset

Jos funktio muuttaa listaa ilman, että tämä on funktion varsinainen tarkoitus, puhutaan funktion sivuvaikutuksesta

20 of 29

Sanakirja (eli dictionary)

Sanakirjassa jokainen alkio muodostuu avain-arvo-parista

Sanakirja on kätevä (ja nopea), kun halutaan tietyn avaimen perusteella hakea arvo

21 of 29

Alkioiden asetus

Sanakirja alustetaan aaltosulkeilla

Alkion arvon asetus joko lisää tai vaihtaa arvon

Alkioon viitataan kuten listassakin, mutta indeksin sijasta käytetään avainta

22 of 29

Alkioista

Sanakirjan avaimen tulee olla mutatoitumaton

Niinpä esim. lista ei käy avaimeksi

23 of 29

Sanakirjan iterointi

Sanakirja voidaan iteroida läpi for-silmukalla

for-lause poimii sanakirjan avaimet yksi kerrallaan

24 of 29

Metodi items

Jos halutaan iteroida sekä avaimet että arvot, voidaan käyttää metodia items

25 of 29

Alkioiden poisto

Joko del-lauseella…

tai metodilla pop

26 of 29

Sanakirja tiedon ryhmittelyssä

Yksittäisellä sanakirjalla voidaan yhdistää samaan asiaan liittyvää tietoa

27 of 29

Tuple (eli "monikko")

Listan tapainen tietorakenne

Olennaiset erot ovat

  • tuple merkitään kaarisulkeilla (), lista hakasulkeilla []
  • tuple on mutatoitumaton (eli muuttumaton)

28 of 29

Miksi tuple?

Tuple on kokoelma toisiinsa liittyviä arvoja

Lista taas sisältää peräkkäisiä alkoita, ja sen koko (tai alkioiden järjestys) voi muuttua

29 of 29

Ensi viikolla

Tiedostojen lukeminen ja kirjoittaminen

Virheiden käsittely

Paikalliset ja globaalit muuttujat