1. Algoritmi.

Slides:



Advertisements
Samankaltaiset esitykset
Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Advertisements

15. Loogiset operaatiot.
@ Leena Lahtinen Helia Ohjelman perusrakenteet 1. PERÄKKÄISRAKENNE 2. VALINTARAKENNE 3. TOISTORAKENNE.
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
5.1. Tason yhtälö a(x – x0) + b(y – y0) + c(z – z0) = 0
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
JavaScript (c) Irja & Reino Aarinen, 2007
Ohjelmointitaito (ict1td002, 12 op) Syksy 2008
13. Pakkaukset.
Iitin yläkoulu 9. Luokka Antti Halme
Näytölle tulostaminen. 7.2 Sisällys System.out.println - ja System.out.print -operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden.
OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT. LUOKKA JAVA ohjelma koostuu luokista LUOKKA sisältää metodeja molemmat sisältävät attribuutteja eli muuttujia.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
TIETOKONEOHJELMAN RAKENNE OHJELMALLA ON KAKSI OSAA  MÄÄRITYSOSA TIETOJEN KUVAUKSIA VARTEN  SUORITUSOSA TIETOJEN KÄSITTELYÄ VARTEN.
Metoditehtävä 1.Tee ohjelma, jonka tehtävänä on laskea jonkin tietyn käyttäjän syöttämän välin numeroiden summa. (Esim. käyttäjän syötöllä 1 ja 5 ohjelma.
1 Senioreiden säästäminen ja maksutavat 2014 SENIOREIDEN SÄÄSTÄMINEN JA MAKSUTAVAT
KERTAUSTA PERUSASTEEN MATEMATIIKASTA Piia junes
Prosenttilaskua, tiivistelmä
Ehto- ja toistolauseet
TMA.003 / L3 ( )1 3. Funktioista 3.1. Kuvaus ja funktio Olkoon A ja B ei-tyhjiä joukkoja. Tulojoukon A  B = {(x,y) | x  A, y  B} osajoukko on.
Ohjelmoinnin tekniikkaa Sisällys for -lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely.
TAULUKKO YKSIULOTTEINEN TAULUKKO. TAULUKKO  Taulukon tarkoitus Ohjelmassa tarvitaan paljon samantyyppisiä samaan kohdealueeseen kuuluvia muuttujia Näitä.
Ohjelman perusrakenteet
2. Vuokaaviot.
13. Hyvä ohjelmointitapa (osa 1)
© Jukka Harju, Jukka Juslin
1.a) f(x) = 2x(x2 – 3) = 0 2x = tai x2 – 3 = 0 x = tai x2 = 3
ict1td002 - Copyright Raine Kauppinen 1 Alkuarvot ja tyyppimuunnokset (1/5)  Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int.
Visual Basic -ohjelmointi
String-vertailusta ja Scannerin käytöstä (1/2)
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
5. Kapselointi Yleistä Kapseloinnilla (encapsulation) tarkoitetaan luokan tietojen ja toimintojen pakkaamista yhdeksi suojatuksi kokonaisuudeksi.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
6. Relaatioalgebra ja relaatiokalkyyli
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen
5. Lineaarinen optimointi
@ Leena Lahtinen TIETOKONEOHJELMAN RAKENNE OHJELMALLA ON KAKSI OSAA:  MÄÄRITYSOSA TIETOJEN KUVAUKSIA VARTEN  SUORITUSOSA TIETOJEN KÄSITTELYÄ.
© Jukka Juslin1 Osio2 Olio-ohjelmointi: Merkkijonot eli Stringit Jukka Juslin.
Johdatus ohjelmointiin – C kielen peruselementit Tutkijayliopettaja Manne Hannula Opetusharjoittelu (ohjaava opettaja Jukka Jauhiainen)
Visual Basic -ohjelmointi
Visual Basic -ohjelmointi
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Funktio.
Listat eli luettelot listaelementit ovat lohkoelementtejä:  lista ja listan alkiot alkavat uudelta riviltä  listan jälkeen tuleva elementti alkaa uudelta.
Missä kaupunki X? Esimerkki PaikkaOpin käytöstä opetuksessa tehtävän idea: luokanopettaja Minna Glogan toteutus: koordinaattori Virpi Hirvensalo.
Vuokaaviot. 2.2 Sisällys Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä: − algoritmi.
String-vertailusta ja Scannerin käytöstä (1/2)
3. Muuttujat ja operaatiot
Missä kaupunki X? Esimerkki PaikkaOpin käytöstä opetuksessa
2. Vuokaaviot.
13. Loogiset operaatiot.
3. Muuttujat ja operaatiot
Ohjelmien suunnittelu
7. Näytölle tulostaminen
9. Aritmeettiset operaatiot
1. Algoritmi.
8. Näppäimistöltä lukeminen
10. Javan ohjausrakenteet
9. Aritmeettiset operaatiot
16. Ohjelmoinnin tekniikkaa
14. Hyvä ohjelmointitapa.
1. Algoritmi.
7. Näytölle tulostaminen
2. Vuokaaviot.
13. Loogiset operaatiot.
3. Attribuutit.
4. Luokan testaus ja käyttö olion kautta
2. Olio-ohjelmoinnin perusteita
Miten luon valtuuden uudistuneessa Valtuudet- käyttöliittymässä?
16. Ohjelmoinnin tekniikkaa
Esityksen transkriptio:

