1. OPINTOJAKSON TAVOITTEET, SISÄLTÖ JA ESITIEDOT SUORITUSTAPA... 4

Koko: px
Aloita esitys sivulta:

Download "1. OPINTOJAKSON TAVOITTEET, SISÄLTÖ JA ESITIEDOT... 3 2. SUORITUSTAPA... 4"

Transkriptio

1 Sisällys 1. OPINTOJAKSON TAVOITTEET, SISÄLTÖ JA ESITIEDOT SUORITUSTAPA MATERIAALIT JA OHJELMISTOT Oppimateriaalit ja niiden lukujärjestys sekä ViLLE Oheismateriaali Java-kääntäjiä ja kehitysympäristöjä Luokat OmaIO ja Scanner OPISKELUN ETENEMINEN... 8 VIIKKO Lyhyt johdatus Javaan ja sen käyttöön esimerkeillä Javan perusohjausrakenteet ja perustyypit 10 Kaksi yksinkertaista Java-ohjelmaa 12 Ohjelmien kirjoittaminen sekä suorittaminen komentotulkilla ja DrJavalla (main-metodin parametrille String[]args ei anneta arvoja) 17 Harjoitustehtävät VIIKKO Peruskäsitteitä: tyypin käsite, perustyypit (kokonaisluvut, desimaaliluvut, looginen tieto ja merkkitieto) ja lausekkeet (aritmeettiset ja loogiset), asetuslause. Syöttötietojen antaminen ohjelmalle komentoriviltä ja luokkien Scanner ja OmaIO avulla Alustus 21 Opintomonisteen asioita kootusti ja esimerkkejä 22 Syötteen antaminen ohjelmalle 30 Syötteen lukeminen näppäimistöltä ohjelman suorituksen aikana käyttäen luokkia OmaIO ja Scanner 30 Syötteen antaminen ohjelmalle main-metodin parametrin (String[] args) välityksellä ohjelman käynnistyksen yhteydessä: 1) suoritus käyttöjärjestelmän komentoriviltä (ja Integer.parseInt() sekä Double.parseDouble()) ja 2) käyttäen DrJavaa 32 Harjoitustehtävät VIIKKO Perusohjausrakenteet: peräkkäisyys, valintarakenne if, alkuehtoinen toistorakenne while. Useita esimerkkiohjelmia Opintomonisteen asiat lyhyesti ja esimerkkejä 35 Esimerkkiohjelma: näppäimistöltä syötettyjen lukujen keskiarvo 39 Harjoitustehtävät

2 VIIKKO Metodit eli aliohjelmat Alustus 46 Esimerkkejä 52 Harjoitustehtävät VIIKKO Lisää lauseita: lausekelause, for-toisto, loppuehtoinen toisto do while, monivalintalause switch sekä break- ja continue-lauseet Alustus 60 Tarkennuksia opintomonisteeseen ja lisäesimerkkejä 60 Harjoitustehtävät VIIKKO Taulukot, useita esimerkkejä (mm. lukujen lukeminen taulukkoon, lineaarinen haku, lajittelu), metodikirjaston tekeminen Taulukot 67 Metodi- eli aliohjelmakirjaston muodostaminen 81 Harjoitustehtävät LUENTOPÄIVÄ Tyypin käsite, ohjausrakenteet, metodit ja niiden parametrit, taulukoiden perusteet, merkkijonot, useita esimerkkiohjelmia VIIKKO Johdatus olio-ohjelmoinnin perusteisiin: Luokat String, Random ja Math Alustus 87 Luokkakirjasto (API eli Application Programming Interface) 88 Luokka String 89 Luokka Random 94 Harjoitustehtävät VIIKKO Jatketaan edellisen viikon asioita. Luokka Arrays staattisten listojen (taulukoiden) käsittelyyn: mm. lajittelu käyttäen kirjastometodia sort. Tekstitiedoston käsittely Harjoitustehtävät LIITE. Luokka Scanner: lukeminen näppäimistöltä ja tektitiedostosta Näppäimistöltä lukeminen (näppäimistön syöttövirran läpikäynti) 98 Levyllä olevasta tekstitiedostosta lukeminen 103 2

3 1. OPINTOJAKSON TAVOITTEET, SISÄLTÖ JA ESITIEDOT Opintojaksolla laajennetaan ja konkretisoidaan opintojaksolla Tietojenkäsittelytieteen perusteet I (TTP I) annettua kuvaa algoritmien muodostamisesta. Kurssin tavoitteena on tutustua konkreettisesti Java-kieltä käyttäen ohjelmoinnin peruskäsitteisiin ja konstruktioihin sekä oppia tekemään yksinkertaisia sovelluksia. Kurssilla tutustutaan myös olioihin ja opetellaan käyttämään niitä, mutta omien luokkien muodostaminen ei kuulu kurssin aihealueeseen. Kurssilla tarkastellaan mm. seuraavia rakenteellisen ohjelmoinnin peruskäsitteitä: muuttujat, arvon käsite, tyypit, lausekkeet, lauseet, ohjausrakenteet, aliohjelman käsite, modulaarisuus, rekursio ja staattisen luokan käsite. Olioihin tutustutaan käyttämällä niistä yksinkertaisimpia (String, taulukko). Kurssin tarkoituksena on oppia ohjelmoinnin perusteet käyttäen apuna Java-ohjelmointikieltä. Näin ollen kyseessä on yleensä (olio-)ohjelmoinnin eikä pelkästään Java- kurssi. Huomaa siis, että esitetyt ratkaisumenetelmät eivät ole sidottuja tiettyyn ohjelmointikieleen. Kurssin aikana kannattaa palata useasti TTP I-kurssiin, jolla monet tällä kurssilla esitettävät asiat esitettiin yleisellä tasolla. Tämän kurssin yhtenä tavoitteena on antaa ohjelmoinnista sellainen kuva, jonka perusteella muiden (olio-)ohjelmointikielten opiskelu sujuu muitta mutkitta. Oliokielien ongelma on se, että yksinkertaisiakaan ohjelmia ei voi täysin ymmärtää ellei luokkien ja olioiden maailma ole jollakin tasolla tuttu. Näin ollen luokkien määrittelyissä on aluksi useita vieraita sanoja (määreitä), joiden merkitys avautuu vasta myöhemmin. Näin ollen opiskelussa noudatetaan spiraalilähestymistapaa, jossa kaikkia asioita ei tarvitse (eikä voi) täysin ymmärtää aluksi, vaan asioihin palataan myöhemmin toistuvasti, jolloin tietämys tarkentuu vähitellen. Lisäksi esimerkkien kautta oppiminen on tärkeä komponentti opiskelussa. Olio-ohjelmoinnin opiskelussa voidaan edetä joko menemällä heti 'luokkien ja olioiden maailmaan' tai unohtamalla aluksi oliot tarkastelemalla ensin perinteellistä ohjelmointia, jossa käsitellään vain primitiivistä tietoa (perustyypit, esim. luvut). Tällä kurssilla noudatetaan jälkimmäistä lähestymistapaa, koska tällöin ei tarvitse omaksua kaikkea yhdellä kertaa. Nimittäin olio-ohjelmoinnissa tarvitaan myös kaikki perinteellisen ohjelmoinnin välineet: algoritmeja ohjataan peräkkäis-, valinta- ja toistorakenteilla tallentamalla arvoja muistipaikkoihin. Esimerkiksi tehtävissä 'laske syötettyjen lukujen keskiarvo' ja 'tutki onko annettu luku alkuluku' ei ole juurikaan sijaa olioille. Tämän jälkeen huomaamme, että maailma ei koostu pelkästään luvuista ja merkeistä, vaan että asioiden mallinnus tapahtuu paljon korkeammalla tasolla. Tarvitsemme siis keinon, millä voimme esittää, mallintaa (abstrahointi) ja käsitellä suurempia tietoja yhtenä kokonaisuutena. Tähän tarpeeseen vastaa luokan käsite. Näin ollen seuraavalla opintojaksolla olio-ohjelmoinnin perusteet (OOP) siirrymme motivoidusti olio-ohjelmoinnin peruskäsitteisiin: luokka ja olio. Läheskään kaikkia Javaan liittyviä asioita ei näin lyhyellä kurssilla keritä käsittelemään. Esimerkiksi appletteja (eli sovelmia) ei tällä kurssilla käsitellä. Toisaalta ohjelmoinnin kannalta ei ole tärkeintä se, että osaa piirtää ruudulle tietynlaisen kuvion, vaan perusasiat ja käsitteet, joita tarvitaan tietenkin myös piirtämisessä ja applettien tekemisessä. Niiden teko perustuu vahvasti luokkakirjastojen käyttöön (luokka Applet ja lukuisa joukko muita luokkia). Olioohjelmoinnissa onkin hyvin tärkeätä se, että osaa käyttää luokkakirjastoja. Tällä jaksolla tutustutaan vain luokkien String, Random ja Math kirjastometodeihin, mutta seuraavalla jaksolla OOP tarkastellaan luokkakirjastoja laajemmin. Esitiedot: Tämän opintojakson esitietoina vaaditaan opintojakso Tietojenkäsittelytieteen perusteet I tai vastaavat tiedot. 3

