3. Muuttujat ja operaatiot

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.
@ Leena Lahtinen Helia TIETO JA TIETOKONEOHJELMA  TIETOKONEOHJELMA KÄSITTELEE TIETOJA  TIETOJA VOIDAAN KÄSITELLÄ OHJELMASSA VAIN SALLITUILLA.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
JavaScript (c) Irja & Reino Aarinen, 2007
1. Algoritmi.
Ohjelmointitaito (ict1td002, 12 op) Syksy 2008
13. Pakkaukset.
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.
Ehto- ja toistolauseet
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ä.
TIETO JA TIETOKONEOHJELMA TIETOKONEOHJELMA KÄSITTELEE TIETOJA TIETOJA VOIDAAN KÄSITELLÄ OHJELMASSA VAIN SALLITUILLA MENETELMILLÄ.
2. Vuokaaviot.
13. Hyvä ohjelmointitapa (osa 1)
7. Oliot ja viitteet.
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)
Metodit – Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin ”return;”-lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua.
Algoritmi-harjoituksia…
20. Javan omat luokat.
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Hyvä ohjelmointitapa (osa 2) Yleistä Lisää hyviä ohjelmointikäytäntöjä: − Jaa pitkä koodi osiin. − Käytä attribuutteja säästeliäästi.
22. Taulukot.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen
@ 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)
2. Lisää Java-ohjelmoinnin alkeita
FunktiottMyn1 Funktiot Funktiot voidaan jakaa –Kirjastofunktioihin, jotka ovat valmiina kaikkien käytössä. Erikoisempien kirjastofunktioiden käyttöönotto.
Visual Basic -ohjelmointi
Kontrollirakenteet laajemmin
Funktio.
15. Ohjelmoinnin tekniikkaa
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)
1. Omat operaatiot.
2. Taulukot.
2. Vuokaaviot.
17. Javan omat luokat.
13. Loogiset operaatiot.
3. Muuttujat ja operaatiot
Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö
Ohjelmien suunnittelu
7. Näytölle tulostaminen
9. Aritmeettiset operaatiot
9. Aritmeettiset operaatiot
16. Ohjelmoinnin tekniikkaa
14. Hyvä ohjelmointitapa.
2. Taulukot.
6. Metodit.
13. Pakkaukset.
4. Attribuutit.
7. Näytölle tulostaminen
Kontrollirakenteet laajemmin
2. Vuokaaviot.
13. Loogiset operaatiot.
Ohjelman perusrakenteet
TIETO JA TIETOKONEOHJELMA
3. Attribuutit.
13. Pakkaukset.
4. Luokan testaus ja käyttö olion kautta
2. Olio-ohjelmoinnin perusteita
16. Ohjelmoinnin tekniikkaa
Esityksen transkriptio:

3. Muuttujat ja operaatiot

Sisällys Imperatiivinen laskenta. Muuttujat. Operaattorit. Operaatiot. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi. Operaattorit. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit. Arvojen vertailu. Operaatiot. Nimeäminen. Parametrit. Paluuarvo. Esimerkkejä: yksikkömuunnos, peli luvun arvaukseen ja keskiarvon laskeminen.

Muuttujat ja operaatiot Tietokoneet tarvitsevat vapaamuotoista tekstiä paljon yksityiskohtaisempia ohjeita. Tietokone osaa laskea nopeasti, mutta arkijärkeä koneella ei ole. Eräs tapa tarkentaa algoritmeja on esitellä äärellinen joukko muuttujia ja käyttää operaatioita muuttujien arvojen lukemiseen ja muuttamiseen. Muuttujien arvot algoritmin tietyssä vaiheessa määrittävät algoritmin tilan (state). Algoritmi siirtyy tilasta toiseen suorituksensa aikana. Tällainen laskenta on luonteeltaan imperatiivista. 3.3

Muuttujat Muuttuja (variable) koostuu nimestä (tunnuksesta) ja nimeen liittyvästä arvosta. Muuttuja ei ole matematiikasta tuttu käsite, jolla symboloidaan usein tuntematonta arvoa. Esimerkiksi 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ää. 3.4

