Ohjelmointi 1 / syksy 2007. Ensimmäinen luento. Paavo Nieminen.



Samankaltaiset tiedostot
Ohjelmointi 1 / syksy Ensimmäinen luento. Paavo Nieminen.

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

19/20: Ikkuna olio-ohjelmoinnin maailmaan

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ohjelmointi 2 / 2010 Välikoe / 26.3

17/20: Keittokirja IV

Ohjelmistotekniikan menetelmät, koe

Matematiikan tukikurssi

Empatiaosamäärä. Nimi: ********************************************************************************

1 Tehtävän kuvaus ja analysointi

Sähköpostiohjeet. Tehokas ja huoleton sähköposti

7/20: Paketti kasassa ensimmäistä kertaa

Perusopetuksen aamu- ja iltapäivätoiminnan laadun arviointi 2016 Västankvarns skola/ Tukiyhdistys Almus ry.

5/20: Algoritmirakenteita III

Osion kaksi kertaus. Jukka Juslin. Jukka Juslin

8/20: Luokat, oliot ja APIt

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

- Kommentoi koodisi. Koodin kommentointiin kuuluu kuvata metodien toiminta ja pääohjelmassa tapahtuvat tärkeimmät toiminnat. Esim.

1. Olio-ohjelmointi 1.1

MUUTOS 14! - Sosiaaliset kriteerit julkisissa hankinnoissa!

Johdatus diskreettiin matematiikkaan Harjoitus 7,

13/20: Kierrätys kannattaa koodaamisessakin

Ohjelmistojen mallintaminen, syksy 2011, laskuharjoitus 2

Mihin kotityöpalvelu perustuu asiakkaan kanssa tehtyyn sopimukseen

Metodien tekeminen Javalla

KiVa Koulu tilannekartoituskysely 2016 sivu 1/31. KiVa Koulu tilannekartoituskysely 2016 sivu 2/31. KiVa Koulu tilannekartoituskysely 2016 sivu 3/31

Mielestämme hyvä kannustus ja mukava ilmapiiri on opiskelijalle todella tärkeää.

360 asteen kuvan tekeminen

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

OHJ-1151 Ohjelmointi IIe

9. Periytyminen Javassa 9.1

Luokat ja oliot. Ville Sundberg

Havaintokanavat. Visuaalinen Auditiivinen Kinesteettinen

IV-kuntotutkimushanke_tutkijat

Tytöt LVI-alalla - Perusraportti

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

Kokemusasiantuntijan tarina. Kasvamista kokemusasiantuntijaksi

Metodien tekeminen Javalla

II- luento. Etiikan määritelmiä. Eettisen ajattelu ja käytänteet. 1 Etiikka on oikean ja väärän tutkimusta

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Miksi kysyttäisiin sosiaalityön asiakkailta?

Tietotekniikan valintakoe

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

Isännän Ääni- Seuraseminaari. Kokkola SJK - juniorit

Syksyn aloituskampanjat lippukunnissa

Ohjelmoinnin peruskurssien laaja oppimäärä

Työtapaturman ilmoittaminen 2016-> Uusi sähköinen lomake, täyttäminen esimies ja palkkahallinto

Esiopetuksen arvot. Arvokysely tammikuu 2015

Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Ta

VIESTINNÄN TYÖKALUPAKKI AUKI

Kolme pientä opinto-ohjaajaa ja suuren suuri lukio

Ohjelmistojen mallintaminen, mallintaminen ja UML

Rohkean brändääjän ABC

4. Lausekielinen ohjelmointi 4.1

P A R T. Professional Assault Response Training Seppo Salminen Auroran koulu. Valtakunnalliset sairaalaopetuksen koulutuspäivät

Info B2: Global Mindedness -kysely. Muuttaako vaihto-opiskelu opiskelijoiden asenteita ja voiko muutosta mitata? Irma Garam, CIMO

Molemmille yhteistä asiaa tulee kerralla enemmän opeteltavaa on huomattavasti enemmän kuin englannissa