4 2. SUORITUSTAPA Opintojaksoon kuuluu tentti. Tenttioikeuden saa kun on tehnyt alla olevista tehtävistä vähintään 30% ja lisäksi AOPin ViLLE-tehtävien yhteismäärä on vähintään 200. Mitä enemmän teet kumpiakin tehtäviä, sitä enemmän saat tentissä hyvitystä. ViLLE-tehtävät ovat kuitenkin auki koko ajan, joten ne voi tehdä myös myöhemminkin, joskin oppimisen kannalta ne kannattaa tehdä aikataulun mukaisesti. ViLLE-tehtävistä saa hyvitystä (bonusta) vain ensimmäisessä tentissä sen mukaan mikä on saavutettu pistemäärä. Tentin läpäisemiseen vaaditaan n. 50 % maksimipistemäärästä. Yksi kysymys on (ainakin osaksi) essee, jossa ei ole tärkeintä pelkästään muistaa kaikki aiheeseen liittyvät asiat, vaan ymmärtää ne, ja esittää ne jäsentyneesti. Essee-kysymyksessä pyydetään pääasiassa selittämään tiettyjä käsitteitä/asioita ja Javan tiettyjen tärkeiden avainsanojen merkitys. Kysytyt ohjelmointitehtävät ovat hyvin paljon opintomonisteessa ja tässä opiskeluoppaassa esitettyjen esimerkkien ja harjoitustehtävien kaltaisia (vinkkejä löytyy kurssisivuilta). Tenttiin kannattaa valmistautua lukemalla erityisesti oppimateriaalin esimerkit, harjoitustehtävien malliratkaisut ja ViLLE-tehtävät. Ohjelmointitehtävissä on tärkeintä ohjelmien looginen toimivuus eikä niinkään syntaksi. Huomaa, että ohjelmien teko tentissä melko lyhyessä ajassa ei kerta kaikkiaan onnistu, ellei omaa minkäänlaista ohjelmointirutiinia. Sen vuoksi tenttiin valmistautuessa kannattaa yrittää ratkaista harjoitustehtäviä uudestaan katsomatta valmista ratkaisua, testata niitä koneella ja tutkia tarkasti niiden toimintaa eikä pelkästään lukea valmiita ohjelmia. Valmiin ohjelman ymmärtäminen ei vielä takaa sitä, että pystyisi itse tuottamaan vastaavan toimivan ohjelman; ei, kaukana siitä. Ohjelmien toiminnassa ei ole mitään maagisuutta, vaan jokaisen lauseen suoritus muuttaa ohjelman tilaa (eli ohjelmien muuttujien arvoja) lauseen toiminnan määräämällä tavalla edeten ohjelman ensimmäisestä lauseesta aina viimeiseen lauseeseen saakka. Yritä aina ymmärtää jokaisen lauseen suorituksen aiheuttama muutos ohjelman tilaan (eli muuttujien arvoihin). Tenttipäivät: Ensimmäinen tentti on ke Huomaa, että Turun tentti on yliopistonmäellä ja siihen tulee ilmoittautua viimeistään viikkoa ennen netin kautta (ks. kurssisivut). Muut tentit ilmoitetaan kurssisivuillamme. 3. MATERIAALIT JA OHJELMISTOT 3.1 Oppimateriaalit ja niiden lukujärjestys sekä ViLLE Opintojakson oppimateriaaleina käytetään opiskeluopasta (tämä moniste) sekä opintomonistetta Sami Pyöttiälä, Ville Leppänen ja Jorma Boberg: Algoritmien ja ohjelmoinnin peruskurssi Javakielellä, Opiskeluopas on laadittu lähes itseriittoiseksi, joskin viittauksia opintomonisteen esimerkkeihin ei voi ymmärtää, ellei opintomoniste ole käsillä. Näin ollen materiaaleissa (opintomoniste ja opiskeluopas) on hyvin paljon päällekkäisyyttä: monet asiat selostetaan kummassakin, mutta hiukan eri sanoin. Lisäksi monet asiat käsiteltiin jo jaksolla TTP I. Opintomoniste on 4

5 perusteellisempi eli asiat selitetään opiskeluoppaassa lyhyemmin puuttumatta kaikkiin yksityiskohtiin. Toisaalta opiskeluoppaassa on useita käytännöllisiä tarkennuksia ja esimerkkejä. Opintomonisteessa on viittauksia luentoihin, jotka eivät tietenkään koske meidän kurssia. Opintomonisteessa on etenkin alussa melko vaikeita esimerkkejä, joilla ei kannata opiskelua aloittaa (nämä mainitaan tässä oppaassa). Tässä oppaassa on useita yksinkertaisempia esimerkkejä. Tentissä osattavat asiat esitetään tässä oppaassa: tämän oppaan asiat ja oppaassa mainitut opintomonisteen kohdat, ellei erikseen ole mainittu, että asiaa ei vaadita. Suositus materiaalien lukujärjestyksestä: Etene opiskeluoppaan mukaisesti ja siirry opintomonisteeseen aina kun viitataan esimerkkiin, jota opiskeluoppaassa ei ole esitetty tai jos opiskeluoppaassa sanotaan: Lue opintomonisteen... Nimittäin opiskeluoppaassa on useat asiat tiivistetty ja sen lukeminen riittää ensimmäisellä lukukerralla. Älä siis lue opintomonistetta aluksi systemaattisesti, vaan tämä opiskeluopas on päämateriaali. Aloita tämän jälkeen viikon harjoitustehtävien tarkastelu. Lue sen jälkeen tarpeen mukaan opintomonisteen teksti, jolloin saat asioista tarkemman kuvan. Halutessasi voit tietenkin lukea materiaalit (opiskeluopas ja opintomoniste) siinä järjestyksessä kuin haluat, mutta lue kullakin viikolla kuitenkin ensin opiskeluoppaan kohta Alustus. Opintomoniste ja opiskeluopas ovat riittävät materiaalit, mutta tutustu tarvittaessa kurssisivuilla mainittuihin materiaaleihin, jotka ovat hyviä. Joka viikolla tulee käyttää havainnollistusohjelmaa ViLLE. Ensimmäisellä viikolla käsitellään jakson TTP I sivuilla olevaa ViLLEä sen jälkeen käsitellään pääasiassa AOPia varten tehtyjä ViLLE-tehtäviä ja linkki näihin löytyy AOPin sivuilta. Viikolle tarkoitetut tehtävät on merkitty kullekin viikolle ja ne olisi hyvä tehdä tällöin. Tehtävät ovat kuitenkin auki koko ajan, joten ne voi tehdä myös myöhemminkin, joskin oppimisen kannalta ne kannattaa tehdä aikataulun mukaisesti. ViLLE-tehtävistä saa hyvitystä (bonusta) sen mukaan paljon on saanut pisteitä ensimmäiseen tenttiin mennessä. Lisäksi jokaisen viikon aluksi tulee tutkia jakson TTP I sivujen ViLLEn kautta TTP I:illä käsiteltyjä tuttuja ohjelmia Javalla (valitse Rinnakkaisnäkymä ja kieleksi Java). Voit myös suorittaa TTP I:n ViLLEn tehtäviä uudestaan, koska aiemmin saamasi pisteet ovat tallennettu ja ne eivät vaikuta kurssiin AOP. 5

6 3.2 Oheismateriaali Koska Java on nykyään laajalle levinnyt myös korkeakoulujen opetukseen, on siihen liittyvää kirjallisuutta saatavilla paljon sekä kirjakaupoista että internetistä. Useimmissa kirjoissa käydään läpi Java-kielen syntaksi, mutta ei kuitenkaan ohjelmoinnin perusteita. Kirjat eivät näin ollen aina välttämättä sovi itsenäiseen opiskeluun. Muista kuitenkin, että ohjelmointia ei opita pelkästään lukemalla valmiita esimerkkiohjelmia, vaan ne tulee myös ymmärtää. On parempi tutustua perusteellisesti muutamaan hyvään lähteeseen kuin kahlata pintapuolisesti läpi useita lähteitä. Java-ohjelmointia (ja myös C++) käsitteleviä kirjoja vaivaa mammuttitauti: kirjat ovat lähes poikkeuksetta melkein 1000-sivuisia. Myös internetin käyttö voi johtaa 'loputtomaan suohon' ja lisäksi lukija ei voi olla varma kaikkien lähteiden hyvyydestä ja eikä edes oikeellisuudesta. Suomenkieliset kirjat ovat usein käännöksiä ja joskus kääntäjänä ei ole ollut ohjelmoinnin asiantuntija, jolloin kirjan luettavuus ja terminologia voi olla huonoa. Kurssisivuillamme luetellaan hyviä lähteitä. 3.3 Java-kääntäjiä ja kehitysympäristöjä Java-ohjelmointikieli kehitettiin Microsystemsillä ja JDK 1.0 (Java Development kit) ilmestyi syksyllä Uusin versio on JDK 8 (ilmestyi 2014), mutta tällä kurssilla riittää myös versiot 6 ja 7 (joita kutsutaan myös nimillä 1.6 ja 1.7). Ohjelmiston voi ladata verkosta ilmaiseksi useimpiin käyttöjärjestelmiin: Windows, Linux, Unix ja MacOS (katso installointiohjeet kurssisivuiltamme). JDK on yksinkertainen, komentorivipohjainen ohjelmankehitysympäristö, jonka mukana tulee ohjelmat: javac.exe: Java-kääntäjä java.exe: Java-tulkki appletviewer.exe: applettien (sovelmien) suoritusohjelma jdb.exe: debuggeri eli virheenjäljitysohjelma javadoc.exe: dokumentoinnin apuväline Kääntäjä tuottaa tavukoodia (byte code), jota Java-virtuaalikone (= tulkki) suorittaa. Ohjelman suoritus komentoriviltä (command prompt) käyttäen komentotulkkia: javac <ohjelman_nimi>.java java <ohjelman_nimi> <mahdolliset parametrit> joista edellinen tuottaa tavukoodiksi käännetyn tiedoston (<ohjelman_nimi>.class) ja jälkimmäinen käynnistää virtuaalikoneen, joka tulkitsee ja suorittaa ohjelman. Web-selaimissa on sisäänrakennettu Java-virtuaalikone (=ohjelma java.exe, jolla voidaan suorittaa käännettyjä Java-ohjelmia). Näin ollen selaimet osaavat suorittaa Java-appletteja. Virtuaalikone JRE (Java Runtime Environment) on saatavana myös erikseen. Java on suunniteltu erityisesti turvallisuutta (suojausta) silmälläpitäen, joka on tärkeää nimenomaan verkko-ohjelmoinnissa. Kaksi erityisesti suojattavaa kohdetta: Keskusmuisti: Ei mahdollista tehdä laittomia muistiviittauksia ohjelma-alueen ulkopuolelle. Levymuisti: Verkosta ladattavat appletit eivät oletusarvoisesti saa käsitellä asiakaskoneen levyä; tätä valvoo turvallisuusmanageri. 6