Muuttujat Muuttuja nimetään sen tarkoitusta kuvaavasti. Algoritmien ymmärrettävyyden kannalta on tärkeää, että nimistä nähdään minkä tiedon säilyttämiseen muuttujia käytetään. Yleensä hyvä nimi on riittävän pitkä nimi. Esimerkiksi syntymäpäivän sisältävälle muuttujalle on parempi antaa nimeksi vaikkapa syntpvm kuin p. Nimeä lyhyesti vain, jos erehtymisen vaaraa ei ole. Nimissä käytetään enimmäkseen kirjaimia. Kirjainten seurana voi olla numeroita. Ohjelmointikielissä kielioppi ja vakiintunut tyyli määrää nimen kirjoitusasun. 3.5

Muuttujat Ohjelmointikielissä muuttujille annetaan yleensä tyypit ohjelmoijan toimesta. Esimerkiksi henkilön paino ja pituus on järkevää määritellä jollakin numeerisella tyypillä, kun taas etu- ja sukunimi ovat luontevasti merkkijonoja. Tyyppejä ei määritellä vielä, jotta algoritmien kirjoittaminen olisi helpompaa. Muuttujan laatu päätellään toistaiseksi nimen tai arvon avulla. Muuttujien oletetaan olevan alkeistyyppisiä. Muuttujalle ei voi antaa mittayksikköä. Esimerkiksi henkilön pituus esitetään muuttujana ilman metrin tunnusta (m), vaikka pituussuureen yksiköksi on sovittu metri. 3.6

Operaattorit Operaattoreiksi (operator) kutsutuille operaatioille on annettu omat symbolit. Operaattorin käsittelemät arvot ovat operandeja. Operandit voivat olla arvoja sellaisenaan (literaaleja), muuttujien arvoja tai muiden operaatioiden palauttamia arvoja. Useimmat operandit ovat kaksioperandisia. Sijoitusoperaattori (←) korvaa muuttujan nykyisen arvon uudella. Ensimmäinen (vasen) operandi on muuttujan nimi. Toinen (oikea) operandi on uusi arvo. Sijoitus on usein algoritmin yksittäinen vaihe. ikä ← 14 Luentomateriaalissa nimet on kursivoitu, jotta muuttujat olisi helpompi tunnistaa. 3.7

Operaattorit sukunimi ← "Snow" luokka ← 'F' ikäAlussa ← ikä ikä ← 15 Merkkijonoliteraalit suljetaan Javan tapaan lainausmerkkeihin. luokka ← 'F' Oletetaan, että hahmo-luokan arvot on päätetty esittää yksittäisin merkein. Merkkiliteraalit suljetaan yksinkertaisiin lainausmerkkeihin eli niin sanottuihin hipsuihin. ikäAlussa ← ikä Muuttujan ikä arvo (14) asetetaan muuttujan ikäAlussa arvoksi. Sijoituksen jälkeen molemmilla muuttujilla on arvo 14, mutta arvot ovat erilliset, koska sijoituksen yhteydessä iän arvosta tehdään kopio. ikä ← 15 Muuttujan ikäAlussa arvo on edelleen 14. 3.8

Operaattorit Tutut aritmeettiset operaattorit (+ , - , ∙ , /) ovat käytettävissä. Laskujärjestys on koulusta tuttu ja sulkuja voidaan käyttää järjestyksen muuttamiseen. Sijoitusoperaattoria vahvempia: aritmeettisia lausekkeita lasketaan, kunnes saadaan yksittäinen arvo sijoitusta varten. tulosumma ← 1 ∙ 2 + 2 ∙ 2 Ensin lasketaan tulot 1 ∙ 2 ja 2 ∙ 2, toiseksi summataan tulot 2 + 4 ja lopuksi sijoitetaan summa (6) muuttujan arvoksi. Sijoitus muodostaa algoritmin vaiheen, vaikka ennen sijoittamista lasketaan aritmeettisilla operaattoreilla. 3.9

Operaattorit Muuttujan nykyistä arvoa täytyy toisinaan kasvattaa tai vähentää, jolloin saman muuttujan tunnus esiintyy molemmin puolin sijoitusoperaattoria. Erityisesti silmukoihin liittyvät kokonaisluku-arvoiset laskurit (counter) muuttuvat usein yhden arvon verran. Tällaisissa tapauksissa muuttujan nykyistä arvoa käytetään vasemmalla puolella ja muuttuja saa uuden arvon vasta, kun oikea puoli on laskettu. ikä ← ikä + 1 Ensin haetaan iän vanha arvo (14 + 1) ja sitten lasketaan summa (15) ja lopuksi sijoitetaan summa muuttujan uudeksi arvoksi.

