JOHDATUS OHJELMOINTIIN

Koko: px
Aloita esitys sivulta:

Download "JOHDATUS OHJELMOINTIIN"

Transkriptio

1 JOHDATUS OHJELMOINTIIN MAURI HEINONEN

2 Tiivistelmä Tässä oppaassa on käyty lävitse ohjelmoinnin perusteita, lähtien liikkeelle siitä, mitä ohjelmointi oikeastaan on ja mitä erilaiset termit ohjelmoinnissa tarkoittavat. Termeistä on selvitetty mitä ovat mm. muuttujat sekä algoritmit. Kaikenkaikkiaan oppaan tarkoitus on kuvata lukijoilleen se, mitä kaikkea ohjelman valmistus pitää sisällään. i

3 Sisältö 1 Johdanto 1 2 Mitä ohjelmointi on? 2 3 Kuinka ohjelmia tehdään? 3 4 Algoritmi 5 5 Ideasta algoritmiksi Asteittainen tarkentaminen Kontrollirakenteet Algoritmin testaaminen Algoritmista ohjelmaksi Yksinkertainen ohjelma Algoritmin kuvaus tavat Puoliohjelma Vuokaavio Tietokoneen sielunelämä 13 8 Mikä on ohjelmointikieli? Tietokoneen kielet Konekieli ja assembly-kieli Korkean tason kielet Monikieliset koneet Ohjelmointimenetelmiä Rakenteinen ohjelmointi Olio-ohjelmointi Ohjelmointia kuvilla Kieliä käyttäjille Makrokielet Neljännen sukupolven kielet Ohjelmistokomponentit Ohjelmointiin liittyviä termejä Funktiot ja aliohjelmat Muuttujat Muuttujan nimeäminen Muuttujan nimeämissäännöt Muuttujan tietotyyppi Muuttujan alustaminen Tyyppimuunnokset Ohjelman suunnittelu Ohjelmoinnin vaiheet ii

4 Tehtävän Määrittely Suunnittelu Toteutus Testaus Kootut säännöt Tyyli Liittymät Vianhaku Testaus Suorituskyky Siirrettävyys iii

5 1 Johdanto Moni ohjelmointia osaava sanoo, että ohjelmointi on helppoa, sillä eihän se ole muuta kuin ykkösten ja nollien pyörittelyä, vai mahtaakohan se olla myös jotain muutakin? Voidaankin sanoa, että ohjelmoinnin oppimiseen, eli maallisemmin sanottuna tehtävien ratkaisemiseen tietokoneella, liittyy paljon sellaisia yleisiä asioita ja käsitteitä, jotka ovat muuttumattomia käytimmepä sitten mitä tahansa ohjelmointikieltä tai ohjelmointiympäristöä, olipa tietokoneemme sitten kotitietokone tai suuri palvelin, vieläpä riippumatta siitä, mikä meidän ohjelmoitava ongelmamme on. Tästä voimmekin päätellä, että ohjelmointi on paljon muutkin kuin vain ykkösten ja nollien pyörittelyä. Tässä oppaassa tutustutaan näihin yleisiin asioihin, jotka ovat kaikkien tietokoneohjelmien takana. Oppaassa esitetyt esimerkit on toteutettu Javalla. Toivon mielekkäitä lukuhetkiä oppaan parissa ja toivon myös, että olen onnistunut kirjoittamaan oppaassa käsiteltävät asiat niin helposti ja ymmärrettävästi, että ne olisivat helppo sisäistää. Mauri Heinonen 1

6 2 Mitä ohjelmointi on? Tähän kysymykseen ei oikeastaan pystytä vastaamaan. Tämä johtuu siitä, että ohjelmointi on laaja käsite, joka sisältää monia eri asioita. Mutta jos välttämättä halutaan vastata kysymykseen Mitä ohjelmointi on? yhdellä virkkeellä se kuuluisi seuraavasti: Ohjelmointi on ohjelmien tekemistä, eli jonkin tietyn ongelman muuttamista sellaiseen muotoon, jonka tietokone ymmärtää. Ohjelmointi ei ole tästä monimutkaisempaa. Meille annetaan ongelma (tehtävä), joka tulee muuttaa sellaiseen muotoon, jonka tietokone ymmärtää. Se miten pääsemme tavoiteltuun lopputulokseen vaatii useita vaiheita. Ongelmaa ei lähdetä ratkaisemaan suoraan kirjoittamalla ohjelmakoodia, vaan se vaatii useita tunteja suunnittelua ja mallintamista. On sanottu, että ohjelmointi on 1. Tiedettä (confidentiality), Ohjelmoinnin tutkimus on osa tietojenkäsittelytieteen tutkimusalaa. Sama tiede tutkii ohjelmointiin liittyviä ohjelmointikieliä, ohjelmistotekniikkoja sekä algoritmeja. Tietojenkäsittelytiede luo perustan sille, miten eri ongelmat ratkaistaan tietokoneella ja mitkä ongelmat yleensä on mahdollista ratkaista tietokoneella. 2. Taidetta, Ohjelmointi on luova prosessi. Innostunut ohjelmoija saattaa tuntea taiteilijan kaltaista inspiraatiota työhönsä, toisaalta hän saattaa tuntea masennusta tyhjällä ruudulla vilkkuvasta kohdistimesta silloin, kun työ ei ota edistyäkseen ( Kamalinta maalarille on valkea kangas, Pablo Picasso). 3. Käsityötä, Laajasta tutkimuksesta huolimatta ohjelmointia ei ole kyetty automatisoimaan, vaan se on käsityötä. Tätä käsityötä tukevia ja täydentäviä erilaisia menetelmiä ja lähestymistapoja on kuitenkin kehitetty. Ohjelmoitaessa luodaan toimintoja, jotka voivat yksinkertaisimmillaan esimerkiksi tulostaa käyttäjän näppäimen painalluksen tietokoneen näytölle tai laskea kaksi lukua yhteen. Jotta nuo toiminnot voidaan suorittaa, ohjelmoija kirjoittaa valitsemallaan ohjelmointikielellä koneelle sopivan käskyn (instruction) ja pyytää konetta toteuttamaan annetun käskyn. Ohjelmointikieli muodostuu täsmällisesti määritellystä joukosta käskyjä, jotka muodostavat käskykannan (instruction set). Käskyt yhdessä muodostavat ohjelman algoritmin (algorithm), jota käsitellään tarkemmin luvussa 4. Algoritmilla tarkoitetaan yleensä yksikäsitteisten lauseiden (expression) eli käskyjen muodostamaa järkevää kokonaisuutta, jolla ratkaistaan jokin ongelma. Algoritmia voidaan kuvata joko ohjelmointikielellä itsellään, vuokaavioilla (flowchart) tai pseudokielellä (pseudo code). Pseudokieli on luonnoskieli, joka on selväkielinen ja kuvaa samalla ongelman kulkua, tätä kutsutaan myöskin puoliohjelmaksi. 2