7 Itse ohjelma voidaan kirjoittaa millä tahansa merkkipohjaisella tekstieditorilla (esim. NotePad, mutta ei esim. Wordillä), jonka jälkeen sen voi kääntää ja suorittaa komentoriviltä kuten yllä on kerrottu. Tämä on hiukan monimutkaista ja sen vuoksi on olemassa ohjelman kehitysympäristöjä, joiden avulla ohjelmien kirjoittaminen ja suorittaminen käy helposti. Tällainen on esim. ilmainen DrJava, jonka käytöstä annetaan ohjeet alla ja kurssisivuilla. Lisäksi saatavilla on ilmaiset ammattimaiset kehitysympäristöt NetBeans ja Eclipse (ks. kurssisivut). Myös JCreator on hyvä ympäristö, mutta se on muuttunut koeajan jälkeen maksulliseksi, joskin maksu on vain 35$. Nämä kaikki ovat siis ohjelmia, joiden avulla voidaan kirjoittaa Java-ohjelma (ne sisältävät siis editorin eli tekstinkäsittelyohjelman), kääntää ohjelma ja suorittaa se valitsemalla kehitysympäristön valikosta niitä vastaavat toiminnot. Näin ollen meidän ei tarvitse käyttää edellä esitettyjä komentorivikomentoja (esim. kehitysympäristön toiminta käännä, Compile, saa aikaan komentorivikomennon javac <ohjelman nimi> ). Tarvittavien ohjelmien asennusohjeet annetaan kurssisivuillamme. Java-kieli, Java-appletit ja JavaScript-kieli sekoitetaan usein keskenään. Java-kieli on arkkitehtuuririippumaton olio-ohjelmointikieli, jolla ohjelmoimiseen tarvitaan erillinen kääntäjä, jolla ohjelmakoodi käännetään Javan virtuaalikoneelle sopivaan binäärimuotoon (tavukoodiohjelma; class-päätteisiksi tiedostoiksi). Tavukoodiohjelmat ovat alustariippumattomia, joten niitä voidaan ajaa eri käyttöjärjestelmien alaisuudessa käyttäen Javavirtuaalikonetta (JRE, Java Runtime Environment). Internet-selaimet osaavat suorittaa näitä class-tiedostoja. Java-sovelma (Java Applet) on epäitsenäinen, asiakaskoneessa selaimen yhteydessä suoritettava Java-ohjelma. Sovelmia ajetaan selaimessa, johon on asennettu Javavirtuaalikone (JRE). JavaScript on taas hyvin yksinkertainen skriptikieli, joka kirjoitetaan suoraan HTML-koodin sekaan eikä erillistä kääntäjää tarvita. 3.4 Luokat OmaIO ja Scanner Javan versiota 5.0 alemmissa versioissa lukeminen näppäimistöltä tuli toteuttaa melko vaikeasti ja sen vuoksi lähes jokainen Java-kirjan kirjoittaja kirjoitti lukemista ja kirjoittamista varten oman metodikirjaston 1 eli aliohjelmakirjaston (mekin teemme tällaisen taulukoiden käsittelyyn sivulla 2 82), johon oli kätketty monimutkaiset I/O-operaatiot. Luokka OmaIO.java on Ville Leppäsen kirjoittama metodikirjasto joka sisältää tarvittavat metodit näppäimistöltä lukemista ja ruudulle kirjoittamista varten. OmaIO-luokan sisältö on kuvattu kurssisivuilla ja yksinkertainen esimerkki sen käytöstä esitetään opiskeluoppaan sivulla 30. Jotta voisit käyttää ohjelmassasi luokan OmaIO metodeja, niin sinun tulee kopioida luokka OmaIO.java samaan hakemistoon, missä suoritettava ohjelmasi sijaitsee. Sen jälkeen sinun tulee kääntää (compile) se normaaliin tapaan, jolloin syntyy tiedosto OmaIO.class. Tämän jälkeen luokan metodeja voi kutsua mistä luokasta tahansa muodossa OmaIO.<luokan metodi>(<parametrilista>); esim. OmaIO.lueInt(); joka siis palauttaa näppäimistöltä syötetyn kokonaisluvun. Luokan useat metodit ovat parametrittomia (kuten yllä lueint) ja ylikuormitettuja (ks. s. 31). Metodit ovat sitkeitä eli ne 1 Javan yhteydessä sana 'metodi' tarkoittaa TTP I-jakson terminologian käsitettä moduuli. Usein näitä kutsutaan myös aliohjelmiksi tai rutiineiksi, joskin aliohjelman käsite on vanha ja hiukan suppeampi. 2 Pelkkä viittaus sivunumeroon tarkoittaa aina tämän opiskeluoppaan sivunumeroa. Jos viitataan opintomonisteeseen, se mainitaan erikseen: esim. opintomoniste s. 35 tai Luku 4.3, s

8 lukevat syöttöä niin kauan, kunnes annetaan kelvollinen arvo; esim. jos kutsutaan metodia OmaIO.lueInt(), niin desimaalipisteen sisältävä luku ei kelpaa, vaan metodi pyytää käyttäjää antamaan luvun uudestaan. Muita luokassa OmaIO olevia tarpeellisia metodeja: luedouble, luelong sekä LueString ja luerivi, joilla voidaan lukea tekstiä. Javan versiosta 5.0 lähtien Javassa on mukana luokka Scanner, jonka avulla voidaan lukea helposti näppäimistöä, mutta tehdä paljon muutakin. Luokkaa Scanner tarkastellaan tarkemmin tämän oppaan Liitteessä ja sen käytöstä on yksinkertainen esimerkki s. 31. Lisäksi kurssisivuilla on tarkemmat ohjeet luokan Scanner käytöstä. Tässä opiskeluoppaassa käytetään sekä luokkaa Scanner että OmaIO, mutta muutos näiden välillä voidaan tehdä helposti em. esimerkkien ja lopussa olevan Liitteen avulla. Luokan OmaIO käyttö on helpompaa, koska se sisältää lukulauseet monen tyyppiselle datalle ja lisäksi sen metodit ovat sitkeitä eli ohjelma ei kaadu virheelliseen syöttöön (kuten luokkaa Scanner käytettäessä), vaan metodi kysyy tällöin syötettä uudestaan. Erityisesti ohjelmointia opetellessa luokan OmaIO käyttö on perusteltua, koska tällöin voimme keskittyä pääasiaan eli algoritmeihin. Lisäksi luokan OmaIO käyttö opettaa samalla sen, miten itse tehtyä metodikirjastoa käytetään. 4. OPISKELUN ETENEMINEN Opintoryhmäkokoontumisten lisäksi järjestetään yksi lähiopetustilaisuus, jolloin opettaja kertaa siihen mennessä käsitellyistä asioista tärkeimmät. Lisäksi tällöin opiskelijoilla on mahdollisuus kysyä opintojakson epäselviksi jääneistä kohdista. Opiskelu perustuu itseopiskeluun opiskeluoppaan ja opintomonisteen avustamana, viikoittaisten harjoitustehtävien itsenäiseen laatimiseen ja niistä ryhmäkokoontumisissa annettavaan palautteeseen. Lisäksi Moodlessa annetaan vinkkejä tehtävien tekemiseen ja siellä voi keskustella myös. Harjoitustehtävät on jaettu aiheen perusteella kullekin viikolle niin, että ne kattavat viikon asiat. Harjoitustehtävien huolellinen läpikäynti on opiskelun keskeisin osa. Ohjelma tulee aina suunnitella ja laatia ensin paperilla ja vasta sitten näpytellä tietokoneeseen. Viikolle tarkoitetuista tehtävistä tulee suurin osa testata tietokoneella. Osassa tehtävistä pyydetään testaamaan ohjelmaa tietokonetta käyttäen ja näistä kertyvät myös bonukset, jos ohjelmasi toimii oikein! Opintoryhmäkokoontumisen yhteydessä käsitellään viikolle tarkoitetut harjoitustehtävät joiden yhteydessä varmistetaan, että viikon asiat on ymmärretty. Tällöin opiskelijan tulee olla itse aktiivinen ja kysyä viikon epäselvistä asioista ja esimerkeistä. Harjoitustehtävien käsittelyssä voidaan käyttää hyväksi erilaisia pienryhmätyöskentelyn muotoja (ks. opiskelijan käsikirja). Ryhmäkokoontumisessa tuutori jakaa vastuuopettajan laatimat harjoitustehtävien mallivastaukset ja ne julkaistaan myös Moodlessa. Mikäli opintoryhmäkokoontumisiin on suunniteltu jotakin muuta edellisen lisäksi, on siitä maininta viikoittaisen ohjelman kuvauksen yhteydessä. Etenkin juuri tämän opintojakson yhteydessä ei voi liikaa korostaa itsenäisen opiskelun osuutta. Viikolle merkittyjen harjoitustehtävien miettiminen, tekeminen ja koneella suorittaminen on todella tärkeätä. Laskemalla suoraan opintojakson laajuus opintopisteinä ja sen 8

