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



Samankaltaiset tiedostot
Java-kielen perusteet

Java-kielen perusteet

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

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

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

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

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

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

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

Java-kielen perusteita

8. Näppäimistöltä lukeminen 8.1

Java-kielen perusteita

8. Näppäimistöltä lukeminen 8.1

Metodien tekeminen Javalla

Java-kielen perusteet

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

7. Näytölle tulostaminen 7.1

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

17. Javan omat luokat 17.1

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

17. Javan omat luokat 17.1

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

20. Javan omat luokat 20.1

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

Taulukot. Jukka Harju, Jukka Juslin

Olio-ohjelmointi Javalla

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

6. Muuttujat ja Java 6.1

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

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

6. Muuttujat ja Java 6.1

Taulukoiden käsittely Javalla

Muuttujat ja kontrolli. Ville Sundberg

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1

Java-kielen perusteita

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

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

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

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

2. Olio-ohjelmoinista lyhyesti 2.1

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Listarakenne (ArrayList-luokka)

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia

7/20: Paketti kasassa ensimmäistä kertaa

Rajapinta (interface)

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

Mitä poikkeuskäsittely tarkoittaa?

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Java kahdessa tunnissa. Jyry Suvilehto

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Ohjelmoinnin perusteet Y Python

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

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

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

1. Omat operaatiot 1.1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

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

Javan perusteita. Janne Käki

13. Loogiset operaatiot 13.1

4. Olio-ohjelmoinista lyhyesti 4.1

Tietotyypit ja lausekkeet. Lewis & Loftus & Jukka Juslin 1

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Java-kielen perusteet

Ohjelmoinnin perusteet, 1. välikoe

Metodien tekeminen Javalla

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Merkkien ja merkkijonojen käsittelyä Javalla

Ohjelmoinnin jatkokurssi, kurssikoe

Ohjelmoinnin perusteet, kurssikoe

7. Oliot ja viitteet 7.1

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Ohjelmointi 1 Taulukot ja merkkijonot

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

Taulukot, silmukat ja muut joka koodin pikku veijarit

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

Johdatus Ohjelmointiin

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

14. Hyvä ohjelmointitapa 14.1

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmointiharjoituksia Arduino-ympäristössä

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

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

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

Ohjelmoinnin peruskurssi Y1

Merkkijonon tutkiminen matches-metodilla

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Poikkeustenkäsittely

Ehto- ja toistolauseet

811120P Diskreetit rakenteet

Ohjelmoinnin peruskurssi Y1

Tietotyypit ja operaattorit

Ohjelmoinnin peruskurssi Y1

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

16. Javan omat luokat 16.1

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Transkriptio:

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 on muista mainituista, esimerkiksi int- tai double-tyypeistä poikkeava. Tämä liittyy siihen, että tietotyyppejä ja muuttujia on kahdenlaisia. Tietotyyppejä ovat alkeistyypit (int, double, boolean, char, byte, short, long ja float) ja abstraktit tietotyypit (esimerkiksi String). Vastaavasti on olemassa muuttujia ja viittausmuuttujia. 2 Muuttuja ja viittausmuuttuja (2/4) Tavallisia muuttujia, joiden tietotyyppeinä esiintyy alkeismuuttujia, olemme jo käyttäneet usein, esimerkiksi int luku = 123; double dluku = 12.45; Sitä vastoin viittausmuuttujia, joiden tietotyyppinä esiintyy abstrakteja tietotyyppejä, olemme käyttäneet vähemmän, kuitenkin String on tälläinen, esimerkiksi: String mjono = Tekstiä ; 3 1

