Kommentointi ja peruslaskutoimitukset


Luentovideo

Peruslaskutoimituksia

Nyt, kun olemme käsitelleet muuttujia niin voimme lähteä pyörittelemään niitä. Tietokoneen ollessa erityisesti todella tehokas laskin on hyvä ymmärtää, mitä kaikkea voimme muuttujilla tehdä. Peruslaskutoimituksista on hyvä aloittaa. Muutamaa seuraavista pääsimmekin jo käyttämään...

1. Välitehtävä: Kopioi alla oleva koodi tekstieditoriisi ja kokeile täydentää kommenttien mukaisesti. Hyödynnä ainoastaan ennalta määriteltyjä muuttujia arvon määrityksissä. Esimerkiksi: luo muuttuja "luku" ja aseta sille arvoksi 3 hyödyntäen ennalta määriteltyjä muuttujia luku = a+a+a Muista, että voit aina print()-komennolla tarkistaa tulostamalla, mitä muuttuja pitää sisällään! Ja voit aina luoda itsellesi uusia apumuuttujia vanhojen pohjalta.

          
a = 1
b = 5
c = 10
# 1. Luo muuttuja d, jonka arvoksi tulee saada 2

# 2. Luo muuttuja e, jonka arvoksi tulee saada 20

# 3. Luo muuttuja f, jonka arvoksi tulee saada 45

# 4. Luo muuttuja g, joka laskee muuttujan b potenssissa c

# 5. Luo muuttuja h, jonka avulla voit tarkistaa onko luku 10 jaollinen viidellä (Vinkki: jos kahden luvun jakojäännös on nolla, niin luku on jaollinen tällä toisella luvulla)
          
        
1. Välitehtävän vastaus
            
# Vastaukset 1. välitehtävään:

# 1.
d = c/b
print(d) # <- Tämä tulostaa 2.0, sillä jakolaskut tuottavat Pythonissa aina liukuluvun

# 2.
e = (a+a)*c # <- Esimerkiksi, muitakin tapoja varmasti löytyy
print(e) 

# 3.
f = (c-a)*b
print(f)

# 4.
g = b**c
print(g)

# 5.
h = 10%5
print(h) # <- 10 on jaollinen luvulla 5. Tätä operaattoria käytetään usein ohjelmoinnissa esimekiksi parillisten tarkastamiseen.              
            
          

Joitakin peruslaskutoimituksia voi hyödyntää myös merkkijonoilla! Tämä tekeekin Pythonista näppärän kielen. Perusoperaattorien lisäksi Python-kielessä on useita merkkijonoille tarkoitettuja funktioita, joilla perusoperaatiot hoituvat vikkelästi. Esimerkkitapauksia on listattu alapuolelle. Harjoitellaan näitä vielä tehtävien puolella. Funktioista taas puhutaan lisää "Funktiot" -kappaleessa.

          
# Merkkijonoja voi "laskea yhteen" eli yhdistää "+" -operaattorilla
alku = "ban"
loppu = "aani"
kokonaisuus = alku + loppu
print(kokonaisuus) # <- Tulostuu "banaani"

# Merkkijonoilla voi myös "kertoa" eli toistaa
sana = "kristo"
toista_5kertaa = sana*5
print(toista_5kertaa)  # <- Tulostuu "kristokristokristokristokristo"

# Merkkijonon merkkien muuttaminen isoiksi kirjaimiksi .upper() -metodilla
merkkijono = "kissa"
merkkijono = merkkijono.upper()
print(merkkijono) # <- Tulostuu "KISSA"

# Takaisin pieneksi .lower() -metodilla
merkkijono = merkkijono.lower()
print(merkkijono) # <- Tulostuu "kissa"

# Asetetaan merkkijonon ensimmäinen merkki isoksi eli "kissa" -> "Kissa"
merkkijono = merkkijono.capitalize()
print(merkkijono) # <- Tulostuu "Kissa"

# Tutkitaan, kuinka monta kertaa tietty merkki esiintyy merkkijonossa
# esim. "s" merkkijonossa "vesi hiisi sihisi hississä"
sananlasku = "vesi hiisi sihisi hississä"
montakertaa_s = sananlasku.count("s")
print(montakertaa_s) # <- Tulostuu 8

"""
Erilaisia metodeja merkkijonoja varten on valmiiksi todella paljon.
Pyörää ei siis oikeasti tarvitse keksiä uudelleen vaan valmiilla paloilla kannattaa rakentaa.
Käy tutkimassa Pythonin dokumentaatiosta (https://docs.python.org/3/library/stdtypes.html#string-methods)
valmiita metodeja ja kokeile niiden käyttöä tekstieditorissasi.

"""
          
        

Kommentointi ja hyvät käytänteet koodin kirjoittamisessa

