Kurssin suoritus. Javan perusteet Kurssimateriaali. Kurssin aikataulu. Harjoitukset. Kurssin sisältö. Javan perusteet

Koko: px
Aloita esitys sivulta:

Download "Kurssin suoritus. Javan perusteet 2004. Kurssimateriaali. Kurssin aikataulu. Harjoitukset. Kurssin sisältö. Javan perusteet 2004 1"

Transkriptio

1 Kurssin suoritus Javan perusteet ,5 ov Kuopion yliopisto, tietojenkäsittelytieteen laitos Ohjelmistotekniikan maisterikoulutus, Varkaus Tomi Keinonen Luennot 18 h Harjoitukset 4 krt Lopputentti tai harjoitustyö Harjoituksista jaettavat hyvityspisteet 75 % 100 % +2 arvosanaa 50 % 75 % +1 arvosana 25 % 50 % ei vaikutusta 0 % 25 % 1 arvosana 1 2 Kurssimateriaali Verkkosivut Kurssin aikataulu To :45 19:45 Luennot 1 4 La :00 10:30 Harjoitukset 1 B231 C1004TK Kurssi pohjautuu kirjaan Morelli, Ralph: Java, Java, Java! : Object Oriented Problem Solving 1. painos: 2000, ISBN painos: 2002, ISBN Kurssikirjan hankinta ei välttämätöntä, mutta varsin suotavaa 3 La :00 14:00 Luennot 5 8 B231 Harjoitustehtävien 2 palautus sähköpostitse ma klo 18 mennessä Ti :45 19:45 Luennot 9 12 B231 Harjoitustehtävien 3 palautus sähköpostitse ti klo 18 mennessä Ke :45 19:45 Luennot B231 Harjoitustehtävien 4 palautus sähköpostitse ke klo 18 mennessä (To :45 19:45 Tentti B231) Jompi kumpi, sovitaan (Harjoitustyön palautus sähköpostitse pe klo 18 mennessä) kurssilla Ke :45 18:15 Luennot B231 4 Harjoitukset Tehtävät nettisivulla Ensimmäiset harjoitukset mikroluokassa Ohjelmalliset ratkaisut mukaan esim. levykkeellä Harjoitukset 2 4 palautetaan sähköpostina Ratkaisujen ohjelmakoodit liitetiedostoina Mahdolliset kuvat GIF tai JPEG muotoisina Osanottajien määrästä riippuen lyhyt palaute ratkaisusta paluupostina Ratkaisujen ei tarvitse olla täydellisiä 5 Kurssin sisältö Poikkeukset J2SE API Tiedostot Rekursio Javakieli Java 2 Platform, Standard Edition Taulukot Luokat ja oliot Ehdot ja toisto Metodit Aritmetiikka 6 Javan perusteet

2 Java JAVA:sta on useita eri versioita erilaisiin käyttötarkoituksiin Ympäristö Ei käyttöjärjestelmäriippuvuutta Standard Edition (SE) Enterprise Edition (EE) Mobile Edition (ME) Sunin J2SE SDK, versio J2SE: Yleisin Java alusta, joihin perussovellukset pohjautuvat J2EE: Palvelinsovellusten kehittämiseen tarkoitettu alusta, sisältää kaikki J2SE:n ominaisuudet J2ME: Typistetyin ominaisuuksin kämmenlaitteisiin tarkoitettu alusta Kurssilla käsiteltävät perustoiminnot kaikissa Java alustoissa samat. Eroavaisuudet lähinnä alustan luokkakirjastoissa. Lähdekoodi suositellaan kirjoitettavaksi jollakin tekstieditorilla: (ilmainen LE) 7 8 Oliot ja luokat Oliot ja luokat Olio on luokan ilmentymä, jolla on tila ja käyttäytyminen. Luokan ja olion erot? UML luokkakaavio. Olio on yleinen käsite, jolla on tila käyttäytyminen Jokaisella oliolla on yksikäsitteisesti määritelty luokka, johon se kuuluu Olion tila talletetaan attribuutteihin ja käyttäytyminen toteutetaan metodeilla 9 10 Oliot ja luokat Oliot ohjelmissa Jääkaappi Omena Timestamp Olio ohjelmointikieliä: Java, C++, Oberon 2, Smalltalk, Eiffel Java puhdas olio ohjelmointikieli Maitopurkki Tomaatti File Duration User Ohjelmistokehittäjä rakentaa tarvittavat luokat vaatimusten ja suunnitelmien perusteella Javan perusteet

3 Olio ohjelmointi periaatteita Hajoita ja hallitse Kapselointi Rajapinnat Tiedon piilottaminen Yleiskäyttöisyys Laajennettavuus Miksi luokat? Luokat suunnitellaan ja testataan hyvin (hyvä laatu) Luokkia uudelleenkäytetään ja peritään (kehityksen nopeus) Väärän käytön estäminen (ohjelmoijan virheiden vähentäminen) Asiakokonaisuudet erillään (selkeys ja ymmärrettävyys) Luokan ja olion erot UML luokkakaavio Luokka määrittelee attribuutit ja metodit ohjelmoijan tekemä ei ole olemassa ajon aikana kuin oliomuodossa kiinteä ajon aikana, ei voida muuttaa ohjelman pyöriessä nimetty luokan nimen mukaan Olio on luotu jostakin luokasta on olemassa vain ajon aikana täytyy määritellä ja luoda ohjelmassa sisältää attribuutteja ja metodeja, joita voidaan suorittaa ohjelmasta nimetty muuttujaksi Universal Modeling Language Luokasta kuvataan Nimi Attribuutit Metodit Yleisesti käytetty standardisoitu kuvaustapa Kommentteja voidaan laittaa merkkien väliin Director SimpleWindow window GrayCircle circle «constructor» Director() Metodikutsut Metodikutsut olio.metodi(); Esimerkkejä pen.moveforward(); pen.turnclockwise(); pen.draw(); DrawingTool «constructor» DrawingTool() «update» void moveforward() void turnclockwise() void dontdraw() void draw() Attribuutit (luokan muuttujat) Jokaisella luokan attribuuttilla on määritelty näkyvyysalue (scope) private protected public Attribuuttien nimien tulee olla yksilöllisiä Esimerkki private DrawingTool pencil; private DrawingTool pen; Javan perusteet