Muuttuja ja viittausmuuttuja (3/4) Abstrakti tietotyyppi eroaa alkeistyypistä siten, että (Javassa) abstrakti tietotyyppi on itse asiassa luokka. String on siis Javan tarjoama valmis luokka, jota käytetään merkkijonojen tallentamiseen ja käsittelyyn. Abstraktin tietotyypin ideana on, että sen avulla voidaan käsitellä hyvin monimutkaisia rakenteita, esimerkiksi sellaisia, jotka koostuvat useista alkeistyypeistä. Esimerkiksi merkkijono koostuu useista merkeistä (char-alkeistyyppi). 4 Muuttuja ja viittausmuuttuja (4/4) Viitausmuuttuja esitellään antamalla muuttujan tietotyypiksi luokan nimi (alla olevissa esimerkeissä ei aseteta alkuarvoa): String mjono; OmaLuokka olio; Myöhemmin tällä jaksolla opetellaan tarkemmin, miten omia luokkia käytetään viittausmuuttujina ja mitä näiden avulla tehdään. 5 Vakio ja literaalivakio (1/2) Muuttujien lisäksi olemme käyttäneet paljon vakiota, esimerkiksi: 123 12.45 Tekstiä a (Literaali)vakio on siis ohjelmakoodiin kirjoitettu osa, jolla ei ole tunnusta (nimeä) ja joka säilyy samana ohjelman suorituksen ajan. 6 2

Vakio ja literaalivakio (2/2) Joskus on tarpeen myös nimetä vakio, jolloin käytetään muuttujaa, joka määritellään sellaiseksi, ettei sen arvoa voi ohjelman suorituksen aikana muuttaa. Tämä tapahtuu määreellä final: final double PII = 3.14; final String VAKIOTEKSTI = Tervetuloa ; Huomaa, että arvoltaan muuttumattoman (finalmääreisen) muuttujan nimi on Javassa tapana kirjoittaa kokonaan isoilla kirjaimilla. 7 Sijoituslause (1/8) Tähän mennessä olemme asettaneet muuttujille esittelyn yhteydessä alkuarvon, toisin sanoen olemme sijoittaneet muuttujalle esittelyn yhteydessä arvon, esimerkiksi: int luku = 123; Tähän mennessä olemme aina sijoittaneet alkuarvoksi vakion. Useimmissa ohjelmissa on tarpeen muuttaa muuttujien arvoja useaan kertaan suorituksen aikana, esimerkiksi laskutoimitusten tai muiden operaatioiden seurauksena. 8 Sijoituslause (2/8) Yleisesti sijoituslause on muotoa tunnus = lauseke;, jossa tunnus on jokin aiemmin esitelty muuttuja ja lauseke kokonaisuus, jolla on sama tietotyyppi kuin ko. muuttujalla. Lauseke voi olla mm. literaalivakio, aritmeettinen lauseke tms. ja se voi esimerkiksi sisältää muita muuttujia. Seuraavalla kalvoilla on esimerkkejä sijoituslauseista. 9 3

Sijoituslause (3/8) Muuttujan arvoksi sijoitetaan vakio: luku2 = 34; // luku2 on tyyppiä int dluku = 45.1; // dluku on tyyppiä double nimi = Pekka ; // nimi on tyyppiä String Muuttujan arvoksi sijoitetaan laskuoperaation tulos: luku2 = (34+54)/2; dluku = 45.1*12.5; 10 Sijoituslause (4/8) Sijoituslauseita, joissa käytetään muita muuttujia: luku2 = (34+luku1)/luku3; dluku = 45.1*PII; nimi = VAKIOTEKSTI+, Pekka ; Saman muuttujan arvoa voidaan samassa ohjelmassa muuttaa useita kertoja eri sijoituslauseilla; muuttujan arvona on viimeiseksi suoritetun sijoituslauseen mukainen arvo. 11 Sijoituslause (5/8) Sijoituslause on syytä opetella ajattelemaan ja lukemaan muodossa saa arvon, esimerkiksi luku = 0; luetaan luku saa arvon nolla, jottei sijoitus sekoitu ehtolauseiden yhteydessä opittavaan vertailuun. (Alku)arvon asettaminen muuttujan esittelyn yhteydessä on myös sijoitus, mutta nämä voi myös erottaa: int luku; // muuttujan esittely luku = 0; // (alku)arvon asetus 12 4

