Ohjelmoinnin peruskurssi Y1

Koko: px
Aloita esitys sivulta:

Download "Ohjelmoinnin peruskurssi Y1"

Transkriptio

1 Ohjelmoinnin peruskurssi Y1 CSE-A CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

2 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute. Tätä kautta on mahdollisuus antaa nimettömänä palautetta luennosta. Jos jokin asia on jäänyt palautteen perusteella epäselväksi, palataan siihen mahdollisuuksien mukaan seuraavalla luennolla. CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

3 Kysymyksiä viime kerran luentopalautteesta Minkä takia ohjelmointia tehdään? Mitä ohjelmointi käytännössä tekee? Mitä Goblinilla tehdään? Return jäänyt epäselväksi. CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

4 Oppimistavoitteet: tämän luennon jälkeen Osaat käyttää monipuolisemmin olioita kuin mitä aikaisempien luentojen perusteella. Osaat tehdä ja käyttää listoja, joiden alkiot ovat olioita. Ymmärrät, mitä seuraa siitä, jos useampi muuttuja viittaa samaan olioon. Osaat määritellä olioita, joiden kenttinä on toisia olioita. Osaat tallentaa olioiden tietojen tallentaminen tekstitiedostoon ja lukea niitä tekstitiedostosta. Osaat määritellä olioita, jonka kenttänä toisia olioita sisältävä lista (jää itseopiskeluun). CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

5 Kertausta: Listan alkiona viiteitä olioihin Halutaan tehdä ohjelma ohjelmointikurssien opiskelijoiden käsittelyyn. Yhden opiskelijan tietoja kuvataan yhdellä Opiskelija-oliolla. Kurssin kaikkien opiskelijoiden käsittelemistä varten tehdään lista, joka sisältää viitteet kurssin kaikkia opiskelijoita kuvaaviin Opiskelija-olioihin. CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

6 Kertausta: olioviitteiden lisääminen listaan Listaan voi lisätä uuden Opiskelija-olion esimerkiksi seuraavasti: opiskelijalista.append(opiskelija("matti Virtanen", \ "511114")) Toinen vaihtoehto on tehdä olion luonti ja sen lisääminen listaan eri käskyissä: uusi_opiskelija = Opiskelija("Matti Virtanen", "511114") opiskelijalista.append(uusi_opiskelija) Jos listassa on jo vähintään i+1 alkiota, voi olioviitteen sijoittaa myös suoraan paikalle i: uusi_opiskelija = Opiskelija("Matti Virtanen", "511114") opiskelijalista[i] = uusi_opiskelija CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

7 Kertausta: metodien kutsuminen listan alkioille Indeksillä i olevalle Opiskelija-oliolle voidaan kutsua Opiskelija-luokan metodeita seuraavasti: print("opiskelijan", opiskelijalista[i].kerro_nimi()) print("kurssiarvosana on", opiskelijalista[i].laske_kokonaisarvosana()) On myös mahdollista käydä koko lista läpi for-käskyllä ja kutsua metodeita vuorotellen jokaiselle listan alkiolle: for kurssilainen in opiskelijalista: print("opiskelijan", kurssilainen.kerro_nimi()) print("kurssiarvosana on", kurssilainen.laske_kokonaisarvosana()) CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

8 Opiskelija-olioita listassa Seuraavilla kalvoilla on esimerkkiohjelma, joka lukee käyttäjältä opiskelijoiden tiedot, luo vastaavat Opiskelija-oliot ja sijoittaa ne listaan, pyytää listan opiskelijoille arvosanat ja tulostaa kurssin tulokset. Eri vaiheita varten on kirjoitettu omat funktionsa. Aluksi on jo aikaisemmin esitetty Opiskelija-luokan koodi. CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

9 Opiskelija-luokka class Opiskelija: def init (self, annettu_nimi, numero): self. nimi = annettu_nimi self. opiskelijanumero = numero self. tenttiarvosana = 0 self. harjoitusarvosana = 0 def kerro_nimi(self): return self. nimi def kerro_opiskelijanumero(self): return self. opiskelijanumero CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

10 Opiskelija-luokka jatkuu def kerro_tenttiarvosana(self): return self. tenttiarvosana def kerro_harjoitusarvosana(self): return self. harjoitusarvosana def muuta_tenttiarvosana(self, arvosana): if 0 <= arvosana <= 5: self. tenttiarvosana = arvosana def muuta_harjoitusarvosana(self, arvosana): if 0 <= arvosana <= 5: self. harjoitusarvosana = arvosana CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

11 Opiskelija-luokka jatkuu def laske_kokonaisarvosana(self): if self. tenttiarvosana == 0 or \ self. harjoitusarvosana == 0: arvosana = 0 else: arvosana = (self. tenttiarvosana + self. harjoitusarvosana + 1) // 2 return arvosana def str (self): mjono = self. nimi + ", " + \ self. opiskelijanumero + \ ", tenttiarvosana: " + \ str(self. tenttiarvosana) + \ ", harjoitusarvosana: " + \ str(self. harjoitusarvosana) return mjono CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

