3. Muuttujat ja operaatiot 3.1

Samankaltaiset tiedostot
Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat ja operaatiot


etunimi, sukunimi ja opiskelijanumero ja näillä

3. Muuttujat ja operaatiot 3.1

Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan valitseminen päätöksellä ja toistaminen silmukalla.

Sisällys. Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä. 2.2

Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä:

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

Ehto- ja toistolauseet

Ohjelmoinnin perusteet Y Python

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Sisältö. 2. Taulukot. Yleistä. Yleistä

Ohjelmoinnin peruskurssi Y1

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

Johdatus Ohjelmointiin

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Sisältö. 22. Taulukot. Yleistä. Yleistä

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Ohjelmoinnin perusteet Y Python

7. Näytölle tulostaminen 7.1

PERUSLASKUJA. Kirjoita muuten sama, mutta ota KAKSI välilyöntiä (SEURAA ALUEMERKINTÄÄ) 4:n jälkeen 3/4 +5^2

Harjoitus 2 (viikko 45)

Harjoitus 3 (viikko 39)

Ohjelmoinnin perusteet Y Python

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Tietotyypit ja operaattorit

13. Loogiset operaatiot 13.1

12. Javan toistorakenteet 12.1

Javan perusteita. Janne Käki

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

Algoritmit 1. Demot Timo Männikkö

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Java-kielen perusteet

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

ITKP102 Ohjelmointi 1 (6 op)

13. Loogiset operaatiot 13.1

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin perusteet Y Python

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

12. Javan toistorakenteet 12.1

Algoritmit 2. Luento 13 Ti Timo Männikkö

1. Omat operaatiot 1.1

Ohjelmoinnin perusteet Y Python

17. Javan omat luokat 17.1

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

(c) Kuinka suuri suhteellinen virhe painehäviön laskennassa tehdään, jos virtaus oletetaan laminaariksi?

Ohjelmoinnin perusteet Y Python

11. Javan valintarakenteet 11.1

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Ohjelmoinnin peruskurssi Y1

7. Oliot ja viitteet 7.1

811120P Diskreetit rakenteet

Ohjelmoinnin perusteet Y Python

Algoritmit 1. Demot Timo Männikkö

Ohjelmoinnin peruskurssi Y1

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Kirjoita ohjelma jossa luetaan kokonaislukuja taulukkoon (saat itse päättää taulun koon, kunhan koko on vähintään 10)

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Harjoitustyö: virtuaalikone

Ohjelmoinnin perusteet Y Python

1 Aritmeettiset ja geometriset jonot

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Ohjelmoinnin perusteet Y Python

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Ohjelmoinnin perusteet Y Python

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet:

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

SELECT-lauseen perusmuoto

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

ITKP102 Ohjelmointi 1 (6 op)

17. Javan omat luokat 17.1

Java-kielen perusteet

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

= 3 = 1. Induktioaskel. Induktio-oletus: Tehtävän summakaava pätee jollakin luonnollisella luvulla n 1. Induktioväite: n+1

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007

Ohjelmoinnin perusteet Y Python

811120P Diskreetit rakenteet

Ohjelmoinnin perusteet Y Python

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2 3

11. Javan toistorakenteet 11.1

Sekalaiset tehtävät, 11. syyskuuta 2005, sivu 1 / 13. Tehtäviä

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

12. Näppäimistöltä lukeminen 12.1

Ohjelmoinnin perusteet Y Python

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

Transkriptio:

3. Muuttujat ja operaatiot 3.1

Sisällys Imperatiivinen laskenta. Muuttujat. 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. 3.2

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" Merkkijonoliteraalit suljetaan Javan tapaan lainausmerkkeihin. luokka 'F' Oletetaan, että hahmoluokan 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 kokonaislukuarvoiset 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. 3.10

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. 3.11

Operaatiot Operaattoreita monimutkaisemmat 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. 3.12

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. 3.13

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() metrit 0,9144 jaardit tulosta(metrit) Loppu 3.14

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. 3.15

Peli luvun arvaukseen Alku arvattava arvoluku() arvaus lue() arvaus < arvattava ei arvaus > arvattava ei tulosta("oikein!") kyllä tulosta("meni ali.") kyllä tulosta("meni yli.") kyllä arvaus arvattava ei Loppu 3.16

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

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