9 kesto, niin voimme arvioida, että opiskelijan tulisi käyttää tämän opintojakson opiskeluun keskimäärin n. 14 tuntia viikossa (ryhmäkokoontuminen mukaan lukien) ja kokemuksieni mukaan tämä on aika oikeaan osuva arvio. Tämä arvio edellyttää sen, että jakson TTP I asiat ovat hallinnassa. On tietenkin selvää, että arvioitu tuntimäärä vaihtelee hyvinkin paljon riippuen opiskelijasta. Ohjelmointia opeteltaessa on erittäin tärkeätä testata ohjelmia koneella. Pelkällä ohjelmien lukemisella ei opi ohjelmoimaan. Sen vuoksi sinun kannattaakin kirjoittaa ohjelmia koneella, muuttaa niitä usealla eri tavalla ja katsoa mitä muutoksesi saa aikaan. Tällöin on kuitenkin erityisen tärkeätä se, että ymmärrät miten ohjelma toimii. Huom. Ryhmäkokoontumisia voidaan pitää Tietokoneluokassa. Tällöin tulee kuitenkin pitää huolta siitä, että viikolle tarkoitetut asiat tulee käsiteltyä. Nimittäin koneen käyttö saattaa helposti 'varastaa koko shown' ja aika saattaa kulua syntaksivirheiden parissa, jolloin viikolle tarkoitetut asiat jäävät vähemmälle huomiolla. Huomaa, että käsitteet ovat hyvin tärkeitä. Ne tarkoittavat tarkasti määriteltyä asiaa tai ominaisuutta. TTP I:ssä meillä oli jo mm. seuraavia käsitteitä: muuttuja, tyyppi, lause, lauseke, toistolause, valintalause,... Sinun kannattaa tehdä itsellesi käsiteluettelo, johon kirjaat aina vastaantulevat uudet käsitteet. 9

10 VIIKKO 45 Lyhyt johdatus Javaan ja sen käyttöön esimerkeillä Lue ensin opintomonisteen luvut sivut 5-12 ja sen jälkeen alla oleva, joka on tämän viikon päämateriaali. Aluksi tarkastelemme ohjelmointiin ja Javaan liittyviä yleisiä asioita. Sen jälkeen esittelemme kaksi yksinkertaista Java-ohjelmaa sekä Javan perusrakenteet (perustyypit ja perusohjausrakenteet). Seuraavaksi kerrotaan miten ja millä ohjelmilla Java-ohjelmia kirjoitetaan ja suoritetaan. Opintomonisteen esimerkkejä ja s. 12 kuvaa ei voi tietenkään täysin ymmärtää tässä vaiheessa, mutta s. 12 kuvaa tulee tarkastella joka viikon asioiden yhteydessä. Kuvassa olevat käsitteet tulevat tutuksi tämän kurssin aikana. Opintojaksolla TTP I kirjoitettiin algoritmeja noudattamatta tarkkaa syntaksia ja usein lauseiden muoto oli liian epämääräinen tietokoneella suoritettavaksi. Kun algoritmi kirjoitetaan käyttäen todellista ohjelmointikieltä, joka annetaan tietokoneen suoritettavaksi, tilanne on aivan toinen. Nimittäin lauseet ja niiden osat tulee kirjoittaa täsmälleen annetun kieliopin mukaisessa muodossa käyttäen vaadittuja välimerkkejä. Tämä on jossakin mielessä helpottavaa: lauseiden syntaksi ja semantiikka on täysin määrätty, ja ohjelma joko toimii tai sitten ei (ensimmäinen versio ohjelmasta ei yleensä toimi, vaan se vaatii useita korjauskierroksia). Toisaalta se tuo mukanaan lukuisia tarkkoja syntaksisääntöjä, joiden tietäminen ei itse ohjelmoinnin kannalta ole se tärkein asia. Suurin virhe onkin kiinnittää aluksi liian paljon huomiota syntaksiin. Alla esitettyjä asioita kannattaa tarkastella jakson TTP I ViLLE-esimerkkien valossa. Javan perusohjausrakenteet ja perustyypit Seuraavaksi esitetään hyvin lyhyesti Javan perusrakenteet ja sen jälkeen esitetään kaksi esimerkkiohjelmaa, joiden avulla nämä asiat konkretisoidaan. Nämä kannattaa lukea erityisen huolellisesti. Opintomonisteessa (ja yleensä muissakin oppikirjoissa) näin ei menetellä, jolloin alkuun pääsemiseksi tulee tutustua moniin asioihin yksityiskohtaisesti ennen kuin pystyy kirjoittamaan ensimmäisen ei-triviaalin ohjelman. Tällöin punaista lankaa ei tahdo löytyä ja alkuun pääseminen voi kestää tuskallisen kauan. Kertaa ensin jakson TTP I luentopäivän materiaalissa olevat asiat, jossa esitetään lyhyesti imperatiivisen (eli käskevän) ohjelmoinnin yleiset periaatteet ja käsitteet: muuttuja, tyyppi, lauseke sekä lause ja eri lausetyypit (esim. valinta if ja toisto while). Näiden ymmärtäminen on ohjelmoinnin ja tämän kurssin perusta. Kuten jaksolla TTP I selvitettiin, jokaisen algoritmin kirjoittamiseen riittää peräkkäisyys-, valinta- (if-lause) ja alkuehtoinen toistorakenne (while-lause). Keskeisessä asemassa on asetuslause, jolla voidaan asettaa arvo muuttujalle (muistipaikalle). Jokaiseen muuttujaan (ja myös lausekkeeseen) liittyy tyypin käsite, joka kertoo minkälaisen arvon kyseiseen muuttujaan 10

11 saa tallentaa. Seuraavassa esitetään edellä mainittujen lauseiden syntaksi Javassa käyttäen opintojakson TTP I esitystapaa (< >). Nämä asiat käsitellään myöhemmin perusteellisesti. Lauseita: 1) Asetuslause on muotoa: 2) Valintalause (if-lause) on muotoa: tai Huomaa syntaksista: <muuttuja> = <lauseke>; esim. a = a + 1; if (<ehtolauseke>) <lause> if (<ehtolauseke>) <lause> else <lause> 3) Alkuehtoinen toisto (while-lause) on muotoa: while (<ehtolauseke>) <lause> esim. if (a>b) b = b - a; esim. if (a>b) b=b-a; else a=a-b; esim. while (k<10) k=k*a; k=k-1; 4) Lohko on muotoa: <yksi tai useampi lause> esim. k=k*a; k=k-1; Perustyyppejä: int (kokonaisluvut), double (desimaaliluvut), char (yksittäiset merkit), boolean (totuusarvo, arvona true tai false) esim. int k; double s=0.0; char ch; Lause tarkoittaa siis yhtä lausetta (statement) tai lohkoa (block). Lohko tarkoittaa yhtä tai useata lausetta, jotka ovat aaltosulkeiden eli merkkien ja (joita kutsutaan lausesuluiksi) välissä. Lohkoa kutsutaan myös kootuksi lauseeksi (compound statement tai block statement). Tämä on lohkon yksinkertaistettu määritelmä, koska lohkon sisällä voi olla myös muuttujien ja luokkien esittelyjä. Sääntö puolipisteistä käytöstä: Muuttujien esittelyjen ja lauseiden jälkeen kirjoitetaan puolipiste pois lukien lohko, while-, for- ja if-lauseet. Näin ollen esim. asetuslauseen perään tulee kirjoittaa puolipiste eli yllä lauseessa if (a>b) b = b - a; puolipiste päättää asetuslauseen. asetuslauseessa käytetään sijoitusoperaattorina 3 merkkiä =. Tämän takia yhtäsuuruuden testaukselle loogisissa lausekkeissa tarvitaan joku muu merkintä (se on = =). if-lauseessa ei kirjoiteta then-sanaa näkyviin, mutta tästä huolimatta puhumme if-lauseen then-haarasta, koska sehän juuri kirjoitetaan ehtolausekkeen jälkeen. Ehtolauseke on totuusarvoinen lauseke ja se tulee sekä if- että while-lauseessa kirjoittaa sulkujen ( ) sisälle. Lisäksi Javassa on monihaarainen valintarakenne (switch), loppuehtoinen toisto (do... while) ja definiitti toisto (for), jotka eivät kuitenkaan ole välttämättömiä, mutta helpottavat joskus ohjelman kirjoittamista. 3 TTP I:ssä käytimme merkkiparia :=, joka on parempi, koska asetuslauseessa ei ole kysymys yhtäsuuruudesta (esim. lause i = i+1 eli kasvata i:n arvoa yhdellä). 11