12 Opiskelija-olioita listassa, koodi import opiskelija def lue_kokonaisluku(): luku_onnistui = False while not luku_onnistui: try: luku = int(input()) luku_onnistui = True except ValueError: print("virheellinen kokonaisluku!") print("anna uusi!") return luku CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

13 Opiskelija-olioita listassa, koodi jatkuu def lue_opiskelijatiedot(): opiskelijat = [] print("anna opiskelijoiden nimet ja opiskelijanumerot") print("samalla rivilla kauttaviivalla erotettuna.") print("lopeta tyhjalla rivilla.") rivi = input() while rivi!= "": tiedot = rivi.split("/") if len(tiedot)!= 2: print("virheellinen rivi!") else: uusi = opiskelija.opiskelija(tiedot[0], tiedot[1]) opiskelijat.append(uusi) rivi = input() print("opiskelijoiden tiedot luettu!") return opiskelijat CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

14 Opiskelija-olioita listassa, koodi jatkuu def lisaa_arvosanatiedot(opiskelijalista): for kurssilainen in opiskelijalista: print("anna opiskelijan {:s} tenttiarvosana:".\ format(kurssilainen.kerro_nimi())) tentti_as = lue_kokonaisluku() print("harjoitusarvosana:") harjoitus_as = lue_kokonaisluku() kurssilainen.muuta_tenttiarvosana(tentti_as) kurssilainen.muuta_harjoitusarvosana(harjoitus_as) print("arvosanat lisatty!") CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

15 Opiskelija-olioita listassa, koodi jatkuu def tulosta_tulokset(opiskelijat): print("numero nimi tentti harj kurssi") for i in range(len(opiskelijat)): print("{:6s} {:15s} {:<6d} {:<6d} {:<6d}".format(\ opiskelijat[i].kerro_opiskelijanumero(), opiskelijat[i].kerro_nimi(), opiskelijat[i].kerro_tenttiarvosana(), opiskelijat[i].kerro_harjoitusarvosana(), opiskelijat[i].laske_kokonaisarvosana())) CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

16 Opiskelija-olioita listassa, koodi jatkuu def main(): opiskelijatiedot = lue_opiskelijatiedot() lisaa_arvosanatiedot(opiskelijatiedot) tulosta_tulokset(opiskelijatiedot) print("ohjelma paattyy.") main() CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

17 Välitehtävä 1: mitä tämä ohjelma tulostaa? import tasovektori def main(): vektori1 = tasovektori.tasovektori(4.0, 2.5) vektori2 = tasovektori.tasovektori(4.0, 2.5) vektori3 = vektori1 print(vektori1) print(vektori2) print(vektori3) vektori1.kerro_luvulla(3.0) print(vektori1) print(vektori2) print(vektori3) main() CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

18 Useampi muuttuja viittaa samaan olioon Edellisen kalvon koodissa muuttujat vektori1 ja vektori3 viittaavat samaan olioon: vektori1 vektori3 vektori2 Kun oliota muutetaan muuttujan vektori1 kautta, näkyy muutos myös, kun samaa oliota katsotaan muuttujan vektori3 kautta vektori1 vektori3 vektori2 CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

19 Välitehtävä 2: mitä tämä ohjelma tulostaa? import tasovektori def main(): vektori1 = tasovektori.tasovektori(4.0, 2.5) vektori2 = tasovektori.tasovektori(4.0, 2.5) vektori3 = vektori1 print(vektori1) print(vektori2) print(vektori3) vektori1 = tasovektori.tasovektori(5.0, 7.8) print(vektori1) print(vektori2) print(vektori3) main() CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

20 Tulostuksen selitys Jälleen muuttujat vektori1 ja vektori3 viittaavat aluksi samaan olioon: vektori1 vektori3 vektori2 Muuttujaan vektori1 tehtävä sijoitus ei kuitenkaan muuta itse oliota, vaan panee muuttujan viittaamaan uuteen olioon. Muuttuja vektori3 jää viittaamaan samaan olioon kuin aikaisemminkin: vektori1 vektori3 vektori2 CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

21 Oliomuuttuja toisen olion kenttänä Olion kenttänä voi olla viite saman tai toisen luokan olioon. Halutaan kirjoittaa luokka Kellonaytto, jonka avulla voidaan esittää kellonaikoja muodossa hh:mm. Luokassa on metodi ajan asettamista varten sekä metodi, joka kasvattaa aikaa minuutilla. Luokka pitää huolen siitä, että tunnit ovat aina välillä 0 24 ja minuutit välillä Määritellään luokka Numeronaytto, jonka avulla voidaan esittää lukuja kahdella numerolla. Luokassa on metodi luvun kasvatukseen. Numeronäytön arvo voi olla välillä 0 (raja - 1), missä raja on määritelty Numeronaytto-oliota luodessa. Kellonaytto-olion kenttinä on kaksi Numeronaytto-oliota. Esimerkin idea on kirjasta Barnes and Kölling: Objects first with Java. CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

