Ohjelmointitaito (ict1td002, 12 op) Syksy 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi
1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-kehitysympäristö Java-ohjelma ja luokka Tiedon tulostaminen Laskutoimitukset Muuttujat ja niiden alustaminen Tietotyypit ict1td002 - Copyright Raine Kauppinen 25.8.2008
Tietokoneohjelma Tietokoneohjelma on kokoelma toimintaohjeita (käskyjä, lauseita), joiden avulla tietokone saadaan suorittamaan toimenpidesarja, jonka avulla saadaan haluttu lopputulos, esimerkiksi ratkaisu johonkin ongelmaan. Yksinkertainen ohjelma voi esimerkiksi tulostaa tekstiä tai laskutoimitusten tuloksia näytölle. Monimutkainen ohjelma voi esimerkiksi laskea annettujen tietojen perusteella projektin keston ja kustannukset. ict1td002 - Copyright Raine Kauppinen 25.8.2008
Java-kieli ja Eclipse-kehitysympäristö Tietokoneohjelmat toteutetaan jollakin ohjelmointikielellä, tällä opintojaksolla Java-kielellä. Muita ohjelmointikieliä ovat esimerkiksi C, C++, C# ja Pascal. Eri ohjelmointikielillä on erilainen syntaksi, eli niiden käskyt, lauseet ja rakenteet kirjoitetaan eri tavalla. Ohjelmointia varten tarvitaan kehitysympäristö, joita on myös useita erilaisia (esimerkiksi Eclipse, NetBeans ja VisualStudio). Tällä jaksolla käytetään Eclipse-ympäristöä. ict1td002 - Copyright Raine Kauppinen 25.8.2008
Java-ohjelma ja luokka (1/3) Ensimmäinen Java-ohjelmamme on seuraava: package osio1.vko1; /** * Ohjelma, joka tervehtii käyttäjää. * @author Raine Kauppinen */ public class Hei { public void aja() { System.out.println("Hei!"); } public static void main(String[] args) { Hei olio = new Hei(); olio.aja(); ict1td002 - Copyright Raine Kauppinen 25.8.2008
Java-ohjelma ja luokka (2/3) Edellä olevassa ohjelmakoodissa on paljon asioita, joita ei vielä tarvitse ymmärtää, mutta sitä voi käyttää esimerkkinä ensimmäisiä ohjelmia kirjoittaessa. Java-kielessä kaikki ohjelmat kirjoitetaan luokkiin (public class Hei {…}) ja luokat tallennetaan luokan nimisiin tiedostoihin .java päätteellä lisättynä (Hei.java). Luokissa on metodeita (public void aja() {…} ja public static void main(String[] args) {…}), mutta näistä ei tarvitse vielä tietää sen enempää – niihin palataan. ict1td002 - Copyright Raine Kauppinen 25.8.2008
Java-ohjelma ja luokka (3/3) pakettimääritys (osio1.vko1) package osio1.vko1; /** * Ohjelma, joka tervehtii käyttäjää. * @author Raine Kauppinen */ public class Hei { public void aja() { System.out.println("Hei!"); } public static void main(String[] args) { Hei olio = new Hei(); olio.aja(); kommentti luokka (Hei) metodi (aja) metodi (main) ict1td002 - Copyright Raine Kauppinen 25.8.2008
Tiedon tulostaminen (1/3) Tässä vaiheessa meitä kiinnostaa tuo (metodin) public void aja() rivin jälkeinen, kaarisulkujen sisällä oleva osa, jossa edellä on yksi rivi: System.out.println("Hei!"); Kyseessä on Java-kielen tulostuslause, jolla ohjelma saadaan tulostamaan näytölle. Myöhemmin opitaan, mitä System.out.println-osa tarkoittaa, mutta tässä vaiheessa on hyvä huomata, että lauseen päättää puolipiste ja tulostettava merkkijono tulee sulkujen sisään lainausmerkeissä. ict1td002 - Copyright Raine Kauppinen 25.8.2008
Tiedon tulostaminen (2/3) Muutetaan aja-metodin sisältöä eli sen alku- ja loppukaarisulkujen sisällä olevaa osaa: System.out.println("Hän sanoi "); // println tulostaa System.out.println("Hei!"); // rivinvaihdon System.out.println-lause tulostaa tekstin ja rivinvaihdon, sama ilman rivinvaihtoa tehdään näin: System.out.print("Hän sanoi "); // pelkkä print ei System.out.print("Hei!"); // tulosta rivinvaihtoa Huomaa, että // rivin lopussa aloittaa kommentin. ict1td002 - Copyright Raine Kauppinen 25.8.2008
Tiedon tulostaminen (3/3) Tulostetaan näytölle vielä lisää ja muotoillaan tulostusta hieman: System.out.println("Hän sanoi: "); System.out.println("\"Hei!\""); // lainausmerkit: \" System.out.println("\n\n"); // rivinvaihto: \n System.out.println("\tNo hei!"); // tabulaattori: \t System.out.println("\\\\\\\\\\"); // takakeno: \\ Pitkän tulostuslauseen saa paloiteltua myös usealle riville (katenointi) toistamatta System.out.println -alkua: System.out.println("Hän sanoi \"Hei!\"\n\n" + "\tNo hei!\\\\\\\\\\"); ict1td002 - Copyright Raine Kauppinen 25.8.2008
Laskutoimitukset (1/2) Javassa on käytettävissä mm. peruslaskutoimitukset: + yhteenlasku - vähennyslasku * tulo / osamäärä % jakojäännös Näiden tulostamisessa kannattaa olla tarkkana, koska lopputulos voi olla laskujärjestyksestä riippuen joko merkkijonojen liittäminen (katenointi) tai aritmeettinen operaatio. Epäselvissä tapauksissa kannattaa järjestys määrätä suluilla (). ict1td002 - Copyright Raine Kauppinen 25.8.2008
Laskutoimitukset (2/2) Esimerkkejä laskutoimituksista ja tulostamisesta: // lause // tulostus System.out.println(2+3); // 5 System.out.println("Luku on "+2+3); // luku on 23 System.out.println("Luku on "+(2+3)); // luku on 5 System.out.println("Tulo 2*3="+2*3); // Tulo 2*3=6 System.out.println(9/3); // 3 System.out.println(5%2); // 1 Laskutoimituksia voi siis tehdä suoraan tulostuslauseessa (kunhan huolehtii järjestyksestä). Huomio lainausmerkkien käyttö tulostuksessa. ict1td002 - Copyright Raine Kauppinen 25.8.2008
Muuttujat ja niiden alustaminen (1/2) Muuttuja on ohjelmassa nimetty (esitelty) paikka (keskusmuistissa), johon ohjelman tarvitsema tieto tallennetaan ja josta se haetaan tarvittaessa. Muuttujan nimeä sanotaan tunnukseksi ja on Javassa tapana kirjoittaa pienellä alkukirjaimella - luokkien nimet taas kirjoitetaan isolla alkukirjaimella. Muuttujalle voidaan alustaa esittelyn yhteydessä alkuarvo. Muuttujan sisältämän arvon voi esimerkiksi tulostaa tai muuttaa ja sitä voiv käyttää laskutoimituksen osana. ict1td002 - Copyright Raine Kauppinen 25.8.2008
Muuttujat ja niiden alustaminen (2/2) Esimerkkejä muuttujien käytöstä: int luku1 = 15; // (kokonaisluku)muuttujien esittelyt int luku2 = 3; // ja alkuarvojen asetukset System.out.println(luku1+luku2); // 18 System.out.println(luku1+1); // 16 System.out.println(luku2*luku2); // 9 System.out.println((luku1+(2+luku2))/100); // 0 Edellä käytettiin kokonaislukuja, minkä vuoksi viimeisen lauseen tulos pyöristyy nollaan. ict1td002 - Copyright Raine Kauppinen 25.8.2008
Tietotyypit (1/2) Muuttujan esittely on joko muotoa tietotyyppi tunnus; // esittely ilman alustusta tai muotoa tietotyyppi tunnus = alkuarvo; // esittely ja alustus Edellä käytetyn kokonaisluvun (int) lisäksi muita tietotyyppejä ovat mm. double (desimaaliluku), boolean (totuusarvo), char (yksittäinen merkki), byte (pieni kokonaisluku; tavu), short (pienehkö kokonaisluku), long (iso kokonaisluku), float (pienempi desimaaluku) ja String (merkkijono). ict1td002 - Copyright Raine Kauppinen 25.8.2008
Tietotyypit (2/2) Muuttujan alkuarvon on vastattava sen tietotyyppiä: int luku = 123; double dluku = 12.45; // desimaalierotin on . boolean totuusarvo = true; // Boolean on aina joko // true tai false. char merkki = ’a’; // Yksittäinen merkki on // yksittäisten hipsujen // sisällä, vrt. // merkkijono alla. String merkkijono = ”Tämä on merkkijono.” String on muista mainituista poikkeava tietotyyppi, johon palataan jatkossa – huomaa, että se kirjoitetaan isolla alkukirjaimella. ict1td002 - Copyright Raine Kauppinen 25.8.2008