4 Nimeämiskäytännöt Javakielessä Luokkien, metodien ja attribuuttien nimissä (identifiers) on rajoitteita alkaa kirjaimella a z tai A Z, jonka jälkeen voi olla numeroita tai kirjaimia, mutta ei erikoismerkkejä isot ja pienet kirjaimet eri merkkejä nimeäminen kannattaa tehdä kuvaavasti eri käytäntöjä olemassa, yhtenäisyys ohjelman sisällä kannattaa säilyttää Nimeämiskäytännöt esimerkki Luokkien nimet: DrawingTool Luokan metodit: drawline Attribuutit: pencilcolor Muuttujat metodien sisällä: pencilcolor Sun:n suositukset: Lähdekoodista ohjelmaksi Ensimmäinen Java ohjelma Lähdekoodista ohjelmaksi Ensimmäinen ohjelma Tekstieditori Lähdekoodi (*.java) Kääntäjä Tavukoodi (*.class) Suunnitelmasta lähdekoodiksi Jokainen luokka kirjoitetaan omaan lähdekooditiedostoon. Esimerkiksi luokka Director kirjoitetaan tiedostoon Director.java Koodia selkeyttämään käytetään sisennyksiä, kommentteja ja yhtenäistä nimeämiskäytäntöä. Isot ja pienet kirjaimet tarkoittavat eri asiaa. Luokkien ja niissä olevien metodien kokoa pyritään rajoittamaan. Suuret luokat ja pitkät metodit kannattaa jakaa pienempiin osiin. 5 Virtuaalikone (JRE) Lähdekoodista ohjelmaksi Lähdekoodista ohjelmaksi Tekstieditori Lähdekoodi (*.java) Kääntäjä Tavukoodi (*.class) Virtuaalikone (JRE) Lähdekoodista tavukoodiksi Kääntäjä kääntää lähdekoodin JRE:n ymmärtämäksi tavukoodiksi (javac tiedosto). Kääntäjä tarkastaa lähdekoodin oikeellisuuden ja pysähtyy virheeseen, mikäli lähdekoodia ei voida kääntää. Onnistunut käännös tuottaa.classpäätteisen tavukooditiedoston jokaisesta lähdekooditiedostosta. Ohjelmoija ei muokkaa tavukoodia, vaan muutokset tehdään aina lähdekoodiin Tekstieditori Lähdekoodi (*.java) Kääntäjä Tavukoodi (*.class) Virtuaalikone (JRE) Tavukoodin suorittaminen Tavukoodia ei ole konekieltä eli sitä ei voida suorittaa suoraan prosessorilla. Suorittamiseen käytetään Javavirtuaalikonetta (Java VM, JRE). (java luokannimi) Samaa tavukoodia voidaan suorittaa missä tahansa laiteympäristössä, mihin on saatavilla Java VM. Ohjelmassa olevat loogiset virheet ilmenevät vasta ajon aikana. Virheitä vähennetään ja tutkitaan testauksella ja debuggauksella. 24 Javan perusteet

5 Ensimmäinen ohjelma public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World!"); Koodin kääntäminen ja ajaminen Yksittäisen MyClass.java tiedoston kääntäminen onnistuu: javac MyClass.java Käännöksen jälkeen ajaminen: java MyClass Ajamisen yhteydessä voidaan välittää komentoriviparametreja: java MyClass parametri1 parameteri Kommentit Kommentteja voi koodiin laittaa kahdella tavalla: // yksirivinen kommentti /* Monirivinen kommentti */ Sopivat kommentit selkeyttävät koodia Ohjelma? Hyvä ohjelma toteutuksen näkökulmasta? Toimii halutusti normaalien käyttötapausten lisäksi myös erikoistapauksissa Rakenne on selkeä ja ymmärrettävä Hyödynnetty mahdollisuuksien mukaan olemassaolevia valmiita luokkia/luokkakirjastoja Koodi uudelleenkäytettävää Riittävä kommentointi Perustietotyypit Perustietotyypit ja aritmetiikka Kokonaislukutyypit, reaalilukutyypit, kirjaimet Perustietotyyppien ja olioiden erot Aritmeettiset lausekkeet ja niiden sisäinen suoritusjärjestys Muunnokset perustietotyypistä toiseen Merkkijono Math luokan tarjoamat palvelut Vakiot 29 Kokonaislukutyypit byte (8 bittiä) ( ) short (16 bittiä) ( ) int (32 bittiä) ( ) long (64 bittiä) Liukulukutyypit float (32 bittiä) double (64 bittiä) Muut perustietotyypit boolean totuusarvo (true/false) char kirjain (Unicode) 30 Javan perusteet

6 Tietotyyppien kokojärjestys byte char short int long float double 31 Kokonaislukutyypin int operaattorit Prefix operaattorit (int >int) vastaluku ++ lisäys vähennys Aritmeettiset oper. (int*int >int) + yhteenlasku vähennyslasku * kertolasku / jakolasku (kokonaisosa) % jakoläännös (modulo) Vertailulauseet (int*int >boolean) == yhtäsuuruus!= erisuuruus < pienempi <= pienempi tai yhtäsuuri > suurempi >= suurempi tai yhtäsuuri Postfix operaattorit (int >int) ++ lisäys vähennys Rajoituksia ++ ja (prefix ja postfix) operaattoreita ei voida kohdistaa vakioille Käyttöesimerkkejä int i = 1; int k = 2; ++i; // prefix, i=i+1; int sum = i+k; // aritm. op. boolean b = i < k; // vertailu i++; // postfix boolean complex = (i++ * 2 > ++k); Operaattorien lyhennykset a+=b a=a+b a =b a=a b a*=b a=a*b a/=b a=a/b Käyttöesimerkkejä int a = 1; a*=2; // a=a*2; > a==2 int b = 6; b+=2; // b=b+2; > b==8 Muunnokset tietotyypistä toiseen Muunnokset numeroarvoisesta tietotyypistä toiseen tehdään tyypinmuunnoksen kautta Pyöristykset tapahtuvat aina alaspäin Esimerkki: int i = (int)2.5; // i == 2; Mikäli halutaan pyöristää virallisten pyöristyssääntöjen mukaan, on 2 vaihtoehtoa: int i = (int) ; // i == 3 int i = Math.round(2.5); // i == 3 34 String luokka String luokkaa käytetään merkkijonojen tallentamiseen Vaikka String näyttäisi toimivan kuin perustietotyyppi, se on kuitenkin luokka String str = Esim ; String str = new String( Esim ); String str( Esim ); Luokalla on paljon metodeja merkkijonon käsittelyyn Math luokan metodeja Math.abs itseisarvo Math.pow potenssi Math.round pyöristys Math.sqrt neliöjuuri Math.random satunnaisluku Javan perusteet