22 Numeronaytto, koodi class Numeronaytto: def init (self, nollausraja): self. arvo = 0 if 1 <= nollausraja <= 100: self. raja = nollausraja else: self. raja = 1 def kerro_arvo(self): return self. arvo def kerro_raja(self): return self. raja CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

23 Numeronaytto, koodi jatkuu def aseta_arvo(self, uusi_arvo): if 0 <= uusi_arvo < self. raja: self. arvo = uusi_arvo def kasvata_arvoa(self): self. arvo = (self. arvo + 1) % self. raja def str (self): if self. arvo < 10: return "0" + str(self. arvo) else: return str(self. arvo) CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

24 Kellonaytto, koodi import numeronaytto class Kellonaytto: def init (self): self. tunnit = numeronaytto.numeronaytto(24) self. minuutit = numeronaytto.numeronaytto(60) def aseta_aika(self, uudet_tunnit, uudet_min): self. tunnit.aseta_arvo(uudet_tunnit) self. minuutit.aseta_arvo(uudet_min) CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

25 Kellonaytto, koodi jatkuu def lisaa_minuutilla(self): self. minuutit.kasvata_arvoa() if self. minuutit.kerro_arvo() == 0: self. tunnit.kasvata_arvoa() def str (self): return str(self. tunnit) + ":" + \ str(self. minuutit) CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

26 Pääohjelma, koodi import kellonaytto def main(): kello1 = kellonaytto.kellonaytto() print("kello aluksi:", kello1) kello1.aseta_aika(12, 45) print("muutoksen jalkeen:", kello1) for i in range(128): kello1.lisaa_minuutilla() print("lisattiin 128 min:", kello1) CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

27 Pääohjelma, koodi jatkuu kello2 = kellonaytto.kellonaytto() kello2.aseta_aika(23, 55) print("toinen kello aluksi:", kello2) for i in range(10): kello2.lisaa_minuutilla() print("keskiyon jalkeen:", kello2) main() CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

28 Olioiden tietojen lukeminen tekstitiedostosta Luotavien olioiden tiedot voidaan lukea tekstitiedostosta samaan tapaan kuin ne luettaisiin suoraan käyttäjältä. On muistettava käsitellä erilaiset virhetilanteet (tiedostoa ei pystytä lukemaan, jokin rivi ei ole oletetussa muodossa jne.) Seuraavassa esimerkkiohjelmassa luetaan Opiskelija-luokan olioiden tietoja tekstitiedostosta. Tiedoston rivillä on annettu opiskelijan nimi, opiskelijanumero, tenttiarvosana ja harjoitusarvosana toisistaan kauttaviivalla erotettuna. Ohjelma luo tietojen perusteella Opiskelija-oliot ja lisää heidät listaan. Virheellisistä riveistä aiheutuneet virheet on käsitelty opiskelijoiden tiedot lukevan funktion sisällä. Ohjelma jatkaa toimintaansa normaalisti virheellisen rivin jälkeen. Tiedoston lukemisessa tapahtunut virhe käsitellään pääohjelmassa. Tällainen virhe päättää ohjelman suorituksen. Virheen voisi käsitellä myös tiedot lukevan funktion sisällä. CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

29 Olioiden tietojen tallentaminen tekstitiedostoon Esimerkkiohjelma pyytää käyttäjältä myös uusien opiskelijoiden tietoja, luo näistä Opiskelija-oliot ja lisää oliot samaan listaan tiedostosta luettujen opiskelijoiden kanssa. Sitten ohjelma tekee opiskelijoista tuloslistan. Lopuksi ohjelma tallentaa kaikkien opiskelijoiden (sekä tiedostosta että käyttäjältä luettujen) tiedot käyttäjän antamaan tiedostoon. Tiedot kirjoitetaan tiedostoon samassa muodossa kuin mitä ne olivat lähtötiedostossa. Kun ohjelma lukee alussa käsiteltävien olioiden tiedot tiedostosta ja tallentaa ne lopuksi tiedostoon samassa muodossa, pystytään ohjelman käsittelemiä tietoja säilyttämään ohjelman suorituskerrasta toiseen. Myös tiedoston kirjoittamisessa tapahtunut virhe käsitellään esimerkkiohjelmassa pääohjelmassa. CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

30 Opiskelijat tiedostossa, koodi import opiskelija def lue_opiskelijat_tiedostosta(): opiskelijat = [] print("mista tiedostosta opiskelijoiden tiedot luetaan?") tiedoston_nimi = input() lahtotiedosto = open(tiedoston_nimi, "r") for rivi in lahtotiedosto: rivi = rivi.rstrip() tiedot = rivi.split("/") if len(tiedot)!= 4: print("virheellinen rivi:", rivi) else: uusi = opiskelija.opiskelija(tiedot[0], tiedot[1]) CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

