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