7 3 Kuinka ohjelmia tehdään? Useimmat tietokoneen käyttäjät turvautuvat ongelmanratkaisuvälineitä (tietokoneohjelmia) tarvitessaan ammattimaisesti tuotettuihin ohjelmiin, kuten taulukkolaskimiin, tietokantaohjelmiin, sivuntaitto-ohjelmiin jne. Joissakin tapauksissa on kuitenkin välttämätöntä tai ainakin suotavaa kirjoittaa oma ohjelma ennemmin kuin käyttää toisen valmiiksi tekemää ohjelmaa. Ohjelma (program, routine): Tietojenkäsittelytehtävän esitys tietokoneen toteuttavaksi tarkoitettuna määrittelynä tai käskysarjana. Ihmisen toimena tietokoneen ohjelmointi on varsin uutta puuhaa. Itse asiassa ohjelmointi onkin vain yksi erikoistapausjo iät ja ajat harjoitettua ongelmanratkaisua. Ohjelmointi (programming): Logo-guruP. Rosslähestyy kirjassaan "LOGO Programming" (Addison-WesleyPubl. Ltd, 1983)käsitettä ohjelmointi määritelmällä: Ohjelmointi on väline ideoiden tutkimiseen. Toinen Logo-persoona C. Leighmäärittelee ohjelmoinnin kirjassaan "Starting LOGO" (Sigma Press, 1984)seuraavasti: Ohjelmointi on tietokoneen opettamista asioiden tekemiseen. Ohjelmoitava (programmable): Järjestelmä onohjelmoitava,jos sillä on (vähintään!) kyky käsitellä muuttujiin talletettua dataa, ratkaista ehtoja perustuen em. dataanjasuorittaa toistorakenteita em.ehtojen perusteella. Tietokone onohjelmoitava järjestelmä ja ohjelmoitavuus ekee tietokoneesta työkalun,joka soveltuu lukuisiin tarkoituksiin. Edellisinehdoin ei taas esimerkiksi matkapuhelin, videonauhuri tai pyykinpesukoneole käyttäjän kannalta ohjelmoitavajärjestelmä. Tyypillisesti ongelmanratkaisuun kuuluu neljä vaihetta: 1. Ongelman ymmärtäminen. Ongelman tarkka määrittely on monesti kaikkein tärkein -ja kaikkein ylenkatsotuin -vaihe ongelmanratkaisuprosessissa. 2. Suunnitelman teko ongelman ratkaisemiseksi. Mitä resursseja on saatavilla? Ihmiset? Tieto? Tietokone? Ohjelmistot? Data?Kuinka resursseja käyttämällä ongelma saadaan ratkaistua? 3. Suunnitelma toteuttaminen. Tämä vaihe on osittain samanaikainen toisen vaiheen kanssa, koska monia ongelmanratkaisusuunnitelmiakehitetään toteutuksen aikana. 4. Ratkaisun arviointi. Onko ongelma ratkaistu oikein? Voiko ratkaisua soveltaa muihin ongelmiin? Myös ohjelmointi voidaan kuvata nelivaiheisena prosessina, joskin käytännössä nämä vaiheet menevät usein päällekkäin: 3

8 1. Ongelman määrittely 2. Algoritmin suunnittelu, tarkentaminenja testaaminen 3. Ohjelman kirjoittaminen 4. Ohjelman testaaminen ja virheiden etsintä Useimmat ohjelmointi ongelmat ovat liian monimutkaisia ratkaistaviksi yhdellä kertaa. Ohjelmointi vaiheessa ongelmaa tyypillisesti pilkotaan pienemmiksi ongelmiksi, jotka edelleen voidaan jakaa osaongelmiksi. Tämä asteittainen tarkentaminen on verrattavissa luonnoksen tekoon artikkelia tai kirjaa kirjoitettaessa. Ohjelmoijat kutsuvat joskus tätä suunnittelutapaa top-down -suunnitteluksi, koska suunnitteluprosessi alkaa huipulta tärkeimmistä ideoista ja tarkentuu vähitellen alaspäin mentäessä yksityiskohtaiseksi suunnitelmaksi. Asteittaisen tarkentamisen tuloksena syntyy algoritmi, joka tarkoittaa askel askeleelta läpikäytäviä ohjeita, joiden suorittaminen ratkaisee alkuperäisen ongelman. Ohjelmoija kirjoittaa algoritmin tavallisimmin pseudokoodina, joka on sekoitus ohjelmointikieltä ja jotain luonnollista kieltä, kuten englantia tai suomea. Kun algoritmin yksityiskohdat ovat kohdallaan, ohjelmoija voi muuttaa pseudokoodin tietokonekielelle eli kirjoittaa sen jollakin ohjelmointikielellä, sellaiseen muotoon, jonka tietokone sitten tulkkaamisen/kääntämisen jälkeen ymmärtää. ALGORITMI (ALGORITHM) ON ÄÄRELLINEN JOUKKO ASKEL ASKELEELTA SUO- RITETTAVIA TOIMIA TEHTÄVÄN SUORITTAMISEKSI. ESIMERKIKSI KAKKURESEP- TION ALGORITMI. 4

