Javan tavukoodi. Helsinki 1. huhtikuuta 2005 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Koko: px
Aloita esitys sivulta:

Download "Javan tavukoodi. Helsinki 1. huhtikuuta 2005 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos"

Transkriptio

1 Javan tavukoodi Ari Silvennoinen Timo Suomela Helsinki 1. huhtikuuta 2005 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ohjelmointikielten kääntäjät kevät 2005 i

2 Sisältö 1 Javan virtuaalikone Virtuaalikoneen rakenne Tietotyypit Suorituspino ja kehykset Luokkatiedoston rakenne 4 3 Tavukoodi Käskyt Lataus- ja tallennuskäskyt Aritmeettiset käskyt Tyyppikonversiot Olioiden luonti ja manipulointi Metodien kutsuminen Operandipinon suora käsittely Kontrollivuon hallintaa Poikkeuksien heitto ja käsittely Synkronointi Erikoiskäskyt ii

3 1 Javan virtuaalikone Javan virtuaalikone (JVM, engl. Java Virtual Machine) tarjoaa javan tavukoodille järjestelmästä riippumattoman suoritusympäristön [1]. Virtuaalikone käsittelee luokkatiedostoja, jotka ovat binäärimuotoisia esityksia java-kielen määrittelemistä luokista tai rajapinnoista. Luokkatiedosto sisältää myös luokan määrittelemien metodien toteutukset tavukoodimuodossa. Virtuaalikoneen käynnistyttyä se pyytää luokkalataajaa etsimään ja lataamaan halutut luokkatiedostot. Lataamisen yhteydessä virtuaalikone alustaa luokan tavukoodin suorituksessa tarvittavat tietorakenteet, muuttaa symboliset viittaukset varsinaisiksi vittauksiksi sekä asettaa muuttujille alkuarvot. Lataamisen jälkeen luokan tavukoodi on valmis suorittamista varten. 1.1 Virtuaalikoneen rakenne Virtuaalikoneen keskeisimmät tehtävät tavukoodin suorituksen kannalta ovat ohjelmalaskurin (engl. program counter) päivittäminen, muistinhallinta sekä suorituspinojen hallinta. Virtuaalikone käyttää suorituspinoa parametrien välitykseen sekä metodikutsujen ja poikkeusten toteuttamiseen. Virtuaalikoneessa kaikille säikeille yhteisiä muistialueita ovat metodialue ja keko (kuva 1). Metodialueella pidetään tietoa mm. ladattujen luokkien metodeista, kentistä sekä vakioista. Keko on tarkoitettu ajonaikaiselle muistinvaraamiselle ja mahdollistaa säikeiden välisen kommunikaation. Muistin vapauttaminen on virtuaalikoneen vastuulla. 1.2 Tietotyypit Virtuaalikone tukee sekä viite-, että alkeistyyppejä. Alkeistyyppejä ovat numeeriset tyypit, totuusarvot sekä paluuosoitetyyppi. Viitteet ovat osoittimia luokkatiedostojen perusteellä luotuihin olioihin. Olioita käsitellään aina viitetyypin avulla. Numeerisia tyyppejä on kokonais-, ja reaalilukuja varten. Kokonaislukutyyppejä ovat byte 8-bittinen etumerkillinen kokonaisluku ( 2 7, 2 7 1) short 16-bittinen etumerkillinen kokokonaisluku ( 2 15, ) int 32-bittinen etumerkillinen kokonaisluku ( 2 31, ) long 64-bittinen etumerkillinen kokonaisluku ( 2 63, 2 63 ) char 16-bittinen etumerkitön kokonaisluku Unicode-kirjasimia varten. Reaalilukutyyppejä ovat 1

