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 Tiedon tulostaminen Laskutoimitukset Muuttujat ja niiden alustaminen Tietotyypit 2 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. 3 1
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 Visual Studio). Tällä jaksolla käytetään Eclipse-ympäristöä. 4 Java-ohjelma ja luokka (1/3) Ensimmäinen Java-ohjelmamme on seuraava: package osio1vko1; /** * 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(); 5 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. 6 2
Java-ohjelma ja luokka (3/3) package osio1vko1; /** * 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(); pakettimääritys (osio1vko1) kommentti luokka (Hei) metodi (aja) metodi (main) 7 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ä. 8 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. 9 3
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"); t tl \ ") // rivinvaihto: i iht \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!\\\\\\\\\\"); 10 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 (). 11 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. 12 4
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ä voi käyttää laskutoimituksen osana. 13 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. 14 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). 15 5
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. 16 6