12 Ohjelman käsittelemä primitiivitieto (perustyypit) voidaan jakaa numeeriseen (arvona luku), loogiseen (arvona totuusarvo; tämän tyypin nimi on Javassa boolean) ja merkkitietoon (char). Numeerinen tieto voidaan jakaa edelleen kokonaislukuarvoiseen (esim. int) ja desimaalilukuarvoiseen (esim. double). Kummallekin on useita vaihtoehtoja, joita käytetään tarvittavan lukualueen ja tarkkuuden mukaan. Perustyyppien lisäksi voidaan käsitellä monimutkaisempia tietorakenteita; esim. taulukoita ja merkkijonoja (String), jotka ovat tietyn luokan alkioita eli olioita. Lisäksi voimme määritellä omia tietotyyppejä luokkien avulla tai käyttää Javan kirjastoluokkia ja muodostaa kyseisen tyypin alkioita (olioita). Kaksi yksinkertaista Java-ohjelmaa Alla on klassinen 4 HelloWorld-ohjelma, joka vain tulostaa tietyn vakiotekstin kuvaruudulle. Ohjelman avulla on tarkoitus selvittää yksinkertaisen Java-ohjelman rakenne. Ohjelmassa on vain yksi lause, joka saa aikaan tulostuksen. Jo näin yksinkertaisessa ohjelmassa on useita jokaiseen Java-ohjelmaan liittyviä asioita. Tarkastele alla esitettyjä asioita myös sitä seuraavan ohjelman Kertoma1 valossa. Ohjelma esitetään Javassa luokkana, joka sisältää main-metodin, joka sisältää varsinaisen ohjelmakoodin. main-metodi on aina luokan pääohjelma, josta ohjelman suoritus alkaa. Opintomonisteessa on lohkon aloittava lausesulku kirjoitettu aina edellisen rivin loppuun (eli sanan public alla oleva on sijoitettu sanan HelloWorld perään), kun taas tässä oppaassa se kirjoitetaan seuraavan rivin alkuun samalla kohdalle, mistä ko. lohko alkaa. Lisäksi alirakenteet ja lauseet sisennetään oikealle. public class HelloWorld /* Tulostaa tervehdyksen ruudulle */ public static void main (String[ ] args) System.out.println( Hello, World!"); Alla on selvitetty lyhyesti HelloWorld-ohjelman osat esiintymisjärjestyksessä (tässä vaiheessa kaikkia sanoja ja merkkejä ei voi vielä tuntea, mutta lue 'sujuvasti'): 1. rivi public class HelloWorld määritellään julkinen (public) luokka (class) ja annetaan sille itse keksitty nimi (HelloWorld). Tässä vain tunnus HelloWorld on käyttäjän valitsema. sen jälkeen seuraa luokan sisällön määrittely, joka on merkkien välissä, joka yllä on: /* Tulostaa tervehdyksen ruudulle */ public static void main (String[ ] args) System.out.println( Hello, World!"); Merkkiparien /* ja */ välissä oleva teksti (eli teksti Tulostaa tervehdyksen ruudulle) sisältää kommentin, jolla ei ole siis vaikutusta ohjelman suoritukseen 4 siis esiintyy lähes jokaisessa Java- ja C(++)-oppikirjassa. 12