4 Kuva 1: Virtuaalikoneen rakenne. float 32-bittinen IEEE-standardin mukainen liukulukuarvo double 64-bittinen IEEE-standardin mukainen liukulukuarvo. Totuusarvotyyppi boolean voi saada arvon true tai false. Paluuosoitetyypin arvot ovat osoittimia tavukoodin käskyihin eikä niitä voi muokata ajonaikana. Virtuaalikone ei suorita ajonaikaisia tyyppitarkistuksia. Tyyppitieto ilmaistaan eksplisiittisesti tavukoodin käskyissä. 1.3 Suorituspino ja kehykset Virtuaalikoneen jokainen syntyvä säie ylläpitää omaa suorituspinoa ja ohjelmalaskuria. Suorituspino säilyttää tietoa kunkin säikeen metodikutsuista ja ohjelmalaskuri osoittaa kulloinkin suoritettavaan tavukoodikäskyyn. Suorituspinoon talletetaan kehyksiä. Metodikutsun kehys (engl. frame) sisältää tiedot paikallisten muuttujien arvoista, parametreista sekä tavukoodikäskyjen välituloksista (kuva 2). Kehys luodaan aina metodia kutsuttaessa, jolloin se myös talletetaan suorituspinoon. Kun metodin suoritus päättyy, metodin luoma kehys poistetaan suorituspinosta. Virtuaalikone käyttää kehyksen paikallisia muuttujia parametrien välitykseen. Paikallisia muuttujia voidaan käsitellä metodiin liittyvän tavukoodin avulla. Jokaisella kehyksellä on nk. operandipino. Operandipino toimii laskennan välitulosten säilytyspaikkana ja sitä käsitellään tavukoodin käskyillä. Operandipinoon 2

5 Kuva 2: Kehyksen rakenne. voidaan tallettaa kaikkia virtuaalikoneen tukemia tietotyyppejä mutta pinon jäseniä täytyy käsitellä jäsenten tyyppiä vastaavilla tavukoodikäskyillä. Virtuaalikone olettaa, että tyyppeihiin liittyvät tarkistukset on suoritettu jo luokan lataamisen yhteydessä. 3

6 2 Luokkatiedoston rakenne Javan luokkatiedosto koostuu virrasta kahdeksanbittisiä tavuja. Jokainen 16, 32 tai 64 bittiä pitkä suure koostuu vastaavasti kahdesta, neljästä tai kahdeksasta peräkkäisestä tavusta. Merkitsevä tavu esiintyy virrassa ensimmäisenä. Alla on esitelty luokkatiedoston rakenne C-kielestä tutun tietuerakenteen mukaisessa muodossa. ClassFile { u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_count; cp_info constant_pool[constant_pool_count-1]; u2 access_flags; u2 this_class; u2 super_class; u2 interfaces_count; u2 interfaces[interfaces_count]; u2 fields_count; field_info fields[fields_count]; u2 methods_count; method_info methods[methods_count]; u2 attributes_count; attribute_info attributes[attributes_count]; } Luokkatiedosto alkaa neljä tavua pitkällä tunnisteella magic, jonka arvo hexadesimaalilukuna on 0xCAFEBABE. Seuraavat neljä tavua muodostavat luokkatiedostoformaatin versionumeron. Luokan määrittelemät kentät on kuvattu taulukossa field info ja metodit taulukossa method info. Luokan määrittelemät vakiot sekä koodi sijaitsevat constant pool-nimiseessä taulukkossa. 4