31 Opiskelijat tiedostossa, koodi jatkuu try: tenttias = int(tiedot[2]) harj_as = int(tiedot[3]) uusi.muuta_tenttiarvosana(tenttias) uusi.muuta_harjoitusarvosana(harj_as) opiskelijat.append(uusi) except ValueError: print("rivilla virheellinen arvosana:", rivi) lahtotiedosto.close() return opiskelijat CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

32 Opiskelijat tiedostossa, koodi jatkuu def lue_opiskelijoita_kayttajalta(opiskelijat): print("anna lisattavien opiskelijoiden tiedot.") print("lopeta tyhjalla rivilla.") rivi = input() while rivi!= "": tiedot = rivi.split("/") if len(tiedot)!= 4: print("virheellinen rivi.") else: uusi = opiskelija.opiskelija(tiedot[0], tiedot[1]) CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

33 Opiskelijat tiedostossa, koodi jatkuu try: tenttias = int(tiedot[2]) harj_as = int(tiedot[3]) uusi.muuta_tenttiarvosana(tenttias) uusi.muuta_harjoitusarvosana(harj_as) opiskelijat.append(uusi) except ValueError: print("rivilla virheellinen arvosana.") rivi = input() CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

34 Opiskelijat tiedostossa, koodi jatkuu def tulosta_tulokset(opiskelijat): print("numero nimi tentti harj kurssi") for i in range(len(opiskelijat)): print("{:6s} {:15s} {:<6d} {:<6d} {:<6d}".format(\ opiskelijat[i].kerro_opiskelijanumero(),\ opiskelijat[i].kerro_nimi(),\ opiskelijat[i].kerro_tenttiarvosana(),\ opiskelijat[i].kerro_harjoitusarvosana(),\ opiskelijat[i].laske_kokonaisarvosana())) CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

35 Opiskelijat tiedostossa, koodi jatkuu def tallenna_opiskelijat_tiedostoon(oplista): print("mihin tiedostoon kirjoitetaan?") nimi = input() tiedosto = open(nimi, "w") for i in range(len(oplista)): tiedosto.write("{:s}/{:s}/{:d}/{:d}\n".format(\ oplista[i].kerro_nimi(),\ oplista[i].kerro_opiskelijanumero(),\ oplista[i].kerro_tenttiarvosana(),\ oplista[i].kerro_harjoitusarvosana())) tiedosto.close() print("opiskelijoiden tiedot tallennettu.") CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

36 Opiskelijat tiedostossa, koodi jatkuu def main(): jatkuu = True try: opiskelijatiedot = lue_opiskelijat_tiedostosta() except OSError: print("virhe tiedoston lukemisessa.") jatkuu = False if jatkuu: lue_opiskelijoita_kayttajalta(opiskelijatiedot) tulosta_tulokset(opiskelijatiedot) try: tallenna_opiskelijat_tiedostoon(opiskelijatiedot) except OSError: print("tiedostoon kirjoittaminen ei onnistunut.") print("ohjelma paattyy.") main() CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

37 Esimerkki: olion kenttänä olioviitteitä sisältävä lista Kirjoitetaan ohjelma oppilasrekisteriä varten. Jokaisesta oppilaasta on tallenettu nimi, opiskelijanumero ja tiedot kurssisuorituksista. Yhtä kurssisuoritusta kuvataan Kurssisuoritus-oliolla. Oliolla on kenttinä suoritetun kurssin koodi, nimi, suorituspäivä, opintopistemäärä ja arvosana. Oppilas-olion kenttänä on nimen ja opiskelijanumeron lisäksi lista, joka sisältää suoritettuja kursseja vastaavat Kurssisuoritus-oliot. Lisäksi on kirjoitettu omaan moduuliinsa valikkopohjainen ohjelma, jolla käyttäjä voi luoda uusia opiskelijoita ja lisätä heille kurssisuorituksia. CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

38 Luokka Kurssisuoritus class Kurssisuoritus: def init (self, kurssikoodi, kurssin_nimi, pvm,\ pisteet, arvostelu): self. koodi = kurssikoodi self. nimi = kurssin_nimi self. suorituspvm = pvm self. laajuus = pisteet self. arvosana = arvostelu def kerro_koodi(self): return self. koodi def kerro_nimi(self): return self. nimi CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

39 Luokka Kurssisuoritus, koodi jatkuu def kerro_suorituspvm(self): return self. suorituspvm def kerro_laajuus(self): return self. laajuus def kerro_arvosana(self): return self. arvosana def str (self): mjono = "{:10s} {:30s} {:5.1f} {:2d} {:10s}".\ format(self. koodi,\ self. nimi, self. laajuus,\ self. arvosana, self. suorituspvm) return mjono CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

40 Luokka Oppilas class Oppilas: def init (self, annettu_nimi, nro): self. nimi = annettu_nimi self. opnro = nro self. suoritukset = [] def kerro_nimi(self): return self. nimi def kerro_opnro(self): return self. opnro CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

