Miten tehdää. ään n virheettömi. miä ohjelmia. Ralph-Johan Back Joakim von Wright Åbo Akademi TUCS Formaalit menetelmät t ohjelmoinnissa ryhmä

Koko: px
Aloita esitys sivulta:

Download "Miten tehdää. ään n virheettömi. miä ohjelmia. Ralph-Johan Back Joakim von Wright Åbo Akademi TUCS Formaalit menetelmät t ohjelmoinnissa ryhmä"

Transkriptio

1 Miten tehdää ään n virheettömi miä ohjelmia Ralph-Johan Back Joakim von Wright Åbo Akademi TUCS Formaalit menetelmät t ohjelmoinnissa ryhmä

2 Esitelmät Ohjelmoinnin matematiikka Ralph Back Matematiikan ohjelmointi Joakim von Wright

3 Ohjelmoinnin matematiikka Ralph-Johan Back

4 Sisält ltö Ohjelmiston luotettavuus Formaalit menetelmät Ohjelman oikeellisuuden todistaminen Inkrementaalinen ohjelmointi

5 Tietokoneet, kommunikointi ja ohjelmistot Käyttöliittymät Ohjelmistot Ohjelmointikielet Käyttöliittymät Ohjelmistot Ohjelmointikielet Kommunikointi Käyttöjärjestelmä Kone Käyttöjärjestelmä Kone Tietoverkko

6 Ohjelmistot keskeisessä roolissa Ohjelmistot muodostavat suurimman osan tietojärjestelmist rjestelmistä Yhteiskunta erittäin in riippuvainen ohjelmistoista sulautetut järjetestelmj rjetestelmät, t, hallinto, pc sovellutukset,... Ohjelmistot ohjaavat kriittisiä toimintoja: lentoliikennettä,, sairaalalaitteita, teollisia prosesseja,... Ohjelmistojen laadulla on vahva vaikutus yhteiskunnan ja yksityisten toiminnan luotettavuuteen, turvallisuuteen, tehokkuuteen ja tulosten laatuun

7 Mikä on hyvä tietokoneohjelma monipuolinen, tekee sitä mitä minä haluan toimii käytk ytössä olevalla tietokoneella ja käyttöjärjestelmässä helppokäytt yttöinen, selkeä käyttöliittymä toimii tehokkaasti ja reagoi nopeasti toimii hyvin muiden ohjelmien kanssa luotettava, ei sisäll llä paljon virheitä käyttäytyy ytyy hyvin myös s virhetilanteissa jne jne

8 Ohjelmien laadun kehitys Kehitys on kulkenut kohti parempilaatuisia ohjelmia helppokäytt yttöisempiä ohjelmia, tehokkaampia, monipuolisempia,... Paitsi: ohjelmistojen luotettavuus ei ole parantunut, vaan lähinnl hinnä huonontunut.

9 Mistä ohelmistojen virheet johtuvat Perussyy on ohjelmien kompleksisuuden kasvu Ohjelmistojen koko on jatkuvasti kasvanut Nykypäiv ivän n ohjelmistot ovat valtavan suuria ( riviä koodia) Ohjelmistot ovat hyvin monimutkaisia, ja niiden osien väliset v vuorovaikutukset ovat vaikeasti hallittavissa Muut laatukriteerit (monipuolisuus, käytettk ytettävyys,...) kasvattavat ohjelmien kokoa Markkinavoimat suosivat huonoja ohjelmistoja Ohjelmistojen nopea valmistuminen (time to market) tärkeintt rkeintä Kuluttajat eivät t vaadi luotettavia ohjelmia Ohjelmistoille ei esim. anneta luotettavuustakuuta

10 Ohjelmistoteknologian nykytaso Ohjelmistotekniikka on kehittymätönt ntä verrattuna muihin teknologian aloihin Perustutkimusta ei paljon hyödynnet dynnetä teollisessa ohjelmistotuotannossa Ohjelmointi tarvitsee toisenlaisen tieteellisen perustan kuin tavanomainen tekniikkaan mallit ovat useimmiten diskreettejä,, eivät t jatkuvia tärkein työkalu on logiikka ja algebra, ei analyysi suurin osa tarvittavasta matematiikasta on kehitetty viimeisten 50 vuoden aikana

11 Ohjelmointiprosessi tänäät ään määrittele ongelma suunnittele ohjelma koodaa ohjelma testaa ohjelma ylläpidä ohjelmaa

12 Testaaminen Suoritetaan ohjelma esimerkkidatalla, ja tarkistetaan ovatko tulokset oikeita Testauksessa joudutaan suorittamaan ohjelma hyvin monella eri datalla, jotta löydettl ydettäisiin mahdollisimman monta virhettä Testaamisella ei voida poistaa kaikki ohjelmavirheet, ainoastaan ne jotka löytyvl ytyvät esimerkkien avulla

13 Virheiden poistaminen testaamalla Prosessin alkuvaiheessa tehdyt ohjelmavirheet pyritää ään n loppuvaiheessa poistamaan testauksella. Testaaminen käy k y yhä työlää äämmäksi, mitä suuremmiksi ohjelmistot tulevat Testaaminen muodostaa yhä suuremman osan ohjelmistokehityksen kustannuksista Testaamisella ei kuitenkaan voida saavuttaa haluttu ohjelmistojen luotettavuuden taso

14 Formaalit menetelmät ohjelmoinnissa Formaalit menetelmät t muodostavat osaksi vaihtoehdon testaamiselle, osaksi täydentt ydentävät testaamista Ensisijainen tavoite on parantaa ohjelmien luotettavuutta Ohjelman ominaisuksia tutkitaan analysoimalla sitä matematikan ja logiikan avulla Esimerkki: todistetaan matemaattisesti että ohjelma toimii oikein (ts ei sisäll llä virheitä)

15 Åbo Akademin ohjelmointitekniikan tutkimusryhmä Åbo Akademin tietojenkäsittelyopin laitos Keskittynyt formaalien menetelmien tutkimiseen ja kehittämiseen Suomen Akatemia tutkimuksen huippuyksikkö (osana TUCSia) ja (omana yksikkönä) Senioritutkijat Ralph-Johan Back (johtaja) Johan Lilius Kaisa Sere Joakim von Wright Ryhmäss ssä noin 50 tutkijaa (noin puolet ulkomaalaisia)

