JOHDATUS OHJELMOINTIIN

Koko: px
Aloita esitys sivulta:

Download "JOHDATUS OHJELMOINTIIN"

Transkriptio

1 JOHDATUS OHJELMOINTIIN 1. JOHDANTO 1.1Taustaa ja ohjelmoinnin käsitemaailma 1.2 Erilaiset ohjelmointikielet ja paradigmat 1.3 Algoritmit ja tietorakenteet 1.4 Ohjelman perusrakenteet 2. OHJELMAN PERUSELEMENTIT 2.1 Tunnukset 2.2 Muuttujat 2.3 Tyypit 2.4 Muuttujan määrittely 2.5 Vakiot 2.6 Lauseet 2.7 Kommentit 3. VUOROVAIKUTTEINEN OHJELMA 3.1 Vuorovaikutteisuus 3.2 Sijoituslauseet 3.3 Syöttö ja tulostus funktiot 3.4 Rakenteinen ohjelmointi 1

2 4. VISUAL BASIC 4.1 Ohjelmointiympäristö Johdanto Lomakkeen käsittely OLIO ohjelmoinnin aakkosia 4.2 Ohjelman luominen Johdanto Koodin kirjoittaminen Ohjelmoijan apuvälineet 4.3 Ohjelman käyttöliittymä Lomakkeet ja niiden käsittely Lomakkeen objektit Valikot Työkalurivin luominen Tiedon välittäminen 4.4 Ohjelman kirjoittaminen Proseduurit ja koodin kirjoittaminen Muuttujat Ohjausrakenteet Ohjelman testaus ja virheenkäsittely 4.5 Oliot ja olioluokat Lomakeoliot ja objektitaulukot Tiedostonhallinta Omat olioluokat ja niiden käsittely 4.6 Tietokannat Yleistä tietokantojen käsittelystä Tietokantojen käyttö SQL kyselykieli 2

3 1. JOHDANTO 1.1 Taustaa ja ohjelmoinnin käsitemaailma Käsitteen ohjelmointikieli määritteleminen on vaikeaa. Voidaan ajatella, että ohjelmointikieli on väline tai käyttöliittymä, jolla ihminen pystyy kertomaan tietokoneelle, mitä sen pitäisi tehdä. Tämän määritelmän heikkoutena on kuitenkin liiallinen laajuus. Määritelmän mukaan esimerkiksi HTML (hypertext markup language) luettaisiin ohjelmointikieleksi, mitä ei kuitenkaan yleensä haluta. Määritelmää voidaan rajoittaa kertomalla jotain kielen ilmaisuvoimasta. Tavallisesti ohjelmilla tarkoitetaan sellaisia rakenteissa tekstejä, joita pystytään käsittelemään Turingin koneella. Näin ohjelmointikieli on väline, jolla saadaan tietokone simuloimaan universaalia Turingin konetta. Tässä määritelmässä on kuitenkin se ongelma, että todellisten tietokoneohjelmien kohdalla eteen tulee resurssipula, kun taas Turingin koneen nauha on ääretön. Alussa esitetyllä määritelmällä on myös se heikkous, että se ei sano mitään siitä, missä muodossa tietokoneelle annettavien komentojen tulee olla. Aärelliset automaatit ja säännölliset kielet Tilakaaviot ja tilataulut Tarkastellaan sellaisten yksinkertaisten tietojenkäsittelyjärjestelmien kuvaamista ja ominaisuuksia, joilla on vain äärellisen monta mahdollista tilaa. Tällaisen järjestelmän toiminta voidaan kuvata äärellisenä automaattina eli äärellisenä tilakoneena (engl. finite automaton, finite state machine). Äärellisillä automaateilla puolestaan on useita vaihtoehtoisia esitystapoja, joista tilakaaviot (engl. state transition diagrams) lienee havainnollisin. Seuraavalla sivulla olevassa kuvassa on esitetty yksinkertaisen, neljänkymmenen sentin hintaista kahvia tarjoavan kahviautomaatin toimintaa kuvaava tilakaavio. Kaavioesityksessä käytettyjä merkintöjä on myös selostettu seuraavalla sivulla olevassa kuvassa. Automaatti ottaa vastaan syötteenä jonon 10 ja 20 sentin rahoja, ja "hyväksyy" syötejonon, jos siihen sisältyvien rahojen summa on vähintään neljäkymmentä senttiä. Automaatti ei anna vaihtorahaa ja tarjoilee vain yhdenlaista kahvia. Päätösongelmanäkökulmasta voidaan ajatella, että kuvan automaatti ratkaisee ongelman "riittävätkö annetut rahat kahvin ostamiseen?" Äärellisiä automaatteja voidaan yleensäkin käyttää yksinkertaisten päätösongelmien ratkaisujen mallintamiseen. 3

4 Yksinkertaisen kahviautomaatin tilakaavio: Tilakaavioiden merkinnät: Automaatio tila nimeltä q Alkutila q0 Lopputila: automaatti "hyväksyy" syötejonon, jos se jonon loppuessa on tällaisessa tilassa Syötemerkin a aikaansaama siirtymä tilasta q1, tilaan q2 Äärellisen automaatin käsitteen formalisointi, jotta äärellinen automaatin käsitteen tarjoamat mahdollisuudet voitaisiin täysin hyödyntää ja sen rajoitukset saataisiin selville, käsite täytyy formalisoida. Formalisointi perustuu seuraavaan mekanistiseen malliin automaatista ja sen toiminnasta: äärellinen automaatti M koostuu äärellistilaisesta ohjausyksiköstä, jonka toimintaa säätelee automaatin siirtymäfunktio σ, sekä merkkipaikkoihin jaetusta syötenauhasta ja nämä yhdistävästä nauhapäästä, joka kullakin hetkellä osoittaa yhtä syötenauhan merkkiä.' Automaatti käynnistetään erityisessä alkutilassa q O, siten että tarkasteltava syöte on kirjoitettuna 4