41 Luokka Oppilas jatkuu def lisaa_suoritus(self, uusi): if uusi.kerro_arvosana() < 1 or\ uusi.kerro_arvosana() > 5 or\ uusi.kerro_laajuus() < 0.0: return False for suoritus in self. suoritukset: if suoritus.kerro_koodi() == uusi.kerro_koodi(): if uusi.kerro_arvosana() >\ suoritus.kerro_arvosana(): self. suoritukset.remove(suoritus) self. suoritukset.append(uusi) return True else: return False self. suoritukset.append(uusi) return True CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

42 Luokka Oppilas jatkuu def onko_suoritettu(self, kurssikoodi): for suoritus in self. suoritukset: if suoritus.kerro_koodi() == kurssikoodi: return True return False def laske_opintopistesumma(self): summa = 0.0 for suoritus in self. suoritukset: summa += suoritus.kerro_laajuus() return summa CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

43 Luokka Oppilas jatkuu def laske_keskiarvo(self): arvosanasumma = 0.0 opintopistesumma = 0.0 for suoritus in self. suoritukset: arvosanasumma += suoritus.kerro_laajuus() *\ suoritus.kerro_arvosana() opintopistesumma += suoritus.kerro_laajuus() if opintopistesumma == 0.0: return 0.0 else: return arvosanasumma / opintopistesumma CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

44 Luokka Oppilas jatkuu def tee_raportti(self): raportti = self. opnro + " " + self. nimi + "\n" raportti += "Suoritetut kurssit:\n" for suoritus in self. suoritukset: raportti += str(suoritus) + "\n" opsumma = self.laske_opintopistesumma() keskiarvo = self.laske_keskiarvo() raportti += str(opsumma) +\ " op, keskiarvo {:.2f}.".format(keskiarvo) return raportti def str (self): return self. opnro + " " + self. nimi CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

45 Käyttöliittymämoduuli import oppilas import kurssisuoritus def lue_kokonaisluku(): luku_onnistui = False while not luku_onnistui: try: luku = int(input()) luku_onnistui = True except ValueError: print("virheellinen kokonaisluku!") print("anna uusi!") return luku CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

46 Käyttöliittymämoduuli jatkuu def lue_desimaaliluku(): luku_onnistui = False while not luku_onnistui: try: luku = float(input()) luku_onnistui = True except ValueError: print("virheellinen desimaaliluku!") print("anna uusi!") return luku CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

47 Käyttöliittymämoduuli jatkuu def lisaa_oppilas(oppilaslista): print("anna uuden oppilaan nimi: ") uusi_nimi = input() print("anna uuden oppilaan opiskelijanumero: ") uusi_nro = input() for jasen in oppilaslista: if jasen.kerro_opnro() == uusi_nro: print("opiskelija on jo listassa, ei lisatty.") return oppilaslista.append(oppilas.oppilas(uusi_nimi, uusi_nro)) CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

48 Käyttöliittymämoduuli jatkuu def lisaa_uusi_suoritus(oppilaslista): print("kenelle suoritus lisataan:") nro = kysy_oppilas(oppilaslista) if nro < 0: print("kelvoton oppilaan numero") else: print("anna kurssikoodi.") uusi_koodi = input() print("anna kurssin nimi.") uusi_nimi = input() print("anna suorituspaiva.") paiva = input() print("anna kurssin opintopistemaara.") pistemaara = lue_desimaaliluku() print("anna kurssin arvosana.") numero = lue_kokonaisluku() CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

49 Käyttöliittymämoduuli jatkuu tehty_suoritus = \ kurssisuoritus.kurssisuoritus(uusi_koodi,\ uusi_nimi, paiva, pistemaara, numero) if oppilaslista[nro].lisaa_suoritus(tehty_suoritus): print("suoritus lisattiin.") else: print("suorituksen lisays ei onnistunut.") CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

50 Käyttöliittymämoduuli jatkuu def tarkista_suoritus(oppilaslista): print("kenen suoritus tarkistetaan:") nro = kysy_oppilas(oppilaslista) if nro < 0: print("kelvoton oppilaan numero") else: print("anna tarkistettavan kurssin koodi.") annettu_koodi = input() if oppilaslista[nro].onko_suoritettu(annettu_koodi): print("oppilas on suorittanut kurssin.") else: print("oppilas ei ole suorittanut kurssia.") CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

51 Käyttöliittymämoduuli jatkuu def tulosta_oppilaan_raportti(oppilaslista): print("kenen raportti tulostetaan:") nro = kysy_oppilas(oppilaslista) if nro < 0: print("kelvoton oppilaan numero") else: print(oppilaslista[nro].tee_raportti()) CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

52 Käyttöliittymämoduuli jatkuu def kysy_oppilas(oppilaslista): i = 0 while i < len(oppilaslista): print("{:d}. {:s}".format(i + 1, \ str(oppilaslista[i]))) i += 1 oppilaan_nro = lue_kokonaisluku() if oppilaan_nro < 1 or oppilaan_nro > len(oppilaslista): return -1 else: return oppilaan_nro - 1 CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