Ndoromo Owen Suomen Punainen Risti Vaasan suomalainen osasto. Miten kotoutua maahanmuuttajasta kuntalaiseksi?

Huomaathan, että ohjeessa olevat näytöistä otetut kuvat voivat poiketa sinun koulutuksesi vastaavien sivujen kuvista.

2.2 Täydellinen yhtälö. Ratkaisukaava

Matematiikan tukikurssi 3.4.

Tietorakenteet (syksy 2013)

Ohjelmoinnin perusteet Y Python

Ohje PhotoPortaalin käytöstä

Mikä yhteyssuhde on?

Aluksi Kahden muuttujan lineaarinen epäyhtälö

Ohjelmoinnin jatkokurssi, kurssikoe

11/20: Konepelti auki

12. Javan toistorakenteet 12.1

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

11. Javan toistorakenteet 11.1

12. Javan toistorakenteet 12.1

Marjan makuisia koruja rautalangasta ja helmistä -Portfolio

YHTEYSSUHDE (assosiation)

Työssäoppiminen , Fuengirola

OHJELMISTOKEHITYS -suuntautumisvaihtoehto

T Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

Käyttöjärjestelmät: Virtuaalimuisti

Tieto- ja viestintätekniikan opinnot Jyväskylän yliopistossa. Humanistinen tiedekunta Syksy 2014 Tanja Välisalo

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

Tieto- ja viestintätekniikan opinnot Jyväskylän yliopistossa. Humanistinen tiedekunta Syksy 2015 Tanja Välisalo

lähteitä, mitä kirjoittaja on käyttänyt. Ja meille on helpompi nähdä ne, kun me jatkossa tutkimme evankeliumeja.

Jypelin käyttöohjeet» Ruutukentän luominen

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

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

Ohjelmoinnin perusteet, syksy 2006

Meneekö viesti perille?

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

Sähkökaupan eettiset säännöt ( 5 )

Java kahdessa tunnissa. Jyry Suvilehto

Strategia, johtaminen ja KA. Virpi Einola-Pekkinen

13. Loogiset operaatiot 13.1

Digimuutoksen 10 haastetta. DIGISALONKI Tuomo Luoma

Ohjelmointi 1 / syksy /20: IDE

Olio-ohjelmointi Javalla

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Transkriptio:

Ohjelmointi 1 / syksy 2007 Ensimmäinen luento Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/32

Luennon suorittava Java-ohjelma / L e i k k i m i e l i n e n " ohjelma ", joka t o i m i i " l u e n t o k a l v o i n a " O h j e l m o i n t i 1 k u r s s i n ensimmäisellä l u e n n o l l a. @author Paavo Nieminen @version 0.1 / public class EkaLuentoOhjelma { public static void main ( S t r i n g [ ] args ) { Y l i o p i s t o K u r s s i ohj1 = new O h j e l m o i n t i Y k s i K u r s s i ( ) ; ohj1. toteutaluento ( 1 ) ; / / FIXME : Ei v i e l ä t o t e u t a luentoa numero 2: / / ohj1. toteutaluento ( 2 ) ; } } Ohjelmointi 1 / syksy 2007 p.2/32

Tietty kurssi Javalla mallinnettuna / Tämä on j o h d a n t o k u r s s i o h j e l m o i n n i s t a. / public class O h j e l m o i n t i Y k s i K u r s s i extends Y l i o p i s t o K u r s s i implements VerkkoKurssi, LukioonSoveltuva { } / Oletuksena syksyn 2007 k u r s s i k e r r a n kokoonpano / public O h j e l m o i n t i Y k s i K u r s s i ( ) {... } public void toteutaluento ( int luennonnumero ) {... } public void taukominuutteja ( double m) {... } public void a r v o s t e l e ( ) {... }... HUOM: Kolme pistettä... ohjelmalistauksessa tarkoittaa usein, että tässä kohtaa on oikeasti paljon muutakin, mutta juuri nyt ei olla tarkemmin kiinnostuneita juuri siitä. Ohjelmointi 1 / syksy 2007 p.3/32