1. Algoritmi

Sisällys Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. Muuttujat ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi.

Algoritmin määritelmä Ohjelmointi vaatii abstraktia ajattelua, jonka apuvälineinä käytetään algoritmeja (algorithm). Algoritmi on vaiheittainen kuvaus jonkin tehtävän suorittamista varten äärellisessä ajassa. Algoritmilla on siis alku-, väli- ja loppuvaiheet. Mikäli äärellinen aika ei riitä, on kyseessä algoritmin asemasta niin sanottu proseduuri tai algoritmissa on virhe (ikuinen silmukka).

AvaaOvi-algoritmi Tehtävänä kertoa erityisen älykkäälle robotille kuinka avata ovi. Tehdään aluksi joitakin algoritmin muotoilemista helpottavia oletuksia: ovi on kunnossa, paikallaan, kiinni, lukitsematon, ovessa on kahva eikä kahvaa tarvitse painaa. - Tartu kahvaan. - Vedä kahvasta, kunnes ovi on auki.

AvaaOvi-algoritmi Usein ensimmäisessä hahmotelmassa havaitaan virhe (niin sanottu bugi): Edellä ei huomioitu sitä, että jotkut ovet voi avata myös työntämällä. - Tartu kahvaan. - Jos ovi on vedettävää mallia, niin vedä kahvasta, kunnes ovi auki. - Muuten työnnä kahvasta, kunnes ovi on auki. ?

Muuttujat ja operaatiot Edellinen algoritmi oli hyvin vapaamuotoinen, koska toimijan oletettiin olevan koneeksi älykäs. Valitettavasti nykytietokoneet tarvitsevat tyhminä härveleinä paljon yksityiskohtaisempia ohjeita. Algoritmia muuttujien ja operaatioiden avulla tarkentamalla päästään lähemmäs tietokonetta. AvaaOvi-algoritmi voidaan jakaa karkeasti toimintoihin ja toimintojen kohteisiin. Esim. vaiheessa “Tartu kahvaan” on toiminto “tartu” ja kohde “kahva”.

Muuttujat ja operaatiot Tarkemmissa algoritmeissa (ja ohjelmissa) kohteet esitetään muuttujina ja toiminnot operaatioina. Myös kohteen osat (esim. ovi ja kahva) ja ominaisuudet (esim. oven väri) voidaan ajatella muuttujiksi. Algoritmin epämääräisemmät osat, kuten “ovi on vedettävää mallia”, voidaan ymmärtää tilanteen mukaan joko muuttujiksi tai toiminnoiksi. Ajattelussa siirrytään näin abstraktimmalle tasolle: algoritmissa käsitellään muuttujien sisältämiä tietoja operaatioita suorittamalla.

Muuttujat Muuttujalla on nimi (tunnus) ja nimeen liittyvä arvo. Muuttuja ei ole matematiikasta tuttu käsite, jolla symboloidaan usein tuntematonta arvoa. Esim. yhtälössä x + 1 = 0 tuntematon arvo on x. Algoritmissa muuttujan arvo on yleensä tunnettu ja erityisesti erona on se, että arvo voi muuttua algoritmin edetessä vaiheesta toiseen. Muuttuja muistuttaa hieman suuretta eli mitattavaa ominaisuutta. Esimerkiksi lämpötila (T) on suure, jolla mitataan aineen lämpöenergian määrää.