7 Vakiot Vakioita voi määrittää final määreellä Vakiomuuttujan arvoa ei voi muuttaa Esimerkkejä: final double Math.PI = final int count = 11; Oliot ja luokat Luokkien teko Konstruktorit Metodit Muuttujat, oliot ja roskienkeruu Esimerkkiluokan UML kaavio String m_name int m_age int m_creditcount Student Student() Student(String name) void setname(string name) void setage(int age) void setcreditcount(int creditcount) Konstruktorit Luokalla voi olla yksi tai useampia luokan nimisiä metodeja, joita kutsutaan konstruktoreiksi Konstruktorit voivat erota toisistaan erilaisten parametrien perusteella: public class Student { Student() { Student(String name) { Konstruktorit Konstruktoria kutsutaan luotaessa uusi olio Student stu1 = new Student(); Student stu2 = new Student( Pekka ); Metodit String m_name int m_age int m_creditcount Student Student() Student(String name) void setname(string name) void setage(int age) void setcreditcount(int creditcount) Konstruktorin lisäksi luokalla on yleensä myös muita metodeja Metodeilla voi myös olla parametreja Javan perusteet

8 Metodien parametrit Metodilla voi olla rajoittamaton määrä parametreja Parametrit määritellään sulkujen sisässä metodin nimen perässä public void sellcar(car cartosell, Person currentowner, Person buyer) { cartosell.check(); buyer.getsignature(); currentowner.getsignature(); Metodien paluuarvot Metodilla voi olla korkeintaan yksi paluuarvo Paluuarvon tyyppi määritellään ennen metodin nimeä: public String getname(); public int getage(); Metodi ei palauta arvoa, mikäli se määritellään void määreellä: public void setage(int age); 44 Metodien paluuarvot Metodin paluuarvo palautetaan returnlauseella public String getname() { return m_name; Metodien määrittely yhteenveto Jokainen metodi kuuluu jollekin luokalle Metodin näkyvyysalue rajaa sen käyttöä Metodilla voi olla rajoittamaton määrä parametreja Metodilla voi olla yksi paluuarvo tai ei paluuarvoa ollenkaan (void) Olioiden luonti ja sijoittaminen Muuttujat, oliot ja roskienkeruu Oliota ei ole olemassa ennen sen luontia muuttuja = new Olio(); Esimerkki DrawingTool pen; pen = new DrawingTool(); pen.moveforward(); 47 Kun muuttua esitellään ensimmäisen kerran, se ei osoita mihinkään olioon vaan nullarvoon Kun olioon ei osoita enää yksikään muuttuja, Java kielen roskienkeruu tuhoaa sen DrawingTool pen; // pen osoittaa null arvoon pen = new DrawingTool(); // pen osoittaa luotuun olioon pen = null; // luotuun DrawingTool olioon ei osoita enää // yksikään muuttuja > se tuhotaan 48 Javan perusteet

9 Muuttujat, oliot ja roskienkeruu Muuttujat, oliot ja roskienkeruu mypen missingpen ( null ) ( null ) suorituskohta mypen = new Pencil(); mypen = null; borrowedpen = new Pencil(); missingpen = borrowedpen; missingpen = mypen; borrowedpen = new Pencil(); suorituskohta mypen = new Pencil(); mypen = null; borrowedpen = new Pencil(); missingpen = borrowedpen; missingpen = mypen; borrowedpen = new Pencil(); mypen missingpen mypen : Pencil m_color = =? m_width = =? ( null ) borrowedpen ( null ) borrowedpen ( null ) Muuttujat, oliot ja roskienkeruu mypen = new Pencil(); mypen = null; borrowedpen = new Pencil(); missingpen = borrowedpen; missingpen = mypen; borrowedpen = new Pencil(); mypen missingpen ( null ) : Pencil m_color = =? m_width = =? ( null ) Muuttujat, oliot ja roskienkeruu mypen = new Pencil(); mypen = null; borrowedpen = new Pencil(); missingpen = borrowedpen; missingpen = mypen; borrowedpen = new Pencil(); mypen missingpen ( null ) : Pencil m_color = =? m_width = =? ( null ) borrowedpen : Pencil borrowedpen ( null ) borrowedpen m_color = =? m_width = =? Muuttujat, oliot ja roskienkeruu mypen = new Pencil(); mypen = null; borrowedpen = new Pencil(); missingpen = borrowedpen; missingpen = mypen; borrowedpen = new Pencil(); mypen missingpen ( null ) : Pencil m_color = =? m_width = =? suorituskohta suorituskohta suorituskohta suorituskohta Muuttujat, oliot ja roskienkeruu mypen = new Pencil(); mypen = null; borrowedpen = new Pencil(); missingpen = borrowedpen; missingpen = mypen; borrowedpen = new Pencil(); mypen missingpen ( null ) : Pencil m_color = =? m_width = =? ( null ) borrowedpen : Pencil borrowedpen : Pencil borrowedpen m_color = =? m_width = =? borrowedpen m_color = =? m_width = =? Javan perusteet

10 Muuttujat, oliot ja roskienkeruu suorituskohta mypen = new Pencil(); mypen = null; borrowedpen = new Pencil(); missingpen = borrowedpen; missingpen = mypen; borrowedpen = new Pencil(); mypen missingpen ( null ) : Pencil m_color = =? m_width = =? ( null ) borrowedpen : Pencil m_color = =? m_width = =? : Pencil borrowedpen m_color = =? m_width = =? Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean algebra == yhtäsuuruus!= erisuuruus < pienempi <= pienempi tai yhtäsuuri > suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10; Jolloin: i < j == true i >= j == false i!= j == true Vertailulauseet Huomaa ero sijoitusoperaatiolla ja vertailuoperaatiolla: = Sijoitusoperaatio == Vertailuoperaatio Esimerkki j = 1; // j saa arvokseen yksi j == 1 // onko j:n arvo yksi? Vertailulauseet Suuremmuutta ja pienemmyyttä tutkivilla operaatioilla voi vertailla vain numeerisia lausekkeita Yhtäsuuruus ja erisuuruus ovat käytössä muidenkin arvojen vertailuissa Esimerkki double d=0.1; double e=0.2; String auto( Auto ); String bussi( Bussi ); d < e == true // Sallittu auto < bussi // Ei sallittu! // Sallittu, mutta ei suositeltu sisällön // vertailuun auto!= bussi Javan perusteet

11 if lauseke Ohjelmassa voi olla valintalauseita: if (ehto) { // tee jotain else { // tee jotain muuta if lauseke ehdon tulee aina olla jokin totuusarvo jos totuusarvo on tosi, suoritetaan iflauseketta seuraava lohko jos totuusarvo on epätosi, suoritetaan else lausekkeen jälkeinen lohko (jos sellainen on olemassa) else osassa voi olla uusi if lauseke (else if) if lauseke esimerkki 1 public void ispositive(int i) { System.out.println( Luku + i ); if (i>0) System.out.println( on positiivinen. ); else if (i<0) System.out.println( on negatiivinen. ); else System.out.println( on nolla. ); Lohkot Jos valintavaihtoehto koostuu useammasta lauseesta, lauseet on koottava yhteen lohkoksi Lohko on merkkien { ja välisten lauseiden jono Lohkon viimeisen aaltosulun jälkeen ei käytetä puolipistettä if lauseke esimerkki 2 public void ispositive(int i) { System.out.println( Luku + i ); if (i>0) { System.out.println( on positiivinen. ); dosomething(i); else if (i<0) System.out.println( on negatiivinen. ); else System.out.println( on nolla. ); if lauseke moniselitteisyys? if lauseeseen ei ole pakko liittyä else osaa, jonka vuoksi tulee huomata mihin mikäkin else osa liittyy Esimerkki if (a<b) if (c<d) e=f; else g=h; // Tarkoittaako tämä: if (a<b) if (a<b) if (c<d) if (c<d) e=f; e=f; else else g=h; g=h; Sääntö: else osa liittyy aina lähimpään edeltävään iflauseeseen Javan perusteet

12 Totuusarvojen yhdistely Totuusarvoilla voi laskea: (a == b) // a ja b yhtäsuuret (a!= b) // a erisuuri kuin b (a && b) // a ja b tosia (a b) (!a) // a tai b // a epätosi Edellä esiteltyjä voi yhdistellä, esimerkiksi: (a b) && (c d) // a tai b ja c tai d switch lauseke switch lausekkeella voi olla eri haaroja switch soveltuu paikkoihin, joissa on tarvetta käsitellä monia eri numeroarvoihin perustuvia haaroja switch lausekkeessa voi olla default haara, joka suoritetaan mikäli yksikään muu haara ei toteudu switch lausekkeessa on muistettava break:n käyttö (kts. seuraava esimerkki). break:lla poistutaan switch lauseesta switch lauseke esimerkki boolean perustietotyyppi public void printnumber(int i) { switch(i) { case 0: System.out.println( nolla ); break; case 1: System.out.println( yksi ); break; default: System.out.println( ei yksi eikä nolla ); break; 69 Totuusarvo voidaan sijoittaa booleantyyppiseen perustietotyyppiin boolean isbigger = (a>b); if (isbigger) System.out.println( a is bigger than b ); else System.out.println( a isn t bigger than b ); 70 Esiehtoinen toistorakenne Toisto Toistolausekkeet for, while(ehto){ ja do { while(ehto) Toistorakenteista poistuminen ja niiden sisällä siirtyminen while (ehto) { /* suoritettava koodi */ Esimerkki: int poweroftwo = 2; while (poweroftwo < 10) { System.out.println( Next power: + poweroftwo); poweroftwo *= 2; Javan perusteet

13 Esiehtoinen toistorakenne Toistorakennetta suoritetaan niin kauan kun annettu ehto on tosi (true) Mikäli ehto ei ole aluksikaan tosi, ei toistorakennetta suoriteta kertaakaan Jälkiehtoinen toistorakenne do{ /* suoritettava koodi */ while (ehto); Esimerkki: boolean mayexit = false; do{ System.out.println( Syötä luku (1 9) : ); int uservalue = Lue.kluku(); if (uservalue>0 && uservalue<10) mayexit = true; while (!mayexit); Jälkiehtoinen toistorakenne Toistorakenne suoritetaan vähintään yhden kerran Seuraavalle suorituskerralle siirrytään, mikäli annettu ehto on tosi for toistorakenne for (alustus;jatkamisehto;lisäyslauseke) { /* suoritettava koodi */ Käyttö järkevää kun toistojen lukumäärä on ennakkoon tiedossa Esimerkki for (int i=0;i<10;i++) { System.out.println( Luku + i); for toistorakenne (1) (2) (3) for (int i=0;i<10;i++) { System.out.println( Luku + i); Tuloste 1) suoritetaan yhden kerran 2) suoritetaan joka kierroksella, jos totuusarvo on false, toistorakenteen suoritus päättyy 3) suoritetaan joka kierroksen lopuksi ennen seuraavan kierroksen kohdan (2) tarkastusta Luku 0 Luku 1 Luku 2 Luku 3 Luku 4 Luku 5 Luku 6 Luku 7 Luku 8 Luku 9 break ja continue toistorakenteissa Kaikissa edellä esitellyissä toistorakenteissa voidaan käyttää break ja continue lausekkeita: break lauseke poistuu toistorakenteesta continue lauseke siirtyy suoraan seuraavalle suorituskerralle turhaa käyttöä kannattaa välttää Javan perusteet

14 break ja continue esimerkki for (int i=0;i<10;i++) { if (i==5) continue; else if (i==8) break; System.out.println( Kierros + i); Tuloste: Kierros 0 Kierros 1 Kierros 2 Kierros 3 (1) (2) Kierros 4 Kierros 6 Kierros 7 hyppy seuraavalle kierrokselle, mikäli jatkoehto 1 toteutuu, lisäyslauseke 2 suoritetaan kuten normaalisti poistutaan suoraan for lausekkeesta 79 ehtojen asettaminen Kaikissa toistorakenteissa käytetään jotakin ehtoa, joka kertoo milloin suoritus lopetetaan Ehdot kannattaa asettaa mahdollisimman rajaaviksi, esimerkiksi: public void printnumbers(int count) { for (int i=0;i<count;i++) { System.out.println( Luku + i); eii!=count, ikinä Ikuisten toistojen välttäminen em. ohjelmointityylillä on hyvä tapa koska silloin esim. luvulla 1 kutsuttaessa suoritus ei päättyisi 80 Java 2 API Java 2 API Dokumentaatio Paketit Käyttö Java 2 API (Application Programming Interface) tarjoaa runsaasti valmiita luokkia käytettäväksi ohjelmissa Math lukujen käsittely String merkkijono ja sen käsittely StringTokenizer merkkijonon pätkiminen... Luokkien käyttöohjeet löytyvät käytetyn Javaversion API dokumentaatiosta: Paketit Paketilla tarkoitetaan samantyyppisten luokkien muodostamaa kokonaisuutta Luokan (käännösyksikön) paketti määritellään tiedoston alussa: package paketin_nimi; Ellei tiedoston alussa ole package määrettä, class tiedosto asetetaan nimettömään pakkaukseen Luokan kuuluminen alipakettiin ilmaistaan: package paketin_nimi.alipaketti; Paketit Pakettiin kuuluminen tarkoittaa että luokkaa käytettäessä sen edessä on käytettävä pakkauksen nimeä: pakkaus.luokka x = new pakkaus.luokka(); Käytännössä on järkevämpi käyttää aina import lausekkeita // Sallii pakkaus1:n kaikkien luokkien käytön import pakkaus1.*; // Sallii pakkaus1:n luokan Auto käytön import pakkaus1.auto; import lausekkeet kirjoitetaan tiedoston alkuun mahdollisen package määrityksen jälkeen Tiedostosta käy selkeästi ilmi mitä pakkauksia se käyttää Javan perusteet

15 Java 2 API Kaikki Java 2 API:n luokat on sijoitettu paketteihin java.lang java.math java.io... Paketti, johon luokka kuuluu selviää APIdokumentaatiosta Kaikkiin tiedostoihin tuodaan automaattisesti Javan pakkaus java.lang. (import java.lang.*;) Metodit Metodin muoto Määreet Staattiset metodit ja attribuutit Arvotyyppi Parametrit Kuormittaminen Rekursio Metodit Alialgoritmit (aliohjelmat) toteutetaan metodeissa Metodeilla voi olla parametreja (lähtötiedot) ja se voi palauttaa jonkin arvon Metodien käyttö olioiden luonti (konstruktori) piilossa olevan tiedon kysely ja käyttö (aksessorit) algoritmit pääohjelmametodi public static void main(string[] args) 87 Metodit Muoto määreet arvotyyppi nimi(parametrit) { algoritmi Määreillä ohjataan metodin käyttömahdollisuuksia Arvotyyppi kertoo minkä tyyppisen arvon metodi palauttaa Nimi yksilöi metodin Parametrit ovat metodin muuttujia, jotka metodin kutsuja antaa Algoritmi toteuttaa metodin tehtävän Esimerkki: public static void printstring(final String str) { System.out.println(str); 88 Metodit Muoto Konstruktoreilla ei ole paluuarvoa public Student(String name) {... public Car() {... Konstruktori ei voi olla staattinen (static) Konstruktori voi olla normaalin publicnäkyvyysalueen lisäksi myös private Milloin järkevää käyttää? Metodit Määreet Määreitä ovat Näkyvyysalueet public sallii metodin käytön kaikkialta protected sallii metodin käytön luokalta perityissä luokissa private sallii metodin käytön ainoastaan luokan sisällä Muut abstract metodilla ei ole toteutusta (abstrakti) static metodin kutsumiseen ei tarvita oliota final metodia ei voi ylikirjoittaa perityissä luokissa syncronized metodia suoritetaan monisäikeisessä sovelluksessa yksi kutsu kerrallaan native metodilla ei toteutusta, kutsu esim. C/C++ Kurssilla tarvittavat määreet: public, private, static Javan perusteet

16 Metodit Määreet Esimerkkejä määreistä public static void main(string [] args) private int solvesubproblem() public int solveproblem() public void initializeobject() Metodit määreet static Yleensä luokan sisään kirjoitetut metodit käyttävät jotain olion attribuuttia On olemassa kuitenkin myös metodeja, jotka eivät tarvitse olion attribuutteja tai kutsu toisia olion attribuutteja käyttäviä metodeja (esim. Math luokan metodit) Kyseiset metodit eivät näin ollen tarvitse olemassa olevaa oliota suoritukseensa Tällaisia metodeja kutsutaan staattisiksi Metodit määreet static Metodi määritellään staattiseksi staticmääreellä: public static double sqrt(double num) static määreellä määriteltyä metodia voidaan kutsua luokan ulkopuolelta ilman olion luontia: double result = Math.sqrt(16); Luokan nimi, jossa metodi on määritelty 93 Staattiset attribuutit Attribuutteja voidaan määrittää myös staattisiksi. Staattinen attribuutti on käytettävissä ilman olion luontia. Staattista attribuuttia voi käyttää kuten normaaliakin luokan attribuuttia. Staattinen attribuutti on sama joka paikassa (vrt. ei staattiset attribuutit, jotka ovat yksilölliset jokaisella luodulla oliolla) 94 Staattiset metodit ja attribuutit Staattiset metodit/attribuutit ovat käyttöalueeltaan rajatumpia kuin eistaattiset Hyvän ohjelmointitavan mukaista on määrittää metodi/attribuutti staattiseksi aina kun se on mahdollista Käytännössä varsinkin staattisten attribuuttien käyttö on harvinaista Staattiset metodit ja attribuutit Esimerkkejä: main metodin on aina oltava staattinen Vakiot määritetään yleensä staattisina: private final static int NUM_COLS = 5; Color luokan määritellyt värit ovat staattisia public final static Color black = new Color(0,0,0); Math luokan kaikki metodit ja attribuutit ovat staattisia Javan perusteet

17 Staattiset metodit ja attribuutit Luokan ulkopuolelta: public class TestApp { TestApp.setValues(); public static final int A = 1; public final int B = 2; int i = TestApp.A; private static int C = 3; i = TestApp.B; private int D = 4; i = (new TestApp()).B; (new TestApp()).setValues(); public TestApp() { //OK //OK //Ei sallittu //OK //OK (new TestApp()).setMemberValues(); //OK public static void setvalues() { C = A; // Sallittu, koska A ja C staattisia A = C; // Ei sallittu, koska A on vakio (final) D = C; // Ei sallittu, koska D ei staattinen setmembervalues(); // Ei sallittu, koska ollaan staat. metodissa public void setmembervalues() { C = A; // Sallittu D = C; // Sallittu, koska ei olla staattisessa metodissa setvalues(); // Sallittu 97 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 Metodi voi palauttaa alkeistyypin tai olion Tällöin return X; lauseke on pakollinen. Metodissa ei saa olla suorituspolkuja, joilla returnlausekkeeseen ei päädytä. X on palautettava arvo, joka on arvotyypin tyyppinen. 98 Metodit Arvotyyppi Esimerkki public static String viikonpaiva(int luku) { switch(luku) { case 1: return Ma ; case 2: return Ti ;... return ; Metodit Parametrit Parametrit annetaan sulkeissa Alkeistyypit ovat arvoparametreja Arvon muuttaminen metodin sisällä ei muuta alkuperäistä arvoa Oliot ovat viiteparametreja Saman olion käyttö metodin sisällä muuttaa myös alkuperäistä arvoa Metodit Parametrit public static void test(int i, String s, Student r) { i=0; s= Muutettu ; r.setname( Pekka );... // Esimerkkikutsu int j=1; String t = A ; Student u = new Student( B ); test(j, t, u); System.out.println( Tulos: + j + + t + + u.getname()); // Tuloste: Tulos: 1 A Pekka! Metodit Kuormittaminen Samannimisiä metodeja voidaan toteuttaa eri parametreilla Paluuarvojen tulee samannimisillä metodeilla olla aina samat Samannimisten metodien toteuttamista eri parametreilla kutsutaan metodin kuormittamiseksi Javan perusteet

18 Metodit Kuormittaminen Esimerkki public void tulosta(final int luku) { System.out.println( luku ); public void tulosta(final String str) { System.out.println( str );... // Kutsuesimerkki tulosta(12); // Käyttää ylemää metodia tulosta( Teksti ); // Käyttää alempaa metodia Metodit Rekursio Jos ohjelmassa on metodi, joka kutsuu sisällään itseään uudestaan, käytetään siitä nimitystä rekursiivinen metodi Rekursiiviset metodit kutsuvat itseään eri parametreilla Parametrien perusteella metodi kutsuu itseään tai mikäli ollaan päästy perustapaukseen ei kutsua enää suoriteta Metodit Rekursio Rekursiossa jokaisella kutsulla lähestytään aina jotakin perustapausta Rekursio on perinteisissä proseduraalisissa ja olio ohjelmointikielissä hidasta Teoriassa kaikki rekursiiviset metodit voidaan purkaa auki iteratiivisiksi versioiksi Rekursiota rajoittaa suurissa tapauksissa käytössä oleva muistin määrä Metodit Rekursio Fibonaccin luvut Fibonaccin lukuja ovat: 0, 1, 1, 2, 3, 5, 8, 13,... Ensimmäinen luku on 0, toinen luku 1 ja siitä eteenpäin seuraava luku saadaan aina kahden edellisen summana Fibonnaccin lukuja voidaan laskea rekursiivista metodia hyväksikäyttäen Huomattavasti tehokkaampiakin menetelmiä on olemassa Metodit Rekursio Fibonaccin luvut // Palauttaa n:nnen Fibonaccin luvun public int fib(int n) { if (n==1) return 0; else if (n==2) return 1; else return fib(n 1) + fib(n 2); Esim: fib(4) 2 fib(4) 1 fib(3) 1 1 fib(2) fib(2) 0 fib(1) 107 Näkyvyysalueet ja muuttujien elinaika private, public paikalliset muuttujat 108 Javan perusteet

19 Näkyvyysalueen valinta Ohjelmissa kannattaa aina valita mahdollisimman pieni näkyvyysalue jokaiselle muuttujalle ja metodille Kaikki luokan attribuutit kannattaa sijoittaa privatenäkyvyysalueeseen Luokan yleiseen käyttöön tarkoitetut metodit sijoitetaan public näkyvyysalueeseen, kaikki muut private näkyvyysalueeseen Lisäksi on olemassa protected näkyvyysalue, joka on ikään kuin public:n ja private:n välimaastossa oleva. Käyttö on tarpeellista lähinnä kun hyödynnetään perintää. Paikallinen muuttuja vai luokan attribuutti Muuttujat sijoitetaan aina pienimpään mahdolliseen käyttöalueeseensa. Mikäli muuttujan käyttö on tarpeellista monissa luokan metodeissa tai se kuvaa olion tilaa, tehdään siitä attribuutti. Mikäli käyttö on tarpeellista vain yksittäisessä metodissa, käytetään paikallista muuttujaa Paikallisen muuttujan määrittely esimerkki Paikallinenkin muuttuja kannattaa sijoittaa aina mahdollisimman rajattuun alueeseen. Esimerkki: public void printmembers() { Vector members = getallmembers(); for (int i=0;i<members.size();i++) { Member member = members.getat(i); String name = member.getname(); System.out.println( Jäsen: + name); Muuttujien esittelyt voitaisiin sijoittaa katkoviivalla osoitettuun paikkaan, mutta koska niitä ei käytetä kuin toistorakenteen sisällä, on ne sijoitettu toiston sisältämän lohkon sisään. 111 Muuttujien elinaika Jokaisella muuttujalla on näkyvyysalueen lisäksi ns. elinaika, jolloin se on olemassa Luokkamuuttujat on olemassa aina kun olion konstruktoria on kutsuttu, olemassaolo loppuu kun olioon ei ole enää yhtään viitettä Paikalliset muuttujat ovat olemassa lohkonsa sisällä. Kun lohko päättyy, paikallisen muuttujan elinaika päättyy. 112 Taulukot Taulukot Taulukoiden määrittely, käsittely ja kopiointi Vaihtoehdot taulukoille 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 Javan perusteet

20 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 nullarvoiksi. Mikäli taulukko on luotu jostakin perustietotyypistä, ovat taulukon indeksit suoraan käytössä (ei tarvitse new:llä luoda joka paikkaan oliota) 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 Taulukon indeksointi alkaa aina nollasta 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 Stringolion 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]); Javan perusteet

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

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004 Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;

Lisätiedot

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

Metodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet 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 Metodi voi palauttaa alkeistyypin tai olion Tällöin

Lisätiedot

OutputStream ja InputStream. Tietovirrat ja niiden suunnat. Tietovirtojen käyttö. FileInputStream esimerkki. DataOutputStream ja DataInputStream

OutputStream ja InputStream. Tietovirrat ja niiden suunnat. Tietovirtojen käyttö. FileInputStream esimerkki. DataOutputStream ja DataInputStream Tietovirrat ja niiden suunnat Output stream Koodi Tiedosto OutputStream ja InputStream OutputStream (abstrakti) FileOutputStream Tallennus tavuina ObjectOutputStream Olioiden tallennus FilterOutputStream

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

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

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

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

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

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

812341A Olio-ohjelmointi Peruskäsitteet jatkoa 812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää

Lisätiedot

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

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely Poikkeukset Poikkeuksella tarkoitetaan yllättävää ajonaikaista tilannetta, joka

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

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

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

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

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

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

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

Java-API, rajapinnat, poikkeukset, UML,...

Java-API, rajapinnat, poikkeukset, UML,... Java-API, rajapinnat, r poikkeukset, UML,... Janne Käki 12.10.2006 Keskeisimmät Java-API:n pakkaukset API = Application Programming Interface eli sovellusohjelmointirajapinta (!) pakkaus (engl. package)

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

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 22. huhtikuuta 2016 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille! Kirjoittamasi luokat, funktiot ja aliohjelmat

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

19. Olio-ohjelmointia Javalla 19.1

19. Olio-ohjelmointia Javalla 19.1 19. Olio-ohjelmointia Javalla 19.1 Sisällys Olioiden esittely ja alustus. Metodit Yleistä metodeista. Mihin metodeja tarvitaan? Metodien määrittely. Omat metodit: nimeäminen, paikka, kutsuminen, parametrit

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

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

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen Sisällys 6. Metodit Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit).. Metodien ja muun luokan sisällön järjestäminen. 6.1 6.2 Oliot viestivät metodeja kutsuen Oliot viestivät

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

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

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

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin. 2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet

Lisätiedot

Listarakenne (ArrayList-luokka)

Listarakenne (ArrayList-luokka) Listarakenne (ArrayList-luokka) Mikä on lista? Listan määrittely ArrayList-luokan metodeita Listan läpikäynti Listan läpikäynti indeksin avulla Listan läpikäynti iteraattorin avulla Listaan lisääminen

Lisätiedot

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

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä LUOKAN MÄÄRITTELY Luokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion muodostimet ja luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Olion kopioiminen

Lisätiedot

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 81122P (4 ov.) 30.5.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan

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

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

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

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

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

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

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla Tietojen syöttäminen ohjelmalle Tähän mennessä on käsitelty Javan tulostuslauseet System.out.print ja System.out.println sekä ohjelman perusrakenneosat (muuttujat, vakiot, lauseet). Jotta päästään tekemään

Lisätiedot

11. Javan valintarakenteet 11.1

11. Javan valintarakenteet 11.1 11. Javan valintarakenteet 11.1 Sisällys If- ja if--lauseet. Orpo. Valintaa toisin: switch-lause. 11.2 Valintarakenteet Valintarakenteilla ilmaistaan formaalisti, kuinka algoritmin suoritus voi haarautua

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

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

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

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

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

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

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

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2 26. Tiedostot 26.1 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2 Johdanto Tiedostoja on käsitelty uudelleenohjattujen standardisyöte- ja tulostusvirtojen avulla. Tiedostoja

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

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

Poikkeustenkäsittely

Poikkeustenkäsittely 1 Poikkeustenkäsittely Mitä poikkeustenkäsittely tarkoittaa? Poikkeuksen käsitteleminen Poikkeusluokkien hierarkia Poikkeuksen heittäminen 1 Mitä poikkeustenkäsittely tarkoittaa? Poikkeus (Exception) on

Lisätiedot

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 811122P (5 op.) 12.12.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet Pakkaukset ja määreet Toisiinsa liittyvät luokkatiedostot voidaan koota pakkauksiksi. Luo hierarkiaa ja järjestystä ohjelmistotuotteeseen.

Lisätiedot

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

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

Taulukoiden käsittely Javalla

Taulukoiden käsittely Javalla 1 Taulukoiden käsittely Javalla Mikä taulukko on? Taulukon syntaksi Merkkijonotaulukko Lukutaulukko Taulukon kopiointi 1 Mikä taulukko on? Taulukko on rakenne, minne saadaan talteen usea saman tyyppinen

Lisätiedot

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

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2 6. Tiedostot 6.1 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2 Johdanto Tiedostoja on käsitelty uudelleenohjattujen standardisyöte- ja tulostusvirtojen avulla. Tiedostoja voidaan

Lisätiedot

Oliot viestivät metodeja kutsuen

Oliot viestivät metodeja kutsuen 6. Metodit 6.1 Sisällys Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit). Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen

Lisätiedot

Sarjallistaminen. Juha Järvensivu 2007

Sarjallistaminen. Juha Järvensivu 2007 Sarjallistaminen Juha Järvensivu juha.jarvensivu@tut.fi 2007 Sisällys 1. tunti: Sarjallistaminen.NET ympäristössä 2. tunti: Sarjallistaminen Java ympäristöstä Sarjallistaminen Muutetaan objektin tila muotoon,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

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

Pakkauksen kokoaminen

Pakkauksen kokoaminen 13. Pakkaukset 13.1 Sisällys Pakkauksen kokoaminen (package). Pakkaukset ja hakemistorakenne. Pakkauksen luokkien käyttö muissa pakkauksissa (import). Pakkaukset ja näkyvyys. 13.2 Pakkauksen kokoaminen

Lisätiedot

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1 Tietorakenteet ja algoritmit syksy 2012 Laskuharjoitus 1 1. Tietojenkäsittelijä voi ajatella logaritmia usein seuraavasti: a-kantainen logaritmi log a n kertoo, kuinka monta kertaa luku n pitää jakaa a:lla,

Lisätiedot

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin Sisällys 17. Ohjelmoinnin tekniikkaa for-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. if-else-lause vaihtoehtoisesti

Lisätiedot

Mikä yhteyssuhde on?

Mikä yhteyssuhde on? 1 Yhteyssuhde Mikä yhteyssuhde on? Yhteyssuhde Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä yhteyssuhde on? Tili - : String - : double * 1 Asiakas - hetu: String - : String

Lisätiedot

1 Tehtävän kuvaus ja analysointi

1 Tehtävän kuvaus ja analysointi Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.

Lisätiedot

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

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat Sisällys 12. Javan toistorakenteet Ylstä toistorakentsta. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirhtä. Silmukan rajat asetettu kierroksen

Lisätiedot

KOHDELUOKAN MÄÄRITTELY

KOHDELUOKAN MÄÄRITTELY KOHDELUOKAN MÄÄRITTELY Kohdeluokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Taulukon alkiona

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

16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1 16. Ohjelmoinnin tekniikkaa 16.1 Sisällys For-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. If-else-lause vaihtoehtoisesti

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

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

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

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

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 )

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 ) Tehtävä do while + Viikko 1 Tehtävä 27. Salasana (MOOC) Viikko 1 Tehtävä 28. Lämpötilat (MOOC) Tehdään ohjelma, joka kysyy käyttäjältä lukua. Luku kerrotaan aina seuraavalla käyttäjän antamalla luvulla

Lisätiedot

Sisällys. 15. Lohkot. Lohkot. Lohkot

Sisällys. 15. Lohkot. Lohkot. Lohkot Sisällys 15. Lohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.1 15.2 Lohkot Aaltosulkeet

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 19.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 19.1.2011 1 / 39 Haluatko antaa palautetta luennoista? Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

2. Olio-ohjelmoinista lyhyesti 2.1

2. Olio-ohjelmoinista lyhyesti 2.1 2. Olio-ohjelmoinista lyhyesti 2.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 2.2 Yleistä Olio-ohjelmointia käsitellään hyvin

Lisätiedot

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys Loogisia operaatioita - esimerkkejä Tänään on lämmin päivä ja perjantai Eilen satoi ja oli keskiviikko tai tänään on tiistai. On perjantai ja kello on yli 13 Ei ole tiistai tai ei sada. Ei pidä paikkaansa,

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

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 16.3.2009 1 / 40 Kertausta: tiedostosta lukeminen Aluksi käsiteltävä tiedosto pitää avata: tiedostomuuttuja = open("teksti.txt","r")

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

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

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

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 9.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2015 1 / 26 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016)

Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016) Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016) Tietokoneavusteinen opetus -kurssilla opetetaan Adobe Flash CS6:n käyttämistä neljänä kertana: 11.3.2016, 15.3.2016, 18.3.2016 ja 1.4.2016. Harjoituskerroilla

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

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/

Lisätiedot

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi Imperatiivisen ohjelmoinnin peruskäsitteet muuttuja muuttujissa oleva data voi olla yksinkertaista eli primitiivistä (esim. luvut ja merkit) tai rakenteista jolloin puhutaan tietorakenteista. puhuttaessa

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. Lausekielinen ohjelmointi 4.1 4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,

Lisätiedot

Ohjelmoinnin perusteet, kurssikoe

Ohjelmoinnin perusteet, kurssikoe Ohjelmoinnin perusteet, kurssikoe 18.6.2014 Kirjoita jokaiseen konseptiin kurssin nimi, kokeen päivämäärä, nimi, TMC-tunnus ja opiskelijanumero tai henkilötunnus. Vastaukset palautetaan tehtäväkohtaisiin

Lisätiedot

Mitä poikkeuskäsittely tarkoittaa?

Mitä poikkeuskäsittely tarkoittaa? Poikkeuskäsittely Mitä poikkeuskäsittely tarkoittaa? Poikkeuskäsittelyluokkien hierakkia Poikkeuksen sieppaaminen Mihin järjestykseen try-catch-lauseen ExceptionType-poikkeukset laitetaan? Poikkeuksen

Lisätiedot

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä 2016 IX Olioiden välisistä yhteyksistä Sisältö 1. Johdanto 2. Kytkentä 3. Koheesio 4. Näkyvyydestä 2 Johdanto n Ohjelmassa syntyy kytkentöjä olioiden välille Toivottuja ja epätoivottuja n Näkyvyys vaikuttaa

Lisätiedot

Ohjelmointi 1 C#, kevät 2013, 2. tentti

Ohjelmointi 1 C#, kevät 2013, 2. tentti ITKP102 Ohjelmointi 1 C# 15.5.2013 1 / 6 Ohjelmointi 1 C#, kevät 2013, 2. tentti Tentaattori Antti-Jussi Lakanen Tässä tentissä saa olla mukana omia muistiinpanoja yhden arkin verran. Tentin valvojalla

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

58131 Tietorakenteet ja algoritmit (syksy 2015)

58131 Tietorakenteet ja algoritmit (syksy 2015) 58131 Tietorakenteet ja algoritmit (syksy 2015) Harjoitus 2 (14. 18.9.2015) Huom. Sinun on tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. 1. Erään algoritmin suoritus vie 1 ms, kun syötteen

Lisätiedot

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko JavaRMI 1 JAVA RMI Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko JavaRMI 2 Table of Contents...1 JAVA RMI...1 Yleistä...4 Arkkitehtuuri...5 Java RMI kerrosarkkitehtuuri...5

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