16 Tutkimussuunnat Ohjelmoinnin matemaattinen perusta tarkennuskalkyyli aktiojärjestelm rjestelmät ohjelmistoarkkitehtuuri Uudet ohjelmointiparadigmat rinnakkaiset ja hajautetut järjestelmj rjestelmät vlsi-suunnittelu suunnittelu olio-ohjelmointi ohjelmointi ohjelmistojen suunnittelu ja vaatimusmää äärittelyt Ohjelmoinnin työkalut ohjelmointiympärist ristöt mekaaninen todistaminen mallintarkistaminen Ohjelmointiprosessit

17 Esimerkki ohjelman oikeellisuuden todistamisesta Ohjelma joka laskee yhteen ensimmäiset iset n kokonaislukua: n n sum n

18 Sum-ohjelman toimta i:=1 s:=0 i <=n s:=s+i i:=i+1

19 Ohjelmakoodi def sum(n): i := 1 s := 0 while i <= n: s := s+i i := i+1 return s laske n i on kierroslaskuri s on osasumma iteroidaan kun i <= n lisätää ään n uusi i summaan s kasvatetaan i:tä kun i = n+1, lopetetaan, palautetaan summa s print sum(10) lasketaan

20 Ohjelman suoritus i s 1 0 n = 3 i:=1 s:=0 i <=n s:=s+i i:=i+1

21 Ohjelman suoritus i s n = 3 i:=1 s:=0 i <=n s:=s+i i:=i+1

22 Ohjelman suoritus i s n = 3 i:=1 s:=0 i <=n s:=s+i i:=i+1

23 Ohjelman suoritus i s n = 3 i:=1 s:=0 i <=n s:=s+i i:=i+1

24 Induktiohypoteesi i s s =1+...+(i-1) 1) 1<=i <= n+1 n = 3 i:=1 s:=0 i <=n s:=s+i i:=i+1

25 Väittämät alkuehto: 0 <= n invariantti: s =1+...+(i-1) 1) 1<=i <= n+1 i:=1 s:=0 i <=n loppuehto: s = n s:=s+i i:=i+1

26 Väittämät t ohjelmatekstissä def sum2(n): i := 1 s := 0 while i <= n: s := s+i i := i+1 return s # 0 <= n # s =1+...+(i-1) 1) & 1<=i <= n+1 # s = n print sum2(10)

27 Sum-ohjelman oikeellisuus Invariantti on voimassa silmukan alussa Invariantti pysyy voimassa silmukkaa kierettäess essä kerran Invarianttista seuraa loppuehto, kuin silmukka pysähtyy Silmukan suoritus pysähtyy invariantti alkuehto i:=1 s:=0 i <=n loppuehto Sum-ohjelma toimii oikein s:=s+i i:=i+1

28 Oikeellisuuden todistamisen ongelmat Todistaminen vaatii matemaattista ajattelutapaa Kun ohjelman koko kasvaa, niin todistaminen tulee yhä vaikeammaksi Todistus itsessää ään n voi sisält ltää virheitä Usein vaikeata kuvata ennakkoehto ja loppuehto täsmällisesti Invariantin keksiminen hankalaa (vastaa induktiohypoteesin muodostamista) Todistukset rutiininomaisia, eivät t erikoisen kiinnostavia tai matemaattisesti haastavia

29 Todistamisen lisäongelma Käytännössä ohjelmat sisält ltävät t virheitä,, joten niitä ei voida (eikä pitäisik isikään n voida) todistaa oikeiksi Todistuksen mahdottomuus näyttn yttää virheen paikan Ennen oikeellisuuden todistamista on kaikki virheet paikallistettava ja korjattava Todistaminen ja testaaminen antavat kaksi erilaista tapaa hakea virheitä ohjelmasta Päätelmä: : valmiiden ohjelmien testaaminen hankalaa eikä erikoisen mielekäst stä.

30 Oikein toimivien ohjelmien rakentaminen Oikeellisuutta ei voida lisätä jälkeenpäin Oikeellisuus on rakennettava sisää ään alusta lähtien l Ohjelma on rakennettava pala kerrallaan, siten että oikeellisuutta ei koskaan menetetä Ryhmämme mme on keskittynyt tällaisten t inkrementaalisten oikeellisuuden säilyttävien ohjelmointimentelmien kehittämiseen ja tutkimiseen oikeellisuus säilyy

31 Inkrementaalinen ohjelmointi Rakennetaan ensimmäinen inen pieni palikka A0 Todistetaan se oikeaksi A0

32 Inkrementaalinen ohjelmointi Rakennetaan seuraava palikka B0 Todistetaan se oikeaksi A0 B0

33 Inkrementaalinen ohjelmointi Parannellaan A0:aa, lisää äämällä sen käyttökelpoisuutta Todistetaan uusi palikka A1 oikeaksi Todistetaan, että A1 säilyttää A0:n A1 toiminnot A0 B0

34 Inkrementaalinen ohjelmointi Parannellaan B0:aa, lisää äämällä sen käyttökelpoisuutta Todistetaan uusi palikka B1 oikeaksi Todistetaan, että B1 säilyttää B0:n A1 B1 toiminnot A0 B0

35 Inkrementaalinen ohjelmointi Parannellaan taas Ata A2 A1 A0 B1 B0

36 Inkrementaalinen ohjelmointi jne, kunnes ollaan saatu rakennettua ohjelmaan kaikki toivottu toiminnallisuus A5 A4 A3 B3 C4 C3 A2 B2 C2 A1 B1 A0 B0

37 Olipohjainen ohjelmointi Olio on sopiva rakennuspalikka: luominen Olion nimi muutokset data kyselyt lopettaminen

38 Data: Pankkitili oliona Saldo, tilinumero ja tilin haltija Luominen: Luodaan pankkitili (tilinumero ja asiakkaan nimi) Tilillä ei aluksi ole yhtää ään n rahaa Muutokset: Pankkitilille voidaan panna rahaa Pankkitililtä voidaan ottaa rahaa Muutetaan asiakkaan nimi Kyselyt: Paljonko rahaa on tilillä juuri nyt Kuka on tilinhaltija, mikä on tilinumero Lopettaminen: Pankkitili poistetaan käytk ytöstä

