Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille

Slides:



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

18. Abstraktit tietotyypit
6. Metodit.
@ Leena Lahtinen Helia TIETO JA TIETOKONEOHJELMA  TIETOKONEOHJELMA KÄSITTELEE TIETOJA  TIETOJA VOIDAAN KÄSITELLÄ OHJELMASSA VAIN SALLITUILLA.
© Jukka Harju, Viittausmuuttujat. © Jukka Harju, Viittaukset •Viittausmuuttuja sisältää tiedon siitä missä muistipaikassa olio.
16. Javan omat luokat.
Ict1td002: Ohjelmointitaito Kertaus Osio 2 - luokat - ilmentymät - viittaus- ja arvomuuttuja - ilmentymien taulukointi HAAGA-HELIA IltaTiko.
Tuloksellinen Java-ohjelmointi Luku 9 Taulukot ja perustietorakenteet
Taulukot Jukka Juslin © Jukka Juslin 2006.
Taulukot: Array Taulukko Javassa pitää aina perustaa (new)
22. Taulukot.
Rakenteinen ohjelmointi
Käännösaikaiset virheilmoitukset • Tulee silloin, kun koodissa on jotain sellaista, joka ei ole Javan syntaksin mukaista • Esim. – Syntax error, insert.
C-ohjelmointi, kevät 2006 Taulukot Binääritiedostot Luento
OLIO-OHJELMOINTI PERUSTEET PERUSTIETOTYYPIT
© Jukka Harju, Jukka Juslin Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 9 Poikkeuskäsittely.
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ä.
TIETO JA TIETOKONEOHJELMA TIETOKONEOHJELMA KÄSITTELEE TIETOJA TIETOJA VOIDAAN KÄSITELLÄ OHJELMASSA VAIN SALLITUILLA MENETELMILLÄ.
13. Hyvä ohjelmointitapa (osa 1)
© Jukka Harju, Jukka Juslin
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
7. Oliot ja viitteet.
ict1td002 - Copyright Raine Kauppinen 1 Alkuarvot ja tyyppimuunnokset (1/5)  Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int.
Metodit – Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin ”return;”-lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua.
20. Javan omat luokat.
1 DataOutputStream ja DataInputStream DataOutputStream:lla voidaan tallentaa perustietotyyppien arvoja binäärimuotoiseen tiedostoon DataInputStream:lla.
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.
Hyvä ohjelmointitapa (osa 2) Yleistä Lisää hyviä ohjelmointikäytäntöjä: − Jaa pitkä koodi osiin. − Käytä attribuutteja säästeliäästi.
22. Taulukot.
Poikkeukset Yleistä Virheeseen varautuminen tarkoittaa sitä, että ohjelmoija huomioi koodia kirjoittaessaan ajonaikaisen virheen mahdollisuuden.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen
2. Lisää Java-ohjelmoinnin alkeita
Aakkosnumeerinen tieto Tarkoittaa kaikkea muuta tietoa paitsi laskentaan tarkoitettuja lukuja Muuttujan tietosisältö on siis tekstitietoa Muuttujan tietotyypiksi.
Oliot ja luokat Oliot ja luokat Oliot (object) ja luokat (class) ovat keskeisiä olio- ohjelmoinnin käsitteitä. Olio-ohjelmointi on ohjelmointiparadigma,
Tiedostojen käsittely
Olioiden taulukointi Perustaulukon käyttö Luokan ilmentymät voidaan tallettaa taulukkoon samoin kuin muuttujat Esimerkki talletetaan taulukkoon opintojaksojen.
Javascript 2: Ohjelmointikielen ominaisuudet Jaana Holvikivi Metropolia.
14. Poikkeukset Sisällys Johdanto poikkeuksiin. Poikkeusten käsittely: − Poikkeusten käsittely paikallisesti. − Poikkeusten heittäminen. Exception.
15. Ohjelmoinnin tekniikkaa
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
Tiedostot. 8.2 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen.
Olio-ohjelmoinista lyhyesti. 2.2 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen.
15. Ohjelmoinnin tekniikkaa Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi.
3. Olio-ohjelmoinista lyhyesti
6. Tiedostot.
7. Oliot ja viitteet.
2. Taulukot.
14. Poikkeukset.
17. Javan omat luokat.
Scala Collections.
8. Näppäimistöltä lukeminen
Yhden bitin asettaminen Javalla
7. Hyvä ohjelmointitapa..
15. Ohjelmoinnin tekniikkaa
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
Aakkosnumeerinen tieto
8. Näppäimistöltä lukeminen
16. Ohjelmoinnin tekniikkaa
14. Hyvä ohjelmointitapa.
2. Taulukot.
7. Oliot ja viitteet.
15. Ohjelmoinnin tekniikkaa
7. Hyvä ohjelmointitapa..
14. Poikkeukset.
3. Attribuutit.
14. Poikkeukset.
4. Luokan testaus ja käyttö olion kautta
16. Ohjelmoinnin tekniikkaa
Esityksen transkriptio:

Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille Taulukot Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille

Taulukot Usein on tarvetta käsitellä ryhmää samantyyppisiä olioita tai perustietotyyppejä On raskasta ja virhealtista kirjoittaa esimerkiksi kymmeniä samantyyppisiä muuttujia peräkkäin ja suorittaa niille kaikille samaa operaatiota Apua tuovat taulukot, joissa yhteen muuttujaan pystytään sijoittamaan useita olioita

Yksiulotteinen taulukko Yksiulotteinen merkkijonotaulukko esitellään ja luodaan: String[] names = new String[4]; Rivi varaa tilan neljälle String-tyyppiselle oliolle. Se jättää kuitenkin kaikki oliot null-arvoiksi. Mikäli taulukko on luotu jostakin perustietotyypistä, ovat taulukon indeksit suoraan käytössä (ei tarvitse new:llä luoda joka paikkaan oliota) Taulukon indeksointi alkaa aina nollasta.

Yksiulotteinen oliotaulukko Oliotaulukon sisältö olisi luonnin jälkeen: 0 null 1 null 2 null 3 null Taulukon yksittäiseen olioon voidaan viitata []:n avulla: names[0] = new String(”Pekka”); Edellinen rivi luo taulukon ensimmäiseen paikkaan uuden merkkijono-olion

Yksiulotteinen taulukko Yksiulotteisen taulukon kokoa voidaan muuttaa vain luomalla uusi taulukko. Taulukon kokoon saa length:llä: int size = names.length; Taulukon sallittuja sijoitus- ja lukupaikkoja ovat [0..length-1]. Mikäli yritetään käyttää muita paikkoja, heittää Java ajonaikaisen virheen.

Yksiulotteinen oliotaulukko Käytettäessä String-luokkaa, voidaan kirjoittaa hieman lyhyemmin: names[0] = ”Pekka”; koska Java luo automaattisesti ””:lla erotetusta merkkijonosta uuden String-olion

Taulukon alustaminen Taulukkoon voidaan sijoittaa arvoja luonnin yhteydessä: final int[] daysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

Yksiulotteinen taulukko - esimerkki String[] students = new String[3]; students[0] = new String(”Matti”); students[1] = new String(”Maija”); students[2] = new String(”Antti”); for (int i=0;i<students.length;i++) { System.out.println(students[i]); }

Yksiulotteinen taulukko – esimerkki 2 private String [] m_students; public void createStudents() { m_students = new String[3]; students[0] = new String(”Matti”); students[1] = new String(”Maija”); students[2] = new String(”Antti”); } public void printStudents() { for (int i=0;i<m_students.length;i++) { System.out.println(m_students[i]);

Taulukon käyttöongelma Koon muuttaminen ei ole yksinkertaista Soveltuu huonommin tilanteisiin, joissa kokoa ei tunneta ennalta tai koko muuttuu usein

Taulukon koon muuttaminen public class StudentArray { private String [] m_students; public StudentArray() { setArraySize(3); students[0] = new String(”Matti”); students[1] = new String(”Maija”); students[2] = new String(”Antti”); } public void setArraySize(int newSize) { String[] newArray = new String[newSize]; int minLength; if (m_students.length<newSize) minLength = m_students.length; else minLength = newSize; for (int i=0;i<newSize;i++) { newArray[i] = m_students[i];

Moniulotteiset taulukot Taulukot voivat olla moniulotteisia, koska yksittäinen taulukon alkio voi sisältää toisen taulukon [1] [0] [2] [3]

Moniulotteiset taulukot – esimerkki Ohjelma, joka piirtää 8x8 ruudun kokoisen shakkilaudan Vierekkäiset ruudut ovat eri värisiä Vasemman yläkulman ruutu on musta Valkoinen ympyrän muotoinen pelinappula sijoitetaan yhteen ruutuun

Moniulotteiset taulukot Esimerkiksi kaksiulotteinen taulukko: String[][] stringArray = new String[2][4]; stringArray[0][0] = new String(”Ruutu (0,0)”); stringArray[0][1] = new String(”Ruutu (0,1)”); int sizeX = stringArray.length; // == 2 int sizeY = stringArray[0].length; // == 4 String oneItem = stringArray[1][2]; [1] [0] [2] [3]

Kokonaislukutaulukon järjestäminen lisäyslajittelu public void insertionSort(int [] intArray) { for (int i=1;i<intArray.length;i++) { int tmp = intArray[i]; int j = i; while (j > 0 && intArray[j-1] > tmp) { intArray[j] = intArray[j-1]; j--; } intArray[j] = tmp;

Vector-luokka Vector-luokalla voidaan toteuttaa samat toiminnot kuin taulukolla. Lisäksi sillä on monia muita helpottavia ominaisuuksia. Kopiointi Koon muuttaminen Lisäys, poisto Vector-luokka löytyy java.util-paketista (import java.util.Vector)

Vector-luokka – esimerkki import java.util.Vector; ... Vector vector = new Vector(); vector.add(”Pekka”); vector.add(”Tomppa”); vector.remove(0); String firstItem = (String)vector.get(0); vector.add(”Satu”); for (int i=0;i<vector.size();i++) { System.out.println( (String)vector.get(i) ); }