2. Lisää Java-ohjelmoinnin alkeita

Slides:



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

15. Loogiset operaatiot.
Ohjelmointitaito (ict1td002, 12 op) Opintojakson esittely, kevät 2009.
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
6. Metodit.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
JavaScript (c) Irja & Reino Aarinen, 2007
16. Javan omat luokat.
1 Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra.
Nämä kalvot on lisensoitu Creative Commons Attribution-ShareAlike 1
Jukka Juslin Poikkeukset ja niiden paikallistaminen * Jukka Juslin * Liittyy oppikirjan lukuun 11.
Taulukot Jukka Juslin © Jukka Juslin 2006.
Taulukot: Array Taulukko Javassa pitää aina perustaa (new)
Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille
22. Taulukot.
Rakenteinen ohjelmointi
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.
Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 4 Toistolauseet
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.
Yksinkertaiset graafiset syöttö- ja tulostustoiminnot.
Poikkeustenkäsittely  Mitä poikkeustenkäsittely tarkoittaa?  Poikkeuksen käsitteleminen  Poikkeusluokkien hierarkia  Poikkeuksen heittäminen 1.
Toiston tekeminen Javalla  Mikä toistorakenne on?  while toistorakenne  do-while toistorakenne  for toistorakenne 1.
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ä.
13. Hyvä ohjelmointitapa (osa 1)
© Jukka Harju, Jukka Juslin
7. Oliot ja viitteet.
Map-luokka Mikä Map on? Mapin esittely ja luonti Map-luokan metodeja Mappiin lisääminen Mapin läpikäynti Mapista poistaminen 1.
ict1td002 - Copyright Raine Kauppinen 1 Alkuarvot ja tyyppimuunnokset (1/5)  Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int.
String-vertailusta ja Scannerin käytöstä (1/2)
Tietotyypit Tietotyyppi määrittää muuttujan sisältämän datan luonnetta, muistista tarvittavaa tilaa ja sitä, millaisia operaatioita siihen voidaan kohdistaa.
20. Javan omat luokat.
Kuinka niitä käsitellään
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.
Näppäimistöltä lukeminen Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In -luokka.
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)
ict1td002 - Copyright Raine Kauppinen 1 Tietovirrat  Tietovirran käsite  Tietovirtojen käyttö  Tekstitiedoston luku  Tekstitiedoston kirjoitus.
Tiedostojen käsittely
Visual Basic -ohjelmointi
Tuloksellinen Java-ohjelmointi Luku 2 Ensimmäiset ohjelmat
Kontrollirakenteet laajemmin
Visual Basic -ohjelmointi
15. Ohjelmoinnin tekniikkaa
Tiedostot. 8.2 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen.
String-vertailusta ja Scannerin käytöstä (1/2)
6. Muuttujat ja Java.
6. Tiedostot.
17. Javan omat luokat.
8. Näppäimistöltä lukeminen
7. Näytölle tulostaminen
9. Aritmeettiset operaatiot
8. Näppäimistöltä lukeminen
9. Aritmeettiset operaatiot
14. Hyvä ohjelmointitapa.
Aakkosnumeerinen tieto
6. Metodit.
4. Attribuutit.
7. Näytölle tulostaminen
3. Attribuutit.
4. Luokan testaus ja käyttö olion kautta
eli oliotiedostojen käsittely
Esityksen transkriptio:

2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka ict1td002 - Copyright Raine Kauppinen 26.8.2008

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. ict1td002 - Copyright Raine Kauppinen 26.8.2008

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ä”; ict1td002 - Copyright Raine Kauppinen 26.8.2008

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). ict1td002 - Copyright Raine Kauppinen 26.8.2008

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. ict1td002 - Copyright Raine Kauppinen 26.8.2008

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. ict1td002 - Copyright Raine Kauppinen 26.8.2008

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 (final-määreisen) muuttujan nimi on Javassa tapana kirjoittaa kokonaan isoilla kirjaimilla. ict1td002 - Copyright Raine Kauppinen 26.8.2008

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. ict1td002 - Copyright Raine Kauppinen 26.8.2008

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. ict1td002 - Copyright Raine Kauppinen 26.8.2008

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; ict1td002 - Copyright Raine Kauppinen 26.8.2008

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. ict1td002 - Copyright Raine Kauppinen 26.8.2008

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 ict1td002 - Copyright Raine Kauppinen 26.8.2008

Luentoesimerkki 2.1 Tee ohjelma, joka laskee ja tulostaa näytölle pallon tilavuuden, kun pallon säde r on a) 0,5 cm b) 2,0 cm c) 8,5 cm Pallon tilavuus lasketaan kaavalla tilavuus = (4/3)*pii*r3 Voit käyttää piin likiarvoa 3,14. Talleta ratkaisusi tiedostoon PallonTilavuus.java. ict1td002 - Copyright Raine Kauppinen 26.8.2008

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. ict1td002 - Copyright Raine Kauppinen 26.8.2008

Sijoituslause (8/8) luku += 10; // luku = luku + 10; ict1td002 - Copyright Raine Kauppinen 26.8.2008

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ä. ict1td002 - Copyright Raine Kauppinen 26.8.2008

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; … ict1td002 - Copyright Raine Kauppinen 26.8.2008

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…). ict1td002 - Copyright Raine Kauppinen 26.8.2008

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); … } ict1td002 - Copyright Raine Kauppinen 26.8.2008

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. ict1td002 - Copyright Raine Kauppinen 26.8.2008

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. ict1td002 - Copyright Raine Kauppinen 26.8.2008

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*r3 Voit käyttää piin likiarvoa 3,14. Talleta ratkaisusi tiedostoon InteraktiivinenTilavuus.java. ict1td002 - Copyright Raine Kauppinen 26.8.2008