39 Pankkitili pankin toiminnat asiakkaan toiminnat luodaan uusi tili tilille pano tililtä otto nimen muutos Pankkitili saldo tilinhaltija tilinumero tilin saldo tilinumero tilin haltija poistetaan tili käytöstä

40 Pankkitili ohjelmana class Account: def init (self, name, account): self.saldo := 0 self.name := name self.account := account def insert(self, sum): self.saldo := self.saldo + sum def remove(self, sum): self.saldo := self.saldo - sum def getsaldo(self): return self.saldo...

41 Pankkitilin lisäominaisuuksia Koron maksaminen Luotollinen pankkitili Pankkitiliin on liitetty tunnusluku Tapahtumien rekisteröinti inti Automaattinen laskujen maksu eräpäiv ivänä Tilillä voi olla eri valuuttoja jne, jne...

42 Luotollinen pankkitili uusi luottoraja tililtä otto Luotollinen luottoraja nostettavissa luottoraja tilille pano tililtä otto nimen muutos Pankkitili saldo tilinhaltija tilinumero tilin saldo tilinumero tilin haltija

43 Korollinen pankkitili uusi korkoprosentti lisää korko Korollinen korkoprosentti korko tilin saldo tilin korko tilille pano tililtä otto nimen muutos Pankkitili saldo tilinhaltija tilinumero tilin saldo tilinumero tilin haltija

44 Todistaminen Uuden olion on toteutettava sille asetetut vaatimukset Uuden olion on säilytetts ilytettävä alkkuperäisen olion ominaisuudet Esim. nimenmuutos, tilinhaltija toimii Luotollinen-oliossa oliossa samalla tavalla kuin Pankkitili-oliossa tililtä otto huomio luottorajan, toimii samoin kuin aiemmin jos luottoraja on 0.

45 Pankkitilin rakentaminen Maksut Käyttötili Tunnusluku Luotollinen Korollinen Tapahtumat Pankkitili

46 Raha-automaatti automaatti saldokysely lisää rahaa otto Raha-automaatti rahamäärä Pankkitili Pankkitili Pankkitili Pankkitili Rahanluovutus

47 Pankkiautomaatti Kortinlukija Pankkiautomaatti Käyttötili Rahanluovutus Raha-automaatti Pankkitili

48 Maksuautomaatti Setelinsyöttö Maksuautomaatti Maksut Kortinlukija Pankkiautomaatti Käyttötili Rahanluovutus Raha-automaatti Pankkitili

49 Miten todistetaan oikeellisuus Perusoliot on todistettava oikeiksi Olion laajennus on todistettava oikeaksi laajennuksen on toteuttettava sille asetettavat vaatimukset laajennuksen on säilytetts ilytettäv v aikaisemmat ominaisuudet Olion käyttk yttö on tapahduttava oikein olion menetelmää saa vain kutsua jos menetelmän alkuehto on voimassa

50 Todistus toteuttaa vaatimuksensa Pankkiautomaatti Käyttötili säilyttää ominaisuudet Raha-automaatti Pankkitili toteuttaa vaatimuksensa kunnioittaa alkuehtoja toteuttaa vaatimuksensa

51 Inkrementaalinen ohjelmointi Vaatii uutta lähestymistapaa l ohjelmointiin Oikeellisuus on tarkistettava jatkuvasti ohjelmaa rakennettaessa Ohjelman arkkitehtuurin on tuettava inkrementaalista rakentamista Ohjelmointiprosessin on myös s tuettava tätät lähestymistapaa Testaaminen yhä tarpeellinen, tapahtuu jokaisen laajennuksen yhteydessä

52 Rakenteen remontointi Kun suurta kokonaisuutta rakennetaan pala kerrallaan, voidaan joutua umpikujaan: valittu arkitehtuuri ja rakennepalikat eivät t tue uusia laajennuksia Tällöin ohjelman rakennetta on remontoitava arkitehtuuria muutetaan olioita tai olioiden toimintoja muutetaan toiminnallisuutta ei muuteta Rakenteen remontti voi olla hankalaa, mutta se kannattaa

53 Ohjelmointiprosessi Inkrementaalisessa ohjelmoinnissa ohjelman laajentaminen ja ohjelman remontointi vuorottelevat laajenna ohjelmaa remontoi ohjelmaa

54 Inkrementaalisen ohjelmoinnin edut Iso ohjelma voidaan rakentaa pieninä laajennuksina Oikeellisuuden säilyminen s voidaan tarkistaa jatkuvasti Käytössä on aina toimiva ohjelma (toiminnallisuus on vajaa, mutta se mikä siinä on toimii oikein) Ohjelmaa voidaan jatkuvasti verrata vaatimuksiin, ja tarvittaessa korjata ohjelmaa tai vaatimuksia Erillistä ohjelman ylläpitovaihetta ei ole, ylläpito on samanlaista kuin alkuperäisen ohjelman rakentaminen Oikeellisuuden jatkuva huomioiminen tekee ohjelman remontin mahdollisiksi

55 Inkrementaalisen rakentamisen rajoitukset Käytännössä liian suuria ohjelmia ei voida rakentaa tällä tavoin Ohjelmat on jaettava erikseen ohjelmoitaviin moduleihin, joilla on hyvin määm ääritelly rajapinnat Eri ohjelmointiryhmät t voivat ohjelmoida moduleja toisistaan riippumatta Inkrementaalinen rakentaminen ja modulaarinen rakentaminen täydentt ydentävät t toisiaan Yhdessä ne mahdollistavat suurten ja luotettavien ohjelmien rakentamisen Virheettömyys edellyttää mekaanista ohjelmien oikeellisuuden todistamista

56 Inkrementaalisen rakentamisen projekteja ÅAssa Inkrementaalisen rakentamisen teoria (tarkennuskalkyylissä) Inkrementaalista rakentamista tukeva ohjelmointiympärist ristö (UML-pohjainen) Inkrementaalista rakentamista tukeva ohjelmointiprosessi (XP-pohjainen) Useita piloottiprojekteja, joissa rakennetaan suurempia ohjelmia tällt llä menetelmäll llä Inkrementaalinen rakentaminen eri ohjelmointiparadigmoissa (vlsi-suunnittelu, suunnittelu, olio- ohjelmointi, hajautet järjestelmj rjestelmät, t, rinnakkaisohjelmat, jne)

