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

Samankaltaiset tiedostot
Taulukoiden käsittely Javalla

Listarakenne (ArrayList-luokka)

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

Java-kielen perusteita

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

KOHDELUOKAN MÄÄRITTELY

Java-kielen perusteita

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

Metodien tekeminen Javalla

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

Taulukot. Taulukon käsittely. Tämän osan sisältö. Esimerkki. Taulukon esittely ja luonti. Taulukon alustaminen. Taulukon koko

YHTEYSSUHDE (assosiation)

Java-kielen perusteet

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

Taulukot. Jukka Harju, Jukka Juslin

Java-kielen perusteet

Java-kielen perusteet

Nimike Määrä YksH/EI-ALV Ale% ALV Summa

Luokan muodostimet (Constructors)

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

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

Rajapinta (interface)

Olio-ohjelmointi Javalla

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

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

Java-kielen perusteita

Mitä poikkeuskäsittely tarkoittaa?

Ohjelmoinnin jatkokurssi, kurssikoe

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

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

Lista luokan sisällä

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

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

public static void main (String [] args)

Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Ta

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

Ohjelmointi Tunnilla 1 (5) Viikko 7 tuntitehtäviä: metodien tekeminen Javalla

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

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

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

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

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

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

Ohjelmoinnin perusteet, kurssikoe

Mikä yhteyssuhde on?

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

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

Osoitin ja viittaus C++:ssa

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

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

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

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

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

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

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

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

Javan perusteita. Janne Käki

Metodien tekeminen Javalla

Taulukot, silmukat ja muut joka koodin pikku veijarit

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

Merkkijonon tutkiminen matches-metodilla

Vahva koostumussuhde (Composition)

Ohjelmoinnin perusteet, syksy 2006

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

Tietokannat II -kurssin harjoitustyö

20. Javan omat luokat 20.1

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

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

Ohjelmoinnin perusteet Y Python

Periytyminen (inheritance)

Olio-ohjelmointi Syntaksikokoelma

Java kahdessa tunnissa. Jyry Suvilehto

Ohjelmoinnin perusteet Y Python

UML ja luokkien väliset suhteet

Harjoitus 4 (viikko 47)

Ohjelmointi 2 / 2010 Välikoe / 26.3

7. Näytölle tulostaminen 7.1

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

Naantalin koulu-uinnit, Suomalaiset juhlapyhät, Viikkonumerot ma 10. syys ti 18. syys 2012 (Helsinki)

ITKP102 Ohjelmointi 1 (6 op)

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

Ohjelmoinnin perusteet Y Python

Poikkeustenkäsittely

17. Javan omat luokat 17.1

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

Tietueet. Tietueiden määrittely

13 Operaattoreiden ylimäärittelyjä

15. Ohjelmoinnin tekniikkaa 15.1

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

Metodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

11. Javan toistorakenteet 11.1

Yksikkötestaus. Kattava testaus. Moduulitestaus. Ohjelman testaus. yksikkotestaus/ Seija Lahtinen

Osio2: Taulukot Jukka Juslin

1 Tehtävän kuvaus ja analysointi

Ohjelmointityö 3. Mikko Laamanen

Ohjelmointi 1 Taulukot ja merkkijonot

Ohjelmoinnin perusteet Y Python

1. Omat operaatiot 1.1

Transkriptio:

Taulukot Taulukon määrittely ja käyttö Taulukko metodin parametrina Taulukon sisällön kopiointi toiseen taulukkoon Taulukon lajittelu esimerkki 2-ulottoisesta taulukosta 1

Mikä on taulukko? Taulukko on kokoelma samantyyppisiä muuttujia, joille on annettu yhteinen muuttujanimi Taulukko mahdollistaa usean muuttujan käsittelyn samalla tavalla Esim. Korttipakan 52 korttia voitaisiin toteuttaa taulukon avulla 2

Mitä taulukosta tulee tietää? Kuinka monta muuttujaa taulukkoon on tarkoitus laittaa eli tulevan taulukon koko Jokaista muuttujaa kutsutaan taulukon alkioksi Selvitetään taulukon alkioiden (muuttujien) yhteinen tietotyyppi Annetaan taulukolle kuvaava nimi 3

Taulukoiden ulottuvuus: Yksiulotteinen taulukko: Kaksiulotteinen taulukko: n-ulotteinen taulukko 4

Yksiulotteisen taulukon määrittely kun tiedetään taulukon alkioiden lukumäärä, mutta ei alkioiden arvoja tietotyyppi [] taulukon_nimi = new tietotyyppi [ alkiolkm ] tai tietotyyppi [] taulukon_nimi = null; taulukon_nimi = new tietotyyppi [ alkiolkm ]; Esim. int [] taulu = new int [4]; taulu: 0 1 2 3 5

