Päivitetty 29.11.2015 Jorma Boberg

Näillä sivuilla olevaa materiaalia voi käyttää omilla kursseillaan, kunhan ilmoittaa lähteen omissa materiaaleissaan. Myös tätä sivua voi jakaa opiskelijoille.

Algoritmien ja ohjelmoinnin peruskurssi (5 op), 2015-2016


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 opintoviikkoina ja sen kesto, niin voimme arvioida, että opiskelijan tulisi käyttää tämän opintojakson opiskeluun keskimäärin n. 14 tuntia viikossa 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ä em. tuntimäärä vaihtelee hyvinkin paljon riippuen opiskelijasta.  

Huomaa, että käsitteet ovat hyvin tärkeitä. Ne tarkoittavat tarkasti määriteltyä asiaa tai ominaisuutta. Jaksolla TTP I 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.

Kurssiin kuuluu opintomoniste ja opiskeluopas. Opiskeluopas ohjaa opiskelun kulkua sisältäen viikottaisen ohjelman ja harjoitustehtävät, tarkentaa opintomonisteen tekstiä (ns. rautalankaa) ja sisältää lisäesimerkkejä. Aloita jokaisen viikon opiskelu lukemalla ensin opiskeluopasta. 

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 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). Opiskeluoppaassa on useita yksinkertaisempia esimerkkejä.


Opiskeluopas on tässä: pdf  ja  www (jotkut kuvat ja merkit näkyvät väärin). Opiskeluoppaan kansi on tässäTulosta aina pdf ja 2-puolisesti. Opiskeluopas sisältää myös ohjeet siitä miten Java-ohjelmia kirjoitetaan ja suoritetaan DrJavalla. Opintomoniste on saatavilla moodlessa AOP-foorumilla.
 

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. Ohjelmasi sisältää usein syntaktisia virheitä ja myös loogisia virheitä. Seuraavassa puhutaan yleisesti ohjelman testauksesta ja virheiden jäljittämisestä (sisältää videoklipin, josta on hyötyä ensimmäisen viikon tehtävissä).

Ohjelmien testaaminen koneella on erittäin tärkeätä. Kopioi siis oppaan ohjelmia tai malliratkaisuja ja testaa niiden toimintaa: Valitse ohjelma hiirellä, paina hiiren oikeata korvaa ja kopio teksti leikepöydälle. Käynnistä DrJava ja liitä (Paste) ohjelma. Tallenna se luokan nimellä ja laita ohjelman sisennykset kuntoon (jos kopioit www-versioista, myös sisennykset tulevat mukaan).  Jos siirrät pdf:stä, niin yleensä sisennykset häviävät. Jos taas siirrät rtf-tiedostoista (mallivastaukset), niin silloin lainausmerkit, + ja - merkit tulee joskus korjata käsin. Nämä kohdat tulevat esille luokan käännöksen yhteydessä. Tällöin kannattaa siirtää ohjelma ensin johonkin tavalliseen tekstieditoriin (esim. Notepad) ja sieltä DrJavaan, jolloin käsinkorjausta ei tarvitse tehdä.

 

Huom. Ensimmäisen viikon aikana jokaisen tulisi installoida koneeseensa Java ja ohjelmointiympäristö, jolla Java-ohjelmia voidaan kirjoittaa ja suorittaa (ja tästähän kertyy bonuksiakin!). On erittäin tärkeätä, että käytätte Javaa viikoittain.

 

Kurssiin liittyvät tärkeät linkit:

 

Javan kopiointi- ja asennusohjeet sekä Java-ohjelmien kehitysympäristöjä  (mm. DrJava ja NetBeans)

Havainnollistusohjelmaa Ville käytämme myös tällä kurssilla, mutta nyt esimerkit ovat erit kuin jaksolla TTP I. Sinun tulee rekisteröityä tälle kurssilla em. linkin ohjeiden mukaan (eli  TTP I-rekisteröityminen ei riitä).

Javan luokkakirjastojen (API) kuvaukset ovat koneessasi hakemistossa docs, jos olet installoinut myös dokumentoinnin ohjeiden mukaan. Ne ovat myös verkossa. Luokkakirjastojen toteutukset (koodit) löytyvät koneeltasi jdk-hakemistosta ja ne ovat tiedostossa src.zip ja täällä (tämä on 7-version). Niitä on hyödyllistä tutkia etenkin jakson OOP aikana.

Luokka OmaIO.java Kopioi (paina hiiren oikeata korvaa eo. linkin kohdalla) luokka OmaIO.java samaan hakemistoon, jossa säilytät Java-ohjelmiasi. Käännä se, jolloin muodostuu tiedosto OmaIO.class. Sen jälkeen saat käyttöösi alla kuvatut syöttö/tulostusmetodit. Luokan OmaIO sijasta voit tietenkin käyttää myös Javan valmisluokkaa Scanner (katso opiskeluopas). 

Luokan OmaIO metodien kuvaukset ja esimerkkejä niiden käytöstä.