53 Käyttöliittymämoduuli jatkuu def valikko(): print("valitse toiminto:") print("1. lisaa uusi oppilas") print("2. lisaa kurssisuoritus") print("3. tarkista kurssin suoritus") print("4. tulosta oppilaan raportti") print("5. lopeta") valinta = lue_kokonaisluku() return valinta CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

54 Käyttöliittymämoduuli jatkuu def main(): oppilaat = [] toiminto = valikko() while toiminto!= 5: if toiminto == 1: lisaa_oppilas(oppilaat) elif toiminto == 2: lisaa_uusi_suoritus(oppilaat) elif toiminto == 3: tarkista_suoritus(oppilaat) elif toiminto == 4: tulosta_oppilaan_raportti(oppilaat) toiminto = valikko() print("ohjelman suoritus paattyi.") main() CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

55 Huomautuksia Olio-ohjelmointia puhtaasti käyttävässä ohjelmassa myös opiskelijoita sisältävästä listasta olisi tehty oma luokkansa, jonka metodien avulla voitaisiin lisätä opiskelijoita ja opiskelijoille kurssisuorituksia. Kurssisuoritusten hakeminen olisi tehostunut, jos Oppilas-olion kurssisuoritukset olisi kerätty listan sijaan sanakirjaan, jossa avaimena on kurssikoodi ja avaimeen liittyvänä arvona koko Kurssisuoritus-olio. CSE-A1111 Ohjelmoinnin peruskurssi Y / 55

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 Lisää olioista CSE-A1111 Ohjelmoinnin peruskurssi Y1 Lisää olioista 1 / 41 Näillä kalvoilla on lisää esimerkkejä olioista Nämä kalvot sisältävät sellaisia olioesimerkkejä,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 24.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 24.3.2010 1 / 59 Oliomuuttuja toisen olion kenttänä Olion kenttänä voi olla viite saman tai toisen luokan olioon.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 21.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 21.3.2011 1 / 42 Listan alkiona viiteitä olioihin Halutaan tehdä ohjelma ohjelmointikurssien opiskelijoiden käsittelyyn.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 23.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 23.3.2011 1 / 65 Esimerkki: olion kenttänä olioviitteitä sisältävä lista Kirjoitetaan ohjelma oppilasrekisteriä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 22.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 22.3.2010 1 / 49 Lista luokan kenttänä Luokan kenttä voi olla myös esimerkiksi lista, sanakirja tai oliomuuttuja.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 2.11.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 2.11.2015 1 / 37 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 26.10.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 26.10.2015 1 / 28 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 7.11.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 7.11.2018 1 / 37 Oppimistavoitteet: tämän luennon jälkeen Tiedät, mitä oliot ovat ja miksi niitä käytetään ohjelmoinnissa.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 1.11.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 1.11.2017 1 / 38 Mahdollisuus antaa luentopalautetta Luennon aikana voit kirjoittaa kommentteja ja kysymyksiä sivulle

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 18.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 18.3.2009 1 / 51 Olioista (kertausta) Olioiden avulla voidaan kuvata useammasta arvosta koostuvaa kokonaisuutta

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 2.11.2016 CSE-A1111 Ohjelmoinnin peruskurssi Y1 2.11.2016 1 / 36 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 14.10.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 14.10.2015 1 / 32 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 28.10.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.10.2015 1 / 25 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 28.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2015 1 / 16 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 3.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.3.2010 1 / 44 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 17.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 17.3.2010 1 / 49 Olioista (kertausta) Olioiden avulla voidaan kuvata useammasta arvosta koostuvaa kokonaisuutta

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 16.3.2009 1 / 40 Kertausta: tiedostosta lukeminen Aluksi käsiteltävä tiedosto pitää avata: tiedostomuuttuja = open("teksti.txt","r")

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 4.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 4.3.2009 1 / 35 Tiedostot Tiedostojen käsittelyä tarvitaan esimerkiksi seuraavissa tilanteissa: Ohjelman käsittelemiä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 1.3.2010 1 / 36 Monikko Monikko (engl. tuple) muistuttaa listaa, mutta monikon sisältöä ei voi muuttaa sen jälkeen,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 16.3.2011 1 / 53 Olioista (kertausta) Olioiden avulla voidaan kuvata useammasta arvosta koostuvaa kokonaisuutta

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 23.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 23.3.2009 1 / 48 Olio metodin parametrina: luokka Tasovektori Halutaan kirjoittaa luokka kaksiulotteisen vektorin

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 31.10.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 31.10.2018 1 / 40 Oppimistavoitteet: tämän luennon jälkeen Sinulla on peruskäsitys siitä, mitä hyvällä ohjelmointityylillä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 5.10.2016 CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2016 1 / 21 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 4.10.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 4.10.2017 1 / 23 Mahdollisuus antaa luentopalautetta Luennon aikana voit kirjoittaa kommentteja ja kysymyksiä sivulle

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 7.10.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.10.2015 1 / 36 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 10.10.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 10.10.2018 1 / 20 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten ohjelman toimintaa voi tutkia ja ohjelmassa

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 14.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 14.9.2015 1 / 17 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 19.10.2016 CSE-A1111 Ohjelmoinnin peruskurssi Y1 19.10.2016 1 / 43 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 12.10.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 12.10.2015 1 / 32 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 18.10.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 18.10.2017 1 / 44 Mahdollisuus antaa luentopalautetta Luennon aikana voit kirjoittaa kommentteja ja kysymyksiä sivulle

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 21.9.2016 CSE-A1111 Ohjelmoinnin peruskurssi Y1 21.9.2016 1 / 22 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 16.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 16.9.2015 1 / 26 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 14.4.2010 T-106.1208 Ohjelmoinnin perusteet Y 14.4.2010 1 / 60 Mitä tämän kurssin jälkeen? T-106.1223 Tietorakenteet ja algoritmit Y (5 op) Tietorakenteita, esim.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 9.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2015 1 / 26 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 21.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 21.9.2015 1 / 25 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 17.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 17.2.2010 1 / 41 Sanakirja Monissa sovelluksissa on tallennettava rakenteeseen avain arvo-pareja. Myöhemmin rakenteesta

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 23.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 23.9.2015 1 / 30 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 26.9.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 26.9.2018 1 / 21 Oppimistavoitteet: tämän luennon jälkeen Osaat kirjoittaa for-käskyn avulla ohjelman, joka toistaa haluttua

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 11.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 11.2.2009 1 / 33 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 30.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 30.3.2011 1 / 64 Mitä tämän kurssin jälkeen? T-106.1223 Tietorakenteet ja algoritmit Y (5 op) Tietorakenteita, esim.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 28.9.2016 CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 1 / 29 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 27.9.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 27.9.2017 1 / 30 Mahdollisuus antaa luentopalautetta Luennon aikana voit kirjoittaa kommentteja ja kysymyksiä sivulle

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 13.9.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 13.9.2017 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