9 4 Algoritmi Algoritmilla arkoitetaan yksityiskohtaista kuvausta toimintaohjeista, joiden avulla useasta erillisestä työvaiheesta koostuva tehtävä saadaan suoritettua. Algoritminesitys on ohjelmointikielestä ja tietokoneesta riippumaton. Algoritmi voidaan esittää useillakin kuvaustavoilla, joita ovat erilaiset pseudokoodit ja (vuo)kaaviotekniikat. Tietyin varauksin algoritmin esittämiseen voidaan käyttää myös luonnollista kieltä. Algoritmilta edellytetään: Yleisyyttä: Algoritmin pitää soveltua kaikkiin saman ongelma-alueen ongelmiin. Deternrinistisyyttä: Jokaisessa työvaiheessa voidaan ratkaista yksiselitteisesti, mikä työvaihe suoritetaan seuraavaksi. Päättyvyyttä: Algoritmin suoritettavien työvaiheiden määrä on rajallinen ja suoritus päättyy kyseisen ongelman ratkaisuun. Algoritmin kolme perusohjausrakennetta ovat peräkkäisyys, toisto ja valinta. Nämä perusrakenteet ovat yksinkertaisia, mutta voidaan osoittaa, että monimutkaisemmat rakenteet voidaan aina palauttaa näihin kolmeen perusrakenteeseen. Näihin rakenteisiin perustuva algoritmi on helppo kirjoittaa ohjelmaksi rakenteista ohjelmointia tukevalla ohjelmointikielellä (kuten KAREL, Pascal, C,...). Monimutkaisuutta algoritmeihin tuo myös rakenteiden sisäkkäisyys, joka muodostuu seuraavaksi esitettävällä asteittain tarkentuvalla algoritmien muodostamistavalla. Esimerkki (tehtävä kuvataan luonnollisella kielellä): Tehdään kuppi lämmintä kaakaota Ensimmäisen tason osatehtävät voisivat olla: N O U D A K U P P I L Ä M M I T Ä M A I T O K A A D A M A I T O K U P P I I N L I S Ä Ä K A A K A A J A U H E Ensimmäinen taso voisi tarkentua esimerkiksi seuraavasti (toinen taso): L Ä M M I T Ä M A I T O: H A E K A T T I L A L A I T A M A I T O K A T T I L A A N K Ä Ä N N Ä L E V Y P Ä Ä L L E Ylhäältä - alas -suunnittelun vastakohta on alhaalta - ylös eli bottom - up -suunnittelu, jossa valmiista osista kootaan asteittain suurempia kokonaisuuksia, jotka lopulta ratkaisevat asetetun tehtävän. Esimerkki: Seuraavat osatehtävät: 5

10 A V A A K A A K A O P U R K K I L A I T A K O L M E L U S I K A L L I S T A J A U H E T T A K U P P I I N L A I T A L U S I K K A K U P P I I N S U L J E K A A K A O P U R K K I voidaan koostaa vaiheeksi L I S Ä Ä K A A K A O J A U H E Ohjelmointi ja ongelmanratkaisu liittyvät siis kiinteästi toisiinsa, vaikka ovatkin itsenäisiä vaiheita. Usein syynä sille, että ongelmaan ei voida tuottaa ratkaisuksi ohjelmaa, ei ole ohjelmointitaidon vaan ongelmanratkaisutaidon puute! Harjoitus 1 (ongelmanratkaisu) Pöydällä on kaksitoista samannäköistä palloa, joista yksitoista kappaletta painaa N grammaa ja yksi pallo N/2grammaa. Käytössäsi on myös kaksikuppinenvaaka, joka ei pysty kertomaan painoa grammoina,vaan ainoastaan ilmoittamaan vasemman vaakakupin sisältö on oikeaa vaakakuppia painavampi, oikean vaakakupin sisältö on vasenta vaakakuppia painavampi tai kummankin vaakakupin sisältö on yhtä painava vaakakuppeihin asetetun kuorman mukaan. Kumpaankin kuppiin voi näitä palloja lastata hyvin suuren määrän. Laadi nyt selvitys eri ratkaisutavoista löytää punnitsemalla tuo yksi eripainoinen pallo. (Lisäharjoitusta kaipaavat voivat kotiläksynä pohtia ratkaisuja tapaukselle, jossa kaksi palloa kahdestatoista on eripainoista!) 6