Jos teit viime kappaleessa välitehtäviä, kopioit esimerkkejä tekstieditoriisi ja kokeilit ajaa koodin, huomasit varmaankin etteivät "#"-merkillä alkavat rivit vaikuttaneet ohjelman suorittamiseen. Samaa merkintää hyödynnettiin ylempänä olevassa tehtävässä. Kyseessä on kommentointiin varattu merkki. Myös """ -merkki on varattu ilmoittamaan kommentoinnista. Katso alla oleva esimerkki ja kokeile omassa tekstieditorissa:

          
# Tänne voi kirjoittaa yhden rivin kommentteja
# Tänne tulee sitten toinen rivi
# Lisää kommentteja..
# Lisää kommentteja..

"""
TAI
Kommentteja 
voi 
kirjoittaa
useammalle
riville
myös 
näin
"""            
          
        

Kommentointi on tärkeä osa ohjelmointiurakkaa. Hyvän ohjelmakoodin kirjoittaminen vaatii kommentteja. Pienet projektit on toki helppo käsittää vielä yhdellä silmäyksellä, mutta mitä enemmän rivejä ohjelmaan tulee, sitä hankalammaksi sen ymmärtäminen käy. Tämä on polttava puheenaihe vielä ammattilaistenkin keskuudessa, sillä koodia kirjoitetaan vielä silläkin tasolla huolimattomasti kehnoilla kommenteilla tai jopa kokonaan ilman kommentteja.

Kommentti on siis sellainen ohjelmakoodin osa, jonka ohjelman suoritus jättää huomioimatta, mutta jota ihmissilmä pystyy lukemaan. Kommentoinnin avulla voidaan esimerkiksi kirjoittaa itselle ylös muistiinpanoja siitä, mitä missäkin kohdassa tapahtuu tai mikä koodissa on vaikkapa vielä kesken. Kommentointi on myös loistava tapa muille, kuin itse koodarille päästä jyvälle siitä, mitä ohjelmassa on tarkoitus tehdä. Kommentteja lisätään usein koodin alkuun ja varsinkin niihin kohtiin joissa tapahtuu jonkinlaista toiminnallisuutta.

Hieman syntaksista ja hyvistä käytänteistä yleisesti

Python on siitä erinomainen kieli, että jos koodia ei kirjoita tarpeeksi selkeästi rivittäen ja sisentäen, ohjelma ei käänny. Toisin sanoen ohjelma on rikki, jos sitä ei ole kirjoitettu "nätisti". Esimerkiksi C-kielessä on mahdollista koodata koko ohjelma yhdelle riville, ilman että ohjelman suoritus menee sekaisin. Vertailepa täysin samaa ohjelmaa kahdella eri kielellä.

          
#include <stdio.h> 
int main() {int i,total;int a[] = {0,6,9,2,7};int n = 5;total = 0;for(i = 0; i < n; i++) {total += a[i];}printf("Average = %f\n", total/(float)n);return 0;}          
          
        
              
def main():
    lista = [0, 6, 9, 2, 7]
    lukumaara = 5
    summa = 0
    
    for luku in lista:
        summa = luku + summa
    
    print("Keskiarvo = " + str(summa/lukumaara))


if __name__ == "__main__":
    main()                
              
            

MUISTA, että hyvällä muuttujien nimeämisellä voit antaa ohjelmankoodin selittää itse itseään, eikä kommenttejakaan mahdollisesti tarvitse niin paljoa kirjoittaa.

2. Välitehtävä: Kommentoi koodia! Jos sinulla on tekstieditorissa auki jotain koodia, niin kommentoi se. Voit myös kopioida yllä olevasta "keskiarvo" -esimerkistä oikealla puolella olevan Python-version ja kommentoida sitä parhaasi mukaan. Älä huoli, vaikka et vielä ymmärtäisikään täysin mitä milläkin rivillä tapahtuu.

2. välitehtävän esimerkkivastaus
            
# Pääohjelma, joka tällä hetkellä laskee listan alkioiden keskiarvon
def main():
    # Alustetaan lista
    lista = [0, 6, 9, 2, 7]
    # Listassa on 5 alkiota
    lukumaara = 5
    # Summa on alussa 0, ennen kuin siihen ruvetaan lisäämään alkioiden arvoja
    summa = 0
    
    # Silmukassa käydään luku kerrallaan listaa läpi
    for luku in lista:
        # Jokaisella kierroksella otetaan käsittelyyn yksi alkio ja sen arvo lisätään summaan
        summa = luku + summa
    
    # Tulostetaan lopuksi merkkijono "Keskiarvo = " ja liimataan tähän listan alkioiden laskettu keskiarvo.
    print("Keskiarvo = " + str(summa/lukumaara))

# Suoritetaan tämä jos kyseessä ei ole "tuotu kirjasto"
# Älä hätäänny, jos et vielä ymmärrä, mitä tämä tarkoittaa :) 
if __name__ == "__main__":
    main()