7 3 Tavukoodi Tavukoodi muodostaa käskykannan jonka avulla virtuaalikonetta ohjataan. Jokainen tavukoodin käsky koostuu yhdestä tavun mittaisesta käskykoodista sekä käskyyn liittyvistä operandeista. Suurin osa käskyistä määrittelee eksplisiittisesti tiedon operandien tyypistä. Samasta käskystä on siten olemassa useita versioita erityyppisille operandeille. Käskykoodin muistikas (engl. mnemonic) sisältää tyyppitiedon etuliitteenä olevan kirjaimen muodossa. Etuliite on tyypin mukaan joko i (int), l (long), s (short), b (byte), c (char), f (float) tai d (double). Viitetyyppejä käsittelevien käskyjen muistikkaat alkavat kirjaimella a. Jotkut käskyt ovat yksiselitteisiä operandiensa tyypin suhteen, kuten esim. arraylength, joka palauttaa taulukko-tyyppisen operandinsa pituuden. Kaikki käskyt eivät käsittele tyypitettyä tietoa, kuten esim. ehdoton hyppykäsky goto. Koska jokainen käskykoodi on tavun pituinen, tavukoodin käskykannan koko on rajoitettu 256 käskyyn. Tiukasta rajoitteesta johtuen jokaisesta käskystä ei ole olemassa versiota jokaista operandityyppiä varten. Kiertotienä tavukoodi tarjoaa omat käskyt tyyppimuunnoksia varten. Esim. byte-tyyppisen arvon lataamiseen ei ole suoraa käskyä. Arvo ladataan int-tyyppisenä ja muunnetaan byte-tyyppiseksi. Suurimmalle osalle käskyjä ei ole olemassa erityismuotoa byte-, char- tai short-tyyppisille operandeille. Tämäntyyppisiä arvoja käsitellään käskyjä suoritettaessa int-tyyppisinä. Sekä byte- että short-tyyppiset operandit kasvatetaan int tyypin kokoiseksi säilyttäen niiden etumerkillinen arvo (sign extension). Etumerkittömät char-tyyppiset arvot täytetään nollilla int-tyypin mukaiseen kokoon (zero padding). 3.1 Käskyt Tavukoodi tarjoaa käskyt operandien lataukseen ja tallentamiseen, aritmeettisille operaatioille, tyyppikonversiolle, olioiden ja luokkien käsittelyyn, kontrollivuon hallintaan sekä pinon välittömään manipulointiin Lataus- ja tallennuskäskyt Jokaista tyyppiä varten, lukuunottamatta byte, short sekä char, on olemassa oma käsky, joka lukee arvon paikallisesta muuttujasta ja laittaa sen operandipinoon: iload, lload, fload ja dload. Käskyt saavat operandina indeksin paikallismuuttujataulukkoon. Vastaavasti istore, lstore, fstore sekä dstore tallentavat operandipinossa olevan arvon paikallismuuttujataulukkooon. Paikallismuuttujien arvojen lisäksi pinoon voidaan kirjoittaa myös vakioita. Esim. käsky ldc 18 lukee vakion aktiivisen luokan vakiovarannon (engl. constant pool) indeksistä 18 ja laittaa arvon pinoon. 5