Muuttujat Esim. kurssin ilmoittautumistietoja käsittelevässä algoritmissa voisi olla muun muassa muuttujat etunimi, sukunimi ja opiskelijanumero ja näillä muuttujilla arvot "Mikko", "Meikäläinen" ja 12345, kun Mikko Meikäläinen ilmoittautuu kurssille. Tiina Terävän ilmoittautuessa muuttujien aikaisemmat arvot korvautuvat Tiinan arvoilla.

Muuttujat Yleensä vain yhden muuttujan arvo muuttuu, kun algoritmi etenee vaiheesta toiseen. On myös mahdollista, että vaiheesta toiseen siirryttäessä yhdenkään muuttujan arvo ei muutu. Algoritmin tila tarkoittaa muuttujien arvoja tietyssä algoritmin vaiheessa.

Muuttujat Algoritmin ymmärrettävyyden kannalta on erittäin tärkeää, että muuttujan nimestä nähdään minkä tiedon säilyttämiseen muuttujaa käytetään. Nimissä käytetään kirjaimia ja numeroita. Yleensä hyvä nimi on riittävän pitkä. Esim. syntymäpäivän sisältävälle muuttujalle on parempi antaa nimeksi vaikkapa syntpvm kuin p. Lyhyitä nimiä voi käyttää vain, jos erehtymisen vaaraa ei ole.

Muuttujat Muuttujille määritellään lausekielissä yleensä tyyppi: muun muassa kokonais- ja liukuluvut sekä yksittäiset merkit ja merkkijonot ovat käytettävissä. Esim. henkilön paino ja pituus on järkevää esittää lukuina, kun taas etu- ja sukunimi ovat luontevasti merkkijonoja. Muuttujalle ei voi antaa mittayksikköä. Esim. henkilön pituus esitetään muuttujana ilman metrin tunnusta (m), vaikka pituussuureen yksiköksi on sovittu metri. Muuttujat oletetaan toistaiseksi alkeistyyppisiksi ja niiden tyyppejä ei määritellä, jotta algoritmien kirjoittaminen ei olisi kurssin alkuvaiheessa liian vaikeaa.

Operaatiot Muuttujien arvojen käsittelyyn. Operaatio saa muuttujan arvon käyttöönsä yksilöimällä arvon muuttujan nimen avulla. Perusoperaatioita kutsutaan usein operaattoreiksi ja niille on annettu omat symbolit. Operaattorin käsittelemät arvot ovat operandeja. Perusoperaatioiden lisäksi usein on käytettävissä monimutkaisempia operaatioita esimerkiksi arvojen tulostamiseen.

Sijoitusoperaattori Perusoperaatioista tärkein on sijoitusoperaattori (←), joka korvaa muuttujan vanhan arvon uudella. Yleisesti: muuttujanNimi ← arvo missä muuttujan nimi (1. operandi) on aina operaattorin vasemmalla puolella ja uusi arvo (2. operandi) operaattorin oikealla puolella. Sijoitus ymmärretään yleensä algoritmin vaiheeksi. Uusi arvo voi olla pelkkä arvo, muuttujan arvo tai esimerkiksi laskutoimituksen tulos. Esim. ilmoittautumisalgoritmi, jossa muuttujiin sijoitetaan pelkkiä arvoja: etunimi ← "Tiina" sukunimi ← "Terävä" opiskelijanumero ← 54321

Sijoitusoperaattori Muuttujien arvot ovat samat, mutta säilyvät erillisinä, kun muuttujan arvo sijoitetaan toisen muuttujan arvoksi. Esim. sijoituksia aikaa ja matkaa käsittelevässä algoritmissa: matka ← 100 aika ← 2 matka2 ← matka (matka = 100, matka2 = 100) matka ← 30 (matka = 30, matka2 = 100) 3. sijoituksen jälkeen muuttujilla matka ja muuttujalla matka2 on edelleen oma erillinen arvo, vaikka molempien muuttujien arvo on 100. Koska arvot ovat erilliset, muuttujan matka2 arvo ei muutu, kun muuttujalle matka annetaan uusi arvo 4. sijoituksessa.