Matematiikan ohjelmointi. Joakim von Wright

Matematiikan ohjelmointi. Joakim von Wright Matematiikan ohjelmointi Joakim von Wright Formaali menetelmä käytännössä miten todistetaan ohjelman oikeellisuus? miltä todistus näyttn yttää? isot ohjelmat? miljoona riviä koodia nykyajan ohjelmat? rinnakkaisuus,

Lisätiedot

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita! Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita! eli... Hyvä kaava sanoo enemmän kuin,... tuhat riviä koodia!... sata riviä tekstiä!... kymmenen diagrammia! YLEISTÄ FORMAALEISTA

Lisätiedot

Ohjelmien automaattisen verifioinnin reunamailla

Ohjelmien automaattisen verifioinnin reunamailla Ohjelmien automaattisen verifioinnin reunamailla Antti Siirtola Tietotekniikan laitos, Perustieteiden korkeakoulu, Aalto-yliopisto, antti.siirtola@aalto.fi Suomalainen Tiedeakatemia, Nuorten akatemiaklubi,

Lisätiedot

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } } Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin testattaviin toiminnallisuuksiin, kuten olion tarjoamiin metodeihin.

Lisätiedot

Tarvitseeko informaatioteknologia matematiikkaa?

Tarvitseeko informaatioteknologia matematiikkaa? Tarvitseeko informaatioteknologia matematiikkaa? Oulun yliopisto Matemaattisten tieteiden laitos 1 Kyllä kai IT matematiikkaa tarvitsee!? IT ja muu korkea teknologia on nimenomaan matemaattista teknologiaa.

Lisätiedot

Oleelliset vaikeudet OT:ssa 1/2

Oleelliset vaikeudet OT:ssa 1/2 Oleelliset vaikeudet OT:ssa 1/2 Monimutkaisuus: Mahdoton ymmärtää kaikki ohjelman tilat Uusien toimintojen lisääminen voi olla vaikeaa Ohjelmista helposti vaikeakäyttöisiä Projektiryhmän sisäiset kommunikointivaikeudet

Lisätiedot

Imperatiivisten ohjelmien organisointiparadigmojen. historia

Imperatiivisten ohjelmien organisointiparadigmojen. historia Imperatiivisten ohjelmien organisointiparadigmojen historia Timo Tapanainen Helsingin yliopisto, tietojenkäsittelytieteen laitos Tietojenkäsittelytieteen historia -seminaari, kevät 2007 Sisältö Paradigma,

Lisätiedot

Imperatiivisten ohjelmien organisointiparadigmojen historia

Imperatiivisten ohjelmien organisointiparadigmojen historia Imperatiivisten ohjelmien organisointiparadigmojen historia Timo Tapanainen Helsingin yliopisto, tietojenkäsittelytieteen laitos Tietojenkäsittelytieteen historia -seminaari, kevät 2007 Sisältö Paradigma,

Lisätiedot

E-math - sa hko inen oppimisympa risto matematiikan opiskeluun. Ralph-Johan Back Åbo Akademi (Virtuaaliopetuksen päivät 2013)

E-math - sa hko inen oppimisympa risto matematiikan opiskeluun. Ralph-Johan Back Åbo Akademi (Virtuaaliopetuksen päivät 2013) E-math - sa hko inen oppimisympa risto matematiikan opiskeluun Ralph-Johan Back Åbo Akademi (Virtuaaliopetuksen päivät 2013) Esityksen organisointi 1. Yleisesitys E-math projektin hankkeesta ja sen tuloksista

Lisätiedot

1. Olio-ohjelmointi 1.1

1. Olio-ohjelmointi 1.1 1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja

Lisätiedot

Kokeellista matematiikkaa SAGE:lla

Kokeellista matematiikkaa SAGE:lla Kokeellista matematiikkaa SAGE:lla Tutkin GeoGebralla 1 luonnollisen luvun jakamista tekijöihin 2. GeoGebran funktio Alkutekijät jakaa luvun tekijöihin ja tuottaa alkutekijät listana. GeoGebrassa lista

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009

Tähtitieteen käytännön menetelmiä Kevät 2009 Tähtitieteen käytännön menetelmiä Kevät 2009 2009-01-12 Yleistä Luennot Luennoija hannu.p.parviainen@helsinki.fi Aikataulu Observatoriolla Maanantaisin 10.00-12.00 Ohjattua harjoittelua maanantaisin 9.00-10.00

Lisätiedot

Turmeleeko ohjelmointi nuorisomme?

Turmeleeko ohjelmointi nuorisomme? Solmu 2/2015 1 Turmeleeko ohjelmointi nuorisomme? Antti Laaksonen Tietojenkäsittelytieteen laitos, Helsingin yliopisto ahslaaks@cs.helsinki.fi Uuden peruskoulun opetussuunnitelman mukaan syksystä 2016

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

Integrointialgoritmit molekyylidynamiikassa

Integrointialgoritmit molekyylidynamiikassa Integrointialgoritmit molekyylidynamiikassa Markus Ovaska 28.11.2008 Esitelmän kulku MD-simulaatiot yleisesti Integrointialgoritmit: mitä integroidaan ja miten? Esimerkkejä eri algoritmeista Hyvän algoritmin

Lisätiedot

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu 811312A Tietorakenteet ja algoritmit 2017-2018, Harjoitus 2 ratkaisu Harjoituksen aiheena on algoritmien oikeellisuus. Tehtävä 2.1 Kahvipurkkiongelma. Kahvipurkissa P on valkoisia ja mustia kahvipapuja,