8 Lataus- ja tallennuskäskyistä on olemassa myös Tload n/tstore n muotoiset versiot, missä n on arvo väliltä [0..3]. Kyseiset käskyt käsittelevät paikallista muuttujaa, jonka indeksi on annettu n, esim istore 1 ottaa int-tyyppisen arvon pinosta ja tallentaa sen paikallismuuttujataulukkon kohtaan Aritmeettiset käskyt Tavukoodi määrittelee seuraavat aritmeettiset käskyt int-, long-, float- ja doubletyyppisille operandeille: Yhteenlasku (Tadd, missä T on korvattu tyyppiä vastaavalla etuliitteellä), vähennyslasku (Tsub), kertolasku (Tmul), jakolasku (Tdiv), jakojäännös (Trem) sekä negaatio (Tneg). Viimeistä käskyä lukuunottamatta, kaikki edellä mainitut operaatiot käyttävät pinon kahta päällimmäistä arvoa operandeina ja asettavat tuloksen takaisin pinoon. Negaatio käyttää vain päällimäistä operandia. Kokonaislukutyyppejä (int ja long) varten on olemassa seuraavat aritmeettiset käskyt: oikealle (Tshr ja Tushr) ja vasemmalle (Tshl ja Tushl) siirto, bittioperaattorit AND (Tand), OR (Tor) sekä poissulkeva OR (Txor). Käskyllä iinc voidaan kasvattaa int-tyyppisen paikallismuuttujan arvoa yhdellä. int a = 1 + 2; Kahden int-tyyppisen vakion yhteenlasku ja sijoitus int-tyyppiseen muuttujaan näyttää yllä olevasta javakoodista tavukoodiksi käännettynä seuraavalta: 0 iload_1 // Laittaa vakion 1 pinoon 1 iload_2 // Laittaa vakion 2 pinoon 2 iadd // Ottaa pinosta kaksi arvoa, laskee ne yhteen // ja laittaa tuloksen takaisin pinoon 3 istore 1 // Ottaa arvon pinosta ja tallentaa sen paikalliseen // muuttujaan indeksissä Tyyppikonversiot Tavukoodissa tyyppimuunnokset ovat joko implisiittisiä tai eksplisiittisiä. Virtuaalikone suorittaa implisiittisen muunnoksen aina, jos laskutoimituksen operandina on joko byte-, short- tai char-tyypinen arvo. Kuten aikaisemmin jo mainittiin, nämä muunnetaan int-tyyppisiksi ennen käskyn suoritusta. Eksplisiittinen muunnos suoritetaan käskyillä, joiden muoto on S2T, missä S on lähtötyyppiä vastaava kirjain ja T on kohdetyyppiä vastaava kirjain. Esim. d2i muuntaa double-tyyppisen arvon int-tyyppiseksi ja vastaavasti i2d muuntaa inttyyppisen arvon double-tyyppiseksi. 6

9 3.1.4 Olioiden luonti ja manipulointi Olio luodaan käskyllä new. Operandina käskylle annetaan kaksitavuinen indeksi luokan vakiovaranteeseen, jonka pitää osoittaa luotavan olion tyyppiin. Taulukko voidaan luoda käskyllä newarray. Operandina käskylle annetaan taulukon alkioiden tyyppiä vastaava koodi. Pinon huipulla pitää olla alkioden lukumäärää kuvaava arvo. Luokan kenttiä voidaan lukea käskyllä getstatic ja kirjoittaa putstatic. Olion kenttiä voidaan lukea käskyllä getfield ja kirjoittaa käskyllä putfield. Taulukon alkioita voidaan lukea operandipinon huipulle Taload käskyperheellä. Käskystä on olemassa oma muoto jokaiselle tyypille. Vastaavasti voidaan siirtää pinon huipulla oleva arvo taulukon alkioksi käskyperheellä Tastore. Taulukon pituus voidaan tarkistaa käskyllä arraylength. Taulukkojen ja olioiden ominaisuuksia voidaan tarkistaa käskyillä instanceof sekä checkcast Metodien kutsuminen Luokan metodeja kutsutaan käskyllä invokestatic. Olion metodeja kutsutaan käskyllä invokevirtual. Myöhäissidonnan avulla määriteltyä rajapinnan metodia kutsutaan käskyllä invokeinterface. Muut metodit, kuten konstruktorit, kutsutaan käskyllä invokespecial. Jokainen edellä mainituista käskyistä ottaa pinosta kutsuttavan metodin parametrit käänteisessä järjestyksessä. Muut kuin invokestatic ottavat lisäksi viitteen olioon pinosta, jonka metodia ollaan kutsumassa. Käskyjen operandiksi annetaan kaksitavuinen indeksi luokan vakiovaranteeseen joka osoittaa kutsuttavan metodin nimeen. Metodin paluuarvo määritellään Treturn käskyn avulla. Mahdollisia tyyppejä ovat int, long, float, double sekä olioviite. Jos paluuarvo on byte-, short- tai char-tyyppinen niin se palautetaan int-tyyppisenä. int add12and13() { return addtwo(12, 13); } Yllä javakoodina esitelty metodi add12and13(), joka kutsuu metodia addtwo(int, int) kääntyy seuravanmuotoiseksi tavukoodiksi: Method int add12and13() 0 aload_0 // Laittaa viitteen paikallisesta muuttujasta // indeksissä 0 (this) pinoon 1 bipush 12 // Laittaa vakion 12 pinoon 3 bipush 13 // Laittaa vakion 13 pinoon 7