Sijoitusoperaattori Esim. sijoituksia elokuva-arvosteluja hallinnoivassa algoritmissa: nimi ← "Aliens" (Merkkijono suljetaan lainausmerkkeihin.) julkaisuvuosi ← 1986 luokka ← 'A' (Yksittäinen merkki suljetaan suoriin yksinkertaisiin lainausmerkkeihin eli niin sanottuihin hipsuihin.)

Aritmeettiset operaattorit Myös tutut aritmeettiset operaattorit (+ , - , ∙ , /) ovat käytettävissä. Aritmeettisen operaattorin operandit ovat arvoja ja tulos on arvo, joka voidaan sijoittaa muuttujaan. Laskujärjestys koulusta tuttu. Sijoitusoperaattori on heikko: esimerkiksi aritmetiikka suoritetaan ennen sijoitusta. Esim. aritmetiikkaa pelkillä arvoilla: tulosumma ← 1 ∙ 2 + 2 ∙ 2 missä ensin lasketaan tulot 1 ∙ 2 ja 2 ∙ 2, toiseksi summataan tulot 2 + 4 ja lopuksi sijoitetaan summa muuttujan arvoksi. Sijoitus muodostaa algoritmin vaiheen, vaikka ennen sijoittamista lasketaan aritmeettisilla operaatioilla.

Aritmeettiset operaattorit Esim. nopeuden laskeminen muuttujien avulla: nopeus ← matka / aika Otetaan aluksi käyttöön muuttujien arvot: 30 / 2 Tämän jälkeen lasketaan osamäärä: 15 ja lopuksi sijoitetaan osamäärä muuttujan arvoksi: nopeus ← 15 Huom! Sama muuttuja voi esiintyä myös sijoitus-operaattorin molemmin puolin. Esim. lisätään aikaa: aika ← aika + 1 jolloin selvitetään muuttujan nykyinen arvo: 2 + 1 lasketaan summa: 3 ja sijoitetaan se uudeksi arvoksi: aika ← 3

Vertailuoperaattorit Algoritmeissa tarvitaan usein myös vertailuoperaattoreita (<, =, >, ≤, ≥, ≠). Oletetaan toistaiseksi, että vertailu palauttaa arvon kyllä (K) tai ei (E). (Nämä voidaan ajatella totuusarvoiksi tosi ja epätosi.) Esim. luku ← 10 arvaus ← 13 - 3 samat ← luku = arvaus (samat = K) pienempi ← arvaus < 1 (pienempi = E)

Operaatiot Perusoperaatioiden lisäksi voidaan olettaa, että on käytettävissä myös muita operaatioita. Näille ei ole varattu symbolia - muut operaatiot tunnistetaan muuttujien tapaan nimen avulla. Erotetaan muuttujista nimen perään kirjoitettavan kaarisulkuparin (( )) avulla. Esim. nimi kiinni on muuttujan tunnus, mutta nimi kiinni() tarkoittaa operaatiota, jolla voitaisiin esimerkiksi tutkia onko ovi kiinni.

Operaatiot Operaatio voi saada parametrina arvon. Parametri välitetään operaatiolle kirjoittamalla se sulkujen väliin. Operaatio voi myös palauttaa arvon (niin sanottu paluuarvo), joka asetetaan usein muuttujan arvoksi. Esim. tartu(kahva) onkoVedettäväMalli ← vedettävä(ovi) arvattava ← arvoLuku() min ← min(400, paino)

Operaatiot Sopivat myös kommunikointiin ympäristön kanssa: Algoritmin laatija voisi käyttää esimerkiksi lue() ja tulosta(arvo) -operaatioita tietojen lukemiseen näppäimistöltä ja tulostamiseen näytölle. Esim. LaskeNopeus matka ← lue() aika ← lue() nopeus ← matka / aika tulosta(nopeus) matka nopeus aika

Algoritmista ohjelmaksi Ohjelma on algoritmin konkreettinen toteutus jollakin ohjelmointikielellä. Muuttujien ja operaatioiden esitystapa vaihtelee ohjelmointikielestä toiseen. Algoritmeja hahmotellaan toisinaan vuokaavioiden tai usein pseudokoodin avulla ennen varsinaista toteutusta.