11 5 Ideasta algoritmiksi Kehitetään yksinkertainen algoritmi prosessin havainnollistamiseksi. Aloitetaan ongelman määrittelyllä: Opettaja haluaa ohjelmoida luvun arvaamiseen pelin, jonka avulla oppilaat opettelevat loogisia strategioita ja harjoittelevat aritmetiikkaa. Pelissä tietokone valitsee luvun yhden (1) ja sadan (100) väliltä ja antaa pelaajalle seitsemän mahdollisuutta arvata valittu luku. Jokaisen väärän vastauksen jälkeen tietokone kertoo pelaajalle, oliko arvaus suurempi vai pienempi kuin sen arpoma luku. Lyhyesti sanottuna ongelmana on kirjoittaa ohjelma, joka pelaa arvauspeliä. 5.1 Asteittainen tarkentaminen Ensimmäisessä jaossa ongelma jakautuu kolmeen osaan: alkuun, keskiosaan ja loppuun. Jokainen näistä on oma, alkuperäistä ongelmaa pienempi ongelma. ALOITA ArvaaLukuPeli TOISTA Y R I T Y S KUNNES ( L U K U O N A R V A T T U TAI S E I T S E M Ä N A R V A U S T A O N K Ä Y T E T T Y ) LOPETA ArvaaLukuPeli Nämä kolme osaa muodostavat algoritmin rungon. Valmiissa algoritmissa ne suoritetaan peräkkäin. Seuraava tarkennus lisää joitakin yksityiskohtia kaikkiin osiin: ALOITA ArvaaLukuPeli N Ä Y T Ä O H J E E T V A L I T S E L U K U TOISTA Y R I T Y S KUNNES ( L U K U O N A R V A T T U TAI S E I T S E M Ä N A R V A U S T A O N K Ä Y T E T T Y ) LUE P E L A A J A N A R V A U S ANNA P A L A U T E A R V A U K S E E N TOISTON LOPPU N Ä Y T Ä L O P P U I L M O I T U S LOPETA ArvaaLukuPeli Keskimmäisessä osassa ohjeina on joukko käskyjä, joita toistetaan joka yrityksellä: kaikki mitä löytyy käskyjen TOISTA ja TOISTON LOPPU välistä. Ohjeista puuttuu edelleen välttämättömiä yksityiskohtia. Esimerkiksi kuinka tietokone antaa palautetta arvaukseen? Voimme korvata ANNA palaute arvaukseen ohjeilla, jotka vaihtelevat arvauksesta riippuen: 7

12 JOS ( A R V A U S == L U K U ) NIIN K E R R O S E J A L O P E T A MUUTEN JOS ( A R V A U S < L U K U ) NIIN K E R R O, E T T Ä A R V A U S O N L I I A N P I E N I MUUTEN K E R R O, E T T Ä A R V A U S O N L I I A N S U U R I JOS LOPPU JOS LOPPU Lopuksi meidän pitää antaa tietokoneelle mahdollisuus tietää, milloin seitsemän arvausta on käytetty. Voimme asettaa aluksi laskurin arvoksi nollan ja kasvattaa sitä yhdellä joka arvauksella. Kun laskurin arvo tulee seitsemään, TOISTO-toisto lopetetaan ja tietokone antaa viestin. Näiden tarkennusten jälkeen algoritmi näyttää seuraavalta: ALOITA ArvaaLukuPeli N Ä Y T Ä O H J E E T V A L I T S E L U K U A S E T A L A S K U R I N A R V O K S I 0 TOISTA Y R I T Y S KUNNES ( L U K U O N A R V A T T U TAI L A S K U R I == 7 ) LUE P E L A A J A N A R V A U S JOS ( A R V A U S == L U K U ) NIIN K E R R O S E J A L O P E T A MUUTEN JOS ( A R V A U S < L U K U ) NIIN K E R R O, E T T Ä A R V A U S O N L I I A N P I E N I MUUTEN K E R R O, E T T Ä A R V A U S O N L I I A N S U U R I JOS LOPPU JOS LOPPU lisää laskurin arvoa yhdellä TOISTON LOPPU N Ä Y T Ä L O P P U I L M O I T U S LOPETA ArvaaLukuPeli 5.2 Kontrollirakenteet Tietokone ei ymmärrä tätä algoritmia, mutta pseudokoodi on selvä sellaiselle, joka tuntee kontrollirakenteet. Kontrollirakenteet, ohjausrakenteet(control structures): Loogiset rakenteet, jotka ohjaavat käskyjen suoritusjärjestystä. Tässä algoritmissa on käytetty kolmea peruskontrollirakennetta: peräkkäisyys, valinta ja toisto. Peräkkäisyyskontrollirakenne muodostuu ryhmästä käskyjä, jotka suoritetaan peräkkäin ensimmäisestä viimeiseen. Esimerkissämme, kuten useimmissa tietokonekielissä, peräkkäisyysonoletusrakenrre, ts. sitä noudatetaan ellei toisin ole käsketty: 8

13 N Ä Y T Ä O H J E E T V A L I T S E L U K U A S E T A L A S K U R I N A R V O K S I 0 Valintakontrollirakennetta käytetään loogisten valintojen tekemiseen, jolla tarkoitetaan sitä, että valitaan jokin vaihtoehtoisista toimista tiettyjen ehtojen mukaan. Tyypillinen valintarakenne on muotoa IF (jokin ehto on tosi) THEN (tee jotain) ELSE (tee jotain muuta) eli JOS ( jokin ehto on tosi) NIIN (tee jotain) MUUTOIN (tee jotain muuta): IF (A R V A U S < L U K U) THEN K E R R O, E T T Ä A R V A U S O N L I I A N P I E N I ELSE K E R R O, E T T Ä A R V A U S O N L I I A N S U U R I Toistokontrollirakenne on sama asia kuin silmukkarakenne. Sen avulla voidaan käskyjoukkoa toistaa useita kertoja, kunnes (useimmiten) jokin ehto täyttyy. Algoritmissamme TOISTA ja TOISTON LOPPU -rakenteen väliin jääviä lauseita toistetaan, kunnes luku on arvattu oikein tai laskurin arvoksi tulee seitsemän: TOISTA Y R I T Y S KUNNES L U K U O N A R V A T I U TAI L A S K U R I= 7 L U E P E L A A J A N A R V A U S L I S Ä Ä L A S K U R I N A R V O A Y H D E L L Ä TOISTON LOPPU Kuten esimerkkimme osoittaa, yksinkertaisia kontrollirakenteita voidaan yhdistää monimutkaisemmiksi algoritmeiksi. Itse asiassa mikä tahansa tietokoneohjelma saadaan rakennettua näillä kolmella kontrollirakenteella. 5.3 Algoritmin testaaminen Seuraavana on vuorossa algoritmin testaaminen. Tässä vaiheessa on tarkoituksena testata algoritmin logiikkaa. Testauksen teemme suorittamalla käskyjä eri lukuarvoilla. Voimme esimerkiksi tähdätä numeroon 35 ja arvata lukuja 15, 72, 52 ja 35. Näillä numeroilla tulee testattua kaikki kolme IF-THEN-ELSE -rakenteen vaihtoehtoa (pienempi, suurempi ja yhtäsuuri) ja ne osoittavat, mitä tapahtuu, kun pelaaja valitsee oikean luvun. Meidän pitäisi myös testata algoritmia seitsemällä väärällä arvauksella, jotta varmistumme, että algoritmi päättyy oikein pelaajan hävitessä pelin. 5.4 Algoritmista ohjelmaksi Kun testaus on ehty, on algoritmi valmis ohjelmoitavaksi. Koska algoritmilla on ohjelman looginen rakenne, koodaus on yksinkertainen ja suoraviivainen. 9