10 5 invokevirtual #4 // Kutsuu metodi, joka on kuvattu vakiovaranteen // indeksissä 4. 8 ireturn // Palauttaa kutsutun metodin paluuarvon pinon // huipulta Operandipinon suora käsittely Tavukoodin käskyjen avulla voidaan käsitellä operandipinoa myös suoraan. Pinon päällimmäinen sana voidaan ottaa pinosta (pop), kahdentaa (dup) ja vaihtaa toiseksi päällimmäisen sanan kanssa (swap) Kontrollivuon hallintaa Tavukoodi tarjoaa useita käskyjä sekä ehdolliseen, että ehdottomaan haarautumiseen. Ehdollista haarautumista varten on käytettävissä tyyppikohtaiset käskyt kahden int-, long-, float- ja double-tyyppisen operandin vertailuun. int-tyyppisiä operandeja varten on vielä monia muita vertaus- ja haarautumiskäskyä. Lisäksi yhdistetty ehdollinen haarautuminen on mahdollista tableswitch sekä lookupswitch käskyjen avulla. Ehdoton haarautuminen on mahdollista goto, jsr sekä ret käskyjen avulla. void whileint() { int i = 0; } while (i < 100) { i++; } Yllä esitelty metodi whileint() kasvattaa paikallisen muuttujan arvo whilesilmukassa nollasta sataan. Tavukoodiksi käännettynä metodi näyttää seuraavalta: Method void whileint() 0 iconst_0 \\ Laittaa vakion 0 pinoon 1 istore_1 \\ Ottaa arvon pinosta ja tallentaa sen \\ paikalliseen muuttujaan 2 goto 8 \\ Hyppää osoitteeseen 8 5 iinc 1 1 \\ Kasvattaa paikallista muuttujaa yhdellä 8 iload_1 \\ Laittaa paikallisen muuttujan arvon pinoon. 9 bipush 100 \\ Laittaa vakion 100 pinoon 11 if_icmplt 5 \\ Hyppää osoitteeseen 5, jos pinon kaksi \\ päällimmäistä arvoa ovat samat. 14 return \\ Palaa kutsujalle 8

11 3.1.8 Poikkeuksien heitto ja käsittely Poikkeus heitetään käskyllä athrow. Pinon huipulla pitää olla viite olioon, jota voidaan käsitellä Throwable-tyyppisenä. Poikkeuksen käsittelylohkon alku on merkitty omaan hyppytaulukkoon Synkronointi Koodilohkoja voidaan suojata monitorilla java-kielen synchronized-avainsanan tapaan. Lohko aloitetaan käskyllä monitorenter ja lopetetaan käskyllä monitorexit. Kummatkin käskyt edellyttävät että pinon huippu on viite olioon, jonka monitori halutaan ottaa haltuun tai vastaavasti viite olioon jonka monitorista halutaan luopua Erikoiskäskyt Kolme käskykoodia on varattu virtuaalikoneen sisäiseen käyttöön. Kaksi näistä, impdep1 (koodi 245) sekä impdep2 (koodi 255), ovat vapaita virtuaalikoneen toteuttajan käytettäväksi. Kolmas käsky on breakpoint (koodi 202), jonka on tarkoitettu käytettäväksi debug-ohjelmistojen kanssa. Näitä käskyjä ei saa esiintyä class-tiedostossa. Viitteet [1] Lindholm, T, Yellin, F, The Java Virtual Machine Spesification, 2nd edition, Sun Microsystems Inc. 9

1 Johdanto. 2 Java-tavukoodin periaatteet