Ohjelmoinnin perusteet Pythonilla. Teemu Sirkiä, 2015

Ohjelmoinnin perusteet Pythonilla. Teemu Sirkiä, 2015 Ohjelmoinnin perusteet Pythonilla Teemu Sirkiä, 2015 Päivitetty 16.9.2015 Yleistä Materiaali sisältää lähinnä Aalto-yliopiston Ohjelmoinnin peruskurssi Y1:n harjoitustehtävissä tarvittavia keskeisiä asioita

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 14.9.2016 CS-A1111 Ohjelmoinnin peruskurssi Y1 14.9.2016 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 8.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 8.2.2010 1 / 38 Debuggeri Tyypillinen tilanne: ohjelma on kirjoitettu, Python-tulkki ei valita virheistä, mutta ohjelma

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 11.9.2019 CS-A1111 Ohjelmoinnin peruskurssi Y1 11.9.2019 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 12.9.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 12.9.2018 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 14.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 14.2.2011 1 / 55 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 24.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 24.1.2011 1 / 36 Luentopalaute kännykällä alkaa tänään! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 11.10.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 11.10.2017 1 / 34 Mahdollisuus antaa luentopalautetta Luennon aikana voit kirjoittaa kommentteja ja kysymyksiä sivulle

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 5.10.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 5.10.2015 1 / 36 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

T Ohjelmoinnin perusteet Y (Python). Tentti

T Ohjelmoinnin perusteet Y (Python). Tentti 115 T-106.1208 Ohjelmoinnin perusteet Y (Python). Tentti 19.5.2011 Kitjoita jokaisen vastauspaperisi alkuun kurssin nimi, kokeen päivämäärä, nimesi, opiskelijanumerosi (myös tarkistuskirjain), vastauspaperiesi

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 10.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 10.2.2010 1 / 43 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 19.9.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 19.9.2018 1 / 18 Oppimistavoitteet: tämän luennon jälkeen Osaat kirjoittaa Python-ohjelman, joka suorittaa eri kerroilla

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 26.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 26.1.2009 1 / 33 Valintakäsky if syote = raw_input("kerro tenttipisteesi.\n") pisteet = int(syote) if pisteet >=

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.2.2010 1 / 46 Merkkijonot Merkkijonojen avulla ohjelmassa voi esittää tekstitietoa, esim. nimiä, osoitteita ja

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 25.1.2010 1 / 41 Valintakäsky if Tähänastiset ohjelmat ovat toimineen aina samalla tavalla. Usein ohjelman pitäisi

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 3.10.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 3.10.2018 1 / 27 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten ohjelma voidaan jakaa pienempiin osiin käyttämällä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 3.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 1 / 36 Esimerkki: asunnon välityspalkkio Kirjoitetaan ohjelma, joka laskee kiinteistönvälittäjän asunnon

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 26.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 1 / 34 Luentopalaute kännykällä käynnissä! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 11.11.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 11.11.2015 1 / 23 Kertausluento Luennolla käydään läpi tenttivaatimuksia ja vanhoja tenttitehtäviä. Lisäksi luennolla

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 12.10.2016 CSE-A1111 Ohjelmoinnin peruskurssi Y1 12.10.2016 1 / 31 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.2.2011 1 / 37 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 15.11.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 15.11.2017 1 / 28 Mahdollisuus antaa luentopalautetta Luennon aikana voit kirjoittaa kommentteja ja kysymyksiä sivulle

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 12.4.2010 T-106.1208 Ohjelmoinnin perusteet Y 12.4.2010 1 / 34 Graafiset käyttöliittymät Tähän asti kirjoitetuissa ohjelmissa on ollut tekstipohjainen käyttöliittymä.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 19.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 19.1.2011 1 / 39 Haluatko antaa palautetta luennoista? Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 21.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 21.1.2009 1 / 32 Tyypeistä Monissa muissa ohjelmointikielissä (esim. Java ja C) muuttujat on määriteltävä ennen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.2.2009 1 / 43 Funktiot Tähän asti esitetyt ohjelmat ovat oleet hyvin lyhyitä. Todellisessa elämässä tarvitaan kuitenkin