Yksiulotteisen taulukon määrittely kun tiedetään taulukon alkioiden arvot tietotyyppi[] taulukon_nimi = {alkuarvo 0, arvoarvo 1,, alkuarvo n }; Esim. int [ ] taulu = { 7, 5, 9, 8 }; 0 1 2 3 taulu: 7 5 9 8 6

Taulukon koko: taulu.length Taulukon alkioon viittaaminen: taulu [ indeksi ], missä indeksi voi saada arvon 0, 1, 2, tai taulu.length-1. Jos indeksi arvo ylittää/alittaa sallitut rajat, tapahtuu taulukon yli/alivuoto ja ohjelman toiminta lakkaa. 7

Esim. int [ ] taulu = new int [5]; taulu [0] = 4; for ( int i = 1; i < taulu.length; i++) { } taulu [ i ] = taulu [ i-1 ] +3; taulu: 4 7 10 13 16 8

Esim. Mitähän ohjelma tulostaa? public class TulostaKuutJaPaivat { public void aja() { String[] kuut = { "Tammi", "Helmi", "Maalis", "Huhti", "Touko", "Kesä", "Heinä", "Elo", "Syys", "Loka", "Marras", "Joulu" }; int[] paivat = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int i; } for (i = 0; i < kuut.length; i++) System.out.println(kuut[i] + "kuussa on " + paivat[i] + " päivää"); }// end of aja 9

Harjoitus Tee ohjelma, KymmenenVuotta.java, joka lukee 10 vuosilukua, ja tulostaa vuosista aikaisimman. Vihje! Talleta luvut taulukkoon. Sijoita muuttujaan pienin taulukon ensimmäinen vuosi. Käy läpi taulukon alkiot ja tutki, onko käsiteltävä vuosi pienempi kuin muuttujan pienin arvo. Jos on, sijoita ko. vuosi muuttujaan pienin. 10

Taulukko metodin parametrina kun taulukko on metodin parametrina, sen alkioiden arvoja voidaan muuttaa metodissa, mikäli taulukko-olio on jo luotu esim. // pyytää käyttäjältä parametrina annettuun taulukkoon alkioiden arvot private void pyydaluvut (int [] taulukko){ } int i; Scanner input = new Scanner(System.in); if (taulukko!= null) { } ks. PositiivisetLuvut.java for (i=0;i<taulukko.length; i++) { } System.out.print("Anna kokonaisluku: "); taulukko [i] = input.nextint(); 11

Taulukon kopioiminen toiseen taulukkoon Taulukko kopioidaan toiseen taulukkoon alkio kerrallaan. Esim. int [] taulu1 = {1,2,3,4,5,6,7,8,9}; int [] taulu2 = new int[9]; for (int i=0;i<taulu1.length && i < taulu2.length; i++) taulu2[i] = taulu1[i]; Mitä tapahtuu? taulu1 = taulu2; 12

Metodi palauttaa taulukon Metodi voi palauttaa arvonaan viittauksen taulukkoon // luo parametrina annetun kokoisen (int koko) taulukon ja // palauttaa sen arvonaan private int [] luotaulu( int koko) { } int [] taulukko =null; if (koko > 0) taulukko = new int [koko]; return taulukko; luotaulu -metodin kutsu: int [] taulu = luotaulu( 10 ); Ks. Luvut.java 13

Harjoitus Lisää ohjelmaan KymmenenVuotta.java toiminta, jossa pyydetään käyttäjältä vuosien lukumäärä (min 3 max 10) sekä suurimman vuoden etsiminen ja tulostaminen. Vihje 1! Tee metodi int [] pyydavuosienlkm(), joka pyytää käyttäjältä vuosien lukumäärän, luo käyttäjän antaman lukumäärän kokoisen taulukon ja palauttaa sen arvonaan. Vihje 2! Tee metodi int etssuurinvuosi (int [] vuodet), joka etsii taulukosta vuodet suurimman arvon ja palauttaa sen arvonaan. 14

Esim. String-luokan metodi: String [] split ( String mjono) Metodi palauttaa taulukon siten, että taulukon alkioissa on ainoastaan merkkijonot, joiden välissä on ollut parametrin mjono kirjaimet String mjono="boo:and:foo"; String [] taulu = mjono.split(":"); for (int i=0;i<taulu.length;i++) System.out.print(taulu[i]+" "); tulostuu: boo and foo System.out.println(); 15