1 Johdanto. 2 Java-tavukoodin periaatteet Java-tavukoodi Pekka Parviainen Helsinki 1.4.2005 Ohjelmointikielten kääntäjät -kurssin seminaarityö Helsingin yliopisto Tietojenkäsittelytieteen laitos Sisällys 1 Johdanto...1 2 Java-tavukoodin periaatteet...1

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

Tulkinta ja emulointi

Tulkinta ja emulointi Luento 11 (verkkoluento 11) Tulkinta ja emulointi Java ohjelman suoritus Tavukoodi JVM Tulkinta Java-suoritin Käännös ja JIT-käännös JVM vs. Titokone Java ohjelmien suoritus Java virtuaalikone SW HW Java

Lisätiedot

Tietotyypit ja operaattorit

Tietotyypit ja operaattorit Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto

Lisätiedot

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

6. Muuttujat ja Java 6.1

6. Muuttujat ja Java 6.1 6. Muuttujat ja Java 6.1 Sisällys Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

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

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit:

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

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

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen Ohjelmointitaito (ict1td002, 12 op) Kevät 2009 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-kehitysympäristö Java-ohjelma ja luokka

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

6. Muuttujat ja Java 6.1

6. Muuttujat ja Java 6.1 6. Muuttujat ja Java 6.1 Sisällys Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi 1 Javan perusteet Ohjelmointi IPO-malli Java lähdekoodista suoritettavaksi ohjelmaksi Vakio Muuttuja Miten Javalla näytetään tietoa käyttäjälle, miten Javalla luetaan käyttäjän antama syöte Miten Javalla

Lisätiedot

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

11/20: Konepelti auki

11/20: Konepelti auki Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon

Lisätiedot

14. Poikkeukset 14.1

14. Poikkeukset 14.1 14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla

Lisätiedot

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

Muuttujat ja kontrolli. Ville Sundberg

Muuttujat ja kontrolli. Ville Sundberg Muuttujat ja kontrolli Ville Sundberg 14.9.2007 Alkeistyyppi Alin abstraktiotaso josta tarvitsee välittää Yksittäinen, jakamaton tiedonjyvä Tavallaan kaikki alkeistyypit ovat lukuja arvojoukko vaihtelee

Lisätiedot

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla

Lisätiedot

arvostelija Java-virtuaalikone Heikki Korhola Helsinki HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

arvostelija Java-virtuaalikone Heikki Korhola Helsinki HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos hyväksymispäivä arvosana arvostelija Java-virtuaalikone Heikki Korhola Helsinki 24.4.2009 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI

Lisätiedot

14. Poikkeukset 14.1

14. Poikkeukset 14.1 14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.

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

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

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmointiharjoituksia Arduino-ympäristössä Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet

Lisätiedot

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU Ohjelmointi 2 Jussi Pohjolainen TAMK» Tieto- ja viestintäteknologia Tietotyypeistä C++ - kielessä useita tietotyyppejä Kirjaimet: char, wchar_t Kokonaisluvut: short, int, long Liukuluvut: float, double

Lisätiedot

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

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

12. Monimuotoisuus 12.1

12. Monimuotoisuus 12.1 12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Myöhäinen ja aikainen sidonta. Parametrinvälitys

Lisätiedot

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

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

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

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

20. Javan omat luokat 20.1

20. Javan omat luokat 20.1 20. Javan omat luokat 20.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

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

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang Sisällys 20. Javan omat luokat Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.1 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

7/20: Paketti kasassa ensimmäistä kertaa

7/20: Paketti kasassa ensimmäistä kertaa Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa

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

7. Näytölle tulostaminen 7.1

7. Näytölle tulostaminen 7.1 7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio

Lisätiedot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.

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

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

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

5/20: Algoritmirakenteita III

5/20: Algoritmirakenteita III Ohjelmointi 1 / syksy 2007 5/20: Algoritmirakenteita III Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/17 Tämän

Lisätiedot

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

Lisätiedot

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