Abstrakti yliopistokurssi ( yläkäsite Ohjelmointi 1:lle) / K a i k i l l e y l i o p i s t o k u r s s e i l l e y h t e i s e t ominaisuudet. / public abstract class Y l i o p i s t o K u r s s i { public static final int MAX_ARVOSANA = 5; public static final int MIN_ARVOSANA = 1; protected double opintopistemaara ; protected Henkilo l u e n n o i t s i j a ; protected Henkilo [ ] t u n t i o p e t t a j a t ; protected Henkilo [ ] o p i s k e l i j a t ; protected double [ ] o p i s k e l i j o i d e n T e n t t i p i s t e e t ; } public abstract void a r v o s t e l e ( ) ; public abstract void toteutaluento ( int monesko ) ; HUOM: Entä SUOR/HYL -arvostelu? Onko mahdollista?? Ohjelmointi 1 / syksy 2007 p.4/32

Suorittaminen alkakoon! 1 / 2 L e i k k i m i e l i n e n " ohjelma ", joka t o i m i i " l u e n t o k a l v o i n a " 3 O h j e l m o i n t i 1: n ensimmäisellä l u e n n o l l a. ÄLÄ MIETI l i i k a a! 4 Pidä t ä t ä ihan t a v a l l i s e n a kalvoesityksenä, joka näyttää 5 vähän kummalta... 6 @author Paavo Nieminen 7 @version 0.1 8 / 9 public class EkaLuentoOhjelma { 10 public static void main ( S t r i n g [ ] args ) { 11 Y l i o p i s t o K u r s s i ohj1 = new O h j e l m o i n t i Y k s i K u r s s i ( ) ; 12 ohj1. toteutaluento ( 1 ) ; 13 } 14 } HUOM: Rivinumerot eivät kuulu ohjelmaan, mutta ne helpottavat selittämistä. Ohjelmointi 1 / syksy 2007 p.5/32