14 Koodaus (coding): Ohjelman kirjoittaminen algoritmin pohjalta. Algoritmin lauseet kääntyvät suoraan koodiriveiksi ohjelmoijalle sopivimmalle ohjelmointikielelle Yksinkertainen ohjelma Katsotaan ohjelmaa, joka on kirjoitettu Java-kielellä. Kuten monet muutkin tietokoneohjelmat, koostuu ohjelma kolmesta osasta (vrt. keittokirja): 1. Ohjelman otsikko sisältää ohjelman nimen ja standarditiedostot (vrt. ruokaohjeen nimi ja kuvaus ruuasta). 2. Määrittelyosa sisältää muuttujien ja muiden tarvittavien asioiden esittelyn (vrt. ruokaohjeen tarveainelista). 3. Lauseosa koostuu käskyistä, jotka on koottu { ja } -lohkosulkujen sisään (vrt. ruuanvalmistusvaiheet). class ArvaaLukuPeli { import java.io.*; import java.util.*; // MA U R I HE I N O N E N, public static void main( String args[] ) throws java.io.ioexception { // Alustetaan tarvittavat kokonaislukumuuttujat int luku = (int) (100 * Math.random()); int arvaus = -1; int laskuri = 1; System.out.println( Tervetuloa arvauspeliin. Valitsen luvun väliltä ja ); System.out.println( sinun pitää arvata, mikä se on. Sinulla on 7 yritystä. ); } do { System.out.print( Mikä on arvauksesi? ); arvaus = Integer.parseInt(new BufferedReader(new InputStreamReader(System.in)).readLine()); if ( arvaus == luku ) { System.out.println( Sinä arvasit oikein! ); } else { if ( arvaus < luku ) { System.out.println( Liian pieni luku, arvaa uudelleen! ); } else { System.out.println( Liian suuri luku, arvaa uudelleen! ); } } laskuri++; } while (( arvaus == luku ) ( laskuri <= 7 )); if ( arvaus!= luku ) { System.out.println( Narrasin sinua 7 kertaa, luku oli + luku +! ); } } Kuten huomaat, niin tämä ohjelmalistaus näyttää täysin erilaiselta kuin alkuperäinen yksityiskohtainen algoritmimme. Yksi tärkeä ero niillä on, koska nyt kyseessä on tietokoneohjelma, jolloin jokaisella sanalla, symbolilla ja välimerkillä on täsmällinen, yksiselitteinen merkitys siinä vaiheessa, kun tämä lähdekoodi tulkataan/käännetään tietokoneen ymmärtämään muotoon. 10

15 6 Algoritmin kuvaus tavat 6.1 Puoliohjelma Tavallisin sanallinen kuvauskieli on puoliohjelma (pseudokoodi). Se on eräänlainen välivaihe suomen kielellä (tai englannin kielellä) esitetyn toiminta ohjeen ja tietokoneohjelman välillä. Puoliohjelma on ohjelma, jonka kirjoitat oman kielesi ja tiettyjen ohjelmointikielistä riippumattomien määrämuotoisten ilmaisujen avulla. Puoliohjelmassa käytetään useimmiten englanninkielisiä sanoja, kuten IF, THEN, EL- SE, WHILE, UNTIL, jne. tai vastaavia suomenkielisiä sanoja JOS, NIIN, MUUTEN, TOISTA, KUNNES jne. 6.2 Vuokaavio Kaavion muotoisista kuvauskielistä ovat tavallisimpia ns. vuokaaviot ja rakenteiset lohkokaaviot. Vuokaaviossa käytetään ohjelman (tai sen osan) etenemisen kuvaamiseen erilaisia kaaviosymboleita. Tavallisimmat symbolit on koottu seuraavaan taulukkoon: Katsotaan seuraavaksi pientä yksinkertaista esimerkkiä vuokaavion käyttämisestä. Oletetaan, että olemme saaneet seuraavan yksinkertaisen tehtävän: Kauppias antaa yli 250mk:n ostoksista 5%:n alennuksen ja yli 500mk:n ostoksista 8%:n alennuksen. Laadi ohjelma, joka tulostaa alennetun hinnan, kun syöttötietona annetaan ostosten hinta. Jokainen tietokone ohjelma voidaan toteuttaa kolmen perusrakenteen avulla. Näiden perusrakenteiden avulla määrätään ohjelman suorituksen etenemisjärjestys. Nämä perusrakenteet ovat: 11

16 Peräkkäisrakenne. Tämä rakenne koostuu useasta peräkkäin suoritettavasta toiminnosta, jotka suoritetaan kirjoitusjärjestyksessä, ellei toisin määrätä. Toistorakenne. Toimintosarjaa toistetaan, kunnes ehto tulee voimaan. Valintarakenne. Tässä rakenteessa suoritetaan jompikumpi kahdesta toiminnosta (toimintasarjasta) sen mukaan, onko ennalta annettu ehto tosi vai epätosi. 12

17 7 Tietokoneen sielunelämä Kuten me kaikki tiedämme tietokone on perusolemukseltaan vain joukko sähköisiä laitteita ja laitteisiin kytkettyjä komponentteja. Ja kuten tiedämme se koostuu pääasiassa erilaisista väylistä, muistipiireistä, johtimista, piirilevyistä yms. Jotta tietokone alkaisi toimia käyttäjän haluamalla tavalla, tulee koneen toiminnalle määritellä ohjeita. Näitä ohjeita noudattaen tietokone toteuttaa käyttäjän haluamia tehtäviä. Ohjeet, joita kutsutaan ohjelmiksi (program), on tallennettu tietokoneen pysyvään muistiin (yleensä kiintolevylle), josta ne noudetaan aina tarvittaessa. Näin ohjelmoijan kannalta tietokone on periaatteessa vain joukko peräkkäisiä muistipaikkoja, joihin voidaan tallentaa jokin tieto. Yleisesti, kun ohjelmoija puhuu muistista, hän tarkoittaa sillä keskusmuistia eli RAM -muistia (Random Access Memory). Tämän jälkeen, kun data on syötetty muistiin varsinaisen työn hoitaa suoritin, jotta voidaan muuttaa näiden muistipaikkojen sisältöä tietokoneohjelman mukaan, eli siten kuin mitä me, ohjelmoijat, haluamme. Kun ohjelmoija laatii ohjelmia, sitä kutsutaan ohjelmoinniksi (programming) ja ohjelmien koodaajaa ohjelmoijaksi (programmer). Ohjelman tekemiseen tarvitaan väline, jota kutsutaan ohjelmointikieleksi, kuten Visual Basic, C, C++, C#, PHP, Java tai Perl, (programming language). Ohjelmointikieli on joukko tarkkaan määriteltyjä ohjeita, joita yhdistelemällä voi toteuttaa hyvinkin vaativia tehtäviä, koulussamme on mahdollista opiskella joko Perl?kieltä tai C++ -kieltä. Erilaiset suorittimet, ja näin siis erilaiset tietokoneet, ymmärtämät erilaisia käskyjä. Kuitenkin käskyt ovat aina hyvin yksinkertaisia, esimerkiksi 1. nollaa muistipaikka nollaa muistipaikka 1 3. lisää muistipaikkaan 100 luku, jonka saat muistipaikasta 200+muistipaikan 1 sisältö 4. lisää muistipaikan 1 sisältöä yhdellä 5. jos muistipaikan 1 sisältö ei ole viisi, palaa kohtaan 3 Tällainen ohjelma laskisi muistipaikkaan 100 muistipaikkojen sisältöjen summan. Tätä kutsutaan konekieleksi. Tietokoneen ohjelmointi konekielellä on aivan mahdollista. Kuitenkaan se ei ole kovinkaan nopeaa, ja ohjelman toiminnan ymmärtäminen on hankalaa. Siksi on kehitetty erilaisia korkeamman tason ohjelmointikieliä, joissa ohjeet voidaan antaa joidenkin englanninkielisten sanojen ja itse nimettyjen tunnusten avulla. Tällainen korkeamman tason ohjelmointikielellä toteutettu ohjelma täytyy ennen käyttöä kääntää ylempänä kuvattuun muotoon (eli kokekielelle), jotta se voidaan suorittaa tietokoneessa. Käännös voidaan joko tehdä kerralla koko ohjelmalle (tällöin käytetään kääntäjää) tai kääntää ja suorittaa rivi kerrallaan (jolloin käytetään tehtävään tulkkia). Ensin mainitussa tapauksessa puhutaan kääntämisestä, viimeksi mainittua kutsutaan tulkkaukseksi - yhteys vieraan kielen 13

18 kääntämiseen ja tulkkaamiseen on ilmeinen. Jokaisella prosessorityypillä on oma konekielensä. 14

19 8 Mikä on ohjelmointikieli? Kaikki tietokoneohjelmat ovat ohjelmoitu jollakin tietyllä ohjelmointikielellä, jonka avulla määritellään ohjeet, kuinka ohjelman tulee toimia. Jopa kaikkien tuntemamme ja varmastikin myös joka päivä käyttämämme Internet Explorer on joukon ohjelmoija jollakin, todennäköisesti C++, ohjelmointikielellä väsäämä ratkaisu johonkin ongelmaa, tässä tapauksessa Internettiin pääsyyn. Näin päästäänkin kysymyksen: Mikä on ohjelmointikieli?. Sillä emmehän me pysty luomaan ohjelmaa ilman kieltä, jonka avulla sen tekisimme. Oikeastaan ohjelmointikieli on juuri ohjelmointiin suunniteltu ilmaisukieli, jolla ohjelmoijat työskentelevät. Nämä ohjelmointi kielet lajitellaan keskenään eri kategorioihin, joihin tutustumme myöhemmin. Kuitenkin kaikissa ohjelmointikielissä on joukko komentoja ja rakenteita, joiden avulla ohjelmoija laatii toimintaohjeet. Toimintaohjeet ovat kuin ajo-ohjeet tai kakkuresepti, niiden tulee olla täsmälliset, jotta ohjelma (tietokone) osaa suoriutua kaikista tilanteista. Toisin kuin autoilija/leipoja, niin tietokone ei voi kysyä apua miten sen tulisi toimia suoriutuakseen sille määrätyistä tehtävistä. Voidaankin todeta, että tietokone on juuri niin viisas kuin mitä käyttämäsi ohjelman tekijä on. Tietokone ei pysty ajattelemaan tai arvailemaan mitä ohjelmoija nyt sitten seuraavaksi mahtanee haluta, vaan sinun tulee ohjelmoijana määritellä tarkat toimintaohjeet tietokoneelle, ennen kuin voit levittää ohjelmaa. Java on yksi sadoista maailmalla käytössä olevista tietokonekielistä. Joitakin niistä käyttävät ammattiohjelmoijat kirjoittaessaan ohjelmistoja meille muille. Jotkut kielet on tarkoitettu auttamaan opiskelijoita oppimaan ohjelmoinnin perusteet. Jotkut kielet taas on tarkoitettu tietokoneen käyttäjien avuksi automatisoimaan toistuvia tehtäviä ja räätälöimään ohjelmistosovelluksia käyttäjille sopiviksi. Tietokoneiden alkuajoista lähtien on ohjelmointikielien tavoitteena ollut helpottaa ihmisen ja tietokoneen välistä kommunikointia. Ohjelmointikieli (programming language): Ohjelmien (laskentaprosessien) systemaattinen kuvaustekniikka. Ohjelmointikieli on liittymä/väline ohjelmistotuotantoa varten ja tämän liittymän kautta ohjelmoija kommunikoi tietokoneen kanssa kirjoittaessaan I. koodatessaan tietokoneohjelmaa. Ohjelman kirjoittaminen on siis kielenkäytlöprosessi. 8.1 Tietokoneen kielet Tietokoneohjelma toimii laitteiston, ohjelmiston ja käyttävien ihmisten luoman maailmankuvan asettamissa rajoissa. Ohjelmointikielen yksi tärkeimpiä ominaisuuksia on sen yksikäsitteisyys, eli sillä kirjoitetut ilmaukset voidaan tulkita vain yhdellä tavalla. Ohjelmointikielellä on kielioppi (syntaksi), joka määrittelee, millaisia ohjelmia saa kirjoittaa. Ohjelmointikielen semantiikka antaa ohjelman osille merkityksen. Ohjelmointikielet ovat niin kutsuttuja formaaleja kieliä. 15

20 8.1.1 Konekieli ja assembly-kieli Jokaisella tietokoneella on oma äidinkieli eli ns. konekieli. Konekieli (machine language): Tietokoneen peruskieli, joka koostuu nollista ja ykkösistä. Eri konekielien välillä on yhtäläisyyksiä. Kaikista löytyy käskyt mm. seuraaviin tehtäviin: neljän pemslaskutoimituksen suorittaminen lukuparien vertailu käskyjen toisto Konekielet ovat kuitenkin eri kieliä, kuten ranska ja englanti. Näin ollen yhteen konekieleen perustuvat koneet eivät ymmärrä toisella konekielellä kirjoitettuja ohjelmia. Koneen näkökulmasta katsottuna konekieli on pelkkää binäärikoodia. Käskyt, muistipaikat, luvut ja merkit esitetään nollista ja ykkösistä muodostuvina merkkijonoina. Koska binäärilukujen tulkitseminen on ihmiselle hankalaa, on konekieliset ohjelmat yleensä käännetty joko kymmenjärjestelmään, heksadesimaalijärjestelmään (kantaluku 16) tai johonkin muuhun lukujärjestelmään. Tästä huolimatta konekielisten ohjelmien kirjoittaminen, lukeminen ja korjaaminen on aina ollut vaikeaa. Ohjelmointi muuttui helpommaksi, kun keksittiin assembly-kieli. Assembly-kieli (assembly language): Vastaa toiminnaltaan konekieltä. Ihmisten on kuitenkin helpompi lukea, kirjoittaa sekä ymmärtää assembly a kuin konekieltä. Assembly ssa ohjelmoija käyttää aakkoskoodeja, jotka vastaavat konekielen käskyjä. Esimerkiksi assembly-kielinen käsky vähennyslaskulle voisi olla SUB (subtraction). Luonnollisesti SUB ei merkitse mitään tietokoneelle, joka reagoi vain sellaisiin komentoihin kuin Sillaksi ohjelmoijan ja tietokoneen välisen kommunikointikuilun yli on kehitetty ohjelma nimeltään assembler, joka kääntää jokaisen assemble-kielisen käskyn konekieliseksi käskyksi. Paremmasta tietämättä tietokone toimii kielenkääntäjänä itselleen. Vain erittäin harvat ohjelmoija käyttävät enää konekieltä, koska assembly-kieli on selvästi sitä parempi. Siitä huolimatta assembly-kieltä pidetään matalan tason ohjelmointikielenä. Tämä tarkoittaa sitä, että ohjelmoijan täytyy ajatella konekielen tasolla kaikkia toimiaan ja sisällyttää valtava määrä yksityiskohtaista tietoa jokaiseen kirjoittamaansa ohjelmaan. Assembly-ohjelmointi on kertautuvaa, aikaa vievää ja virhealtista puuhaa. Asiaa 16

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

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

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

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

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

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

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla ohjelmoida useita komponenteiltaan ja rakenteeltaan

Lisätiedot

Ohjelmointi 1. Kumppanit

Ohjelmointi 1. Kumppanit Ohjelmointi 1 Kumppanit November 20, 2012 2 Contents 1 Mitä ohjelmointi on 7 2 Ensimmäinen C#-ohjelma 9 2.1 Ohjelman kirjoittaminen......................... 9 A Liite 11 3 4 CONTENTS Esipuhe Esipuhe 5

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

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

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään Ohjelmointi Ohjelmoinnissa koneelle annetaan tarkkoja käskyjä siitä, mitä koneen tulisi tehdä. Ohjelmointikieliä on olemassa useita satoja. Ohjelmoinnissa on oleellista asioiden hyvä suunnittelu etukäteen.

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

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

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

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

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

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

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

11.4. Context-free kielet 1 / 17

11.4. Context-free kielet 1 / 17 11.4. Context-free kielet 1 / 17 Määritelmä Tyypin 2 kielioppi (lauseyhteysvapaa, context free): jos jokainenp :n sääntö on muotoa A w, missäa V \V T jaw V. Context-free kielet ja kieliopit ovat tärkeitä

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

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

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta. Tehtävä 63. Kirjoita oma versio funktiosta strcmp(),joka saa parametrinaan kaksi merkkiosoitinta. Tee ohjelma, jossa luetaan kaksi merkkijonoa, joita sitten verrataan ko. funktiolla. Tehtävä 64. Kirjoita

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:

Lisätiedot

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1 16. Ohjelmoinnin tekniikkaa 16.1 Sisällys Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti

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

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

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

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

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä olevilla komponenteilla? Voisiko jollakin ohjelmointikielellä

Lisätiedot

Tietorakenteet (syksy 2013)

Tietorakenteet (syksy 2013) Tietorakenteet (syksy 2013) Harjoitus 1 (6.9.2013) Huom. Sinun on osallistuttava perjantain laskuharjoitustilaisuuteen ja tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. Näiden laskuharjoitusten

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1 16. Ohjelmoinnin tekniikkaa 16.1 Sisällys For-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. If-else-lause vaihtoehtoisesti

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

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

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten Sisällys 16. Ohjelmoinnin tekniikkaa Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti

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

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

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

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

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

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD)

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) Ohjelmointikäytännöt 21/3/11 Mikko Vuorinen Metropolia Ammattikorkeakoulu 1 Sisältö 1) Mitä on hyvä koodi? 2) Ohjelmointikäytäntöjen merkitys? 3) Koodin asettelu