Luentopäivä on 12.12.2015 klo 10:15- n. 14:30. Päivän sisältö on esitetty pääpiirteissään opiskeluoppaassa.  Päivällä jaetaan ja käsitellään tämä materiaali. Jotkut kohdat käsitellään hyvin lyhyesti ja materiaaliin tehdään laajennuksia sen mukaan mitä kysymyksiä nousee esille. Tutustu materiaaliin ennen luentopäivää. Materiaalissa olevat Tehtävät tarkoittavat opiskeluoppaan s. 85-86 tehtäviä. Jos et ollut luentopäivällä ja et osannut täyttää materiaalissa olevia tyhjiä kohtia, kysy niistä Moodlessa. Luentopäivä pidetään ICT-talossa  salissa beta (b) Joukahaisenkatu 3-5 eli sama paikka missä pidettiin jakson TTP I luentopäivä. Katso talon sijainti oheisesta kartasta (nuoli osoittaa sisäänkäynnin). Sali beta on samassa kerroksessa kuin aula ja salin sijainti löytyy aulan kartoista. Tässä on Turun kartta. Ulko-ovi on kiinni, mutta se tullaan avaamaan n. klo 10:13.  Tule ajoissa, koska 10:15 jälkeen ovi on kiinni.  Pidän kännykkäni (0452770593) auki klo 10:30 saakka, joten soita jos myöhästyt.  Huom. ICT-talon kahvila on kiinni, joten ota omat eväät mukaan. Tiloissa on automaatteja, joista saanee juotavaa.

Tentistä

Lisätehtäviä

Harjoitustehtävien malliratkaisut: Tulevat moodleen.  Jokaisen tulee kopioida niistä luokat omalle koneelleen ja tutkia/muuttaa/suorittaa ohjelmia. Näin ollen pelkät paperilla olevat ratkaisut eivät riitä.

Java kääntäjä tuottaa usein aikamoisen määrän syntaksivirheitä, jotka vielä kumuloituvat. Niinpä sinun kannattaa korjata kääntäjän antamasta virhelistasta muutama alkupään virhe ja kääntää ohjelma uudestaan. Kääntäjä antaa sen rivinumeron (laita editorissa rivinumerot näkyviin), jolla virhe sijaitsee ja kertoo mikä virhe ko. kohdassa on. Aluksi virheilmoituksia ei tahdo ymmärtää, joten seuraavan linkin takana on 'suomennettu' Java-virheilmoitusopas aloittelijoille, joka on taatusti hyödyllinen.

Luokka Scanner. Seuraavassa on Seija Lahtisen (Helia) ohjeet luokan Scanner käytöstä. Tätä materiaalia ei vaadita kokonaisuudessaan tällä kurssilla, mutta siitä saattaa löytyä käytännön apuja, jos sinulle tulee lukemisen kanssa ongelmia. Lopussa olevaa pitkää esimerkkiä ei voi tämän kurssin perusteella täysin ymmärtää. Materiaalissa on kuitenkin pieni virhe sivuilla 2 ja 3 kohdassa 2). Nimittäin syöttöpuskurin seuraava yhtenäinen merkkien jono (tokeni, joka siis päättyy white-space -merkkiin) pitää edustaa joko int-lukua (sivulla 2) tai double-lukua (sivulla 3). Esim. puskurissa ei saa olla esim. 5x, vaan numeron 5 jälkeen tulee olla white-space -merkki (esim. välilyönti tai enter).

 

Muita hyödyllisiä linkkejä:


Alla on joitakin hyviä linkkejä, joista voi olla apua opiskelussa. Huomaa kuitenkin, että tämän jakson materiaalit (opintomoniste ja opiskeluopas) ovat riittäviä ja niissä esitetään juuri ne asiat mitä tentissä vaaditaan. Näihin kannattaa tutustua!

Arto Wikla: Ohjelmoinnin perusteet Java-kielellä, Helsingin yliopiston Java-kurssin kirja. Sen käyttö on sallittu vain yksityishenkilöille opiskelutarkoituksissa. Sisältää myös NetBeans ohjeita.

Helsingin yliopiston Ohjelmoinnin perusteet 2013 Siellä on myös kurssimateriaali ja NetBeans ohjeita.

Helsingin yliopiston Ohjelmoinnin perusteet 2014. Siellä on myös kurssimateriaali ja NetBeans ohjeita.

Helsingin yliopiston Ohjelmoinnin perusteet 2015. Siellä on myös kurssimateriaali ja NetBeans ohjeita.

Helsingin teknillisen korkeakoulun Ohjelmoinnin peruskurssin sivut. Tämä kurssi sisältää myös paljon asioita meidän seuraavalta kurssilta OOP, joten nämä saattavat olla vaikealukuisia meidän AOP kurssilla. Katso linkki Luennot sopivilta osin.

Kirja: Simo Silander, Vesa Ollikainen, Juha Peltomäki: Java, ISBN: 978-951-0-36081-1. Julkaistu: 03/2010, Sivuja: 498. Kirjan painos on  loppu, mutta sitä löytynee kirjastoista. Kirja on aika hyvä, joskin kaikki asiat käsitellään lyhyesti ja pintapuolisesti verrattuna esim. meidän kurssimateriaaleihin. Näin ollen tämä kirja ei pelkästään riitä. Kirja on kuitenkin laaja ja se sisältää myös paljon tällä kurssilla ja myös kurssilla Olio-ohjelmoinnin perusteet käsittelemättömiä mutta tärkeitä asioita, mm. appletit ja grafiikkaohjelmointi, säikeet, Swing, servletit ja JSP, JDBC. Tätä voi käyttää sekä jaksolla AOP että OOP.

Edellä mainitusta kirjasta on olemassa vanhempi versio (2005): P. Kosonen, J. Peltomäki, S. Silander: Java 2. Tätä saa ehkä kirjastoista ja sekin on hyvä, mutta edellä mainittu on parempi aloittelijalle.

Sunin omilla sivuilla on melko hyvä tutorial, jossa esitetään Javan perusteet.