Kurssiyksilö muodostuu suorittamalla tarvittava alustus! 1 public class O h j e l m o i n t i Y k s i K u r s s i extends Y l i o p i s t o K u r s s i 2 implements VerkkoKurssi, LukioonSoveltuva { 3 4 / Oletuksena muodostetaan syksyn 2007 k u r s s i n kokoonpano / 5 public O h j e l m o i n t i Y k s i K u r s s i ( ) { 6 l u e n n o i t s i j a = Jyu. henkkuntanimella ( "Paavo Nieminen" ) ; 7 8 t u n t i o p e t t a j a t = new Henkilo [ 4 ] ; 9 t u n t i o p e t t a j a t [ 0 ] = Jyu. henkkuntanimella ( "Jarmo Ernvall " ) ; 10 t u n t i o p e t t a j a t [ 1 ] = Jyu. o p i s k e l i j a N i m e l l a ( " Joel Lehtonen" ) 11 t u n t i o p e t t a j a t [ 2 ] = Jyu. o p i s k e l i j a N i m e l l a ( "Juho Tamminen" ) 12 t u n t i o p e t t a j a t [ 3 ] = Jyu. o p i s k e l i j a N i m e l l a ( " Irene Venäläine 13 14 o p i s k e l i j a t = Jyu. k e t k a K u r s s i l l a ( " Ohjelmointi 1 syksy 2007 15 opintopistemaara = 6. 0 ; 16 } Ohjelmointi 1 / syksy 2007 p.6/32

Suorittaminen jatkuu... Tapahtuu luento! Muistetaan suoritusjärjestys: ensin piti muodostaa kurssi (1. rivi) Sen jälkeen voi pyytää kurssin tarjoamaa palvelua, luennon numero 1 toteuttamista: Y l i o p i s t o K u r s s i ohj1 = new O h j e l m o i n t i Y k s i K u r s s i ( ) ; ohj1. toteutaluento ( 1 ) ;... ja OhjelmointiYksiKurssi sitten toteuttaa luennon... 17 public void toteutaluento ( int luennonnumero ) { 18 if ( luennonnumero == 1 ) { 19 l u e n n o i t s i j a. e s i t t e l e I t s e s i ( ) ; 20 l u e n n o i t s i j a. otaopetettavaksi ( o p i s k e l i j a t ) ; 21 l u e n n o i t s i j a. virittaydytunnelmaan ( " Ohjelmointi 1, s07" 22 23 l u e n n o i t s i j a. kerroaiheesta ( "Kurssin kuvaus" ) ; 24 l u e n n o i t s i j a. kerroaiheesta ( " Suoritusvaatimukset" ) ; 25 l u e n n o i t s i j a. kerroaiheesta ( " Arvostelu " ) ; 26 l u e n n o i t s i j a. kerroaiheesta ( " Aikataulu " ) ; Ohjelmointi 1 / syksy 2007 p.7/32

(jatkoa edellisestä.) 27 l u e n n o i t s i j a. kerroaiheesta ( "Demot" ) ; 28 l u e n n o i t s i j a. kerroaiheesta ( " Harjoitustyö " ) ; 29 l u e n n o i t s i j a. kerroaiheesta ( " Oikotiet / tenttiminen " ) ; 30 31 for ( Henkilo t u n t i o p e : t u n t i o p e t t a j a t ) { 32 t u n t i o p e. e s i t t e l e I t s e s i ( ) ; 33 } 34 35 l u e n n o i t s i j a. vastaakysymyksiin ( ) ; 36 taukominuutteja ( 1 5. 0 ) ; Ohjelmointi 1 / syksy 2007 p.8/32

(jatkoa edellisistä.) 38 l u e n n o i t s i j a. kerroaiheesta ( " Mitä on ohjelmistotyö " ) ; 39 l u e n n o i t s i j a. kerroaiheesta ( " Mitä on ohjelmointi " ) ; 40 l u e n n o i t s i j a. kerroaiheesta ( "Tämän kurssin r o o l i " ) ; 41 l u e n n o i t s i j a. kerroaiheesta ( " Opittavat k ä s i t t e e t " ) ; 42 l u e n n o i t s i j a. kerroaiheesta ( " Yleiskuva kurssin luennois 43 l u e n n o i t s i j a. kerroaiheesta ( "Toimintaympäristömme" ) ; 44 l u e n n o i t s i j a. kerroaiheesta ( "Tämän viikon kotitehtävät " 45 l u e n n o i t s i j a. vastaakysymyksiin ( ) ; 46 l u e n n o i t s i j a. k i i t a J a P o i s t u ( ) ; 47 } 48 } HUOM: Vaikka Java-ohjelmana ensimmäinen luento päättyisi näin, todellisessa maailmassa jatketaan vielä yhteenvedolla, jos suinkin jää aikaa. Ohjelmointi 1 / syksy 2007 p.9/32

Ohjelma on päättynyt. Sovellusohjelmassa oli kaksi riviä, jotka on nyt suoritettu: 1 / 2 L e i k k i m i e l i n e n " ohjelma ", joka t o i m i i " l u e n t o k a l v o i n a " 3 O h j e l m o i n t i 1: n ensimmäisellä l u e n n o l l a. ÄLÄ MIETI l i i k a a! 4 Pidä t ä t ä ihan t a v a l l i s e n a kalvoesityksenä, joka näyttää 5 vähän kummalta... 6 @author Paavo Nieminen 7 @version 0.1 8 / 9 public class EkaLuentoOhjelma { 10 public static void main ( S t r i n g [ ] args ) { 11 Y l i o p i s t o K u r s s i ohj1 = new O h j e l m o i n t i Y k s i K u r s s i ( ) ; 12 ohj1. toteutaluento ( 1 ) ; 13 } 14 } Ohjelmointi 1 / syksy 2007 p.10/32

Tehdään yhteenveto ja huomioita. Vaikka tavoite oli puhtaasti olla kalvosarja, kaikki Java-ohjelmointikielellä kirjoitettu toimii ohjelmana, joka voidaan suorittaa tietokoneella. ( näytetäänpä esimerkki videoscreenillä) Ohjelma on yksi tapa ilmaista asioita täsmällisesti. Eritoten ohjelmalla voi kuvata asioiden tapahtumista jossain järjestyksessä joidenkin tapahtumien (tai kuten meilläpäin sanotaan, syötteiden) ilmetessä. Ohjelmointi 1 / syksy 2007 p.11/32

Näkökulma ohjelmointiin: mallintaminen Ohjelma voi olla malli reaalimaailmasta eli ns. jonkinlainen simulaattori. On vaikea edes keksiä ohjelmaa, joka ei olisi malli jostakin joko todellisesta tai epätodellisesta sydeemistä, esim: pelit ovat malleja virtuaalimaailmoista pankkijärjestelmät ovat malleja tileistä, asiakkaista, rahavirroista ym. musiikkisoftat ovat malleja nuoteista, instrumenteista, reaalimaailman ääni-ilmiöistä ym. Silloin ohjelma on useimmiten epätäydellinen ja/tai epätarkka verrattuna todellisuuteen. Mallit useimmiten ovat! Siltä ei voi välttyä! Ohjelmointi 1 / syksy 2007 p.12/32

Ohjelmointikielen rooli Ohjelmointikielellä ilmaiseminen on vain yksi tapa esittää malli. Se on tarkin esitysmuoto ohjelmalle ja siinäpä sen vaikeus onkin... Jotta yksityiskohtainen ohjelma on mahdollista kirjoittaa tai ymmärtää, täytyy sitä ensin pohtia jollain yksinkertaisemmilla tavoilla! Suoraan ohjelmointikieleen ei ole mahdollista hypätä (paitsi triviaaleissa ohjelmissa, joista ei ole kunnon hyötyä kenellekään... )! Ohjelmointikieli on välttämätön, koska tieto(kone)järjestelmä ymmärtää vain sellaista. Silti ohjelmointi on paljon enemmän kuin kieli! Sanoisin, että ohjelmointi on eräänlainen Ohjelmointi 1 / syksy 2007 p.13/32

Malli on näkymä ohjelmaan. Ohjelmointikieli on siis tarkin mahdollinen malli. Mitä yksinkertaisempaa/yleispätevämpää on? Vain pari esimerkkiä: Algoritmimallit (esitys esim. pseudokoodina ) Oliomallit (luokittelu, luodut yksilöt) Tapahtumien järjestyksen ja osallistujien kuvaukset Käyttöliittymäkuvaukset (esim. screenshotit ) Järjestelmämallit (mukana ihmiset, laitteet, tietovarastot, kommunikaatio,... ) HUOM: Olennaista on osata mallin asteittainen tarkentaminen: Ensin karkea malli, sitten hienojakoisempi ja hienojakoisempi... lopulta ohjelmointikieltä... mutta vasta lopulta! Ohjelmointi 1 / syksy 2007 p.14/32

Näyttäisinkö esimerkkejä mallinnuksesta? Vaikeus: Pitäisi kuulemma välttää perinteistä yliopistovirhettä, että asioiden esitys menee yli hilseen... Tarkoitus on oppia vain ohjelmoimaan, joten kannattaako edes näyttää mitään muuta? Luennoitsijan näkemys 1: abstraktit esitysmuodot on nimenomaan kehitetty yksinkertaistamaan mm. ohjelmien ymmärtämistä! Niitä katsomalla pitäisi kenen tahansa vastaantulijan tajuta... ainakin jotain... Mm. siksi ne ovat paljolti kuvallisia ja jättävät kertomatta paljon yksityiskohtia. Ohjelmointi 1 / syksy 2007 p.15/32

Näyttäisinkö sittenkään esimerkkejä? Luennoitsijan näkemys 2: Ohjelmointitaito on välttämätön näiden kuvien piirtämiselle ja ns. täydelliselle ymmärtämiselle, mutta ei niiden katsomiselle. Luennoitsijan oletus: Näiden katselu tukee ja helpottaa (mutta ei yksinään tee mahdolliseksi!) ohjelmoinnin oppimista Fakta: Näiden mallien syvällinen merkitys ja se, miten näitä kannattaa tehdä, on ehdottomasti jatkokurssien asia (mm. Oliokeskeinen tietojärjestelmien kehittäminen, Johdatus ohjelmistotekniikkaan,... ). Ohjelmointi 1 / syksy 2007 p.16/32

Taidanpa siis näyttää vähän kuvia... Aika paljon IT-opinnoista tulee pyörimään näiden parissa, joten mielelläni otan ne mukaan heti aluksi! Ohjelmointi 1 / syksy 2007 p.17/32

Esim: Moduulijakokaavio Ohjelmointi 1 / syksy 2007 p.18/32

Esim: Luokkakaavio Ohjelmointi 1 / syksy 2007 p.19/32

Esim: Oliokaavio Ohjelmointi 1 / syksy 2007 p.20/32

Esim: Sekvenssikaavio Tämä on varmaan viimeinen sekvenssikaavio Ohjelmointi 1 -kurssilla, koska emme pääse olioiden välisten toimenpiteiden suunnitteluun vielä juurikaan käsiksi... Ohjelmointi 1 / syksy 2007 p.21/32

Esim: Käyttötapauskaavio Ohjelmointi 1 / syksy 2007 p.22/32

Esim: Pseudokoodi mitä se on Tarkoituksella ei puhtaasti ohjelmointikieltä Kuitenkin rakenteeltaan vastaavaa + riittävän täsmällistä Voi kirjoittaa lähes siten kuin jotakin tuntemaansa ohjelmointikieltä Tavoite 1: kuka tahansa ohjelmointitaitoinen ymmärtää, vaikkei osaisikaan nimenomaan samoja ohjelmointikieliä kuin kirjoittaja Tavoite 2: ohjelmointitaitoinen osaa toteuttaa itse tuntemallaan kielellä Ohjelmointi 1 / syksy 2007 p.23/32

Esim: Pseudokoodi mihin soveltuu Pseudokoodi on hyvä kommunikointikeino ohjelmoinnillisten ideoiden siirtoon. Se on myös suhteellisen täsmällinen tapa kirjoittaa algoritmi. Suositeltava vaihe algoritmin suunnittelussa ennen ohjelmointia Esimerkki: Kirjoita pseudokoodina, miten koordinoidaan, että jokainen opettaja vastaa kaikkien opiskelijoiden kaikkiin kysymyksiin. Seuraavalla kalvolla pseudokoodissa on sukkelasti sekaisin ainakin ohjelmointikieliä Python, Java, C, Pascal sekä epämääräistä suomen kieltä; se on siis tosi pseudoa koodia.)... Ohjelmointi 1 / syksy 2007 p.24/32

Esim: Pseudokoodi Funktio vastauskaikkiinkysymyksiin : / Oletetaan, e t t ä on h e n k i l ö i t ä s i s ä l t ä v ä t rakenteet : o p i s k e l i j a t [ ] j a o p e t t a j a t [ ] / for each o p i s k e l i j a in o p i s k e l i j a t [ ] do : kysymykset [ ] := p u r i s t a K y s y m y k s e t I r t i ( o p i s k e l i j a ) for each kysymys in kysymykset [ ] do : for each o p e t t a j a in o p e t t a j a t [ ] do : kommunikoivastaus ( kysymys, opettaja, o p i s k e l i j a ) / On j ä t e t t y v i e l ä tarkentamatta, miten kysymys p u r i s t e t a a n i r t i o p i s k e l i j a s t a. Vaikeampia osatehtäviä kannattaakin m i e t t i ä e r i l l i s i n ä, aina pienemmiksi o s a t e h t ä v i k s i pilkkoen. Samoin on j ä t e t t y tarkentamatta, miten vastaus kommunikoidaan o p i s k e l i j a l l e. Osatehtävät on k u i t e n k i n pseudokoodissa j o o i k e i l l a p a i k o i l l a a n! / Ohjelmointi 1 / syksy 2007 p.25/32

Esim: Algoritmi suomen kielellä Pseudokoodi on jo lähellä tietokonetoteutusta. Ennen pseudokoodia, on varmasti aina hyvä miettiä tehtävää parhaiten tuntemallaan kielellä, yleensä meilläpäin suomeksi. Esim: Tiskaaminen tarkemmin ajatellen on sitä, että 1) jos on vielä likaisia astioita, niin otan niistä seuraavan käteeni 2) harjaan sitä kunnes se ei ole likainen 3) laitan astian kuivumaan 4) siirryn seuraavaan likaiseen astiaan eli palaan kohtaan 1. Ohjelmointi 1 / syksy 2007 p.26/32

Esim: Raapustukset Kynä ja paperi näppiksen viereen! Jos voit piirtää, kirjoittaa tai tuhrata ruutupaperiin ihan mitä tahansa, joka auttaa sinua ajattelemaan ohjelmointiongelmaasi, TEE SE! Älä tuijota kuvaruutua vaan ajattele aivoilla, käsillä, jaloilla, millä se helpoiten vaan käy! Tartu näppikseen vasta kun on jotain kirjoitettavaa ohjelmointikielellä. Silloin sinulla on jo tärkein eli ajatus. Ohjelmointi 1 / syksy 2007 p.27/32

Missä määrin Ohj1:llä mallinnetaan Algoritmit, algoritmien tarkentaminen asteittain ja niiden ajatteleminen pseudokoodina on kurssin tärkein (oikeastaan AINOA) asia! Java on työkalumme; sen osaaminen tulee pakosti kaupan päälle. Java perustuu täysin olioiden hyödyntämiseen, joten olioita on ymmärrettävä. Ymmärrämme oliot alustavasti, mutta emme suunnittele niitä vielä! Ohj2, GKO, projektityöt Emme suunnittele järjestelmiä kurssit mallintamisesta ja järjestelmäsuunnittelusta (Oliokeskeinen tietojärjestelmien kehittäminen jne.) Kuitenkin ymmärrämme jokaisen ohjelman olevan tietynlainen (ääriyksinkertainen... ) järjestelmä Ohjelmointi 1 / syksy 2007 p.28/32

Säännöt on tehty rikottaviksi? Edellä sanottiin, että ensin pitää mallintaa ja sitten tehdä ohjelma... Siihen onkin syytä palata aina, kun jonkun ohjelman tekeminen tuntuu vaikealta! Mutta yksi ohjelmoinnin ilo on, että voit vaan kirjoitella ohjelmointikieltä, ja kokeilla mitä kivaa mikäkin tekee. Voit muokata ja vetjailla ohjelmaa mielin määrin, kunnes se ehkä toteuttaa ihan eri mallin kuin aluksi... Kunhan JATKUVASTI YMMÄRRÄT, mitä ohjelmasi tekee, miksi se tekee juuri niin, ja onko se riittävän hyvä tapa kulloiseenkin tarkoitukseesi!! Ei tätä oikein voi selittää sanoin yhdellä kerralla. Pitää vaan lähteä tekemään, tekemään ja tekemään tätä kurssia meidän kaikkien! Ohjelmointi 1 / syksy 2007 p.29/32

Yhteenveto Tämä oli shokkialoitus ohjelmointiin Hämmennys ja ihmettely on toivottu olotila ;) Ensi viikolla otetaan rauhallisempi lähtöruutu Herännee kysymys: mikä tässä kaikessa oli olennaista? Ohjelmointi 1 / syksy 2007 p.30/32

Olennaista oli Ohjelmointikieli on ainoa mitä tietokone ymmärtää Ohjelmointikieli on vain kieli kielien joukossa; joku hullu voi kuvata sillä vaikka luennon etenemisen aiheesta toiseen! Ohjelmointikieli on vain yksi monista perspektiiveistä nähdä tietokoneohjelma Jostain päästä aina aloitetaan: Ohjelmointi 1 keskittyy algoritmien tekemiseen, joka on kaiken ohjelmoinnin peruslähtökohta Suuri osa äsken nähdyistä asioista jätetään hautumaan tulevia kursseja varten. Ohjelmointi 1 / syksy 2007 p.31/32

Ensi viikolla nähdään! Tehkää ahkerasti demoja ja muistakaa myös ajatella. Ohjelmointi 1 / syksy 2007 p.32/32