Luentoesimerkki 2.1 Tee ohjelma, joka laskee ja tulostaa näytölle pallon tilavuuden, kun pallon säde r on a) 05cm 0,5 b) 2,0 cm c) 8,5 cm Pallon tilavuus lasketaan kaavalla tilavuus = (4/3)*pii*r 3 Voit käyttää piin likiarvoa 3,14. Talleta ratkaisusi tiedostoon PallonTilavuus.java. 13 Sijoituslause (7/8) Usein muuttujan arvoksi tarvitsee sijoittaa muuttujan entinen arvo lisättynä, kerrottuna tms. jonkin muun lausekkeen tuloksena. Tämä onnistuu sijoituslauseella esimerkiksi seuraavasti: luku = luku + 1; dluku = dluku * (15.67/maara); Tällaisiin usein käytettyihin sijoituksiin on myös lyhennemerkintöjä, joita on seuraavalla kalvolla. 14 Sijoituslause (8/8) luku += 10; // luku = luku + 10; luku -= 10; // luku = luku - 10; luku *= 10; // luku = luku * 10; luku /= 10; // luku = luku / 10; luku %= 10; // luku = luku % 10; luku++; // luku = luku + 1; luku--; // luku = luku 1; 15 5

Syötteen lukeminen ja Scanner-luokka (1/5) Useimmat ohjelmat ovat interaktiivisia, eli ne suorituksensa aikana pyytävät tietoa (syötteitä) käyttäjältä, esimerkiksi näppäimistön kautta. Näppäimistöltä tulevan syötteen lukeminen on monimutkainen toimenpide, mutta Java tarjoaa tähän valmiita apuvälineitä, joista käytämme luokkaa Scanner. Scanner-luokka sisältää operaatiot mm. kokonaisluku-, desimaaliluku- ja merkkijonotyyppisten syötteiden lukemiseen esimerkiksi näppäimistöltä. 16 Syötteen lukeminen ja Scanner-luokka (2/5) Scanner-luokka ei kuitenkaan ole automaattisesti käytettävissä (kuten esimerkiksi String-luokka on), vaan se pitää ensin määritellä käyttöön. Tämä tapahtuu import-määreellä ohjelman alussa, package määrityksen jälkeen: package osio1.vko2; import java.util.scanner; 17 Syötteen lukeminen ja Scanner-luokka (3/5) Lisäksi ohjelmakoodissa tarvitsee määritellä ja alustaa Scanner-tyyppinen viittausmuuttuja: public void aja(){ Scanner syote = new Scanner(System.in); } Alustuksessa määritellään syötteen tulevan näppäimistöltä (System.in) huomaa, että vastaavasti Javan tulostuslause määrittelee tulostuksen menevän näytölle (System.out.println ). 18 6

Syötteen lukeminen ja Scanner-luokka (4/5) Tämän jälkeen ko. viittausmuuttujan avulla voidaan näppäimistöltä lukea esimerkiksi merkkijonon vastaavan tyyppiseen muuttujaan: public void aja(){ Scanner syote = new Scanner(System.in); String mjono; System.out.prinln( Anna syöte: ); mjono = syote.nextline(); System.out.prinln( Syötit: +mjono); } 19 Luentoesimerkki 2.2 Tee ohjelma, joka kysyy käyttäjän asuinpaikan ja tulostaa näytölle tekstin X on mukava paikka., jossa X:n tilalle tulostaa käyttäjän syöttämä paikka. Talleta ratkaisusi tiedostoon AsuinPaikka.java. 20 Syötteen lukeminen ja Scanner-luokka (5/5) Scanner-luokan avulla voi myös lukea esimerkiksi kokonaislukuja, desimaalilukuja ja muita tietotyyppejä sopivaa operaatiota käyttämällä (nextint, nextdouble jne.). Lisätietoja Scanner-luokan käytöstä ja syötteen lukemisesta on osion kotisivulla olevassa dokumentissa scanner.doc. Tehdään kuitenkin vielä yksi ohjelma, jossa luetaan desimaalilukuja. 21 7

Luentoesimerkki 2.3 Tee ohjelma, joka kysyy käyttäjältä pallon säteen ja laskee ja tulostaa näytölle kyseisen pallon tilavuuden. Pallon tilavuus lasketaan kaavalla tilavuus = (4/3)*pii*r 3 Voit käyttää piin likiarvoa 3,14. Talleta ratkaisusi tiedostoon InteraktiivinenTilavuus.java. 22 8