Lisätiedot

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 12 (opetusmoniste, kappaleet )

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 12 (opetusmoniste, kappaleet ) T-79.144 Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 12 (opetusmoniste, kappaleet 9.1 9.5) 30.11. 3.12.2004 1. Osoita lauselogiikan avulla oheisten ehtolausekkeiden ekvivalenssi. (a)!(a

Lisätiedot

public static void main (String [] args)

public static void main (String [] args) HAAGA-HELIA OHJELMOINTI 1(5) OHJELMALUOKKA Ohjelma-luokan käynnistää public static void main (String [] args) main-metodiin voi koodata 1. ohjelman logiikan tai 2. luoda ohjelma-olion ja kutsua metodia,

Lisätiedot

Tietotekniikan perusopetuksen kehittäminen

Tietotekniikan perusopetuksen kehittäminen Tietotekniikan perusopetuksen kehittäminen Kokemuksia ja suuntaviivoja Lauri Malmi Teknillinen korkeakoulu ivät 1 Sisält ltö 1. Taustaa 2. Erää ään n kurssin kokemuksia 3. Havaintoja kokemuksista 4. Entä

Lisätiedot

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit Ohjelmiston testaus ja laatu Ohjelmistotekniikka elinkaarimallit Vesiputousmalli - 1 Esitutkimus Määrittely mikä on ongelma, onko valmista ratkaisua, kustannukset, reunaehdot millainen järjestelmä täyttää

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

ELM GROUP 04. Teemu Laakso Henrik Talarmo

ELM GROUP 04. Teemu Laakso Henrik Talarmo ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................

Lisätiedot

Automaattinen yksikkötestaus

Automaattinen yksikkötestaus Teknillinen Korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L models Automaattinen yksikkötestaus Ryhmä Rajoitteiset Versio Päivämäärä Tekijä

Lisätiedot

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmistojen mallintaminen. Luento 11, 7.12. Ohjelmistojen mallintaminen Luento 11, 7.12. Viime viikolla... Oliosuunnittelun yleiset periaatteet Single responsibility eli luokilla vain yksi vastuu Program to an interface, not to concrete implementation,

Lisätiedot

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin Raimo Nikkilä Aalto-yliopiston sähkötekniikan korkeakoulu - Automaation tietotekniikan tutkimusryhmä 17. tammikuuta 2013

Lisätiedot

LUKUTEORIA johdantoa

LUKUTEORIA johdantoa LUKUTEORIA johdantoa LUKUTEORIA JA TODISTAMINEN, MAA11 Lukuteorian tehtävä: Lukuteoria tutkii kokonaislukuja, niiden ominaisuuksia ja niiden välisiä suhteita. Kokonaislukujen maailma näyttää yksinkertaiselta,

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

Rakenteiset päättelyketjut ja avoin lähdekoodi

Rakenteiset päättelyketjut ja avoin lähdekoodi Rakenteiset päättelyketjut ja avoin lähdekoodi Mia Peltomäki Kupittaan lukio ja Turun yliopiston IT-laitos http://crest.abo.fi /Imped Virtuaalikoulupäivät 24. marraskuuta 2009 1 Taustaa Todistukset muodostavat

Lisätiedot

Tapahtuipa Testaajalle...

Tapahtuipa Testaajalle... Tapahtuipa Testaajalle... - eli testaus tosielämässä 09.10.2007 Juhani Snellman Qentinel Oy 2007 Agenda Minä ja mistä tulen Testauksen konteksti Tapauksia tosielämästä ja työkaluja 2 Minä Juhani Snellman

Lisätiedot

Logiikka 1/5 Sisältö ESITIEDOT:

Logiikka 1/5 Sisältö ESITIEDOT: Logiikka 1/5 Sisältö Formaali logiikka Luonnollinen logiikka muodostaa perustan arkielämän päättelyille. Sen käyttö on intuitiivista ja usein tiedostamatonta. Mikäli logiikka halutaan täsmällistää esimerkiksi

Lisätiedot

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

Ohjelmistotekniikka - Luento 2

Ohjelmistotekniikka - Luento 2 Ohjelmistotekniikka - Luento 2 Luku 2: Prosessimallit - miten spiraalimalliin päädyttiin - spiraalimallista (R)UP malliin - oman ammattitaidon kehittäminen; PSP ja TSP mallit 1 Luento 2: Prosessimallit

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

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

Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ylläpitodokumentti Boa Open Access Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari

Lisätiedot

812341A Olio-ohjelmointi, I Johdanto

812341A Olio-ohjelmointi, I Johdanto 812341A Olio-ohjelmointi, 2016 I Johdanto Sisältö 1. Abstraktiosta 2. Olio-ohjelmoinnin historiaa 3. Olioparadigmasta 4. Peruskäsitteiden kertausta 812341A Olio-ohjelmointi, Johdanto 2 1 Abstraktiosta

Lisätiedot

4.3. Matemaattinen induktio

4.3. Matemaattinen induktio 4.3. Matemaattinen induktio Matemaattinen induktio: Deduktion laji Soveltuu, kun ominaisuus on osoitettava olevan voimassa luonnollisilla luvuilla. Suppea muoto P(n) : Ominaisuus, joka joka riippuu luvusta

Lisätiedot

2. Olio-ohjelmoinista lyhyesti 2.1

2. Olio-ohjelmoinista lyhyesti 2.1 2. Olio-ohjelmoinista lyhyesti 2.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 2.2 Yleistä Olio-ohjelmointia käsitellään hyvin

Lisätiedot

Pankissa. Oikeesti aikuisten 1 tekstejä ja harjoituksia suomen kielen opetukseen

Pankissa. Oikeesti aikuisten 1 tekstejä ja harjoituksia suomen kielen opetukseen Pankissa Veera menee ensimmäistä kertaa yksin pankkiin. Hän haluaa avata oman tilin ja hankkia pankkikortin. Kun hän avaa pankin oven, hän huomaa, että pankissa on todella pitkä jono. Hän ottaa itselleen

Lisätiedot

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus: Dokumentaatio, osa 1 Tehtävämäärittely Kirjoitetaan lyhyt kuvaus toteutettavasta ohjelmasta. Kuvaus tarkentuu myöhemmin, aluksi dokumentoidaan vain ideat, joiden pohjalta työtä lähdetään tekemään. Kuvaus

Lisätiedot

OSUUSPANKIN KONSERNITILIPALVELU. Asiakasohje

OSUUSPANKIN KONSERNITILIPALVELU. Asiakasohje OSUUSPANKIN KONSERNITILIPALVELU Marraskuu 2005 KONSERNITILIPALVELU 2 (5) Palvelun edut Palvelun kuvaus Konsernitili Konsernitilipalvelu on ratkaisu yrityksen kassanhallinnan hoidon ja maksuvalmiuden tehostamisen

Lisätiedot

Algoritmit 1. Luento 2 Ke Timo Männikkö

Algoritmit 1. Luento 2 Ke Timo Männikkö Algoritmit 1 Luento 2 Ke 11.1.2017 Timo Männikkö Luento 2 Algoritmin esitys Algoritmien analysointi Suoritusaika Asymptoottinen kertaluokka Peruskertaluokkia NP-täydelliset ongelmat Algoritmit 1 Kevät

Lisätiedot

Tutoriaaliläsnäoloista

Tutoriaaliläsnäoloista Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus

Lisätiedot

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python 8. marraskuuta 2010 Ohjelmointi Perusteet Peruskäsitteitä Olio-ohjelmointi Pythonin alkeet Esittely Esimerkkejä Muuttujat

Lisätiedot

Nuoret mediatoimijoina

Nuoret mediatoimijoina Nuoret median käyttäjinä ja tulkitsijoina Viestinnän n Keskusliiton syysseminaari Kaisa Osola, Kallion lukio 1.12.2011 Nuoret median käyttäjinä ja tulkitsijoina Nuoret mediatoimijoina Millaiset sisäll

Lisätiedot

Matematiikan mestariluokka, syksy 2009 7

Matematiikan mestariluokka, syksy 2009 7 Matematiikan mestariluokka, syksy 2009 7 2 Alkuluvuista 2.1 Alkuluvut Määritelmä 2.1 Positiivinen luku a 2 on alkuluku, jos sen ainoat positiiviset tekijät ovat 1 ja a. Jos a 2 ei ole alkuluku, se on yhdistetty

Lisätiedot

Ohjelmointi 1 / syksy /20: IDE

Ohjelmointi 1 / syksy /20: IDE Ohjelmointi 1 / syksy 2007 10/20: IDE Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8 Tämän luennon rakenne

Lisätiedot

811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto

811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto 811312A Tietorakenteet ja algoritmit 2015-2016 I Johdanto Sisältö 1. Algoritmeista ja tietorakenteista 2. Algoritmien analyysistä 811312A TRA, Johdanto 2 I.1. Algoritmeista ja tietorakenteista I.1.1. Algoritmien

Lisätiedot

- Näin ollen päätettiin myös jatkossa pitää kokoukset samantapaisina.

- Näin ollen päätettiin myös jatkossa pitää kokoukset samantapaisina. 1 Turku Centre for Computer Science - TUCS TUCS Neuvottelukunta Perjantai, 15. maaliskuuta, klo 15.00 Villa Solin, Katariina Neuvottelukunnan kuudes kokous. Pöytäkirja Läsnä: Jäsenet Tarmo Hahto (puheenjohtaja)

Lisätiedot

DIGIROAD DIGIROAD PALVELUT

DIGIROAD DIGIROAD PALVELUT Tilannekatsaus 6.8.2003 DIGIROAD PALVELUT DIGIROAD PALVELURAJAPINNAT DIGIROAD Kansallinen tie- ja katutietojärjestelmä DIGIROAD tietokanta 1 TietoEnator 2003 Tavoitteet DR-palvelupilotti antaa yleisen

Lisätiedot

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen Ohjelmistotekniikka - Luento 2 Jouni Lappalainen Luku 2: Prosessimallit - miten spiraalimalliin päädyttiin - spiraalimallista (R)UP malliin - oman ammattitaidon kehittäminen; PSP ja TSP mallit 1 Luento

Lisätiedot

tutkimus (EBMeDS( EBMeDS) osana Päätöksentukihanketta v Terveystieteen laitos, tutkija Tiina Kortteisto

tutkimus (EBMeDS( EBMeDS) osana Päätöksentukihanketta v Terveystieteen laitos, tutkija Tiina Kortteisto Sähköisen pääp äätöksen tuen tutkimus (EBMeDS( EBMeDS) osana Päätöksentukihanketta v. 2005-2009 Päätöksentukihanke (EBMeDS) 1.Pää äätöksentukihankkeen valmistelu ja tuottamisprosessin luominen (2004-2005)

Lisätiedot

Uudelleenkäytön jako kahteen

Uudelleenkäytön jako kahteen Uudelleenkäyttö Yleistä On pyritty pääsemään vakiokomponenttien käyttöön Kuitenkin vakiokomponentit yleistyneet vain rajallisilla osa-alueilla (esim. windows-käyttöliittymä) On arvioitu, että 60-80% ohjelmistosta

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

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

Rutiinin muodostaminen. 2. Rutiinin muodostaminen. specification) Määrittely (specification( Määrittelyn osapuolet. Hyvän ohjelman tunnusmerkit

Rutiinin muodostaminen. 2. Rutiinin muodostaminen. specification) Määrittely (specification( Määrittelyn osapuolet. Hyvän ohjelman tunnusmerkit 2. Rutiinin muodostaminen Rutiinin muodostaminen roolit 1. Rutiinin määrittely 2. Sopimuspohjainen ohjelmointi 3. Määrittelyjen kirjoittaminen 4. Erikoistilanteiden hallinta analysointi luokat rutiinit

Lisätiedot

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Copyright by Haikala. Ohjelmistotuotannon osa-alueet Copyright by Haikala Ohjelmistotuotannon osa-alueet Ohjelmiston elinkaari 1. Esitutkimus, tarvekartoitus, kokonaissuunnittelu, järjestelmäsuunnittelu (feasibility study, requirement study, preliminary

Lisätiedot

Onnistunut SAP-projekti laadunvarmistuksen keinoin

Onnistunut SAP-projekti laadunvarmistuksen keinoin Onnistunut SAP-projekti laadunvarmistuksen keinoin 07.10.2010 Patrick Qvick Sisällys 1. Qentinel 2. Laadukas ohjelmisto täyttää sille asetetut tarpeet 3. SAP -projektin kriittisiä menestystekijöitä 4.

Lisätiedot

9. Muunneltavuuden hallinta

9. Muunneltavuuden hallinta 9. Muunneltavuuden hallinta Muunneltavuuden hallinta (Variability management): Tekniikat ja työtavat, jotka auttavat kuvaamaan, toteuttamaan ja hyödyntämään tuoterungon mahdollistamaa ohjelmistotuotteiden

Lisätiedot

TIETOTEKNIIKAN KOULUTUSOHJELMA

TIETOTEKNIIKAN KOULUTUSOHJELMA TIETOTEKNIIKAN KOULUTUSOHJELMA Tietotekniikan koulutusohjelman toimintaympäristö ja osaamistavoitteet Tietotekniikan koulutusohjelmasta valmistuneet insinöörit sijoittuvat suunnittelu-, ohjelmointi-, esimies-,

Lisätiedot

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017

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

Laaja-alainen, opiskelijalähtöinen ja projektiperusteinen opetussuunnitelma, case Monitori

Laaja-alainen, opiskelijalähtöinen ja projektiperusteinen opetussuunnitelma, case Monitori Laaja-alainen, opiskelijalähtöinen ja projektiperusteinen opetussuunnitelma, case Monitori Insinöörikoulutuksen Foorumi 2012 Seminaariesitelmä Timo Turunen ja Matti Welin Monitori koulutusalarajat ylittävä

Lisätiedot

T-76.5158 SEPA päiväkirja

T-76.5158 SEPA päiväkirja T-76.5158 SEPA päiväkirja Ryhmä 14 Automatisoitu yksikkötestaus Mikko Luukkonen, 60549T Lauri Helkkula, 62820H Matti Eerola, 60686A Versiohistoria Versio Pvm Tekijä(t) Kuvaus 0.3 25.11.2007 Luukkonen,

Lisätiedot

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT KOULUTUKSEN KOHDERYHMÄ SISÄLTÖ Koulutuksen tavoitteena on antaa opiskelijalle valmiudet uusien tietoteknisten menetelmien ja välineiden hyödyntämiseen.

Lisätiedot

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli TIE-20306 PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli Seminaariesitelmä ryhmä 24 Markku Ahokas Jani Kuitti i SISÄLLYSLUETTELO 1. YLEISTÄ EIFFELISTÄ... 1 1.1 Historia ja tausta... 1 1.2

Lisätiedot

Siirto Yritysasiakkaille. Palvelukuvaus: Siirto-vastaanotto

Siirto Yritysasiakkaille. Palvelukuvaus: Siirto-vastaanotto Siirto Yritysasiakkaille Palvelukuvaus: Siirto-vastaanotto 15. huhtikuuta 2018 1 Sisällysluettelo Sisällysluettelo... 2 Siirto-maksun yleiskuvaus... 3 Siirto-maksun edut... 3 Nordean Siirto Yritysasiakkaille...

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

Organisatorinen muutos

Organisatorinen muutos Organisatorinen muutos 22.11.2001 TieVie-kouluttajakoulutus Helsingin yliopisto Projektipäällikkö Janne Sariola Teemat Lähtökohtia Miksi strategia? Mitä? Sisällöt Miten? Toimenpiteet Miksi? Strategisen

Lisätiedot

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...

Lisätiedot

Matematiikan opetuksen kehittäminen avoimen lähdekoodin ohjelmistojen avulla Petri Salmela & Petri Sallasmaa

Matematiikan opetuksen kehittäminen avoimen lähdekoodin ohjelmistojen avulla Petri Salmela & Petri Sallasmaa Matematiikan opetuksen kehittäminen avoimen lähdekoodin ohjelmistojen avulla 21.04.2010 Petri Salmela & Petri Sallasmaa Tutkimusorganisaatio Åbo Akademin ja Turun yliopiston tutkimusryhmät Pitkä yhteistyötausta

Lisätiedot

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,

Lisätiedot

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään Ohjelmointi Ohjelmoinnissa koneelle annetaan tarkkoja käskyjä siitä, mitä koneen tulisi tehdä. Ohjelmointikieliä on olemassa useita satoja. Ohjelmoinnissa on oleellista asioiden hyvä suunnittelu etukäteen.

Lisätiedot

Javan perusteita. Janne Käki

Javan perusteita. Janne Käki Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).

Lisätiedot

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita. Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita. Arkkitehtuuriin vaikuttavat ympäristötekijät Jo kehittämisen alkuvaiheessa on tarpeellista hahmotella arkkitehtuurin perusratkaisu. Lähtökohdat

Lisätiedot

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallintaminen, mallintaminen ja UML 582104 Ohjelmistojen mallintaminen, mallintaminen ja UML 1 Mallintaminen ja UML Ohjelmistojen mallintamisesta ja kuvaamisesta Oliomallinnus ja UML Käyttötapauskaaviot Luokkakaaviot Sekvenssikaaviot 2 Yleisesti

Lisätiedot

13/20: Kierrätys kannattaa koodaamisessakin

13/20: Kierrätys kannattaa koodaamisessakin Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy

Lisätiedot

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus Yhteenveto Ohjelmistotuotanto vs. muut insinööritieteet Monimutkaisuus Näkymättömyys (Usein näennäinen) luotettavuus ja edullisuus Muunnettavuus Epäjatkuvuus virhetilanteissa Skaalautumattomuus Copyright

Lisätiedot

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä.

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä. TIETOKONEOHJELMIEN RAKENNE Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä. Teollisuusautomaation ohjelmiin on lainattu runsaasti perinteisen

Lisätiedot

2. Eukleideen algoritmi

2. Eukleideen algoritmi 2. Eukleideen algoritmi 2.1 Suurimman yhteisen tekijän tehokas laskutapa Tässä luvussa tarkastellaan annettujen lukujen suurimman yhteisen tekijän etsimistä tehokkaalla tavalla. Erinomaisen käyttökelpoinen

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016 TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 8. syyskuuta 2016 Sisällys a https://tim.jyu.fi/view/kurssit/tie/ tiea241/2016/videoiden%20hakemisto Matemaattisen

Lisätiedot

Invariantteihin perustuva ohjelmointi

Invariantteihin perustuva ohjelmointi Invariantteihin perustuva ohjelmointi Ralph-Johan Back Abo Akademi ja TUCS www.abo.fi/~backrj 5. kesäkuuta 2006 Oikein toimivien ohjelmien konstruointi: vaihtoehdot Oikeellisuuden todistaminen jälkikäteen

Lisätiedot

Johdatus ohjelmointiin

Johdatus ohjelmointiin Johdatus ohjelmointiin Ohjelmistot tietokonejärjestelmissä Jaana Holvikivi Ohjelmistojen tehtävät Sovellusohjelmat tekstinkäsittely ja muut toimistosovellukset kirjanpito, tuotannonohjaus selaimet, mediaohjelmat

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä, kevät

Ohjelmoinnin peruskurssien laaja oppimäärä, kevät Ohjelmoinnin peruskurssien laaja oppimäärä, kevät Luento 2: Ohjelman suunnittelua, miten oliot toimivat Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 21. 1. 2013 Sisältö 1 Suunnittelua:

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 ari.vesanen (at) oulu.fi 5. Rekursio ja induktio Rekursio tarkoittaa jonkin asian määrittelyä itseensä viittaamalla Tietojenkäsittelyssä algoritmin määrittely niin,

Lisätiedot

+ 3 2 5 } {{ } + 2 2 2 5 2. 2 kertaa jotain

+ 3 2 5 } {{ } + 2 2 2 5 2. 2 kertaa jotain Jaollisuustestejä (matematiikan mestariluokka, 7.11.2009, ohjattujen harjoitusten lopputuloslappu) Huom! Nämä eivät tietenkään ole ainoita jaollisuussääntöjä; ovatpahan vain hyödyllisiä ja ainakin osittain

Lisätiedot

Täydentäviä muistiinpanoja laskennan rajoista

Täydentäviä muistiinpanoja laskennan rajoista Täydentäviä muistiinpanoja laskennan rajoista Antti-Juhani Kaijanaho 10. joulukuuta 2015 1 Diagonaalikieli Diagonaalikieli on D = { k {0, 1} k L(M k ) }. Lause 1. Päätösongelma Onko k {0, 1} sellaisen

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

TIETOTEKNIIKKA 2012-2013 Koodi Vanha opintojakso op ov Vastuuhenkilö LV 2011-2012 vastaavat opinnot tai korvaava suoritustapa TTE.

TIETOTEKNIIKKA 2012-2013 Koodi Vanha opintojakso op ov Vastuuhenkilö LV 2011-2012 vastaavat opinnot tai korvaava suoritustapa TTE. TIETOTEKNIIKKA 2012-2013 Koodi Vanha opintojakso op ov Vastuuhenkilö LV 2011-2012 vastaavat opinnot tai korvaava suoritustapa TTE.344 Agenttipohjainen tietojenkäsittely 3 Ei voi suorittaa, tilalle jokin

Lisätiedot

Tarkennamme geneeristä painamiskorotusalgoritmia

Tarkennamme geneeristä painamiskorotusalgoritmia Korotus-eteen-algoritmi (relabel-to-front) Tarkennamme geneeristä painamiskorotusalgoritmia kiinnittämällä tarkasti, missä järjestyksessä Push- ja Raise-operaatioita suoritetaan. Algoritmin peruskomponentiksi

Lisätiedot

Yhteentoimivuusalusta: Miten saadaan ihmiset ja koneet ymmärtämään toisiaan paremmin?

Yhteentoimivuusalusta: Miten saadaan ihmiset ja koneet ymmärtämään toisiaan paremmin? Yhteentoimivuusalusta: Miten saadaan ihmiset ja koneet ymmärtämään toisiaan paremmin? Avoin verkkoalusta ihmisen ja koneen ymmärtämien tietomääritysten tekemiseen Riitta Alkula 20.3.2019 Esityksen sisältö

Lisätiedot

Helpota arkeasi OPn digitaalisilla palveluilla OPn digitaalisten palvelujen eroavaisuudet Henkilöasiakkaiden mobiilipalvelut OP-mobiili Miten saan

Helpota arkeasi OPn digitaalisilla palveluilla OPn digitaalisten palvelujen eroavaisuudet Henkilöasiakkaiden mobiilipalvelut OP-mobiili Miten saan Helpota arkeasi n digitaalisilla palveluilla n digitaalisten palvelujen eroavaisuudet Henkilöasiakkaiden mobiilipalvelut -mobiili Miten saan -mobiilin käyttöön? Turvallinen asiointi Op.fi on uudistunut!

Lisätiedot

Opintosuunnitelma. Suunta: Tietoliikenneohjelmistot ja -sovellukset Pääaine: Tietoliikenneohjelmistot Sivuaine: Yritysturvallisuus

Opintosuunnitelma. Suunta: Tietoliikenneohjelmistot ja -sovellukset Pääaine: Tietoliikenneohjelmistot Sivuaine: Yritysturvallisuus Opintosuunnitelma Janne Paalijärvi Koulutusohjelma ja vuosikurssi: T II Opiskelijanumero: 57375S Sähköpostiosoite: jpaalija cc hut fi Opinto-opas: 2003-2004 Kirjastonkäyttöharjoitus suoritettu: 27.09.2004

Lisätiedot

Sosiaalialan tuotteistaminen tietojärjestelm 19.5.2008

Sosiaalialan tuotteistaminen tietojärjestelm 19.5.2008 Sosiaalialan tuotteistaminen tietojärjestelm rjestelmää hyväksik ksikäyttäen 19.5.2008 Sanna Hämäläinen Sosiaalitoimen atk-koordinaattori Päijät-Hämeen sosiaali- ja terveydenhuollon kuntayhtymä Alkuselvittelyt

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

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

Testausoppeja toimialavaihdoksesta

Testausoppeja toimialavaihdoksesta Testausoppeja toimialavaihdoksesta Maaret Pyhäjärvi Email: Gsm: 040-8233777 Erkki Pöyhönen & Maaret Pyhäjärvi Nimeä Attribution (Finland) http://creativecommons.org/licenses/by/1.0/fi/

Lisätiedot

2 Sanoja järjestävän funktion ohjelmoiminen

2 Sanoja järjestävän funktion ohjelmoiminen 1 Tämän dokumentin tarkoitus Tämä dokumentti ei kuulu millään tavoin tenttialueeseen, enkä ota vastuuta sen lukemisen aiheuttamista vahingoista. Tässä dokumentissa esitetään esimerkin kautta, miten matematiikan

Lisätiedot

P e d a c o d e ohjelmointikoulutus verkossa

P e d a c o d e ohjelmointikoulutus verkossa P e d a c o d e ohjelmointikoulutus verkossa Java-kielen perusteet Teoria ja ohjelmointitehtävät Java-kielen perusteet 3 YLEISKATSAUS KURSSIN SISÄLTÖIHIN 10 JAVA-KIELEN PERUSTEET 10 OPISKELUN ALOITTAMINEN

Lisätiedot