13 sen jälkeen määritellään pääohjelma eli metodi main, josta ohjelman suoritus aina alkaa. Määrittely alkaa aina seuraavasti 5 : public static void main Tämä tarkoittaa, että pääohjelma main on luokan HelloWorld julkinen metodi. main-metodin parametri kirjoitetaan sulkujen sisään main-sanan jälkeen: (String[ ] args) eli parametrina on taulukko (joskin tunnuksen args sijasta voi käyttää mitä tunnusta tahansa kuten seuraavassa kohdassa todetaan), jonka jokainen komponentti on merkkijono 6. Kun ohjelma suoritetaan voidaan sille antaa parametreja (tähän palataan opiskeluoppaan sivulla 32 kun esitellään ohjelma Kertoma2) tai n:n arvo voidaan lukea näppäimistöltä (s. 31). HelloWorld ohjelmassa main-metodille ei anneta parametreja komentoriviltä suoritusvaiheessa, jolloin args on tyhjä. Huomaa, että yllä args on tunnus (lyhennys sanasta arguments eli argumentit), joten sen tilalla voisi käyttää mitä tunnusta tahansa (esim. parametrit). Kuitenkin yleisesti (siis esiintyy lähes jokaisessa Java-oppikirjassa) kyseinen tunnus on nimeltään args, jolloin lukija voi saada harhakuvan, että siinä kohtaa tulee todella olla aina args. main-metodin runko on lohko eli se alkaa aaltosulkeella ja loppuu aaltosulkeeseen : System.out.println( Hello, World!"); Lohko koostuu tässä vain yhdestä tulostuslauseesta (yleensä tässä kohtaa on tietenkin useita lauseita), joka kirjoitetaan on merkkien ja väliin. System.out.println(... ) on standarditulostusmetodi, jonka seurauksena ruudulle tulostuu parametrina annettu merkkijono (lainausmerkkien välissä oleva teksti) eli tässä Hello World! koska Javassa isot ja pienet kirjaimet ovat eri merkkejä (toisin kuin monissa muissa ohjelmointikielissä; esim. Pascalissa), tulee ohjelmassa olevat varatut sanat ja tunnukset kirjoittaa juuri kuten yllä on kirjoitettu. Ei siis saa kirjoittaa esim. Public, Main, string, system.out.println... Tunnisteet summa ja Summa ovat siis erit. 5 määreisiin public ja static palataan myöhemmin. 6 merkkijono on luokan String alkio (esiintymä, olio) 13

14 Näin ollen pelkkä main-metodin sisältävä ohjelma (luokka) on aina muotoa public class Xyz /* tähän kirjoitetaan kommentti siitä, mitä ohjelma tekee */ <tässä voidaan esitellä muuttujia tai vakioita, ks. alla oleva Huom 1.> public static void main (String[ ] args) <tähän kirjoitetaan tarvittavat muuttujien esittelyt ja lauseet> missä Xyz on luokan nimi (valitse kuvaavaksi, iso alkukirjain!). Kyseinen tiedosto pitää tallentaa levylle muodossa Xyz.java. Kun se käännetään, muodostuu tiedosto Xyz.class, joka on suorituskelpoinen. Huom 1. Jos luokan avulla ei määritellä uutta tietotyyppiä (kuten on tilanne kaikissa meidän ohjelmissa tällä kurssilla), niin ennen main-metodia esitellyt muuttujat kirjoitetaan varustettuna määreellä static, esim. static int maara=10; Tällöin tämä muuttuja on käytettävissä kaikissa luokan Xyz metodeissa. Ne ovat siis luokan Xyz globaalisia muuttujia. Huom 2. Sana public ei ole yllä pakollinen luokan eikä main-metodin määrittelyn alussakaan, mutta sillä on tietenkin tietty merkitys. public: asia (luokka, metodi, muuttuja) on julkinen eli sitä voi käyttää tai siihen voi viitata mistä luokasta tahansa. Jos sana public puuttuu, niin ko. asia on käytettävissä saman hakemiston sisällä. Käytännössä tämä riittää meidän ohjelmissa, mutta siitä huolimatta kirjoitamme määreen public aina näkyviin. Esimerkki. Seuraavassa on lisäksi tuttu n-kertoman laskeva ohjelma täydellisenä (suorituskelpoisena). Se sisältää jo kunnon ohjelman aineksia: muuttuja ja sen tyypin esittely, asetuslause ja alkuehtoinen toistorakenne. Tässä ohjelmassa asetetaan n:n arvoksi ohjelmassa vakio 6, joten tämä ohjelma ei ole vielä yleinen. Tähän samaan ohjelmaan palataan myöhemmin, jolloin teemme ohjelmasta version, jossa n annetaan parametrina main-metodille komentoriviltä kun annetaan ohjelman suorituskäsky (Kertoma2, s. 32), luetaan näppäimistöltä ohjelman suorituksen aikana (s. 31). Tässä vaiheessa ohjelman kaikkia määreitä (sanoja) ei voi vielä täysin ymmärtää. Kielen varatut sanat on tässäkin lihavoitu. Ohjelma kirjoitetaan varustettuna runsailla kommenteilla. Merkkiparin // jälkeinen teksti rivin loppuun saakka on kommenttia eli on siis tarkoitettu ohjelman lukijalle eikä siis vaikuta ohjelman toimintaan. Jos halutaan kirjoittaa kommentteja usealle riville, tulee käyttää kommentointitapaa, jossa kerrotaan mistä kommentti alkaa ja mihin se päättyy: /* */. 14

15 public class Kertoma1 /** Ohjelma, joka laskee ja tulostaa n-kertoman, kun n:lle annetaan vakioarvo ohjelman sisällä. */ // main-metodin määrittely alkaa public static void main (String[ ] args) int n, k, i; // esitellään kokonaislukutyyppiset muuttujat n, k ja i n = 6; // annetaan muuttujalle n alkuarvoksi 6 k = 1; // annetaan muuttujalle k alkuarvoksi 1 i = n; // annetaan muuttujalle i alkuarvoksi n:arvo eli 6 while (i>0) // silmukan runko alkaa; silmukan runkoa toistaan niin kauan kuin i>0 k = k * i; // k saa uuden arvon, joka on sama kuin k:n vanha arvo kerrottuna i:llä i = i -1; // i:n arvoa vähennetään yhdellä // silmukan runko päättyy System.out.println(n + "-kertoma on " + k); // tulostus, + selostetaan myöhemmin // main-metodin loppu // luokan Kertoma1 määrittelyn loppu Yllä on jokaisen lauseen perässä kommentti, koska nyt vasta opettelemme ohjelmointia. Kuitenkaan näin yksinkertaisessa ohjelmassa ei jokaista lausetta kommentoida, joskin rakenteen lopun jälkeen, joka päättyy siis merkkiin, on hyvä kirjoittaa kommenttina minkä rakenteen loppu on kyseessä. Lisäksi ohjelman alkuun tulee kirjoittaa mitä ohjelma tekee. Yllä on määritelty muuttujat n, k ja i, jotka ovat tyyppiä int. Niihin voidaan tallentaa vain kokonaisluku. Huomaa, että while-lauseen (ja myös if-lauseen) ehtolauseke (i>0) kirjoitetaan aina sulkeiden sisään. Koska silmukan runko koostuu kahdesta yksinkertaisesta lauseesta, tulee ne kirjoittaa lausesulkujen ja sisään, jolloin niistä saadaan lause, lohko eli koottu lause. Sisennys ja aaltosulkeiden sijainti. Vaikka lauseiden sisennystapa ja aaltosulkeiden sijainti riveillä on ohjelman kirjoittajan valittavissa, niin edellä käytetty tapa on yleisesti käytetty: lohkon aloittava on avainsanan (esim. while) sisältävän rivin alapuolella samalla kohtaa, ja lopettava on omalla rivillään avainsanan kanssa tasattuna samaan sarakkeeseen. Lohkon lauseet ja määrittelyt sisennetään oikealle. Tätä tapaa käytetään tässä oppaassa. Toinen yleinen tapa on kirjoittaa lohkon aloittava avainsanan jälkeen samalle riville. Näin tehdään opintomonisteessa. Yllä oleva ohjelma Kertoma1 voidaan kirjoittaa siis muodossa: public class Kertoma1 /** Ohjelma, joka laskee ja tulostaa n-kertoman, kun n:lle annetaan vakioarvo ohjelman sisällä. */ public static void main (String[ ] args) int n, k, i; n = 6; k = 1; i = n; while (i>0) k = k * i; i = i -1; // while:n loppu System.out.println(n + "-kertoma on " + k); // main-metodin loppu // luokan loppu 15

16 Huom. Lause System.out.println(n + "-kertoma on " + k); tarkoittaa sitä, että tulostetaan sulkeiden sisällä olevan merkkijonolausekkeen arvo. Jos se ei ole suoraan merkkijonomuotoinen (eli " " tai merkkijonomuuttujista koostuva lauseke) kuten esim. edellä HelloWorld-ohjelman, niin Java muuntaa sulkeiden sisällä olevan lausekkeen merkkijonoksi. Tässä tapauksessa se muodostuu n:n arvosta, jota seuraa lainausmerkkien välissä oleva teksti ja jota seuraa k:n arvo. Näin ollen + ei tarkoita tässä yhteenlaskua, vaan sen avulla liitetään kaksi merkkijonoa peräkkäin, jos jompikumpi (tai molemmat) 'yhteenlaskettavista' on merkkijonotyyppinen (eli tekstiä). Näin ollen ohjelma tulostaa: 6-kertoma on 720. Yllä olevan ohjelman algoritminen osa int n, k, i; n = 6; k = 1; i = n; while (i>0) k = k * i; i = i -1; on TTP I-kurssin pseudokoodia käyttäen seuraava: n := 6 k := 1 i := n WHILE i>0 DO k := k * i i := i -1 ENDWHILE Tässä algoritminpätkässä pseudokoodin ja Javan ero on pieni. Pseudokoodissa emme määritelleet vielä muuttujien tyyppiä eli tietoa siitä mitä tietoa muuttujassa säilytetään lauseiden perään ei kirjoitettu puolipistettä, vaan ne kirjoitettiin vain eri riveille asetusoperaattori on := ja Javassa = WHILE-lauseen syntaksi on erilainen ja pseudokoodissa lausesulkuja ei tarvita, koska rakenteen päättävä ENDWHILE kertoo silmukan rungon lopun. Javassa runko tulee koota lohkoksi, koska se sisältää tässä useita lauseita. ja Javassa lauseet sisennetään oikealle samalla tavalla. Sisennykset eivät ole kummassakaan pakollisia, koska ohjelman rakenne on yksikäsitteinen. Tästä huolimatta sisennyksiä tulee käyttää systemaattisesti, jotta ohjelmakoodi on selkeää. Huomaa kuitenkin, että esim. ohjelmointikielessä Python ei käytetä lausesulkuja lainkaan, vaan lohkot ilmaistaan aina sisennyksellä, joten Pythonissa sisennykset ovat pakollisia. 16

17 Ohjelmien kirjoittaminen sekä suorittaminen komentotulkilla ja DrJavalla (main-metodin parametrille String[]args ei anneta arvoja) ohjelman osien kirjoittamiseen välilyöntien ja rivinvaihtojen suhteen tulee noudattaa (kuuluisaa) talonpoikaisjärkeä: yhteenkuuluvat osat tulee kirjoittaa yhteen (esim. main, int, jne.), mutta muuten välilyöntejä ja rivinvaihtoja voi käyttää mielensä mukaan (esim. asetuslauseessa yhtäsuuruusmerkin ja aritmeettisten operaattoreita voi seurata ja edeltää nolla tai useampi välilyönti). lohkon päättävän lausesulun jälkeen on hyvä kirjoittaa kommenttina, minkä rakenteen loppu on kyseessä. Merkkiparin // jälkeinen teksti rivin loppuun saakka on kommenttia. ohjelman ulkoasu on tarkoitettu ihmiselle eikä koneelle. Niinpä Java-kääntäjälle kelpaa, vaikka ohjelma annetaan sille muodossa 7 (otetaan kommentitkin pois): public class Kertoma1public static void main(string[]args)int n,k,i;n=6;k=1;i=n;while(i>0)k= k*i;i=i 1;System.out.println(n+" kertoma on " + k); yleensä ohjelman lauseet kirjoitetaan omille riveilleen, mutta joskus voi riville kirjoittaa myös useita lyhyitä lauseita, jos ohjelma on silti selkeä. Esimerkiksi yllä voitaisiin while-silmukan rungon lauseet kirjoittaa samalle riville. Yhteen tiedostoon kirjoitetaan yleensä yksi luokan määrittely. Jos yhteen tiedostoon kirjoitetaan useita luokkia, voi niistä ainoastaan yksi olla public. Tiedoston nimen tulee olla sama kuin (julkisen) luokan nimi ja jatkeena on.java (näin ollen yllä olevat luokat tulee tallentaa levylle nimi HelloWorld.java ja Kertoma1.java). Ohjelma kirjoitetaan jollakin tekstieditorilla ja se tallennetaan tekstitiedostona.. Kuten yllä todettiin, niin ohjelma (=luokka, jossa on main-metodi; esim. yllä Kertoma1) tulee tallentaa tarkalleen samalla nimellä kuin luokan nimi (jatkeena.java) erottaen pienet ja isot kirjaimet (Kertoma1.java) DrJava on helppokäyttöinen Windows-pohjainen (ja myös Macille) tekstieditori, jonka alaisuudessa voidaan sekä kirjoittaa, kääntää sekä suorittaa Java-sovelluksia (ohjelmia) ja sovelmia (appletteja). Se tuntee Javan syntaksin, joka helpottaa ohjelman kirjoittamista (esim. sisennykset tulevat automaattisesti). Jos sinulla ei ole käytössä tällaista ohjelmaa, voit kirjoittaa ohjelmasi millä tahansa ascii-editorilla (esim. NotePad) ja suorittaa ohjelmasi erikseen komentotulkissa (command prompt / dos). 7 Tästä ei voi 'nipistää' pois enää yhtään merkkiä; esimerkiksi tyypintunnuksen int ja muuttujan n väliin on pakko kirjoittaa välilyönti, koska muuten kääntäjä ei ymmärrä sitä. 17

18 Tarkastellaan yllä olevan ohjelman Kertoma1 kirjoittamista, kääntämistä ja suorittamista. Ensin kannattaa luoda hakemisto, johon tallennat kaikki Java-ohjelmasi. a) Käytetään DrJavaa 1. Käynnistä DrJavan exe-tiedosto. Valitse File/New Java Class, jolloin systeemi kysyy tiedoston nimen ja siksi pitää antaa sama kuin luokan nimi eli tässä tapauksessa Kertoma1. Editori generoi automaattisesti luokan rungon. Kirjoita kohtaan /* ADD YOUR CODE HERE */ luokan Kertoma1 koodi. Koodin voi siirtää myös leikepöydän kautta, mutta ensimmäisellä kertaa on parempi kirjoittaa koodi itse, jotta näet miten editori toimii. Tallenna se File/Save as hakemistoon, jossa säilytät java-ohjelmiasi. Tästä tulee työhakemisto (Working Directory). 2. Käännä ohjelma valitsemalla Compile jolloin lähdekoodi muutetaan tavukoodiksi, jos ohjelmassa ei ole syntaksivirheitä. 3. Jos ohjelman käännös onnistui (ei tule virheilmoituksia), niin silloin muodostuu tiedosto Kertoma1.class. Se suoritetaan valitsemalla Run. Muulloin ohjelmaa tulee korjata ja mennä sen jälkeen vaiheeseen 2. b) Suoritetaan ohjelma komentoriviltä (command prompt: windows/linux/unix): Komentotulkkia käsitellään jakson TTV Teeman 1 harjoitustehtävissä. Windowsissa sen saa käyttöön seuraavasti: valitse Start (Käynnistä) / Programs (Ohjelmat) / Accessories (Apuohjelmat) / Command Prompt. Komennot kirjoitetaan käyttäen näppäimistöä ja komentotulkki (jolloin komentotulkki-ikkuna sulkeutuu) lopetetaan kirjoittamalla komento exit. Komennon kirjoituksen jälkeen tulee paina Enter (Return), jonka jälkeen tietokone suorittaa annetun komennon. 1. Kirjoitetaan ohjelma tekstieditorissa ja tallennetaan se nimellä Kertoma1.java valittuun hakemistoon. 2. Siirrytään komentotulkissa samaan hakemistoon, jossa tiedosto Kertoma1.java sijaitsee. Käännetään ohjelma kirjoittamalla 8 (alla > on komentotulkin antama merkki, joka ilmaisee sen, että komentotulkki on valmis vastaanottamaan komennon): > javac Kertoma1.java 3. Jos ohjelman käännös onnistui (ei tule virheilmoituksia), niin silloin muodostuu tiedosto Kertoma1.class. Se suoritetaan komennolla > java Kertoma1 Muulloin ohjelma Kertoma1.java tulee ottaa johonkin tekstieditoriin ja korjata sitä. Korjauksen jälkeen mennään vaiheeseen 2. Huom. Jos path-määreessä (tai ympäristömuuttujassa) ei ole polkua siihen hakemistoon, missä tiedostot javac.exe ja java.exe sijaitsevat, tulee yllä kirjoittaa ko. komentojen eteen myös polku 8 Ks. myös seuraava path-määrettä koskeva Huom. 18