Lisätiedot

Johdatus ohjelmointiin

Johdatus ohjelmointiin Johdatus ohjelmointiin Ohjelmistot tietokonejärjestelmissä Jaana Holvikivi Ohjelmistojen tehtävät Sovellusohjelmat tekstinkäsittely ja muut toimistosovellukset kirjanpito, tuotannonohjaus selaimet, mediaohjelmat

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

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

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä.

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä. TIETOKONEOHJELMIEN RAKENNE Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä. Teollisuusautomaation ohjelmiin on lainattu runsaasti perinteisen

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 12. huhtikuuta 2019 Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä. Yksi A4-kokoinen lunttilappu

Lisätiedot

3. Muuttujat ja operaatiot 3.1

3. Muuttujat ja operaatiot 3.1 3. Muuttujat ja operaatiot 3.1 Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi. Operaattorit. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit.

Lisätiedot

11/20: Konepelti auki

11/20: Konepelti auki Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon

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

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

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

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

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 4 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten lauseisiin, lausekkeisiin ja aliohjelmiin liittyvät kysymykset. Tehtävä 1. Mitä

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

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

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone

Lisätiedot

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone

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

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...

Lisätiedot

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit. 3. Muuttujat ja operaatiot Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi.. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit. Arvojen

Lisätiedot

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006 TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa

Lisätiedot

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin Sisällys 17. Ohjelmoinnin tekniikkaa for-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. if-else-lause vaihtoehtoisesti

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 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

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallintaminen, mallintaminen ja UML 582104 Ohjelmistojen mallintaminen, mallintaminen ja UML 1 Mallintaminen ja UML Ohjelmistojen mallintamisesta ja kuvaamisesta Oliomallinnus ja UML Käyttötapauskaaviot Luokkakaaviot Sekvenssikaaviot 2 Yleisesti

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

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

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Viimeksi muokattu 5. toukokuuta 2012 Maastotietokannan torrent-jakeluun sisältyy yli 5000 zip-arkistoa,

Lisätiedot

C++ Ohjelmoijan käsikirja. Johdanto

C++ Ohjelmoijan käsikirja. Johdanto Johdanto C++ Ohjelmoijan käsikirja Johdanto Tervetuloa Inside C++-kirjan pariin. Tämä on opaskirja standardi C++:n käyttöön. Käsittelemme kirjassa kaikki syntaksin, kieliopin, olio-ohjelmoinnin ja standardikirjastojen

Lisätiedot

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan

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

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

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

Muistutus aikatauluista

Muistutus aikatauluista Muistutus aikatauluista (Nämä eivät välttämättä koske avoimen yo:n opiskelijoita Erkki Kailan rinnakkaisella kurssilla) Luento 1: kotitehtävät sulkeutuvat 20.9 12:00, ennen tutoriaalia Tutoriaali 1 sulkeutuu