Operaattorit Vertailuoperaattorit (<, =, >, ≤, ≥, ≠) palauttavat “kyllä” (tosi) tai “ei” (epätosi) -arvon riippuen operandiensa arvoista. Käytetään erityisesti algoritmien päätöksissä. Aritmeettisia operaattoreita heikompia, sijoitusta vahvempia. onIkää ← age ≥ 18 Ensin haetaan iän nykyinen arvo (15 ≥ 18), jonka jälkeen lausekkeen arvoksi voidaan laskea “ei”. Tulos sijoitetaan lopuksi muuttujaan.

Operaatiot Operaattoreita moni-mutkaisemmat operaatiot ovat algoritmeja, joita kutsutaan (call) nimen avulla. Tunnuksen lopussa on aina kaarisulkeiden pari. Operaation tarvitsemat tiedot eli parametriarvot (parameter values) välitetään operaatiolle kirjoittamalla arvot kaarisulkeiden sisään. Arvot erotetaan pilkuilla. Parametriarvo on operandin tapaan literaali, muuttujan arvo jne. Operaation parametrien lukumäärä, laatu ja järjestys selviää operaation dokumentaatiosta. kopioi ("a.txt", "b.txt") Operaatio kopioi tiedoston a.txt sisällön tiedostoon b.txt. Kutsussa on tärkeää huomioida arvojen järjestys.

Operaatiot Operaatiolla voi olla paluuarvo (return value). Huomaa, että operaattori palauttaa aina arvon, mutta operaatio voi palauttaa arvon tai jättää sen palauttamatta. arvattava ← arvoLuku() Operaation satunnaisesti valitsema luku sijoitetaan muuttujaan. Operaatiolle ei anneta arvoja. max ← annaSuurin(42, 13) Operaatio päättelee kumpi parametriarvoista on suurempi ja palauttaa suuremman arvon (42), joka sijoitetaan muuttujaan.

Operaatiot Operaatioiden avulla voidaan kommunikoida käyttäjän kanssa. Oletetaan käytettävissä olevan operaatiot: lue: Palauttaa arvon, jonka käyttäjä antaa näppäimistöltä. tulosta: Tulostaa parametriarvonsa näytölle. Alku jaardit ← lue() tulosta(metrit) Loppu metrit ← 0,9144 ∙ jaardit 2 1,8288

Peli luvun arvaukseen Pelin vapaamuotoinen versio voidaan muuttaa melko suoraviivaisesti tarkemmalle tasolle. Otetaan käyttöön muuttujat arvattavalle ja arvatulle luvulle. Arvattava luku alustetaan satunnaisluvun tuottavalla operaatiolla arvoLuku. Arvaus luetaan käyttäjältä lue-operaatiolla. Vinkit ja onnittelut viestitään tulosta-operaatiolla. Päätökset ilmaistaan vertailuoperaattoreiden avulla.

arvattava ← arvoLuku() Peli luvun arvaukseen arvaus ≠ arvattava arvaus ← lue() tulosta("Meni ali.") Alku Loppu arvaus < arvattava kyllä ei tulosta("Oikein!") arvattava ← arvoLuku() tulosta("Meni yli.") arvaus > arvattava 3.16 16

Keskiarvon laskeminen Päätellään tarvittavat muuttujat kaavasta luku on luettu luku (termi xi), i on laskuri, josta selviää monesko silmukan kierros on meneillään (termin indeksi), summa vastaa lukujen summaa (Σxi), lkm vastaa lukujen lukumäärää (indeksin yläraja n) ja ka on lukujen keskiarvo ( ). Silmukka voidaan toteuttaa usealla eri tavalla. Oletetaan nyt, että lukujen lukumäärä voidaan selvittää ennen silmukan aloitusta.

Keskiarvon laskeminen i ≤ lkm luku ← lue() tulosta(″Ei lukuja!″) ka ← summa / lkm Alku Loppu lkm > 0 kyllä ei tulosta(ka) lkm ← lue() summa ← 0 summa ← summa + luku i ← i + 1 i ← 1