19 (esim 9. C:\Program Files\Java\jdk1.8.0\bin\javac Kertoma1.java). Helpompi tapa on tietenkin asettaa path-määre 10. Se voidaan asettaa pysyvästi muuttamalla path-ympäristömuuttujaa tai antaa vastaava käsky komentotulkissa: esim. path C:\Program Files\Java\jdk1.8.0\bin, jolloin komennot javac ja java toimivat oletpa missä hakemistossa tahansa. Huom. Jos Java-systeemisi ei toimi, niin syynä tähän on puutteelliset path- tai classpathmääritykset. Näiden asettamisesta annetaan ohjeet kurssisivuillamme. DrJavassa voi valita alhaalta Interactions, jolloin näkyy >. Tässä voi suorittaa ohjelmia samaan tapaan kuin komentoriviltä. Lisäksi tähän voi kirjoittaa Javan-lauseita ja saada välittömästi palautteen: esim. > int a = 10; > int b = a*a; > b 100 Tämä on näppärä ja nopea tapa testata lauseiden toimintaa. 9 Huom. Tässä oletetaan, että koneessa on Java (eli JDK 8:n versio 0), joka installoituu hakemistoon C:\Program Files\Java\jdk Sen alla on hakemisto bin, jossa ovat ohjelmat javac.exe (ohjelman kääntäminen) ja java.exe (suoritus). Jos sinulla on eri versio, tulee hakemiston nimi muuttaa vastaavaksi. 10 Esim. Path c:\windows; c:\windows\command; C:\Program Files\Java\jdk1.8.0\bin (ja paljon muutakin) 19

20 Harjoitustehtävät Tehtävät 1-2 voi merkitä tehdyiksi, jos olet installoinut Javan ja DrJavan koneeseesi ja että sillä voi suorittaa Java-ohjelmia. Jos lähetät tehtäväsi, niin tehtävien 1-4 osalta riittää esittää kuvaruutukaappaukset tehtävien 3 ja 4 suorituksista. Tässä siis pitää näkyä, että ohjelmaa on muutettu ja suoritettu monta kertaa, jolloin nähdään myös, että asennukset on suoritettu oikein. DrJavan sijasta voit käyttää mitä tahansa kehitysympäristöä. Tässä käydään läpi vain perusasiat ja ensi viikolla harjoitellaan lisää ohjelmien suorittamista. Huom. Jos ohjelmaa käännettäessä saat virhelistan, niin korjaa niistä ensin ensimmäinen (tai pari ensimmäistä jos osaat) ja käännä ohjelmasi uudestaan. Nimittäin ensimmäisestä virhekohdasta aiheutuu yleensä useita virheilmoituksia ja näin ollen voit saada pitkän virhelistan, vaikka ohjelmassasi olisi vain yksi virhe! Asenna Java ja DrJava koneeseesi kurssisivuilla olevien ohjeiden mukaan. 3. Kirjoita luokka Kertoma1.java käyttäen DrJavaa kuten edellä on neuvottu. Laita rivinumerot näkyviin (DrJava: Edit/Preferences/Display Options ja laita ruksi kohtaan Show All Line Numbers). Tee tahallasi useita virheitä (jätä esim. puolipiste pois) ja tutki kääntäjän antamia virheilmoituksia. Kääntäjä antaa rivinumeron, jolla virhe esiintyy sekä myös kuvauksen virheestä. Korjaa virheet ja suorita toimiva ohjelma. Muuta ohjelmaasi (aseta esim. n=8), käännä ja suorita ohjelmasi uudestaan. 4. Kirjoita DrJavaa käyttäen uusi ohjelma, joka tulostaa kuvaruudulle tekstin "Hei ihminen, minä olen tietokone". Ohje: tallenna editorissa oleva ohjelma (Kertoma1) jollain nimellä (huom. iso alkukirjain) ja muuta luokan nimi vastaavasti. Tee sen jälkeen muutokset itse ohjelmakoodiin, käännä, 5. Vertaa Javan syntaksia verrattuna TTP I:n pseudokieleen TTP I-sivuilla olevan ViLLEn avulla. Valitse esimerkin kohdalla Rinnakkaisnäkymä ja valitse kieleksi Java. Kerro tärkeimmät eroavaisuudet. Huomaa tässä vaiheessa erityisesti: tyypin antaminen muuttujan esittelyn yhteydessä, asetuslauseessa käytettävä =, if-lauseen ja toistolauseiden muoto, funktion otsikkorivi, puolipisteiden käyttö. 20

21 VIIKKO 46 Peruskäsitteitä: tyypin käsite, perustyypit (kokonaisluvut, desimaaliluvut, looginen tieto ja merkkitieto) ja lausekkeet (aritmeettiset ja loogiset), asetuslause. Syöttötietojen antaminen ohjelmalle komentoriviltä ja luokkien Scanner ja OmaIO avulla. Opintomonisteen luku 2. Opintomoniste on tämän viikon asioiden osalta hyvin tarkka ja käsitteitä on paljon (ja luettavaa on paljon). Näin ollen voitkin pitää alla olevaa tämän viikon päämateriaalina ja siirry opintomonisteeseen vain tarpeen mukaan (jos et ymmärrä asiaa) tai jos niin alla kehotetaan. Huomaa, että voit kirjoittaa yksinkertaisia Java-ohjelmia, vaikka et ole tietoinen kaikista alla olevista yksityiskohdista, jos käytät vain tyyppejä int ja double, et yhdistele lausekkeeseen eri tyyppisiä arvoja ja käytät lausekkeissa sulkeita varmistaen näin, että lausekkeen osat lasketaan siinä järjestyksessä kuin haluat. Luvun asioita käsitellään yksinkertaisemmalla syöttörivillä (komentoriviparametrilla), joten sinun kannattaa lukea vastaava asia ensin alta. Myös opintomonisteen sivulla 33 olevan esimerkin voi tällä viikolla tarkastella hyvin kevyesti, mutta palaa siihen viimeisen viikon yhteydessä (esimerkki käydään läpi myös luentopäivällä). Luvussa 2 tarkastellaan myös taulukoita, mutta me tarkastelemme niitä paljon perusteellisemmin viikolla 50. Alustus Luvussa 2 esitetään Java-ohjelmoinnin peruskäsitteitä, joita ovat mm. tunnus eli tunniste (identifier), varattu sana, literaali eli vakio, muuttuja, muuttujan arvo, määrittely- eli näkyvyysalue, tyyppi, lause, asetus- eli sijoituslause, nimetty vakio, lauseke sekä operaattori. Java (kuten lähes kaikki imperatiiviset kielet) on vahvasti tyypitetty kieli: kaikkien ohjelmassa esiintyvien muuttujien tyyppi tulee aina ilmoittaa muuttujia esiteltäessä. Muuttujan tyyppi 11 kertoo sen millaista tietoa kyseiseen muuttujaan tallennetaan, ja lisäksi se määrittelee kyseisen muuttujan arvoalueen. Itse asiassa tyyppi määrittelee kaikki mahdolliset arvot mitä muuttuja voi saada arvokseen. Vakioiden (eli literaalien) tyyppi nähdään niiden esityksestä. Esimerkiksi 2 on kokonaislukuvakio (tyyppiä int), kun taas 2.0 on desimaalilukuvakio (tyyppiä double). Tyyppi edustaa alkiojoukkoa (arvoja, joita ko. tyyppisiin muuttujiin voidaan asettaa). Kahdenlaisia tyyppejä: a) perustyypit b) oliotyypit. 11 Kertaa TTP I-opintomonisteesta tyyppiä koskevat asiat. 21

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

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

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

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

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

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. 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

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

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

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

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

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

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa

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

Johdatus Ohjelmointiin

Johdatus Ohjelmointiin Johdatus Ohjelmointiin Syksy 2006 Viikko 2 13.9. - 14.9. Tällä viikolla käsiteltävät asiat Peruskäsitteitä Kiintoarvot Tiedon tulostus Yksinkertaiset laskutoimitukset Muuttujat Tiedon syöttäminen Hyvin

Lisätiedot

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen Pedacode Pikaopas Java-kehitysympäristön pystyttäminen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Windowstyöasemalle asennetaan Java-ohjelmoinnissa tarvittavat työkalut, minkälaisia konfigurointeja