Java-ohjelman suoritus Java tavukoodi, Java-virtuaalikone. Java-ohjelmien emulointi ja käännös Java-suorittimet. C# ttk-91, Crusoe

Java-ohjelman suoritus Java tavukoodi, Java-virtuaalikone. Java-ohjelmien emulointi ja käännös Java-suorittimet. C# ttk-91, Crusoe Tulkinta ja emulointi Java-ohjelman suoritus Java tavukoodi, Java-virtuaalikone Java-ohjelmien emulointi ja käännös Java-suorittimet C# ttk-91, Crusoe luenn

Lisätiedot

Ohjelmointi 1 Taulukot ja merkkijonot

Ohjelmointi 1 Taulukot ja merkkijonot Ohjelmointi 1 Taulukot ja merkkijonot Jussi Pohjolainen TAMK Tieto- ja viestintäteknologia Johdanto taulukkoon Jos ohjelmassa käytössä ainoastaan perinteisiä (yksinkertaisia) muuttujia, ohjelmien teko

Lisätiedot

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Osoittimet Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Muistilohkon koko riippuu muuttujan tyypistä, eli kuinka suuria arvoja muuttujan

Lisätiedot

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 27. lokakuuta 2009

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 27. lokakuuta 2009 TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 27. lokakuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe D tiistai 10.11. klo 10 välikielen generointi Kääntäjän rakenne

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

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

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100 Tiedonsiirtokäskyt LOAD LOAD-käsky toimii jälkimmäisestä operandista ensimmäiseen. Ensimmäisen operandin pitää olla rekisteri, toinen voi olla rekisteri, vakio tai muistiosoite (myös muuttujat ovat muistiosoitteita).

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

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

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

Lisätiedot

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

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä Sisälls 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen.. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona.. Muuttumattomat ja muuttuvat merkkijonot.

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet

Lisätiedot

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen

Lisätiedot

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006 TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa

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

18. Abstraktit tietotyypit 18.1

18. Abstraktit tietotyypit 18.1 18. Abstraktit tietotyypit 18.1 Sisällys Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:

Lisätiedot

12. Monimuotoisuus 12.1

12. Monimuotoisuus 12.1 12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Parametrinvälitys eräs monimuotoisuuden sovellus.

Lisätiedot

4. Luokan testaus ja käyttö olion kautta 4.1

4. Luokan testaus ja käyttö olion kautta 4.1 4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään

Lisätiedot

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

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5) Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,

Lisätiedot

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

7. Oliot ja viitteet 7.1

7. Oliot ja viitteet 7.1 7. Oliot ja viitteet 7.1 Sisällys Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden sijoitus. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona. Viite metodin

Lisätiedot

Copyright 2018 Teemu Kerola

Copyright 2018 Teemu Kerola Luento 11 (verkkoluento 11) Tulkinta ja emulointi Java ohjelman suoritus Tavukoodi JVM Tulkinta Java-suoritin Käännös ja JIT-käännös JVM vs. Titokone 1 Java ohjelmien suoritus Java virtuaalikone SW HW

Lisätiedot

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

Lisätiedot

812341A Olio-ohjelmointi, 2016. Olio-ohjelmoinnin peruskäsitteet ja Java-kieli

812341A Olio-ohjelmointi, 2016. Olio-ohjelmoinnin peruskäsitteet ja Java-kieli 812341A Olio-ohjelmointi, 2016 Olio-ohjelmoinnin peruskäsitteet ja Java-kieli Sisältö 1. Java-kieli 2. Luokka 3. Luokkakaaviot 4. Lisää Javaa Javalla 2 Java-kieli n Sun Microsystems tutkimusprojekti 1991

Lisätiedot

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto Sisällys 18. bstraktit tietotyypit Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.1 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Tyyppejä ja vähän muutakin TIEA341 Funktio ohjelmointi 1 Syksy 2005 Viime luennolla... Haskellin alkeita pääasiassa Hello World!... ja muita tutunoloisia ohjelmia Haskellilla Haskellin voima on kuitenkin