Metodi palauttaa taulukon jatkuu String mjono="boo:and:foo"; taulu=mjono.split("g"); for (int i=0;i<taulu.length;i++) System.out.print(taulu[i]+" "); System.out.println(); tulostuu: boo:and:foo String mjono = " tämä on lause."; taulu = mjono.split(" "); for (int i=0;i<taulu.length;i++) if (taulu[i].length()!= 0) System.out.print(taulu[i]+" "); System.out.println(); tulostuu: tämä on lause. 16

Harjoitus Tee ohjelma NimiOhjelma, joka pyytää käyttäjältä henkilön nimiä (etunimi toinen nimi ja sukunimi) neljä (4) kpl. Ohjelma muokkaa jokaisen nimen, siten, että jokainen sana alkaa suurella alkukirjaimella. Nimet talletetaan taulukkoon. Käytä metodeja! Esim. ohjelman toiminnasta: Anna henkilön nimi: seija mirjami lahtinen Anna henkilön nimi: harri antero HOLKERI Anna henkilön nimi: IRmeli Anna henkilön nimi: vilho ARMas lahtinen Tulostaa: Seija Mirjami Lahtinen Harri Antero Holkeri Irmeli Vilho Armas Lahtinen 17

Taulukon lajittelu, kuplalajittelu int [] taulu = {8, 7, 1, 5, 4}; taulu: 8 7 1 4 5 Lajitellaan taulu suuruusjärjestykseen kuplalajittelua käyttäen 18

Kuplalajittelu: Verrataan taulukon kahden ensimmäisen alkion arvoja keskenään: taulu: 8 7 9 4 5 Mikäli alkioiden arvot eivät ole järjestyksessä, vaihdetaan niiden arvot keskenään: taulu: 7 8 9 4 5 19

Kuplalajittelu: Verrataan kahden seuraavan alkion arvoja keskenään: taulu: 7 8 9 4 5 Kun arvot on järjestyksessä ei tehdä mitään: taulu: 7 8 9 4 5 20

Kuplalajittelu: Verrataan kahden seuraavan alkion arvoja keskenään: taulu: 7 8 9 4 5 Mikäli alkioiden arvot eivät ole järjestyksessä, vaihdetaan niiden arvot keskenään: taulu: 7 8 4 9 5 21

Kuplalajittelu: Verrataan kahden viimeisen alkion arvoja keskenään: taulu: 7 8 4 9 5 Mikäli alkioiden arvot eivät ole järjestyksessä, vaihdetaan niiden arvot keskenään: taulu: 7 8 4 5 9 HUOM! Taulukon suurin arvo on nyt taulukon viimeisessä alkiossa 22

Kuplalajittelu Toistetaan edellinen, mutta viimeinen verrattava alkion on taulukon toiseksi viimeinen alkio 2. kierros: 1) 3) 2) taulu: 7 8 4 5 9 taulu: 7 8 4 5 9 taulu: 7 4 8 5 9 Lopputulos: vaihto taulu: 7 4 5 8 9 vaihto HUOM! Taulukon kahdessa viimeisessä alkiossa ovat suurimmat arvot 23

Kuplalajittelu: 3. kierros: Verrataan taulukon alusta kolmanneksi viimeiseen alkioon 1) taulu: 7 4 5 8 9 2) vaihto taulu: 4 7 5 8 9 Lopputulos: taulu: 4 5 7 8 9 vaihto HUOM! Taulukon kolmessa viimeisessä alkiossa ovat taulukon suurimmat arvot järjestyksessä. 24

Kuplalajittelu 4. Kierros: Verrataan taulukon alusta neljänneksi viimeiseen alkioon 1) taulu: 4 5 7 8 9 Vaihtoa ei tule Kierros ei sisältänyt yhtään vaihtoa lajittelu ON VALMIS Ks. Kuplalajittelu.java HUOM! Kun kierros ei sisällä yhtään vaihtoa, lajittelu on valmis. 25

Harjoitus: Lisää NimiOhjelma ohjelmaan nimien lajittelu ja tulostus lajitellussa järjestyksessä. Vihje! Tee metodi private void lajittele (String [] nimet), joka lajittelee taulukon nimet. Käytä String-luokan metodia int compareto (String mjono) kahden nimen vertaamiseen. Metodi palauttaa <0, kun viestin saanut merkkijono on aakkosissa ennen parametria, ==0, kun merkkijonot ovat samat ja >0, kun viestin saanut merkkijono on aakkosissa parametrin jälkeen. 26

Kaksiulotteinen taulukko Kaksiulotteinen taulukko on matriisi, siinä on sarakkeet ja rivit Esim. 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 Taulukon määrittely: int [ ] [ ] taulu = new int [10][10]; 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 Ks. KaksiulotteinenTaulukko.java 27