Lisätiedot

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

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Sisällys 3. Pseudokoodi Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: Valinta if- ja if--rakenteilla. oisto while-, do-while- ja for-rakenteilla. 3.1 3.2 Johdanto

Lisätiedot

14. Hyvä ohjelmointitapa 14.1

14. Hyvä ohjelmointitapa 14.1 14. Hyvä ohjelmointitapa 14.1 Yleistä Ohjelman elinkaari ei tyypillisesti pääty sen toteuttamiseen; ohjelmaa voidaan käyttää ja ylläpitää jopa vuosikymmeniä. Jotta koodin muuttaminen on mahdollista, sen

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

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

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

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

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

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

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

Lisätiedot

13. Hyvä ohjelmointitapa (osa 1) 13.1

13. Hyvä ohjelmointitapa (osa 1) 13.1 13. Hyvä ohjelmointitapa (osa 1) 13.1 Yleistä Ohjelman elinkaari ei tyypillisesti pääty sen toteuttamiseen tarvitaan ylläpitoa. Jotta koodin muuttaminen on mahdollista, on sen oltava myös muidenkin kuin

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. 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

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

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3 15. Lohkot 15.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.2 Lohkot Aaltosulkeet

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

8. Näppäimistöltä lukeminen 8.1

8. Näppäimistöltä lukeminen 8.1 8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)

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 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen

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

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

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 perusteita

Java-kielen perusteita Java-kielen perusteita Toistorakenne (while, do-while, for) 1 While- lause while-lauseen rakenne on seuraava: while (ehtolauseke) lause Kun ehtolausekkeen arvo on totta, lause suoritetaan. Lause suoritetaan

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

Lisätiedot

Muuttujien roolit Kiintoarvo cin >> r;

Muuttujien roolit Kiintoarvo cin >> r; Muuttujien roolit Muuttujilla on ohjelmissa eräitä tyypillisiä käyttötapoja, joita kutsutaan muuttujien rooleiksi. Esimerkiksi muuttuja, jonka arvoa ei muuteta enää kertaakaan muuttujan alustamisen jälkeen,

Lisätiedot

7. Näytölle tulostaminen 7.1

7. Näytölle tulostaminen 7.1 7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio

Lisätiedot

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 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

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

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

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Käyttäjän kanssa keskusteleva ohjelma 1 Kirjoittaminen konsolinäkymään //Java ohjelma, joka tulostaa konsoli-ikkunaan public class HeiMaailma { public void aja() { // kirjoitus ja

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

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

8. Näppäimistöltä lukeminen 8.1

8. Näppäimistöltä lukeminen 8.1 8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)

Lisätiedot

P e d a c o d e ohjelmointikoulutus verkossa

P e d a c o d e ohjelmointikoulutus verkossa P e d a c o d e ohjelmointikoulutus verkossa Java-kielen perusteet Teoria ja ohjelmointitehtävät Java-kielen perusteet 3 YLEISKATSAUS KURSSIN SISÄLTÖIHIN 10 JAVA-KIELEN PERUSTEET 10 OPISKELUN ALOITTAMINEN

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

11. Javan valintarakenteet 11.1

11. Javan valintarakenteet 11.1 11. Javan valintarakenteet 11.1 Sisällys If- ja if-else-lauseet. Orpo else. Valintaa toisin: switch-lause. 11.2 If-lause Merkitään varatulla sanalla if. Kuvaa yksisuuntaisen päätöksen: rakenteen lauseet

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

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3 16. Lohkot 16.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 16.2 Lohkot Kaarisulut

Lisätiedot

Ohjelmoinnin perusteet, syksy 2006

Ohjelmoinnin perusteet, syksy 2006 Ohjelmoinnin perusteet, syksy 2006 Esimerkkivastaukset 1. harjoituksiin. Alkuperäiset esimerkkivastaukset laati Jari Suominen. Vastauksia muokkasi Jukka Stenlund. 1. Esitä seuraavan algoritmin tila jokaisen

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if 3 Lauseet Lue kirjasta s. 54-84 Tämän osan sisältö Ehdollinen lause if Looginen lauseke vertailut AND-operaattori &&, & OR-operaattori, NOT-operaattori! Valintalause switch Toistolauseet while for do while

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

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

Metodien tekeminen Javalla

Metodien tekeminen Javalla 1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.

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

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

// Tulostetaan double-tyyppiseen muuttujaan hinta tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf(%.1f euros. Lue kukin tehtävänanto huolellisesti ja kokonaisuudessaan ennen kuin aloitat vastaamisen. Kustakin tehtävästä voi saada 0 6 pistettä. Tentin läpipääsyraja on 12 / 24 pistettä. Ratkaisut palautetaan WETO-järjestelmään

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 21.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 21.1.2009 1 / 32 Tyypeistä Monissa muissa ohjelmointikielissä (esim. Java ja C) muuttujat on määriteltävä ennen

Lisätiedot

Tutoriaaliläsnäoloista

Tutoriaaliläsnäoloista Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus

Lisätiedot

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python 8. marraskuuta 2010 Ohjelmointi Perusteet Peruskäsitteitä Olio-ohjelmointi Pythonin alkeet Esittely Esimerkkejä Muuttujat

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Ohjelmointi 1 / 2009 syksy Tentti / 18.12 Tentti / 18.12 Vastaa yhteensä neljään tehtävään (huomaa että tehtävissä voi olla useita alakohtia), joista yksi on tehtävä 5. Voit siis valita kolme tehtävistä 1 4 ja tehtävä 5 on pakollinen. Vastaa JOKAISEN

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

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

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi 1 Javan perusteet Ohjelmointi IPO-malli Java lähdekoodista suoritettavaksi ohjelmaksi Vakio Muuttuja Miten Javalla näytetään tietoa käyttäjälle, miten Javalla luetaan käyttäjän antama syöte Miten Javalla

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 1.3.2010 1 / 36 Monikko Monikko (engl. tuple) muistuttaa listaa, mutta monikon sisältöä ei voi muuttaa sen jälkeen,

Lisätiedot

2 Konekieli, aliohjelmat, keskeytykset

2 Konekieli, aliohjelmat, keskeytykset ITK145 Käyttöjärjestelmät, kesä 2005 Tenttitärppejä Tässä on lueteltu suurin piirtein kaikki vuosina 2003-2005 kurssin tenteissä kysytyt kysymykset, ja mukana on myös muutama uusi. Jokaisessa kysymyksessä

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python 31. tammikuuta 2009 Ohjelmointi Perusteet Pythonin alkeet Esittely Esimerkkejä Muuttujat Peruskäsitteitä Käsittely

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

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

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

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

Luento 5. Timo Savola. 28. huhtikuuta 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke

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

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

etunimi, sukunimi ja opiskelijanumero ja näillä

etunimi, sukunimi ja opiskelijanumero ja näillä Sisällys 1. Algoritmi Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.1 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

1. Algoritmi 1.1 Sisällys Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. Muuttujat ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.

Lisätiedot

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin Raimo Nikkilä Aalto-yliopiston sähkötekniikan korkeakoulu - Automaation tietotekniikan tutkimusryhmä 17. tammikuuta 2013

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

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

C-ohjelmoinnin peruskurssi. Pasi Sarolahti C! C-ohjelmoinnin peruskurssi Pasi Sarolahti Mitä haluan oppia C-kurssilla? ja miksi? Tutustu lähimpään naapuriin Keskustelkaa miksi halusitte / jouduitte tulemaan kurssille 3 minuuttia è kootaan vastauksia

Lisätiedot

MITÄ JAVASCRIPT ON?...3

MITÄ JAVASCRIPT ON?...3 JavaScript MITÄ JAVASCRIPT ON?...3 YLEISTÄ JAVASCRIPTIN SYNTAKSISTA...3 KÄSKYSANAT JA MUUT VARATUT SANAT...3 MUUTTUJIEN, FUNKTIOIDEN JA LUOKKIEN NIMISSÄ...3 HTML-TAGEIHIN VIITTAAVISSA METODINIMISSÄ...3

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2018-2019 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

1. Olio-ohjelmointi 1.1

1. Olio-ohjelmointi 1.1 1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja

Lisätiedot

TAITAJA 2007 ELEKTRONIIKKAFINAALI 31.01-02.02.07 KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

TAITAJA 2007 ELEKTRONIIKKAFINAALI 31.01-02.02.07 KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro: KILPAILIJAN TEHTÄVÄT Kilpailijan nimi / Nro: Tehtävän laatinut: Hannu Laurikainen, Deltabit Oy Kilpailutehtävä Kilpailijalle annetaan tehtävässä tarvittavat ohjelmakoodit. Tämä ohjelma on tehty laitteen

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

Python-ohjelmointi Harjoitus 2

Python-ohjelmointi Harjoitus 2 Python-ohjelmointi Harjoitus 2 TAVOITTEET Kerrataan tulostuskomento ja lukumuotoisen muuttujan muuttaminen merkkijonoksi. Opitaan jakojäännös eli modulus, vertailuoperaattorit, ehtorakenne jos, input-komento

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 13.9.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 13.9.2017 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

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

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

Harjoitus 5 (viikko 48)

Harjoitus 5 (viikko 48) Moni tämän harjoituksen tehtävistä liittyy joko suoraan tai epäsuorasti kurssin toiseen harjoitustyöhön. Harjoitustyö edistyy sitä paremmin, mitä enemmän tehtäviä ratkaiset. Mikäli tehtävissä on jotain

Lisätiedot