Lisätiedot

Jakso 11 Tulkinta ja emulointi

Jakso 11 Tulkinta ja emulointi Jakso 11 Tulkinta ja emulointi Tulkinta ja emulointi Java-ohjelman suoritus, tulkinta ja kääntäminen Suorittimen emulointi ttk-91, Crusoe 1 Java ohjelmien suoritus (3) Java virtuaalikone Java tulkki Pentium

Lisätiedot

Luento 11 Tulkinta ja emulointi

Luento 11 Tulkinta ja emulointi Luento 11 Tulkinta ja emulointi Tulkinta ja emulointi Java ohjelman suoritus, tulkinta ja kääntäminen Suorittimen emulointi 1 Java ohjelmien suoritus (3) Java virtuaalikone Java tulkki Pentium II load

Lisätiedot

16. Javan omat luokat 16.1

16. Javan omat luokat 16.1 16. Javan omat luokat 16.1 Sisällys Johdanto. Object-luokka: tostring-, equals-, clone- ja getclass-metodit. Comparable-rajapinta: compareto-metodi. Vector- ja ArrayList-luokat. 16.2 Javan omat luokat

Lisätiedot

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla ohjelmoida useita komponenteiltaan ja rakenteeltaan

Lisätiedot

5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma

5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma 5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma Every cloud has a silver line. - englantilainen sananlasku Tässä osiossa tärkeää: yksi- ja moniulotteinen taulukko Sisältö Yleistä Yksiulotteinen

Lisätiedot

13 Operaattoreiden ylimäärittelyjä

13 Operaattoreiden ylimäärittelyjä 248 13 C++-kielessä voidaan operaattoreita ylimäärittää. Ylimääriteltävää operaattoria voidaan pitää ikäänkuin metodina, joka esitellään luokan esittelyssä ja määritellään luokan ulkopuolella kuten metoditkin.

Lisätiedot

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

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) Toistaiseksi helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Vaikeaa eroavuudet Pythonin ja C:n

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

Lyhyt kertaus osoittimista

Lyhyt kertaus osoittimista , syksy 2007 Kertausta Luento 10 12.10.2007 Syksy 2007 1 Lyhyt kertaus osoittimista char *p; /* char, int, jne ilmoittavat, minkä tyyppisiä */ Keskusmuisti int *q; /* olioita sisältäviin muistilohkoihin

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

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. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit. 3. Muuttujat ja operaatiot Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi.. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit. Arvojen

Lisätiedot

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public) Tietorakenteet JAVA-OHJELMOINTI Osa 5: Tietorakenteita Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto Olioita ja tietoja voidaan organisoida määrämuotoisiksi tietorakenteiksi Hyödyllisiä

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

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

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

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin

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

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen Chapel TIE-20306 Ryhmä 91 Joonas Eloranta Lari Valtonen Johdanto Chapel on Amerikkalaisen Cray Inc. yrityksen kehittämä avoimen lähdekoodin ohjelmointikieli. Chapel on rinnakkainen ohjelmointikieli, joka

Lisätiedot

Tiedon esitysmuodot. Luento 6 (verkkoluento 6) Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto

Tiedon esitysmuodot. Luento 6 (verkkoluento 6) Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto Luento 6 (verkkoluento 6) Tiedon esitysmuodot Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto Ohjelman esitysmuoto Rakenteellinen tieto 1 Tiedon tyypit Kommunikointi

Lisätiedot

Olio-ohjelmointi Syntaksikokoelma

Olio-ohjelmointi Syntaksikokoelma C++-kielen uusia ominaisuuksia Olio-ohjelmointi Syntaksikokoelma 31.10.2008 Bool-tietotyyppi: Totuusarvo true (1), jos ehto on tosi ja false (0) jos ehto epätosi. Dynaaminen muistinvaraus: Yhden muuttuja

Lisätiedot