5 syötenauhalle ja nauhapää osoittaa sen ensimmäistä merkkiä. Yhdessä toiminta askelessa autotomaatti lukee nauhapään kohdalla olevan syötemerkin, päättää ohjausyksikön tilan ja luetun merkin perusteella siirtymäfunktion mukaisesti ohjausyksikön uudesta tilasta, ja siirtää nauhapäätä yhden merkin eteenpäin. Automaatti pysähtyy, kun viimeinen syötemerkki on käsitelty. Jos ohjausyksikön tila tällöin kuuluu erityiseen (hyväksyvien) lopputilojen joukkoon, automaatti hyväksyy syötteen, muuten hylkää sen. Turingin koneet Tämän automaattimallin kehitti brittimatemaatikko Alan Turing vuosina siis noin 10 vuotta ennen ensimmäisten tietokoneiden kehittämistä pohtiessaan mekaanisen laskennan rajoja. Näennäisestä yksinkertaisuudestaan huolimatta tämä Turingin automaattimalli on huomattavan voimakas. Ns. Churchin Turingin teesin mukaan peräti mikä tahansa mekaanisesti (lue: tietokoneella) ratkeava ongelma voidaan ratkaista Turingin koneella. Turingin koneita voidaan ajatella hyvin yksinkertaisena ohjelmointiformalismina, jolla voidaan ilmaista kaikki mitä vahvimmillakin ohjelmointikielillä tosin kömpelösti. Turingin koneiden etu on siinä, että juuri yksinkertaisuutensa takia niitä on helppo käyttää mekaanisen laskettavuuden (so. ohjelmoitavuuden) rajoja koskevissa yleisissä tarkasteluissa. Turingin kone on kuin äärellinen automaatti, jolla syötenauhan sijaan on toiseen suuntaan loputtoman pitkä työnauha, jota kone pystyy nauhapään välityksellä lukemaan ja kirjoittamaan merkin kerrallaan. Nauhan alussa on erityinen alkumerkki `>', ja sen käytettyä osaa seuraa loppumerkki '<'. Kone pystyy lukiessaan havaitsemaan nämä merkit, mutta se ei pysty kirjoittamaan niitä. (Tarkemmin sanoen: alkumerkin tilalle kone ei saa kirjoittaa mitään muuta merkkiä, ja loppumerkki siirtyy automaattisesti eteenpäin sitä mukaa kuin kone kirjoittaa nauhalle lisää merkkejä.) Kone käynnistetään alkutilassa q O. Tästä lähtien kone toimii askeleittain siirtymäfunktionsa ohjaamana: yhdessä siirtymässä se lukee nauhapään kohdalla olevan merkin ja päättää sitten tilansa ja luetun merkin perusteella, mikä on uusi tila, nauhapään kohdalle kirjoitettava uusi merkki, ja siirtyykö nauhapää käsitellyn merkin kohdalta yhden askelen verran vasemmalle vai oikealle.' Jos kone aikanaan pysähtyy hyväksyvänsä lopputilassa q, merkkijono kuuluu koneen tunnistamaan kieleen. 5

6 Ohjelmointikielen oppiminen voi perustua aikaisemmin opittuihin kieliin, esimerkiksi C++ ohjelmoijien on helppo oppia Java. Myös vähemmän toisiaan muistuttavissa kielissä on paljon samanlaisia piirteitä, joita voidaan pitää ohjelmointikielten peruskäsitteinä. Niiden tunteminen helpottaa myös aivan uudenlaisen ohjelmointikielen oppimista. Samoin kuin luonnollisen kielen oppimisessa myös ohjelmointikielen oppimisessa yleiset tiedot kieliopillisista rakenteista edistävät asioiden omaksumista. Ohjelmoija, joka osaa vain yhtä ohjelmointikieltä, valitsee mielellään tämän kielen ohjelmointitehtäviinsä eikä välttämättä ole halukas oppimaan uusia kieliä. Ohjelmointikielten yleiset periaatteet tunteva ohjelmoija pystyy paljon objektiivisemmin tekemään vertailuja eri kielten välillä ja valitsemaan aina kuhunkin tarkoitukseen sopivimman kielen. Ohjelmoinnin käsitemaailma Tietojenkäsittelyn osapuolia ovat yleisimmin ihminen ja tietokone. Koska tietokone on käytännöllisesti katsoen pelkkää elektroniikkaa, ihmisen ja tietokoneen välinen kommunikointi tulee toteuttaa koneen ehdoilla. Kun tietokone on toiminnassa, sen prosessori suorittaa käytännössä aina jotain ihmisen laatimaa ohjelmaa. Tietokoneohjelma (program) on yleisesti määriteltynä jonkin tietojenkäsittelytehtävän esitys sarjana sellaisia toimenpideohjeita, jotka on mahdollista suorittaa tietokoneella joko suoraan tai tiettyjen muunnosten jälkeen. Tietokoneen alkeistoiminnot perustuvat sen ymmärtämään kieleen eli konekieleen (machine language). Konekielisissä ohjelmissa on kahdenlaisia osia: operaatioita eli käskyjä ja operandeja, jotka ovat yleensä muistipaikkoja. Operaatioiden avulla ohjelmissa käsitellään muistipaikkojen sisältöjä. Ohjelmat ovatkin pohjimmiltaan tietokoneen muistissa olevan tiedon eli datan manipulointikäskysarjoja. Tietokoneen osaamat toimenpiteet eli operaatiot ovat hyvin yksinkertaisia ja niitä on vain rajallinen määrä. Tietokone osaa esimerkiksi laskea yhteen kaksi lukua ja tarkistaa, onko tulos nolla. Koska tietokoneessa kaikki asiat esitetään bittien avulla, konekieliset ohjelmat ovat käytännössä peräkkäistä ykkösiä ja nollia. Ihmisen kannalta konekieli on hyvin hankala tiedon ja toimenpiteiden esittämisen väline. Tämän vuoksi ihminen käyttää tietokoneelle ohjeita laatiessaan konekieltä korkeammalla tasolla olevia ohjelmoinnin välineitä. Ihminen kirjoittaa ohjelman ohjelmointikielellä (programming language), minkä jälkeen ohjelma käännetään (compile) tietokoneen avulla konekielelle, jotta kone voisi sen suorittaa (execute). Käännöksen suorittaa erityinen ohjelma, kääntäjä (compiler), joka käy ohjelman läpi rivi riviltä ja tuottaa tuloksena suorituskelpoisen (executable) ohjelman eli ns. exe koodin. Erotukseksi suorituskelpoisesta ohjelmasta ohjelmointikielellä kirjoitettua ohjelmaa kutsutaan lähdekieliseksi ohjelmaksi tai koodiksi (source program, source code). Jotta ohjelma voitaisiin suorittaa eli ajaa (run), käännöksen tulee onnistua virheettömänä eli ohjelman tulee "mennä käännöksestä läpi". Ohjelmassa ei ole tällöin ohjelmointikielen sääntöjen vastaisia piirteitä. Vaikka ohjelma menisikin käännöksestä läpi, siinä voi olla loogisia virheitä, joiden vuoksi ohjelma ei toimi tarkoitetulla tavalla. Kääntäjä antaa kahdentyyppisiä virheilmoituksia: varoituksia (warnings) ja virheilmoituksia (errors). Varoitukset eivät välttämättä estä suorituskelpoisen ohjelman tuottamista. Niiden avulla ilmoitetaan, että ohjelmassa on oudolta vaikuttavia piirteitä. Mikäli kääntäjä ilmoittaa aidoista virheistä, tämä tarkoittaa, että ohjelma ei ole kirjoitussääntöjen mukainen eikä suorituskelpoista ohjelmaa voida tuottaa. 6

7 Kommunikointihierarkia Kuva 1.1 Ihmisen ja tietokoneen kommunikointihierarkia ohjelmoinnin kannalta. 1.2 Erilaiset ohjelmointikielet ja paradigmat Ohjelmointikieliä on erilaisia. Ne voidaan jakaa karkeasti kahteen luokkaan: symboliset konekielet lausekielet eli korkean tason kielet Symboliset konekielet Symbolisissa konekielissä (assembly language) bitteinä esitettävät käskyt korvataan kirjainlyhenteillä eli käskyille annetaan symboliset vastineet. Esimerkiksi yhteenlaskukäskyn tunnisteena on ADD, vähennyslaskun SUB ja kertolaskun MUL. Muistipaikoille annetaan symbolisilla konekielillä kirjoitetuissa ohjelmissa niin ikään symboliset nimet, esimerkiksi PALKKA, VERO. Symbolisella konekielellä kirjoitettu käsky voisi olla esimerkiksi: SUB PALKKA, VERO (mikä tarkoittaa sitä, että palkasta vähennetään vero, jolloin PALKKA pienenee.) Symbolisella kielellä kirjoitetun ohjelman konekielelle kääntävää ohjelmaa kutsutaan assember kääntäjäksi (assembler). Symboliset konekielet ovat tietokonekohtaisia ja niitä käytetään, kun ohjelmoidaan tietokoneen laitteistoon läheisesti liittyviä asioita, kuten käyttöjärjestelmiä tai laiteajureita (ns. laiteläheinen ohjelmointi). Lausekielet Lausekielet eli korkean tason kielet (high level language) muistuttavat puhuttua kieltä. Niissä on hyvin suppea "sanavarasto" ja tarkat kielioppisäännöt eli syntaksi (syntax). Kielioppisäännöt ilmaisevat ohjelmien sallitun muodon. Ne ovat samankaltaisia kuin esim. suomen kielen kielioppi säännöt välimerkkisääntöineen. Kaikilla asioilla on lisäksi hyvin tarkat merkitykset eli semantiikka (semantics). Tämä on välttämätöntä, jotta ihminen ja kone voisivat ymmärtää ohjelman samalla tavalla. Lausekielet eivät ole suunniteltuja millekään laitteistolle erityisesti vaan ne ovat laiteriippumattomia. Kääntäjä tai tulkki Jotta lausekielellä kirjoitettu ohjelma voitaisiin ajaa jossain tietyssä laitteistossa, ohjelma on käännettävä laitteistoa varten suunnitellulla kääntäjällä konekielelle. Joskus kääntäjä korvataan tulkilla 7

8 (interpreter). Tällöin on kysymys siitä, että lähdekielisestä ohjelmasta konekielelle muunnetut käskyt suoritetaan välittömästi tulkkauksen jälkeen. Käytännössä tämä tapahtuu rivi riviltä. Kääntävissä järjestelmissä sen sijaan koko ohjelma käännetään ennen ajoa. Lausekielen, symbolisen konekielen ja konekielen välinen suhde Ihmisen puhekielen, korkean tason lausekielen, joka on jo ohjelmointikieli, symbolisen konekielen ja konekielen hierarkkinen järjestys suhteessa ihmisen ja koneen käsite maailmaan voidaan esittää seuraavasti: Kuva 1.2. Ohjelmointikielten ja konekielen suhde ihmisen ja tietokoneen käsitemaailmoihin. Ihmisen käsitemaailma edustaa korkeinta abstraktiotasoa ja tietokoneen matalinta. Sanalla paradigma on useita merkityksiä. Ohjelmointikielten yhteydessä sillä tarkoitetaan kokonaisuutta, joka muodostuu seuraavista kolmesta osasta: laskennallisesta mallista, käsitteistöstä ja välineistöstä. Perinteisessä imperatiivisessa paradigmassa laskennallinen malli perustuu RAMkoneeseen (random access machine) eli hajasaantikoneeseen. Jos halutaan toteuttaa esimerkiksi lajitteluohjelma, käsitteistöön kuuluvat kielen rakenteet kuten tietueet, osoittimet, toistorakenteet ja tiedostot. Välineistä taas tarkoittaa sitä, miten ohjelmoija kielen käsitteitä käyttää. Lajitteluohjelman tapauksessa välineistöä voivat olla linkitetty lista sekä syöttö ja tulostustoiminnot. Yleisesti ottaen paradigma antaa mahdollisuudet tai puitteet eri asioiden toteuttamiseen. Eri paradigmoissa on erilaiset mahdollisuudet eri asioiden toteuttamiseen. Jotkin tehtävät onnistuvat helpommin jossakin ohjelmointiparadigmassa, jotkin toiset asiat taas jossakin toisessa paradigmassa. Ohjelmointikielien jaottelu eri paradigmoihin ei ole välttämättä kovin helppoa. Imperatiivinen paradigma (käskykielet) lohkorakenteinen (proseduraalinen) oliokeskeinen hajautettu (rinnakkainen) Deklaratiivinen paradigma (esittelykielet) funktionaalinen looginen 8 tietokantakielet

9 Ohjelmointikielten jaotteluita on muitakin, järjestelmäohjelmointikielet, joita ovat esimerkiksi Pascal, C, C++ ja Java, ja toiseen ryhmään skriptikielet, kuten Perl, Python ja JavaScript. Järjestelmäohjelmointikielet on tarkoitettu komponenttien toteuttamiseen symbolisia konekieliä korkeammalla tasolla, kun taas skriptikielillä voidaan yhdistellä olemassa olevia komponentteja toisiinsa. Paradigmojen jaotteluun ei siis ole olemassa yhtä yleisesti hyväksyttyä tapaa. 1.3 Algoritmit ja tietorakenteet Algoritmit Ohjelmat käsittelevät aina käytännössä tietorakenteita. Niitä menettelytapojen ja sääntöjen kokoelmia, joiden avulla rakenteita käsitellään, kutsutaan algoritmeiksi (algorithm). Algoritmit käsittelevät aina jotain tietoa (syötteitä, lähtötietoja) siten, että syntyy uutta tietoa (tulosteita, tulostietoja). Algoritmeille on tyypillistä, että ne eivät ole mistään esitystavasta tai kielestä riippuvaisia. Ne ovat täysin yleisiä ja niitä voi esittää millä välineillä tahansa, esimerkiksi puhekielellä, graafisesta tai ohjelmointikielellä. On myös huomattava, että algoritmi ei ole yksinomaan ohjelmointiin liittyvä käsite. Esimerkiksi tavallista keittokirjaa voidaan pitää algoritmikokelmana. Reseptit voidaan tällöin nähdä algoritmeina ja raaka aineet tietorakenteina. Tietorakenteet Kaikki ohjelmat käsittelevät aina jotain tietoa. Tieto tulee esittää ohjelmissa ohjelmointikielen sisältämien mekanismien avulla. Korkeantason ohjelmointikielet tarjoavat välineitä, joilla on suorat vastineet reaalimaailman rakenteisiin. Ohjelmointikielet tarjoavat välineitä yksittäisten tietojen esittämistä varten, esimerkiksi ihmisen nimeä, kokeen arvosanaa tai päivämäärää varten. Myös monimutkaisempia rakenteita varten on olemassa esitystapoja. Esimerkiksi puhelinluettelon yhtä riviä varten on rakenne, joka mahdollistaa usean tiedon (tässä tapauksessa nimen, osoitteen ja puhelinnumeron) samanaikaisen käsittelyn. On olemassa myös rakenteita, jotka mahdollistavat suurten tietomäärien käsittelyn. Esimerkiksi yhden vuoden jokaisen päivän sademäärät voidaan koota yhteen tietorakenteeseen. Tietorakenne (data structure) on edellä esitettyjen esimerkkien valossa informaatioyksikkö, joka voi sisältää yhden yksittäisen tiedon tai tietojoukon. Taulukko Taulukko on hyvin yksinkertainen lineaarinen rakenne. Perusrakenne on valmiina useimmissa korkean tason ohjelmointikielissä helppo ohjelmoida, alkiot indeksoidaan ensimmäisestä viimeiseen, mihin tahansa alkioon voidaan heti viitata. Taulukon alkioiden väliin ei voi lisätä uutta alkiota eikä sieltä voi poistaa alkiot Rakenne on erittäin jäykkä, jos tällaisia toimintoja (päivityksiä) tarvitaan. Linkitetty lista (linked list) Se on taulukkoa paljon joustavampi rakenne monessa tilanteessa. Lista koostuu yksittäisistä alkioista, joihin kuhunkin on talletettu dataa ja osoitin (referenssi) seuraavaan alkioon. Listan kokoa ei ole ennalta 9

10 rajoitettu, vaan listaan voidaan lisätä ja siitä voidaan poistaa alkioita ajonaikaisesti listan kokoa rajoittaa vain käytettävissä oleva muisti, alkioita voi lisätä minne tahansa, alkioita voi poistaa mistä tahansa, alkioiden järjestystä voi vaihtaa, listan alkiot voivat olla samaa tyyppiä. Linkitetyn listan tärkein rajoitus on, että sen alkioita voidaan käydä läpi vain yksitellen eli sen alkioihin ei voi viitata suoraan (vrt. taulukko) Pino (stack) Pino on abstrakti tietotyyppi, jolle on määritelty seuraavat operaatiot: Push(x) lisää pinon päälle alkion x Pop() palauttaa ja poistaa pinon päällimmäisen alkion Top() palauttaa pinon päällimmäisen alkion (poistamatta sitä) IsEmptyo palauttaa tiedon siit ä, onko pino tyhjä Toimii siis samaan tapaan kuin pöydällä oleva korttipakka. Pino voidaan toteuttaa taulukon avulla tai linkitettynä listana. Jono (queue) Jono on abstrakti tietotyyppi, jolle on määritelty seuraavat operaatiot: Put(x) tai Enqueue(x) lisää jonon loppuun alkion x Get() tai Dequeue() palauttaa (ja poistaa) jonon ensimmäisen alkion First() palauttaa jonon ensimmäisen alkion IsEmpty() kertoo, onko jono tyhjä Jonokuri FIFO (First In First Out) Jono voidaan toteuttaa eri tavoin (taulukon avulla tai linkitettynä listana). Puurakenteet 10

11 Käsitteitä ja ominaisuuksia: Solmu (vertex) on puuhun kuuluva alkio, johon voidaan tallettaa dataa Väli, särmä, kaari (edge) on suorayhteys kahden solmun välillä Juuri (root) on puun ylin solmu Solmun lähin edeltäjä on sen isä (father, dad, parent). Kauemmista edeltäjistä käytetään nimeä isoisä, esi isä tai edeltäjä (grandfather, ancestor) Solmun lähinnä alemmat seuraajat ovat sen lapsia (children). Näiden lapset vastaavasti lapsenlapsia (grandchildren) Kullakin solmulla on vain yksi isä, juurella ei ole isää Solmulla voi olla o N kpl lapsia. Yleisessä puussa lasten määrää ei ole rajoitettu Saman isän lapset ovat toistensa sisaruksia (sibling) Lehti (leaf, external node) on solmu, jolla ei ole lapsia Muut solmut ovat puun sisäsolmuja (internal node) Lehdet ovat joskus rakenteeltaan erilaisia kuin sisäsolmut Polku (path) on yhteys kahden solmun välillä Juuresta mihin tahansa solmuun on vain yksi polku. Vastaavasti jokaisesta solmusta on vain yksi polku mihin tahansa toiseen solmuun Jokainen solmu on oman alipuunsa (subtree) juuri puiden joukkoon metsä (forest) Binääripuu (binary tree) on järjestetty puu, jossa jokaisella solmulla on täsmälleen kaksi lasta: vasen ja oikea (voivat olla tyhjiä) Binääripuu on tiivis (full), jos kaikki puussa olevat tasot ovat täynnä mahdollisesti alinta lukuun ottamatta 11

12 1.4 Ohjelman perusrakenteet TOP DOWN ja BOTTOM UP menetelmät johtavat käytännössä modulaariseen (modular) ohjelmointiin, jolla tarkoitetaan sitä, että ohjelma koostuu osaohjelmista eli aliohjelmista (sub program). Modulaarisuus on yksi hyvälle ohjelmalla asetettu vaatimus. Toinen vaatimus on strukturaalisuus, mikä edellyttää sitä, että käytettävä ohjelmointikieli tukee rakenteellista eli strukturaalista ohjelmointia (structured programming). Rakenteellinen ohjelmointi käyttää hyväksi kolmea ohjelmoinnin perusrakennetta, jotka kaikki ovat välttämättömiä ja yhdessä riittäviä hyvän ohjelman tekemiseksi. Nämä kolme perusrakennetta ovat 1. peräkkäisrakenne 2. valintarakenne 3. toistorakenne Rakenteita kutsutaan usein ohjausrakenteiksi tai kontrollirakenteiksi (control structure), koska niiden avulla ohjataan ohjelman kulkua. Peräkkäisrakenne Peräkkäisrakenne on yksinkertaisin ohjelmassa käytettävistä rakenteista. Siinä toteutetaan sarja toimenpiteitä peräkkäin. Valintarakenne Valintarakennetta käytetään silloin, kun ohjelmassa halutaan suorittaa jotain vain silloin, kun jokin ehto on voimassa. Valintatilanteesta on esimerkkinä seuraava virke: Jos sinulla on rahaa, käy elokuvissa. Tällainen rakenne voidaan liittää peräkkäisrakenteen sisälle, esimerkiksi päivittäisrutiinien joukkoon, kuten herää syö aamiainen mene kouluun opiskele palaa koulusta tee läksyt JOS (sinulla on rahaa) käy elokuvissa käy iltapesulla mene nukkumaan JOS rakenne voi sisältää vaihtoehtoisen MUUTEN haarana: JOS (sinulla on rahaa) käy elokuvissa käy nakkikioskilla MUUTEN katso tv:tä 12

13 Tässä MUUTEN haara suoritetaan tilanteessa, jossa rahaa ei ole, toisin sanoen kahdesta vaihtoehtoisesta toiminta mallista valitaan toinen ja vain toinen. JOS MUUTEN rakenteen sisässä voi olla toinen JOS rakenne: 13 JOS (sinulla on rahaa) käy elokuvissa käy nakkikioskilla } MUUTEN { JOS (tv:stä tulee jotain katsomisen arvoista) { katso tv:tä } MUUTEN { käy lenkillä } Edellisen rakenteen perusteella lenkille päästään, jos lompakko on tyhjä eikä televisiosta tule mitään mielenkiintoista. Toistorakenne Jos tehtäväkokonaisuuden suorittaminen edellyttää samanlaisina toistuvien yksittäistapahtumien toistamista, voidaan käyttää toistorakennetta. Esimerkiksi kuoppaa kaivettaessa toistuu lapiointi. Kuoppaa pitää kaivaa niin kauan, että se on tarpeeksi syvä. Luonnollisella kielellä vaatimus ja toimintaohje voitaisiin esittää seuraavasti: Kaivo kuoppaa, kunnes se on tarpeeksi syvä. Sama asia voidaan esittää muodollisemmin seuraavasti: TEE SEURAAVAA kaiva lapiollinen NIIN KAUAN KUIN (kuoppa on liian pieni) Sama voitaisiin esittää myös seuraavasti: NIlN KAUAN KUIN (kuoppa on liian pieni) kaiva lapiollinen Toistossa on periaatteena, että jokaisen toistokerran jälkeen (tai ennen sitä) tutkitaan jatkoehto uudelleen ts. "pyöritään silmukassa", kunnes voidaan lopettaa. Rakenteiden edut Rakenteiden etu on siinä, että niitä voidaan yhdistää: rakenteita voidaan kirjoittaa peräkkäin ja kunkin rakenteen sisässä voi olla mikä tahansa rakenne. Rakenteita voidaan kirjoittaa myös useita sisäkkäin. Peräkkäisyyttä ja sisäkkäisyyttä yhdistelemällä syntyy rakenteinen (tai lohkorakenteinen) ohjelma.

14 2. OHJELMAN PERUSELEMENTIT 2.1 Tunnukset Tunnukset (identifier) ovat nimiä erilaisille asioille, jollaisia ohjelmointikielissä ovat mm. muuttujat, vakiot ja tyypit. Tunnus alkaa aina kirjaimella. Ensimmäistä kirjainta voi seurata kirjaimia ja numeroita mielivaltaisessa järjestyksessä. Myös alaviivaa ("_") voi käyttää tunnuksissa (jopa ensimmäisenä merkkinä). Tunnuksissa isot ja pienet kirjaimet ovat usein eriarvoisia. Näin tunnukset C kieli ja c kieli viittaavat eri asiaan. On huomattava, että tunnuksissa ei voi käyttää useinkaan skandinaavisia kirjaimia å, ä, ö, Å, Ä j a Ö. Periaatteessa tunnukset voivat olla miten pitkiä tahansa. ANSI standardi määrittelee, että tunnukset erotetaan toisistaan 31 ensimmäisen merkin osalta, joten pidempiä nimiä ei välttämättä ole järkevää käyttää. 2.2 Muuttujat Muuttujia (variable) käytetään ohjelmissa tietovarastoina erilaisille asioille. Ohjelma voisi kysyä jokaiselta käyttäjältään esimerkiksi tämän nimeä ja tallettaa jokaisen nimen vuorollaan muuttujaan kayttajan_nimi (huomaa, että ä kirjaimen asemesta on käytetty a kirjainta). Täten kayttajan_nimi vaihtelee käyttäjän mukaan eli muuttuja saa erilaisia arvoja. Muuttujalle onkin tyypillistä, että sen arvo muuttuu ohjelman suorituksen aikana useaan kertaan (tästä nimitys muuttuja). Käytännössä muuttuja viittaa alueeseen tietokoneen muistissa. Muuttujan arvoksi kutsutaan sitä, mikä on muistialueen sisältönä. Voisi ajatella, että muistiin viitataan numeerisen osoitteen avulla, mutta on helpompaa antaa muuttujille omat nimet ja viitata muistiin näiden nimien avulla. Muuttujat nimetäänkin tunnusten avulla. Jokaisella muuttujalla on näin ollen kirjaimelta alkava nimi. Tietokoneen muistia voidaan ajatella lokerikkona, jonka lokeroissa muuttujia säilytetään; kun tiedetään lokeron nimi, voidaan käsitellä siellä olevaa muuttujaa. 2.3 Tyypit Oletetaan, että käytössä on muuttuja, jonka nimi on i. Kun ohjelma viittaa muuttujaan i, sen täytyy tietää, minkälaiseen olioon se viittaa. Ohjelman kannalta on oleellista tietää, onko i nimisessä muistipaikassa jokin luku, kirjain, teksti (merkkijono) vai jotain muuta, jotta ohjelmassa osataan tehdä muuttujalle oikeita operaatioita. Jos esimerkiksi muuttujan arvo halutaan tulostaa, on tärkeää tietää, onko tulostettavan muuttujan sisältämässä muistipaikassa luku vai kirjain. Käytännössä muistipaikassa on vain pelkkiä peräkkäisiä bittejä, jotka eivät ilman tulkintaa sisällä mitään informaatiota. Jotta ohjelma osaa käsitellä muistissa olevaa tietoa oikein, sen tulee tietää, kuinka bittejä tulkitaan. Ohjelmointiterminologiaa käyttäen sanotaan, että ohjelman pitää tietää muuttujan tyyppi (type). 14

15 Esimerkiksi C kielessä ennalta määriteltyjä yksinkertaisia tyyppejä ovat mm. seuraavat: int kokonaisluku (16 bittiä) long kokonaisluku (32 bittiä) float liukuluku double kaksoistarkkuuden liukuluku char merkki tai 8 bittinen kokonaisluku Todettakoon, että yhden ja saman muistipaikan sisältöä voidaan tulkita useammalla tavalla. Tulkinta on tavallaan suodatin, jonka läpi tietoa tarkastellaan. Jos 8 bittinen tieto halutaan nähdä merkkinä, käytetään "merkkisuodatinta". Jos se halutaan nähdä kokonaislukuna, käytetään "kokonaislukusuodatinta". 2.4 Muuttujan määrittely Muuttujan määrittely (variable declaration) tarkoittaa muuttujan nimen ja muuttujan tyypin liittämistä toisiinsa. Muuttujien määrittelyt sijoitetaan ohjelmalohkon alkuun. Ohjelmassa tulee ilmoittaa jokaisesta muuttujasta sen tyyppi seuraavasti: int indeksi; char merkki; Muuttujien määrittelyt sijoitetaan siis ohjelmassa ohjelmalohkon alkuun. Samaa tyyppiä olevat muuttujat voi koota listaksi, jossa jäsenet erotetaan toisistaan pilkuilla seuraavaan tapaan: int lukul, luku2, lukua; Ohjelmista tulee yleensä kuitenkin selkeämpiä, mikäli kaikki muuttujien määrittelyt kirjoitetaan omille riveilleen. Muuttujat tulee aina nimetä niiden käyttöä kuvaavalla tavalla, esimerkiksi sademaara, pisteet, palkka,... eikä arvoituksellisilla koodilyhenteillä kuten s, pi, pa. Muuttujan määrittely saa aikaan sen, että tietokoneen muistista varataan tilaa muuttujaa varten. Eri tyypit tarvitsevat erilaisen määrän tilaa: merkille riittää aina yksi tavu, kokonaisluku (int) vie kaksi tavua, pitkä kokonaisluku (long) ja liukuluku (float) vievät 4 tavua. Määrittelyn yhteydessä muuttujalle voidaan antaa alkuarvo seuraavalla tavalla: int summa = 0, Jos muuttujaa ei määritellä mutta sitä yritetään käyttää ohjelmassa, kääntäjä huomaa virheen ohjelman käännös vaiheessa ja antaa tällöin yleensä virheilmoituksen "Undefined symbol..." eli määrittelemätön symboli. 15

16 2.5 Vakiot Kaikissa ohjelmissa käytetään yleensä joitain kiinteitä lukuarvoja laskutoimituksissa. Toisaalta ohjelmien tulosteissa käytetään samanlaisina toistuvia tekstejä. Näissä tilanteissa tarvitaan vakioita (constant). Vakiot jaetaan kahteen ryhmään: paljaat vakiot eli literaalivakiot nimetyt vakiot. Paljaat vakiot Paljaat vakiot voidaan ryhmitellä seuraavasti: numeeriset vakiot, joita ovat esim. 5, 5.0, 5, 12.4 merkkivakiot, joita ovat esim. 5, A, a merkkijonovakiot, jollainen on esim. "Visual Basic" Nimetyt vakiot Paljaalla vakiolle voidaan antaa nimi, jota voidaan käyttää ohjelmassa kuten paljasta vakiota. Tällöin on määritelty nimetty vakio. Nimetty vakio määritellään C kielen ohjelmassa esimerkiksi seuraavasti: # define PII Lauseet Ohjelman varsinainen toiminta tapahtuu lauseissa (statement). Lauseessa tehdään jokin toimenpide, esimerkiksi kahden luvun kertolasku, merkkijonon tulostaminen tai merkin lukeminen. ympyran_ala = Pll * ympyransade * ympyransade; jossa muuttujan ympyran_ala arvoksi sijoitetaan "=' merkin oikealla puolella olevan laskutoimituksen tulos. Tämä on esimerkki lausetyypistä, jota ohjelmissa tarvitaan usein. Lauseella on C kielessä ominaista, että se päättyy aina puolipisteeseen. 2.7 Kommentit Ohjelmiin voi ja niihin kannattaa liittää ohjelman toimintaa selittäviä tekstejä eli kommentteja (comment). Tällaiset selitystekstit sijoitetaan C kielessä merkintöjen /* ja */ väliin esimerkiksi seuraavasti. 16 / * Tämä on kommentti */ On huomattava, että kommentti päättyy vasta loppumerkkiin, vaikka tämä sijaitsisi eri rivillä kuin

17 alkumerkki. Loppumerkin unohtamisesta saattaa seurata, että koko loppu ohjelma tulkitaan kommentiksi. Muuttujien merkitykset kannattaa kommentoida muuttujien määrittelyjen yhteydessä, elleivät muuttujien ien nimet ole täysin tarkoitustaan kuvaavia. Kommentit voidaan kirjoittaa seuraavaan tapaan: int Ikm; / * ohi ajaneiden autojen Ikm */ int k nopeus; / * autojen mitattu keskinopeus */ 3. VUOROVAIKUTTEINEN OHJELMA 3.1 Vuorovaikutteisuus Ohjelmat keskustelevat käyttäjien kanssa eli esittävät käyttäjille kysymyksiä, vastauksia, kehotuksia jne. Käyttäjät puolestaan vastaavat ohjelmien esittämiin kysymyksiin, toimivat ohjelmien kehotuksien mukaan jne. Tällaisia ohjelmia kutsutaan vuorovaikutteisiksi tai interaktiivisiksi (interactive). Vuorovaikutus sisältää tiedon lähettämisen ja vastaanottamisen. Ohjelmoija tarkastelee vuorovaikutussuhdetta aina ohjelman kannalta. Kun ohjelmassa ilmoitetaan käyttäjälle jotain, kyseessä on tiedon lähettäminen eli tulostustoiminto (kirjoittaminen). Kun taas ohjelma ottaa vastaan käyttäjän antamia syötteitä, kyseessä on ohjelman kannalta lukeminen. Tätä vuorovaikutussuhdetta, jota ohjelmissa tarkastellaan aina ohjelman kannalta, havainnollistetaan alla olevassa kuvassa. Kuva 3.1 Vuorovaikutus ohjelman kannalta; ohjelma (suorakulmio) lukee käyttäjän syöttämiä tietoja ja kirjoittaa käyttäjälle viestejä. 3.2 Sijoituslauseet Ohjelman varsinainen toiminta toteutetaan käytännössä erilaisissa lauseissa, joista keskeisin on sijoituslause (assignment statement). Siinä asetetaan tai vaihdetaan muuttujan arvo. Sijoituslauseessa on esimerkiksi C kielessä neljä osaa: muuttujan nimi sijoitusoperaattori lauseke ; 17

18 Sijoituslauseen yleinen muoto on seuraava: muuttujan_nimi = lauseke; Lauseke (expression) voi olla vakioarvo, yksittäinen muuttuja, funktion kutsu tai laskutoimitus, joka sisältää muuttujia, vakioita, funktion kutsuja ja operaattoreita. Yksinkertaisia sijoituslauseita, joissa lausekkeen muodostavat yksittäiset vakiot tai muuttujat, ovat esim. seuraavat: x = 1; lkm = 0; Z = Y; Sijoituslause, jonka oikealla puolella on funktion kutsu, näyttää seuraavalta: x = pow (y, 2); Tässä pow0 on matemaattinen funktio, joka korottaa y:n arvon toiseen potenssiin. Tulos sijoitetaan = arvoksi. Esimerkki laskutoimituksesta on PII * sade * sade missä PII on vakio, sade muuttujan nimi ja * kertolaskuoperaattori. Tämä lauseke voidaan sijoittaa sijoituslauseessa "=" merkin oikealle puolelle, jolloin saadaan sijoituslause ala = PII * sade * sade; 3.3 Syöttö ja tulostus funktiot Ohjelmien kirjoittaminen ei ole sattumanvaraista esimerkiksi C kielisten lauseiden peräkkäin kirjoittamista mielivaltaisessa järjestyksessä vaan systemaattista toimintaa, joka vaatii ajattelua. Jotta ohjelma voisi toimia käytännössä, sen logiikan tulee toimia myös paperilla. Jos ohjelmaa ei pystytä suunnittelemaan kynän ja paperin avulla, sen kirjoittaminen ohjelmointikielellä on mahdotonta. Ohjelmien suunnitteluun on olemassa erilaisia formaaleja (so. muodollisia, tarkkojen sääntöjen mukaisia) välineitä: lohkokaavioita, vuokaavioita ja pseudokoodeja. Ohjelman yleinen rakenne Jokaiseen ohjelmaan kuuluu yleensä kolme vaihetta: 1. tietojen syöttö (käyttäjä syöttää, ohjelma ottaa vastaan) 2. laskenta 3. tietojen tulostus. 18

19 C kielen yleisimmin käytetty tulostuslause (output statement) alkaa sanalla printf. Tämä on funktio, joka tulostaa kuva ruudulle haluttua tietoa. Esimerkiksi lause printf (Hiiohoi"); tulostaa kuvaruudulle tekstin Hiiohoi. Tulostuslauseessa tulostetaan tekstiä lainausmerkkien sisässä. Tekstin lisäksi tulostuslauseessa halutaan usein tulostaa myös lukuja. Jos sen sijaan tulostuslauseessa halutaan tulostaa jokin muuttuva lukuarvo, jota varten ohjelmassa on otettu käyttöön muuttuja, joudutaan toimimaan toisin. Olkoon ohjelmassa seuraava määrittely: int sademaara; Muuttuja sademaara kuvatkoon tietyn päivän sademäärää millimetreinä. Jos ohjelmassa halutaan tulostaa muuttujan sademaara arvo, ei voida kirjoittaa seuraavasti: printf ("Tänään satoi sademaara mm'); / *VÄÄRIN*/ sillä tällöin tulostuisi seuraava teksti: Tänään satoi sademaara mm Jotta saadaan haluttu lopputulos, C:ssä toimitaan seuraavasti: tekstiin sijoitetaan muuttujan arvoa varten muotoilu määre. Itse muuttujan nimi kirjoitetaan erilleen lainausmerkeissä olevasta tekstistä. Se kirjoitetaan tekstin perään pilkulla erotettuna seuraavasti: printf ("Tänään satoi %d mm", sademaara); Edellä %d on muotoilumääre muuttujalle sademaara. Kun lause suoritetaan, %d korvataan sademaara muuttujan arvolla. Jos muuttujan arvo on 12, tulostuisi seuraava teksti: Tänään satoi 12 mm C kielen syöttölauseissa (input statement; käyttäjä syöttää, ohjelma ottaa vastaan) käytetään yleisimmin kahta funktiota, scanf() ja gets(). 3.4 Rakenteinen ohjelmointi Rakenteinen ohjelmointi (structured programming) on systemaattinen tapa tuottaa ohjelmia, joita on helppo ymmärtää, helppo muuttaa ja helppo testata. Rakenteinen ohjelmointi edellyttää selkeiden ohjelmarakenteiden käyttöä. Rakenteisuuden tulee ilmetä myös ohjelman kirjoitusasusta. Tämän vuoksi ohjelmissa käytetään tekstin sisennyksiä. Vaikka sisennyksillä ei ole kääntäjän kannalta merkitystä, niillä on suuri merkitys ohjelman lukijalle. If lauseen yksinkertaisin muoto on sellainen, missä lauseet joko suoritetaan tai jätetään suorittamatta. Ohjelmarakenteita voidaan kuvata vuokaavioiden (flow chart) avulla. Kaavioissa käytetään sovittuja graafisia symboleja. Esimerkiksi yksittäisen vaihtoehdon if rakenne voidaan esittää seuraavanlaisena vuokaaviona: 19

20 Kuva 3.2. If rakenne, jossa on valittavana yksi vaihtoehtoinen toiminta. Salmiakkikuvio kuvaa ehtoa ja suorakaide lauseita, jotka suoritetaan ehdon ollessa tosi; nuolet kuvaavat ohjelman suorituksen etenemistä. Kokonaisia ohjelmia voidaan suunnitella kirjoittamalla vuokaaviota peräkkäin. Pseudokoodin käyttö on yleensä kuitenkin kätevämpää. Käyttäjän kannalta olisi mukavaa, jos ohjelmassa tehtäisiin jotain myös siinä tapauksessa, että ehto ei ole tosi. Tällaista tilannetta varten valintalause voikin sisältää vaihtoehto osan, joka suoritetaan, ellei if ehto ole voimassa. Vaihtoehto osa alkaa avainsanalla else. Kuva 3.3 Vuokaavioesitys if else rakenteelle. Ehdon ollessa tosi haaraudutaan oikealle, epätodessa tilanteessa vasemmalle. Kumpaakin reittiä päästään jatkamaan ohjelman suoritusta if eise rakennetta seuraavasta lauseesta. Valinta useasta vaihtoehdosta Y rakennetta voidaan käyttää monivalintatilanteissa, joissa pitää valita yksi useasta mahdollisesta vaihtoehdosta. Esimerkki tällaisesta tapauksesta voisi olla kolmen vaihtoehdon valintatilanne, jossa pitää tutkia, onko luku nolla, negatiivinen vai positiivinen. Rakenne, jota voidaan käyttää, on seuraava: 20 if (ehto) lauseet else if lauseet else lauseet

21 While toistorakenne Toistorakenteen avulla voidaan suorittaa samoja lauseita toistuvasti peräkkäin. Toistojen määrä on joko etukäteen määrätty tai se riippuu ohjelmassa esitetyistä ehdoista. Tarkastellaan aluksi jo tuttua if rakennetta: if (rahaa > 100) { ostalevyke(); } Tässä ohjelmanosassa suoritetaan lause (oikeastaan aliohjelman kutsu) ostalevyke() (jonka toteutuksesta ei tässä tarvitse välittää), mikäli muuttujalla rahaa on suurempi arvo kuin 100. Ohjelmaan tehdään seuraava muutos: if sana korvataan sanalla while. Tällöin saadaan ohjelmanosa: while (rahaa > 100) { ostalevyke(); } Kun ohjelmassa tullaan peräkkäisrakenteen ohjaamana while lauseeseen, se toimii ensin kuten iflause: aaltosulkeiden välissä olevat lauseet suoritetaan, mikäli ehto on tosi. Kun on päästy while lohkon loppuun, palataan while rakenteen ehto osaan tutkimaan ehtoa uudelleen. Mikäli ehto on edelleen tosi, suoritetaan lauseet uudelleen. Näin jatketaan, kunnes ehto muuttuu epätodeksi. Edellä olevassa esimerkissä on selvästi vikaa, koska siinä ehto (rahaa > 100) näyttää pysyvän jatkuvasti totena. Asian todellinen laita riippuu tietysti ostalevyke() toimenpiteen toteutuksesta: jos siinä pienennetään muuttujan rahaa arvoa, asia on kunnossa. Seuraavassa while silmukassa muuttujan rahaa arvoa pienennetään jokaisella kierroksella, joten ohjelma toimii varmemmin: while (rahaa > 100) { osta levyke(); rahaa = rahaa levykkeen hinta; } While rakenteelle voidaan esittää seuraavanlainen vuokaavioesitys: Kuva 3.4 While rakenteen vuokaavioesitys. Ehdon (salmiakki) ollessa tosi suoritetaan silmukan 21

22 sisäiset lauseet (suorakaide) ja palataan tutkimaan vieläkö ehto on tosi; kun ehto on muuttunut epätodeksi, ohjelma jatkaa eteenpäin. While lausetta käytettäessä on pidettävä mielessä se seikka, jonka unohtaminen johtaa tyypilliseen ohjelma virheeseen: on muistettava vaikuttaa ehtolausekkeen arvoon lauselohkon sisällä siten, että se muuttuu joskus epätodeksi (muuten jäädään "ikuiseen silmukkaan"). For toistorakenne For rakennetta kannattaa käyttää, jos toistojen määrä tiedetään ohjelmassa ennen kuin toistot aloitetaan. Jos esimerkiksi halutaan sademäärätiedot viikon jokaiselle päivälle, tiedetään, että sademääriä on seitsemän kappaletta, ja näin ollen sademäärää pyydetään vuorovaikutteisessa ohjelmassa seitsemän kertaa. For lauseessa toistojen lukumäärää hallitaan ohjelmassa olevan toistolaskurin avulla. Laskurin arvo asetetaan toistojen alussa ykköseksi ja sitä kasvatetaan jokaisella toisto kerralla yhdellä. Toistot päätetään, kun laskuri on ylittänyt sovitun loppuarvon. Laskuriin kohdistuu näin ollen kolme oleellista operaatiota. Nämä ovat 1. laskurin alkuarvon asettaminen 2. laskurin arvon vertaaminen loppuarvoon 3. laskurin arvon kasvattaminen yhdellä. Kuva 3.5 For lauseen vuokaavioesitys. 1 = toistolaskurin alkuarvon asettaminen; 2 = toistoehdon tutkiminen (laskurin arvon vertaaminen loppuarvoon); 3=laskurin arvon kasvattaminen. Numeroimattomassa laatikossa suoritetaan toistettavat lauseet. Do... while toistorakenne Jo käsitellyt toistolauseet while ja for ovat molemmat ns. alkuehtoisia toistolauseita. Lauseessa olevan ehdon arvo tutkitaan, ennen kuin siirrytään toistettavaan lauseosaan. Seuraavaksi käsiteltävä toistolause on loppuehtoinen do... while toistorakenne. Siinä suoritetaan ensin yksi toistokerta ja sen jälkeen tutkitaan pitääkö toistaa uudestaan. Lauseen vuokaavioesitys on seuraava: 22

23 Kuva 3.6. Do...while lauseen vuokaavioesitys. Toistettaviksi tarkoitetut lauseet suoritetaan ensin yhden kerran ja sen jälkeen tutkitaan, pitääkö ne suorittaa uudestaan. 4. VISUAL BASIC 4.1 Ohjelmointiympäristö Johdanto Mikä on Visual Basic? Kun Microsoft julkaisi vuonna 1991 Visual Basicin ensimmäisen version, se oli merkittävä helpotus vaikeana pidettyyn Windows ohjelmointiin: aloittelijakin pystyi sen avulla luomaan toimivia ja tyylikkäitä ohjelmia. Uusien versioiden mukana Visual Basiciin on tullut monia parannuksia, ja se soveltuu laajojenkin ohjelmien tekemiseen. Enää Basic ei ole pelkästään aloittelijoille tarkoitettu harjoitteluohjelmointikieli, josta täytyy siirtyä pois taitojen kehittyessä. Tässä yhteydessä käytetään Visual Basicin versiota 6.0. Melkein kaikki esimerkit toimivat kuitenkin suoraan tai pienin muutoksin vanhemmilla versioilla. Sen sijaan VB. NETin käyttöön ei perehdytä, koska kieli poikkeaa monilta osin Visual Basicin aiemmista versioista. VB. NETiin siirtymiseen ei ainakaan toistaiseksi ole syytä, vaan tavallinen Visual Basic riittää melkein kaikkiin tarkoituksiin paremmin kuin hyvin. Etuna VB. NETiin verrattuna on ohjelmien toimiminen vanhoissa käyttöjärjestelmissä. Visual Basicin käynnistäminen Napsauta Start painiketta (Käynnistä) hiirellä ja siirrä hiiren osoitin kohtaan Programs (Ohjelmat). Napsauta Programs valikosta Microsoft Visual Basic 6.0 ohjelmakansiota. 23

24 Käynnistettyäsi ohjelman näytölle avautuu Visual Basicin ohjelmointiympäristö ja New Projectvalintaikkuna. New Project ikkunan eri välilehtien avulla valitaan, millaista projektia halutaan käsitellä. New välilehden avulla voidaan luoda uusi projekti. Existing välilehden kautta voidaan avata jokin aikaisemmin tehty projekti. Recent välilehdellä ovat viimeksi avatut projektit. Valitse New välilehdeltä uuden projektin tyypiksi Standard EXE ja napsautti Open painiketta (Avaa). Oletusasetusten mukaan Visual Basic lataa ohjelmointiympäristöön joukon ikkunoita. Tärkein näistä ikkunoista on näytön oikeassa laidassa oleva Project Explorer ikkuna, jolla voit käsitellä ohjelmointiprojektia ja kaikkia siihen kuuluvia tiedostoja. Standard EXE projektissa on oletuksena yksi tyhjä lomake, joka avautuu näytölle valmiiksi, kun uusi ohjelmointiprojekti luodaan. Tämän jälkeen voitaisiin ohjelmointi aloittaa vaikkapa muokkaamalla tuota lomaketta. 24

25 Visual Basicin valikot, näppäimet ja työkalut Valikkorivi Valikkorivin valikoista löytyvät kaikki Visual Basicin toiminnot. Valikoissa komentojen oikealla puolella näkyvät niitä vastaavat näppäinkomennot. Näppäinkomennot Voidaan antaa useita komentoja myös näppäimistön avulla; näppäinkomennot hallitsevan ohjelmoijan ei tarvitse koodia kirjoittaessaan siirtää kättä niin usein näppäimistöllä hiirelle. Näppäinkomentojen hallitseminen nopeuttaa koodin kirjoittamista, siirtymistä moduulista toiseen, projektin ja moduulien tallentamista. Työkalurivit Ohjelmassa on useita työkalurivejä, joista Standard työkalurivi on oletusarvoisesti näkyvissä. View valikon Toolbars alivalikosta voidaan ottaa sille tai piilottaa muita Visual Basicin työkalurivejä. Form Editor työkalurivillä on lomakkeen muokkaukseen liittyviä toimintoja. Edit työkalurivillä on koodin kirjoittamisen aputoimintoja. Debug työkalurivillä on koodin testauksen toimintoja. Valitsemalla View/Toolbars valikosta Customize voidaan luoda uusia työkaluriveja ja muokata olemassa olevia valikoitu ja työkalurivejä mieleisiksi. Project Explorer ikkuna Aloittelevan ohjelmoijan on joskus hankala hahmottaa ohjelmointiprojektia ja kaikkia siihen liittyviä tiedostoja. Visual Baskin ohjelmointiprojekteja hallitaan Project Explorer ikkunassa. Ikkunassa käsitellään yksittäisiä projekteja ja niiden moduuleja. Ikkuna saadaan näytölle View valikon komennolle Project Explorer tai painamalla Ctrl+R näppäinyhdistelmää. Project Explorer ikkunassa näkyvät projektiin liittyvät moduulit ryhmiteltynä tyypeittäin. Projektin tallennuksen jälkeen projektin ja moduulien nimien perässä näkyy sulkeissa, minkä nimisinä tiedostoina ne on tallennettu tietokoneelle. 25

26 Projektin hallinta onnistuu kätevästi hiiren kakkospainikkeella avautuvista pikavalikoista. Napsauttamalla projektin kuvaketta hiiren kakkospainikkeella avautuu alla olevan kuvan mukainen projektin pikavalikko. Projektin pikavalikon avulla voidaan esimerkiksi tallentaa kokoprojektin komennolla Save Project tai lisätä projektiin Add alivalikon kautta erilaisia moduuleja. Komennolle Dockable määritellään, kiinnitetäänkö Project Explorer ikkuna näytölle vai onko ikkuna vapaasti siirrettävissä. Oletusarvoisesti kaikki ohjelmointiympäristön ikkunat on kiinnitetty paikoilleen. Properties ominaisuusikkuna Yksi ohjelmoijan kannalta tärkeimmistä Visual Basicin ikkunoista on Properties eli ominaisuusikkuna. Properties ikkunaa käytetään erityisesti silloin, kun muokataan ohjelman käyttöliittymää eli lomakkeiden ulkoasua ja toiminnallisuutta. Ikkunan kautta asetetaan lomakkeelle piirretyille objekteille ominaisuuksia, esimerkiksi määritellään lomakkeella näkyvien tekstien fonttimääritykset. Properties ikkuna saadaan näytölle View valikon komennolla Properties Window tai painamalla F4 näppäintä. Alla olevassa kuvassa näkyy frmtyosopimus nimisen lomakkeen ominaisuuksia. Properties ominaisuusikkunan alareunassa nähdään aktiivisena olevan ominaisuuden kuvaus. 26

27 Välilehtien avulla voidaan valita, halutaanko selata ominaisuuksia aakkosjärjestyksessä, Alphabetic vai ryhmiteltynä käyttötavoittain, Categorized. Properties ominaisuusikkunan yläosan luettelosta voidaan valita, minkä objektin ominaisuuksia ikkunassa halutaan tarkastella. Nuolipainikkeella avautuvassa luettelossa nähdään aktiivinen lomake ja sillä olevien obiektien nimet. Form Layout ikkuna Form Layout ikkunassa voidaan määritellä lomakkeen sijainti näytöllä ohjelmaa käytettäessä. Form Layoutikkunassa näkyvää minilomaketta voi siirtää hiirellä haluamaansa kohtaan esimerkkinäytöllä. Ohjelmoijalle on aikaisemmin ollut työlästä suunnitella lomakkeita eri näyttöresoluutioille. Käytännössä kaikkien sovelluksen ikkunoiden tulisi mahtua näytölle, jonka resoluutio on 800 x 600, tai jopa 640 x 480 pikseliä. Lomakkeen koon määrittelyä helpottaa suuresti Form Layout ikkuna. Ikkunan pikavalikon komennolla Resolutions Guides voidaan helposti näyttää tai piilottaa eri resoluutioita kuvaavat apuviivat. Näiden apuviivojen avulla ohjelmoijan on helppo määritellä, minkä kokoinen valittu lomake on eri resoluutioilla. 27

28 Toolbox työkaluryhmä Toolbox työkaluryhmän painikkeilla voidaan liittää lomakkeille objekteja, kuten tekstikenttiä ja painikkeita. Työkaluryhmässä näkyy valmiina lomakkeilla tavallisimmin tarvitut objektit. Toolbox työkaluryhmän saadaan näytölle View valikon Toolbox komennolle. Toolbox työkaluryhmän pikavalikon komennolla Add Tab voidaan luoda myös omia välilehtiä työkaluryhmään General välilehden lisäksi. Pikavalikon komennolla Components avautuu näytölle valintaikkuna. jonka avulla voidaan hallita Toolbox työkaluryhmässä näkyviä painikkeita. Controls välilehti Components ikkunan Controls välilehdellä näkyvät ne objektikirjastot, jotka on liitetty tai jotka ovat liitettävissä Toolbox työkaluryhmään. Komponentit voivat sijaita esimerkiksi OCX tai DLLtiedostoissa. Työkalukokoelmaa voi laajentaa ostamalla ActiveX komponentteja (esim. Omron CX Server Lite), hakemalla niitä Internetistä tai tekemällä niitä itse Visual Basicilla tai jollain muulla ohjelmointivälineellä (esim. UMIRTX rob). Kaikkia Controls välilehdellä näkyviä komponentteja ei voida noin vain siirtää sovellukseen ja lähettää asiakkaalle. Ohjelmoijalla täytyy olla ohjelmistossa käytettävään komponenttien käyttöoikeudet (esim. ABB WEBSDK). Controls välilehden luettelossa voi näkyä komponentteja. joihin ei ole täysiä käyttöoikeuksia. 28

29 4.1.2 Lomakkeen käsittely Lomakkeita käsiteltäessä erotetaan kaksi kokonaisuutta toisistaan, lomakkeen ulkonäön suunnittelu ja lomakkeen toiminnan suunnittelu (koodi). Kumpaakin kokonaisuutta muokataan omissa ikkunoissaan. Nämä kaksi ikkunaa muodostavat yhdessä lomakemoduulin, joka tallennetaan yhtenä tiedostona. Lomakemoduulin tiedostotarkennin on FRM. Lomakkeen muokkausikkuna Objektien lisäys lomakkeelle ja muu ulkonäön muokkaus tehdään omassa ikkunassaan. Lomakkeen muokkausikkuna avautuu näytölle oletusarvoisesti, kun aloitetaan uutta projektia. Myöhemmin lomakkeen muokkausuikkuna saadaan näytölle kaksoisnapsauttamalla lomakkeen kuvaketta Project Explorer ikkunassa. Kun projektiin lisätään uusia lomakkeita Project valikon Add Form komennolle, jokaista uutta lomaketta muokataan omassa ikkunassaan. Lomakkeen muokkausikkunan pikavalikko Lomakkeen muokkausikkunan tärkeimmät toiminnot voidaan valita hiiren oikeanpuoleisella painikkeella avautuvasta pikavalikosta. View Code, siirtyminen lomakkeen koodi ikkunaan. Menu Editor, valikkojen tekoon liittyvän ikkunan avaaminen. Lock Controls, lomakkeen objektien lukitseminen paikoilleen. Properties, aktivoi ominaisuusikkunan. Lomakkeen korkeuden ja leveyden muuttaminen Lomakkeen korkeutta tai leveyttä voidaan muuttaa vetämällä hiirellä lomakkeen reunoilla näkyvistä koonmuuttokahvoista. Lomakkeen kokoa voidaan muuttaa myös Properties ominaisuusikkunasta kohdista Width ja Height. 29

30 Koodieditori Ohjelmoijan kannalta Visual Basicin tärkein ikkuna on koodin muokkausikkuna eli koodieditori. Koodieditorin saa näytölle antamalla View valikosta komennon Code tai painamalla F7 näppäintä. Koodin muokkausikkunan otsikkorivillä näkyy käsiteltävän projektin osan nimi, esimerkiksi lomakkeen nimi. Kun ohjelmoija on suunnitellut ja piirtänyt lomakkeen eli ohjelman käyttöliittymän, hän siirtyy koodieditoriin kirjoittamaan koodia, joka viimeistelee lomakkeen toiminnallisuuden. Koodieditorin käyttö Object luettelon avulla voidaan selata lomakemoduulissa olevia objekteja. Valitsemalla esimerkiksi objekti cmdok voidaan kirjoittaa koodia, joka liittyy lomakkeen OK painikkeeseen. Procedure luettelossa näkyvät valitun objektin tapahtumat. Kuvan luettelossa näkyy lomakkeen tapahtumia eli Object luettelosta on valittu Form. Jos johonkin objektin tapahtumaan on jo kirjoitettu koodia, tapahtuma näkyy luettelossa lihavoituna. Jos Object luettelosta on valittuna General, niin Procedure luettelossa näkyvät lomakkeella olevat käyttäjän määrittelemät proseduurit eli aliohjelmat. Ikkunan vasemman alakulman painikkeilla voidaan koodieditorin näkymäksi valita joko proseduuri tai moduulinäkymä. Kuvassa on valittuna moduulinäkymä (Full Module VieW). Moduulinäkymässä proseduurit erotetaan toisistaan viivalla. Tapahtuma käsite Lomakkeen objektit kykenevät reagoimaan erilaisiin tapahtumiin, esimerkiksi hiiren napsautukseen tai kohdistimen siirtämiseen tekstikentästä toiseen. Objektien tapahtumat on ohjelmoitu niihin valmiiksi. Ohjelmoijan tehtävä on valita sopiva tapahtuma ja kirjoittaa koodi, jossa määritellään, miten johonkin objektin tapahtumaan reagoidaan vai reagoidaanko mitenkään. Koodieditorin ohjetoiminnot Kun koodieditorissa kirjoitetaan koodia, käynnistyy Quick Info ohjetoiminto, joka helpottaa ohjelmoijaa. Näytölle tulee automaattisesti ponnahdusikkuna, jossa on kirjoitettavaan kohtaan liittyvä lyhyt ohje. Kuvassa Quick Info näyttää MsgBox funktion rakenteen, minkälaisia argumentteja funktiolle voidaan antaa. MsgBox funktion avulla käyttäjälle näytetään viesti ikkuna. 30

OHJELMOINTIA 1. JOHDANTO 2. OHJELMAN PERUSELEMENTIT 3. VUOROVAIKUTTEINEN OHJELMA

OHJELMOINTIA 1. JOHDANTO 2. OHJELMAN PERUSELEMENTIT 3. VUOROVAIKUTTEINEN OHJELMA OHJELMOINTIA 1. JOHDANTO 1.1Taustaa ja ohjelmoinnin käsitemaailma 1.2 Erilaiset ohjelmointikielet ja paradigmat 1.3 Algoritmit ja tietorakenteet 1.4 Ohjelman perusrakenteet 2. OHJELMAN PERUSELEMENTIT 2.1

Lisätiedot

Esimerkki 1: Kahviautomaatti.

Esimerkki 1: Kahviautomaatti. Esimerkki 1: Kahviautomaatti. ÄÄRELLISET AUTOAATIT JA SÄÄNNÖLLISET KIELET 2.1 Tilakaaviot ja tilataulut Tarkastellaan aluksi tietojenkäsittelyjärjestelmiä, joilla on vain äärellisen monta mahdollista tilaa.

Lisätiedot

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) Toistaiseksi helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Vaikeaa eroavuudet Pythonin ja C:n

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

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin

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

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

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

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

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

Automaatit. Muodolliset kielet

Automaatit. Muodolliset kielet Automaatit Automaatit ovat teoreettisia koneita, jotka käsittelevät muodollisia sanoja. Automaatti lukee muodollisen sanan kirjain kerrallaan, vasemmalta oikealle, ja joko hyväksyy tai hylkää sanan. Täten

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

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

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A. Tehtävä. Tämä tehtävä on aineistotehtävä, jossa esitetään ensin tehtävän teoria. Sen jälkeen esitetään neljä kysymystä, joissa tätä teoriaa pitää soveltaa. Mitään aikaisempaa tehtävän aihepiirin tuntemusta

Lisätiedot

Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 7. Quick Start - opas Condes 7. olfellows www.olfellows.net 1.

Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 7. Quick Start - opas Condes 7. olfellows www.olfellows.net 1. Condes Suunnistuksen ratamestariohjelmisto Versio 7 Quick Start opas Yhteystiedot: olfellows Jouni Laaksonen Poijukuja 4 21120 RAISIO jouni.laaksonen@olfellows.net www.olfellows.net olfellows www.olfellows.net

Lisätiedot

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

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

Lisätiedot

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015 TIEA24 Automaatit ja kieliopit, syksy 205 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 5. marraskuuta 205 Sisällys Käsiteanalyysiä Tarkastellaan koodilukkoa äärellisenä automaattina. Deterministinen äärellinen

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

1. Universaaleja laskennan malleja

1. Universaaleja laskennan malleja 1. Universaaleja laskennan malleja Laskenta datan käsittely annettuja sääntöjä täsmällisesti seuraamalla kahden kokonaisluvun kertolasku tietokoneella, tai kynällä ja paperilla: selvästi laskentaa entä

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

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

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

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

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

Sähköposti ja uutisryhmät 4.5.2005

Sähköposti ja uutisryhmät 4.5.2005 Outlook Express Käyttöliittymä Outlook Express on windows käyttöön tarkoitettu sähköpostin ja uutisryhmien luku- ja kirjoitussovellus. Se käynnistyy joko omasta kuvakkeestaan työpöydältä tai Internet Explorer

Lisätiedot

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Hahmon etsiminen syotteesta (johdatteleva esimerkki) Hahmon etsiminen syotteesta (johdatteleva esimerkki) Unix-komennolla grep hahmo [ tiedosto ] voidaan etsia hahmon esiintymia tiedostosta (tai syotevirrasta): $ grep Kisaveikot SM-tulokset.txt $ ps aux

Lisätiedot

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012 TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. tammikuuta 2012 Sisällys Sisällys Äärellisiä automaatteja PUSH ON PUSH OFF Q T Q J C C H S C,Q C,Q 0 50s 1e

Lisätiedot

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

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

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

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

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

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

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi Imperatiivisen ohjelmoinnin peruskäsitteet muuttuja muuttujissa oleva data voi olla yksinkertaista eli primitiivistä (esim. luvut ja merkit) tai rakenteista jolloin puhutaan tietorakenteista. puhuttaessa

Lisätiedot

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

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

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

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien

Lisätiedot

Muuttujien määrittely

Muuttujien määrittely Tarja Heikkilä Muuttujien määrittely Määrittele muuttujat SPSS-ohjelmaan lomakkeen kysymyksistä. Harjoitusta varten lomakkeeseen on muokattu kysymyksiä kahdesta opiskelijoiden tekemästä Joupiskan rinneravintolaa

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

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

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

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

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto Condess ratamestariohjelman käyttö Aloitus ja alkumäärittelyt Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto Kun kysytään kilpailun nimeä, syötä kuvaava nimi. Samaa nimeä käytetään oletuksena

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

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

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

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia Kukin alkio (viite) talletettuna solmuun (node) vastaa paikan käsitettä

Lisätiedot

Algoritmit 1. Luento 4 Ke Timo Männikkö

Algoritmit 1. Luento 4 Ke Timo Männikkö Algoritmit 1 Luento 4 Ke 18.1.2017 Timo Männikkö Luento 4 Tietorakenteet Pino Pinon toteutus Jono Jonon toteutus Lista Listaoperaatiot Algoritmit 1 Kevät 2017 Luento 4 Ke 18.1.2017 2/29 Pino Pino, stack,

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

Lisätiedot

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b Pythonin Kertaus Cse-a1130 Tietotekniikka Sovelluksissa Versio 0.01b Listat 1/2 esimerkkejä listan peruskäytöstä. > lista=['kala','kukko','kissa','koira'] ['kala','kukko','kissa','koira'] >lista.append('kana')

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

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö Algoritmit 2 Luento 2 Ke 15.3.2017 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2017 Luento

Lisätiedot

Ohjausrakenteet. Valinta:

Ohjausrakenteet. Valinta: Ohjausrakenteet Luento antaa yleiskuvan siitä kuinka ohjelmassa suorittaan vaihtoehtoisia tehtäviä valintarakenteiden avulla ja kuinka samanlaisia ohjelma-askeleita toistetaan toistorakenteiden avulla

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

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 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö Algoritmit 2 Luento 2 To 14.3.2019 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2019 Luento

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PUURAKENTEET, BINÄÄRIPUU, TASAPAINOTETUT PUUT MIKÄ ON PUUTIETORAKENNE? Esim. Viereinen kuva esittää erästä puuta. Tietojenkäsittelytieteessä puut kasvavat alaspäin.

Lisätiedot

δ : (Q {q acc, q rej }) (Γ k {, }) Q (Γ k {, }) {L, R}.

δ : (Q {q acc, q rej }) (Γ k {, }) Q (Γ k {, }) {L, R}. 42 Turingin koneiden laajennuksia 1 oniuraiset koneet Sallitaan, että Turingin koneen nauha koostuu k:sta rinnakkaisesta urasta, jotka kaikki kone lukee ja kirjoittaa yhdessä laskenta-askelessa: Koneen

Lisätiedot

ELM GROUP 04. Teemu Laakso Henrik Talarmo

ELM GROUP 04. Teemu Laakso Henrik Talarmo ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................

Lisätiedot

OpenOffice.org Impress 3.1.0

OpenOffice.org Impress 3.1.0 OpenOffice.org Impress 3.1.0 Sisällysluettelo 1 Esityksen luominen...1 2 Dian rakenne...2 3 Dian lisääminen, poistaminen, siirtäminen ja kopioiminen...3 4 Diojen koon muuttaminen...3 5 Pohjatyylisivut...4

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

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 8.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 8.2.2010 1 / 38 Debuggeri Tyypillinen tilanne: ohjelma on kirjoitettu, Python-tulkki ei valita virheistä, mutta ohjelma

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

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

Ohjelmoinnin peruskurssi Y1

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

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

Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 8. Quick Start - opas Condes 8. olfellows www.olfellows.fi 1.

Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 8. Quick Start - opas Condes 8. olfellows www.olfellows.fi 1. Condes Suunnistuksen ratamestariohjelmisto Versio 8 Quick Start opas Yhteystiedot: olfellows Jouni Laaksonen Poijukuja 4 21120 RAISIO Sähköposti: jouni.laaksonen@olfellows.fi www.olfellows.fi olfellows

Lisätiedot

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen: Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Microsoft SQL käyttö Yleistä VisualStudiosta Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen: - sovellushallintaan -

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

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

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

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013 TIEA24 Automaatit ja kieliopit, kesä 3 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 22. toukokuuta 3 Sisällys Äärellisiä automaatteja ON PUSH PUSH OFF Q T J Q C C H S C,Q C,Q 0 40 60 80 00, 70 90 Deterministinen

Lisätiedot

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys Loogisia operaatioita - esimerkkejä Tänään on lämmin päivä ja perjantai Eilen satoi ja oli keskiviikko tai tänään on tiistai. On perjantai ja kello on yli 13 Ei ole tiistai tai ei sada. Ei pidä paikkaansa,

Lisätiedot

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

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja 581336 Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja 1. S! axc X! axc X! by c Y! by c Y! " 2. (a) Tehtävänä on konstruoida rajoittamaton kielioppi, joka tuottaa kielen f0 n 1 n jn 1g. Vaihe1: alkutilanteen

Lisätiedot

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin? Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin? 2013-2014 Lasse Lensu 2 Algoritmit ovat deterministisiä toimintaohjeita

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

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

Java-kielen perusteita

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

Lisätiedot

TIETOKONEEN ASETUKSILLA PARANNAT KÄYTETTÄVYYTTÄ

TIETOKONEEN ASETUKSILLA PARANNAT KÄYTETTÄVYYTTÄ TIETOKONEEN ASETUKSILLA PARANNAT KÄYTETTÄVYYTTÄ Windows XP-käyttöjärjestelmän asetuksilla sekä Word-asetuksilla voit vaikuttaa tietokoneen näytön ulkoasuun, selkeyteen ja helppokäyttöisyyteen.. 1) ASETUKSET

Lisätiedot

if-lauseen yksinkertaisin muoto on sellainen, missä tietyt lauseet joko suoritetaan tai jätetään suorittamatta.

if-lauseen yksinkertaisin muoto on sellainen, missä tietyt lauseet joko suoritetaan tai jätetään suorittamatta. if- valintarakenne Yksittäisen vaihtoehdon valinta if-lauseen yksinkertaisin muoto on sellainen, missä tietyt lauseet joko suoritetaan tai jätetään suorittamatta. Syntaksi: if (ehto) lauseita; Aaltosulkeiden

Lisätiedot

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten, Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten, että se pystyy suorittamaan kaikki mahdolliset algoritmit?

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015 TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 30. marraskuuta 2015 Sisällys t Väitöstilaisuus 4.12.2015 kello 12 vanhassa juhlasalissa S212 saa tulla 2 demoruksia

Lisätiedot

M =(K, Σ, Γ,, s, F ) Σ ={a, b} Γ ={c, d} = {( (s, a, e), (s, cd) ), ( (s, e, e), (f, e) ), (f, e, d), (f, e)

M =(K, Σ, Γ,, s, F ) Σ ={a, b} Γ ={c, d} = {( (s, a, e), (s, cd) ), ( (s, e, e), (f, e) ), (f, e, d), (f, e) Tik-79.148 Kevät 2001 Tietojenkäsittelyteorian perusteet Laskuharjoitus 7 Demonstraatiotehtävien ratkaisut 1. Pinoautomaatti M = K Σ Γ s F missä K Σ s ja F on määritelty samalla tavalla kuin tilakoneellekin.

Lisätiedot

Lisää pysähtymisaiheisia ongelmia

Lisää pysähtymisaiheisia ongelmia Lisää pysähtymisaiheisia ongelmia Lause: Pysähtymättömyysongelma H missä H = { w111x w validi koodi, M w ei pysähdy syötteellä x } ei ole rekursiivisesti lueteltava. Todistus: Pysähtymisongelman komplementti

Lisätiedot

Tietorakenteet ja algoritmit - syksy 2015 1

Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python 7. helmikuuta 2009 Ohjelmoinnista Ohjelman peruselementtejä Koodin kommentointi Lohkorakenne Ohjausrakenteet If For While Try Funktiot Käyttö

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

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:

Lisätiedot

Ksenos Prime Käyttäjän opas

Ksenos Prime Käyttäjän opas Ksenos Prime Käyttäjän opas Versio 11.301 Turun Turvatekniikka Oy 2011 Selaa tallenteita. Tallenteiden selaaminen tapahtuu samassa tilassa kuin livekuvan katselu. Voit raahata hiirellä aikajanaa tai käyttää

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

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

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