Lisätiedot

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Luento

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

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

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone

Lisätiedot

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla 2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella

Lisätiedot

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia. 4. Periytyminen 4.1. Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi

Lisätiedot

Zeon PDF Driver Trial

Zeon PDF Driver Trial Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin

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

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla ALKUHARJOITUS Kynän ja paperin avulla peilaaminen koordinaatistossa a) Peilaa pisteen (0,0) suhteen koordinaatistossa sijaitseva - neliö, jonka

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

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

4. Luokan testaus ja käyttö olion kautta 4.1

4. Luokan testaus ja käyttö olion kautta 4.1 4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

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

Tietotekniikan valintakoe

Tietotekniikan valintakoe Jyväskylän yliopisto Tietotekniikan laitos Tietotekniikan valintakoe 2..22 Vastaa kahteen seuraavista kolmesta tehtävästä. Kukin tehtävä arvostellaan kokonaislukuasteikolla - 25. Jos vastaat useampaan

Lisätiedot

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1 9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.

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

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen: Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen: S A S B Samaan jäsennyspuuhun päästään myös johdolla S AB Ab ab: S A S B Yhteen jäsennyspuuhun liittyy aina tasan yksi vasen

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat ja operaatiot

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat ja operaatiot 3. Muuttujat ja operaatiot Sisällys Muuttujat. Nimi ja arvo. Algoritmin tila. Muuttujan nimeäminen. Muuttujan tyyppi. Muuttuja ja tietokone. Operaattorit. Operandit. Arvon sijoitus muuttujaan. Aritmeetiikka.

Lisätiedot

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5. 1. Toteuta Pythonilla seuraava ohjelma:

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5. 1. Toteuta Pythonilla seuraava ohjelma: Kerta 2 Kerta 3 Kerta 4 Kerta 5 Kerta 2 1. Toteuta Pythonilla seuraava ohjelma: 2. Tulosta Pythonilla seuraavat luvut allekkain a. 0 10 (eli, näyttää tältä: 0 1 2 3 4 5 6 7 8 9 10 b. 0 100 c. 50 100 3.

Lisätiedot

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

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.

Lisätiedot