Lisätiedot

Listarakenne (ArrayList-luokka)

Listarakenne (ArrayList-luokka) Listarakenne (ArrayList-luokka) Mikä on lista? Listan määrittely ArrayList-luokan metodeita Listan läpikäynti Listan läpikäynti indeksin avulla Listan läpikäynti iteraattorin avulla Listaan lisääminen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 31.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 31.1.2011 1 / 41 Luentopalaute kännykällä käynnissä! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2011 1 / 46 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 23.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 1 / 44 Debuggeri Tyypillinen tilanne: ohjelma on kirjoitettu, Python-tulkki ei valita virheistä, mutta

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 16.10.2019 CS-A1111 Ohjelmoinnin peruskurssi Y1 16.10.2019 1 / 25 Oppimistavoitteet: tämän luennon jälkeen Tunnet erilaisia tapoja käsitellä merkkijonoja. Osaat esimerkiksi

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Keskeneräinen luento 3: Listat (mm. SICP 22.2.3) Riku Saikkonen 31. 10. 2011 Sisältö 1 Linkitetyt listat 2 Linkitetyt listat (SICP 2.1.1, 2.2.1) funktionaalinen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 27.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 27.1.2010 1 / 37 If-käsky toistokäskyn sisällä def main(): HELLERAJA = 25.0 print "Anna lampotiloja, lopeta -300:lla."

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python 7. helmikuuta 2009 Ohjelmoinnista Ohjelman peruselementtejä Koodin kommentointi Lohkorakenne Ohjausrakenteet If For While Try Funktiot Käyttö

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 16.11.2016 CSE-A1111 Ohjelmoinnin peruskurssi Y1 16.11.2016 1 / 28 Kertausluento Luennolla käydään läpi tenttivaatimuksia ja vanhoja tenttitehtäviä. Lisäksi luennolla

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 17.10.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 17.10.2018 1 / 31 Oppimistavoitteet: tämän luennon jälkeen Tunnet lisää erilaisia tapoja käyttää listoja Python-ohjelmissa.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 1.2.2010 1 / 47 Sijoituksen arvokehitys, koodi def main(): print "Ohjelma laskee sijoituksen arvon kehittymisen."

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

815338A Ohjelmointikielten periaatteet 2014-2015

815338A Ohjelmointikielten periaatteet 2014-2015 815338A Ohjelmointikielten periaatteet 2014-2015 X Skriptiohjelmointi Sisältö 1. Johdanto 2. Skriptikielten yleispiirteitä 3. Python 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 2 X.1 Johdanto

Lisätiedot

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b Pythonin Kertaus Cse-a1130 Tietotekniikka Sovelluksissa Versio 0.01b Listat 1/2 esimerkkejä listan peruskäytöstä. > lista=['kala','kukko','kissa','koira'] ['kala','kukko','kissa','koira'] >lista.append('kana')

Lisätiedot

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 28.1.2009 1 / 28 Esimerkki: murtoluvun sieventäminen Kirjoitetaan ohjelma, joka sieventää käyttäjän antaman murtoluvun.

Lisätiedot

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmointi 2 / 2010 Välikoe / 26.3 Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään

Lisätiedot

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. 1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).

Lisätiedot

Tentti: T-106.1210 Ohjelmoinnin peruskurssi, osa 1. Yleistä. Tehtävä 1

Tentti: T-106.1210 Ohjelmoinnin peruskurssi, osa 1. Yleistä. Tehtävä 1 ./ Tentti: T-106.1210 Ohjelmoinnin peruskurssi, osa 1 Tenttipäivä: 13.12. 2011 El APUVÄLINEITÄ Yleistä Tentissä on kaksi tehtävää. Ensimmäinen tehtävä on tärkeämpi: sillä pyritään varmistamaan, että jokaisella

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot