1. Ohjelmoinnin peruskäsitteet ja -elementit

Koko: px
Aloita esitys sivulta:

Download "1. Ohjelmoinnin peruskäsitteet ja -elementit"

Transkriptio

1 1. Ohjelmoinnin peruskäsitteet ja -elementit 1. ohjelmoinnin periaatteet 2. ohjelmointikielet 3. algoritmien suunnittelu 1

2 1.1 Ohjelmoinnin periaatteet Vaatimukset Määrittely Suunnittelu Toteutus Integrointi Testaus Käyttöönotto ja ylläpito 2

3 Ohjelmointi sisältää laajasti ottaen seuraavat vaiheet esitutkimus (vaatimukset) o yleiset vaatimukset (asiakasvaatimukset) o mitä ohjelman tulee tehdä, ei miten ohjelma toteutetaan o onko ratkaisua olemassa o miksi ohjelma/ohjelmisto tulee tehdä o mitkä ovat asiakkaan todelliset tarpeet o mitä se saa maksaa o yksityiskohtaisten, ristiriidattomien ja täydellisten vaatimusten selvittäminen on usein vaikeaa 3

4 4 määrittely o analysoidaan asikasvaatimuksia ja johdetaan niistä ohjelmistovaatimukset (järjestelmävaatimukset, tekniset vaatimukset, ominaisuudet) o kuvataan ohjelmiston toiminnot toteutettavat ominaisuudet käyttöliittymä kommunikointi muiden järjestelmien kanssa o toteutukselle asetettavat ei -toiminnaliset vaatimukset ja rajoitukset suoritusteho vasteaika käytettävyys käytettävissä oleva muistitila toteutus tietyllä ohjelmointikielellä

5 suunnittelu o suunnitellaan määriteltyjen toimintojen toteutus (miten joku asia tehdään) o arkkitehtuurisuunnittelu -> moduulit o moduulisuunnittelu -> moduulien sisäinen rakenne tietorakenteet algoritmit kuvaamiseen voi käyttää ns. pseudokoodia, joka on normaalikielen ja jonkin ohjelmointikielen sekoitus toteutus o suunnitelmien kääntäminen käytettävälle ohjelmointikielelle o käsitetään usein tärkeimmäksi, vaikka sen tulisi olla vain suunnitelmien kaavamainen toteutus (luovuus kohdistuu analyysija suunnitelmavaiheisiin) o ohjelmakoodin kirjoittamisessa tulisi kiinnittää huomio tyyliin ja dokumentointiin 5

6 integrointi ja testaus o ohjelman testauksen tehtävänä on löytää virheitä, ei todistaa ohjelman virheettömyyttä o debuggaus, selvitetään ongelman syytä ja pyritään korjaamaan löytynyt virhe (tehtyjen korjausten vaikutukset on myös testattava) o myös vaatimukset ja suunnitelmat on testattava käyttöönotto ja ylläpito o asiakkaan ongelmien ratkominen o virheiden korjaaminen o ohjelman muuttaminen vaatimusten muuttuessa o uusien piirteiden lisääminen 6

7 Tämä ns. vesiputousmalli on erityistapaus yleisestä ongelmanratkaisumallista analysoi ratkaistava ongelma niin että ymmärrät sen kunnollisesti suunnittele ratkaisu toteuta ja testaa ratkaisua 7

8 Olennaiset asiat ovat tehtävän analyysi ja ohjelman suunnittelu, jotta ohjelmaa ei tarvitsisi muuttaa jälkeenpäin muutokset kalliita ja vaikeita suorittaa ohjelma voidaan suunnitella ja toteuttaa hyvin monella tavalla, ei ole yhtä ainoata oikeaa tapaa ratkaista tiettyä ongelmaa 8

9 Keskeistä kurssissa on ymmärtää ohjelmointi suunniteltuna ongelmanratkaisuna ohjelmaa ei voi kirjoittaa ennen kuin annettu tehtävä on ymmärretty ja siihen liittyvä ongelma ratkaistu algoritmin avulla algoritminen ongelmanratkaisu riippumaton toteutuskielestä; ratkaisun jälkeen ohjelma voidaan koodata periaatteessa millä tahansa ohjelmointikielellä ohjelman toteuttaminen systemaattisesti Käytännössä ohjelman kehitys ei voi edetä kirjaimellisesti edellä mainitun mallin (ns. vesiputousmalli) mukaisesti osa vaatimuksista saattaa selvitä vasta projektin aikana vaatimukset muuttuvat projektin aikana 9

10 Kurssilla tarvitaan perustiedot (alkeet) C-kielestä käytännön esimerkkien toteuttamiseksi vaarana liika kielikeskeisyys samat periaatteet ohjelmien kehittämiseksi pätevät myös muihin ohjelmointikieliin 10

11 Tietokone keskusmuisti Tulostuslaite Muistilaite Kommunikointilaite CPU Syöttölaite 11

12 Keskusmuisti OSOITE SISÄLTÖ merkki 'J' merkki 'a' merkki 'v' merkki 'a' numero 3 12

13 Ohjelmointikielet Konekieli eri valmistajien keskusyksiköillä (CPU) on kullakin oma konekieli esim voi tarkoittaa käskyä laske kaksi lukua yhteen konekielinen ohjelmointi on kuitenkin työlästä virhealtista ohjelman kirjoittaminen liian hidasta 13

14 Assembly-kieli kullakin prosessorilla oma assembly -kieli käytetään ns. muistikkaita (mnemonics) kuvaamaan eri käskyjä esim. ADD R1, R2 helpottaa ohjelmointia käännettävä konekieliseksi ennen suorittamista (assembler) assembler ADD R1, R

15 Korkean tason ohjelmointikielet Basic, Fortran, Cobol, Pascal, C, C++, Ada, Java kielet muistuttavat melkein jokapäiväistä englannin kieltä yksi käsky tekee useita pikku tehtäviä helppo käyttää siirrettävyys Esimerkiksi: pintaala = 5 * 5 * ; 15

16 Ohjelma on käännettävä konekieliseksi ennen kuin sitä voidaan suorittaa. Kääntäminen voidaan toteuttaa eri tavoin. kääntäjä (compiler) on ohjelma, joka saa syötteeksi lähdekoodin (source code)(ohjelmoijan kirjoittamaa koodia) ja tuottaa käännöksen tuloksena kohdekoodia (target code). kohdekoodi voi olla joko koneen keskusyksikön ymmärtämiä konekielisiä käskyjä tai esimerkiksi Java-kielen tapauksessa ns. tavukoodia (byte code). tavukoodia ei voi suoraan suorittaa missään prosessorissa. tarvitaan erillinen tulkkausohjelma, joka kääntää tavukoodin konekielelle ja lähettää käskyt prosessorin suoritettavaksi 16

17 Syntaksi ja semantiikka ohjelmointikielen syntaksi (kielioppi) määrittelee kuinka voidaan symboleja, varattuja sanoja ja tunnuksia yhdistelemällä muodostaa ohjelma, joka noudattaa kielen sääntöjä ohjelmointikielen semantiikka määrittää mitä ohjelma tekee syntaksiltaan oikea ohjelma ei tarkoita sitä, että ohjelma olisi myös semantiikaltaan oikea, vaan ohjelma voi olla täysin järjetön. Ohjelma tekee aina sitä mitä sen käsketään tehdä, mutta tämä ei välttämättä ole sama kuin mitä ohjelman halutaan tekevän. 17

18 Virheet ohjelmassa voi olla kolmenlaisia virheitä kääntäjä löytää syntaksivirheet, eli virheet, jotka ovat kielen sääntöjen vastaisia Jos ohjelmassa on syntaksivirheitä ei kääntäjä tuota suoritettavaa ohjelmaa virhetilanne voi ilmetä myös ohjelman suorituksen aikana o yleensä nollalla jakaminen keskeyttää ohjelman suorituksen ohjelma voi toimia, mutta tuottaa silti vääriä tuloksia; loogiset virheet 18

19 Lausekielet Lausekielen periaate: algoritmit + tietorakenteet = ohjelmat Algoritmi on yksiselitteinen ja äärellinen sarja toimintaohjeita tehtävän suorittamiseksi ohjelmointikielestä riippumaton toteutettavissa koneellisesti toimintaohje = lause = käsky Algoritmi määrittelee toiminnot, joiden kohteina ovat tiedot jotka esitetään tietorakenteissa -> tietojenkäsittely 19

20 Kun algoritmit ja tietorakenteet kirjoitetaan ohjelmointikielellä saadaan ohjelma 20

21 Toiminnot Yleisesti ottaen kieli tarjoaa perustoiminnot ja välineet monimutkaisempien toimintojen rakentamiseen perustoiminnot: sijoituslauseet aritmeettiset operaatiot loogiset operaatiot tekstin luku tulostaminen ohjausrakenteet monimutkaisempien toimintojen määrittämiseksi peräkkäisyys: lause1; lause2;... lausen; valinta (haarautuminen): if-then toisto: while, repeat, for 21

22 toiminnan abstrahointi moduulien avulla: kutsutaan funktioiksi, metodeiksi, riippuen käytettävästä ohjelmointikielestä 22

23 Askeleittain tarkentaminen Seuraavilla esimerkeillä pyritään antamaan intuitiivinen kuva algoritmista käyttäen pseudokieltä, joka on sekoitus ohjelmointikieltä ja luonnollista kieltä Algoritmien kehittäminen usein vaikeaa ja virhealtista: Esim. Lentoajan laskenta aikataulun perusteella 1. lue lähtöaika 2. lue saapumisaika 3. vähennä saapumisajasta lähtöaika 23

24 Yksinkertainen ongelma ja algoritmi, joka antaa yleensä oikean vastauksen. Silti syntyy ongelmia jos lähtö- ja saapumispaikat sijaitsevat eri aikavyöhykkeillä. Virheet usein vaikeita havaita; tarvitaan systemaattista lähestymistapaa algoritmien suunnitteluun Yleisesti käytetty lähestymistapa tarkentaa algoritmin askeleittain tarkentaminen (hajoita ja hallitse) stepwise refinement tai top-down design kokonaistoiminnot tarkennetaan toistuvasti osatoiminnoiksi Esimerkkinä kehitetään algoritmi, joka kertoo robotille, kuinka keitetään kuppi teetä (kerrotaan tietokoneelle, miten tehtävä suoritetaan) 24

25 Alustava versio: 1. keitä vesi 2. laita tee kuppiin 3. lisää vesi kuppiin Käskyjen tarkentaminen siten, että robotti pystyy ne tulkitsemaan. Tarkennetaan ensimmäinen komento keitä vesi 1.1 täytä pannu vedellä 1.2 laita levy päälle 1.3 laita pannu levylle 1.4 odota kunnes vesi kiehuu 1.5 ota pannu levyltä 1.7 laita levy pois päältä 25

26 Samoin tarkennetaan toinen komento laita tee kuppiin 2.1 ota teepaketti hyllystä 2.2 avaa teepaketti 2.3 ota teepussi 2.4 laita teepussi kuppiin 2.5 sulje teepaketti Alkuperäisen algoritmin kaksi ensimmäistä käskyä on tarkennettu ja saatiin kaksi alialgoritmia. Tarkoituksena on se, että robotti suorittaa käskyt peräkkäisessä järjestyksessä. 26

27 Voi olla, että algoritmia joudutaan vielä tarkentamaan. Esim. täytä pannu vedellä : aseta pannu hanan alle avaa hana odota kunnes pannu on täynnä sulje hana Kyseessä on kolmas tarkennusaskel Tarkennusta jatketaan, kunnes saavutetaan tarkkuuden tason jossa robotti voi suorittaa lauseet Tuloksena on hierarkkinen rakenne. Saadaan lopullinen algoritmi, joka voi näyttää vaikka tältä 27

28 /* Algoritmi teen keittämiseen */ /* Keitä vesi */ aseta pannu hanan alle avaa hana odota kunnes pannu on täynnä sulje hana 1.2 laita levy päälle 1.3 laita pannu levylle 1.4 odota kunnes vesi kiehuu 1.5 ota pannu levyltä 1.6 laita levy pois päältä 28

29 /* Laita tee kuppiin */ 2.1 ota teepaketti hyllystä 2.2 avaa teepaketti 2.3 ota teepussi 2.4 laita teepussi kuppiin 2.5 sulje teepaketti /* Lisää vesi kuppiin */ 3 lisää vesi kuppiin Rivit /* ja */ merkkien väleissä ovat ohjelman kommentteja jotka on tarkoitettu ohjeiksi ohjelman lukijalle, ei robotille 29

30 Algoritmin kuvaamiseen voidaan käyttää myös vuokaaviota: Keitä vesi laita tee kuppiin lisää vesi kuppiin 30

31 Vuokaavion osan sisällön voi edelleen kuvata tarkemmin (esim. täytä pannu vedellä: 31

32 laita levy päälle laita pannu levylle odota kunnes vesi kiehuu ota pannu levyltä laita levy pois päältä 32

33 Peräkkäisyys Edellä esitelty algoritmi on suoraviivainen peräkkäinen sarja lauseita (käskyjä) robotille ohjelman suorittamiseksi. lauseet suoritetaan peräkkäin, yksi kerrallaan jokainen lause suoritetaan täsmälleen yhden kerran suoritusjärjestys on sama kuin kirjoitusjärjestys viimeisen lauseen päättäminen lopettaa algoritmin 33

34 Peräkkäinen sarja lauseita on joustamaton rakenne mitä tapahtuu, jos teepaketti on tyhjä? ei vaihtoehtoja erilaisille tilanteille Peräkkäisyys on tärkeä ja olennainen rakenne, mutta liian yksinkertainen. 34

35 Valinta Algoritmiin tarvitaan lisää joustavuutta, joka saadaan valinnan avulla. Tyhjän teepaketin tapaus voidaan hoitaa valinnalla seuraavasti 2.1. ota teepaketti hyllystä JOS paketti on tyhjä NIIN ota uusi paketti kaapista 2.2 avaa teepaketti 2.3 ota teepussi 2.4 laita teepussi kuppiin 2.5 sulje teepaketti 35

36 Olennainen lisäys on lause kertoo uuden lauseen, joka valitaan kertoo ehdon, milloin tämä uusi lause valitaan 36

37 Yleinen muoto: if ehto then lause 1 else lause 2 Valintarakennetta voidaan käyttää sisäkkäin. Suunnitellaan askeleittain algoritmi, joka poimii kolmesta annetusta luvusta x, y, z suurimman. Karkea versio: if x > y then poimi x tai z else poimi y tai z 37

38 Tarkennus kohtaan poimi x tai z: if x > z then poimi x else poimi z 38

39 Saadaan lopullinen algoritmi: if x > y then if x > z then poimi x else poimi z else if y > z then poimi y else poimi z Olennaista algoritmin kirjoituksessa sisennys selvyyden vuoksi; käytetään helpottamaan lukijan työtä. 39

40 Toisto Tarkastellaan tietojen hakua. Oletetaan, että on annettu lista henkilötietoja, jossa jokainen listan alkio on nimi - osoite -pari. Tehtävänä on hakea annettua nimeä vastaava osoite. Eräs mahdollinen algoritmi voisi näyttää seuraavalta: tarkista listan ensimmäinen nimi if kyseessä on annettu nimi then lue vastaava osoite else tarkista listan seuraava nimi if kyseessä on annettu nimi then lue vastaava osoite else tarkista listan seuraava nimi if kyseessä on annettu nimi then lue vastaava osoite else tarkista listan seuraava nimi 40

41 Milloin haku päättyy? Ei ole tietoa kuinka monta kertaa valinta pitäisi kirjoittaa. Ratkaisuna toistorakenne: repeat - until Käyttämällä toistoa (iteraatio, silmukka) nimen haku voidaan kirjoittaa muotoon: tarkista listan ensimmäinen nimi repeat if kyseessä on annettu nimi then lue vastaava osoite else tarkista listan seuraava nimi until annettu nimi löytyi tai lista on lopussa 41

42 Toistorakenteen yleinen muoto on repeat runko-osa until ehto Runko-osa toistetaan niin kauan kun lopetusehto on epätosi. Esimerkiksi ehto: annettu nimi löytyi on epätosi JA lista on lopussa on epätosi. Eli niin kauan kun nimeä ei ole löytynyt ja lista ei ole lopussa voidaan etsintää jatkaa. 42

43 Äärelliseen rakenteeseen ennalta määräämätön lukumäärä lauseiden toistoja. ongelmaksi tulee toiston päättymisen takaaminen esim. jos unohdetaan ehto lista on lopussa Myös toistorakenteita mahdollisuus yhdistellä sisäkkäin. 43

44 Toistorakenne repeat - until ei sovellu kaikkiin toistoa vaativiin tehtäviin, koska toistoehto on rakenteen lopussa. Esimerkiksi: on annettu lista numeroita ja tehtävänä on hakea listasta suurin numero: aseta suurimmaksi listan ensimmäinen numero repeat tarkista listan seuraava numero N if N > suurin tähän saakka then aseta N suurimmaksi until lista on käyty läpi tulosta suurin numero 44

45 Virhe: mitä tapahtuu jos listassa on vain yksi alkio? rivit käydään läpi järjestyksessä toiston päättymisehto on rakenteen lopussa 45

46 Tarvitaan päättymisehto rakenteen alkuun Eräs ratkaisu on toistorakenne while - do aseta suurimmaksi listan ensimmäinen numero while lista ei ole lopussa do tarkista listan seuraava numero N if N > suurin tähän saakka then aseta N suurimmaksi tulosta suurin numero Nyt lopetusehto on toistorakenteen alussa. 46

47 Lisäksi yleisesti käytetty toiston variaatio: repeat - for jokaiselle alkiolle runko-osa Esimerkkinä algoritmi joka laskee N:n ensimmäisen kokonaisluvun kertoman (k! = k x (k - 1) x... x 1) lue N /* käyttäjä antaa numeron */ kertoma <- 1 repeat - for jokaiselle kokonaisluvulle 1:stä N:ään kertoma <- kertoma * kokonaisluku tulosta kertoma 47

48 Vielä yksinkertainen toiston muunnelma: repeat N kertaa runko-osa 48

49 Modulaarisuus Askeleittain tarkentamisessa algoritmi jaettiin pienempiin palasiin, joita tarkennettiin kunnes päästiin tasolle, jonka algoritmin suorittaja pystyy tulkitsemaan. Usein nämä palaset ovat suhteellisen riippumattomia toisistaan ja pääalgoritmista jolloin ei tarvitse kiinnittää huomiota siihen missä suuremmassa asiayhteydessä palasia käytetään -> modulaarisuus. 49

50 Esimerkkinä algoritmit, jotka kertovat piirturille kuinka piirretään neliöitä. Oletetaan, että piirturi pystyy tulkitsemaan seuraavat käskyt: eteen (x) /* siirry x senttimetriä eteen */ vasen (x) /* käänny x astetta vasempaan */ oikea (x) /* käänny x asetetta oikeaan */ laske /* laske kynä paperille */ nosta /* nosta kynä paperilta */ 50

51 Oletetaan, että piirturin tulee piirtää kaksi sisäkkäistä neliötä ao. kuvan mukaan. Lisäksi oletetaan, että piirturi on aluksi piirrettävien neliöiden keskipisteessä X, kynä ylhäällä ja osoittaa kuvan nuolen suuntaan. B A X 51

52 Yleisellä tasolla algoritmi voisi koostua neljästä peräkkäisestä lauseesta: siirry pisteeseen A piirrä neliö, jonka sivu on 10 cm siirry pisteeseen B piirrä neliö, jonka sivu on 20 cm Algoritmin toinen ja neljäs lause ovat itsenäisiä toimintoja; riippumattomia yleisen tason algoritmin muista lauseista -> voidaan suunnitella ja tarkentaa erikseen; moduuli. Moduulille on erilaisia nimityksiä eri ohjelmointikielissä; procedure, routine, subroutine, function, method. 52

53 Jotta moduuli olisi yleisesti hyödyllinen, sen tulisi pystyä piirtämään halutun kokoinen neliö ( nyt 10 ja 20 cm sivut) siirry pisteeseen A piirrä neliö (10) siirry pisteeseen B piirrä neliö (20) Nyt itse moduuli voidaan kirjoittaa seuraavaan muotoon käyttäen piirturin ymmärtämiä käskyjä: module piirrä neliö (koko) laske repeat 4 kertaa eteen (koko) vasen (90) nosta 53

54 Moduulin spesifikaatio kertoo mitä se tekee: Tämä moduuli piirtää neliön, jonka toisen sivun pituus on koko lähtien kynän nykyisestä paikasta. Neliö piirretään vastapäivään, ensimmäinen sivu piirturin nykyisen suunnan mukaan. Kynä palaa alkuperäiseen paikkaan ja alkuperäiseen suuntaan ylös nostettuna. Mouduulin yleinen muoto: module nimi ( muodolliset parametrit ) runko-osa 54

55 Muodollisia parametrejä käytetään moduulin rungossa suorittamaan suunniteltu tehtävä yleisessä muodossa; tässä koko kertoo piirrettävän neliön koon. Todelliset parametrit riippuvat tilanteesta ja ne määrätään pääalgoritmissa moduulin kutsussa; tässä moduulia kutsutaan kahdesti: piirrä_neliö (10) piirrä_neliö (20) Vertaa funktion käsitteeseen matematiikassa f (x) = 2x + 1 f (5) = 11 55

56 Liityntä moduulin ja sen kutsujan välillä eksplisiittisesti (näkyvästi) ilmaistu parametreillä (esim. koko) implisiittisesti sivuvaikutuksilla (kynä jää ylös) 56

57 Piirtotehtävä jaettiin kahteen algoritmiin: pääalgoritmi ja sen käyttämä moduuli (alialgoritmi). Lopulliseksi pääalgoritmiksi saadaan tarkennuksen jälkeen: vasen (45) eteen ( 50) vasen (135) piirrä_neliö (10) oikea (135) eteen ( 50) vasen (135) piirrä_neliö (20) 57

58 Tämä käyttää hyväkseen alialgoritmia: module piirrä_neliö (koko) laske repeat 4 kertaa eteen (koko) vasen (90) nosta Modulaarisuus on keskeinen asia ohjelmoinnissa ja ohjelmien suunnittelussa. sopii luonnollisesti yhteen askeleittain tarkentamisen kanssa moduulin ja sitä kutsuvan alialgoritmin suunnittelu voidaan tehdä erikseen helpottaen suunnitteluprosessia 58

59 jotta moduuli voidaan ottaa käyttöön, tarvitsee vain tietää mitä se tekee; ei miten se tehtävän suorittaa edesauttaa algoritmien ymmärtämistä edesauttaa uudelleenkäytettävyyttä; lisätään aliohjelmakirjastoon 59

60 Tietorakenteet Algoritmien käsittelemä tieto on tyypitettyä Perustietotyypit totuusarvot (tosi, epätosi) merkit ( A, k, 1, < ) kokonaisluvut (1, 24, -100, 99999, ) reaaliluvut (liukuluvut) (1.5, , 4.9E2, -0.32e32, ) 60

61 Rakenteisia tietotyyppejä: merkkijono ( kissa ) tietue: (<etunimi><sukunimi><htunn><verot>) tiedosto taulukko Lisäksi monimutkaisempia rakenteita: lista, pino, puut, verkot. 61

62 Algoritmien ohjausrakenteet ja algoritmien käsittelemä tieto (data) liittyvät kiinteästi toisiinsa. valitut ohjausrakenteet riippuvat usein siitä, miten käsiteltävän tiedon rakenne jäsennellään: rakenteinen tieto rakenteinen tieto heijastaa tietoelementtien keskinäisiä suhteita 62

63 Yleinen esimerkki; lista tai jono lista henkilö-osoite -pareja Suomen kielen sana; jono kirjaimia Suomen kielen lause; jono sanoja luku; jono numeroita puhelinluettelo Myöhemmin esitellään yksinkertaisten tietorakenteiden toteuttamista C- kielellä. 63

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

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

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

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

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

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit Ohjelmiston testaus ja laatu Ohjelmistotekniikka elinkaarimallit Vesiputousmalli - 1 Esitutkimus Määrittely mikä on ongelma, onko valmista ratkaisua, kustannukset, reunaehdot millainen järjestelmä täyttää

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

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

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

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

Johdanto kurssin sisältöön

Johdanto kurssin sisältöön Johdanto kurssin sisältöön Terminologiaa Algoritmi on jonkin tehtävän suorittamiseksi tarvittavien toimenpiteiden kuvaus Ongelman ratkaisu lasketaan suorittamalla algoritmin toimenpiteet Tietokone suorittaa

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

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

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

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017

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

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

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

Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet:

Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: 3. Pseudokoodi 3.1 Sisällys Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: Valinta if- ja if-else-rakenteilla. Toisto while-, do-while- ja for-rakenteilla.

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

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

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

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

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

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

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

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

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

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin

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

TAMPEREEN TEKNILLINEN YLIOPISTO

TAMPEREEN TEKNILLINEN YLIOPISTO TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja Tietokonetekniikan laitos TKT-3200 Tietokonetekniikka ASSEMBLER: QSORT 11.08.2010 Ryhmä 00 nimi1 email1 opnro1 nimi2 email2 opnro2 nimi3 email3 opnro3 1. TEHTÄVÄ

Lisätiedot

Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan valitseminen päätöksellä ja toistaminen silmukalla.

Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan valitseminen päätöksellä ja toistaminen silmukalla. 2. Vuokaaviot 2.1 Sisällys Kaavioiden rakenne. Kaavioiden piirto symbolta yhdistelemällä. Kaavion osan valitseminen päätöksellä ja toistaminen silmukalla. Esimerkkejä: algoritmi oven avaamiseen vuokaaviona,

Lisätiedot

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA Ohjelmointitekniikka lyhyesti Survival Kit. Vesiputousmalli ELINKAARIMALLEISTA. Ohjelmiston elinkaari Ohjelmiston elinkaarella (life cycle) tarkoitetaan aikaa, joka kuluu ohjelmiston kehittämisen aloittamisesta

Lisätiedot

Palautetta viime luennosta

Palautetta viime luennosta Palautetta viime luennosta Kuka saa ja kenen täytyy suorittaa 5op kokonaisuus? Sivuaineopiskelijat suorittavat jos heidän sivuainekokonaisuuteen on merkitty niin Kokonaisuuksia on useita eri tiedekunnittain,

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

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

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

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö Algoritmit 1 Luento 10 Ke 11.2.2015 Timo Männikkö Luento 10 Algoritminen ongelman ratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Väliinsijoituslajittelu Valintalajittelu

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

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

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

14/20: Keittokirja I

14/20: Keittokirja I Ohjelmointi 1 / syksy 2007 14/20: Keittokirja I Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/13 Tämän luennon

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 24.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 24.1.2011 1 / 36 Luentopalaute kännykällä alkaa tänään! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

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

Luento 5. Timo Savola. 28. huhtikuuta 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke

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

Määrittelydokumentti

Määrittelydokumentti Määrittelydokumentti Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (alkukesä) Sami Korhonen 014021868 sami.korhonen@helsinki. Tietojenkäsittelytieteen laitos Helsingin yliopisto 23. kesäkuuta

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 22. huhtikuuta 2016 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille! Kirjoittamasi luokat, funktiot ja aliohjelmat

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

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

TAMPEREEN TEKNILLINEN YLIOPISTO

TAMPEREEN TEKNILLINEN YLIOPISTO TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja Tietokonetekniikan laitos TKT-3200 Tietokonetekniikka ASSEMBLER: QSORT 06.09.2005 Ryhmä 00 nimi1 email1 opnro1 nimi2 email2 opnro2 nimi3 email3 opnro3 1. TEHTÄVÄ

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

8. Kieliopit ja kielet

8. Kieliopit ja kielet 8. Kieliopit ja kielet Suomen kielen sanoja voidaan yhdistellä monella eri tavalla. Kielioppi määrää sen, milloin sanojen yhdistely antaa oikein muodostetun lauseen. "Mies räpyttää siipiään" on kieliopillisesti

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

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

5/20: Algoritmirakenteita III

5/20: Algoritmirakenteita III Ohjelmointi 1 / syksy 2007 5/20: Algoritmirakenteita III Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/17 Tämän

Lisätiedot

Harjoitustyön testaus. Juha Taina

Harjoitustyön testaus. Juha Taina Harjoitustyön testaus Juha Taina 1. Johdanto Ohjelman teko on muutakin kuin koodausta. Oleellinen osa on selvittää, että ohjelma toimii oikein. Tätä sanotaan ohjelman validoinniksi. Eräs keino validoida

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

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Ohjelmiston testaus ja laatu. Testausmenetelmiä Ohjelmiston testaus ja laatu Testausmenetelmiä Testausmenetelmiä - 1 Testauksen menetelmien päälähestymistapoina ovat black-box testi testaaja ei voi tutkia lähdekoodia testaus perustuu sovellukselle suunnitteluvaiheessa

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

811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto

811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto 811312A Tietorakenteet ja algoritmit 2015-2016 I Johdanto Sisältö 1. Algoritmeista ja tietorakenteista 2. Algoritmien analyysistä 811312A TRA, Johdanto 2 I.1. Algoritmeista ja tietorakenteista I.1.1. Algoritmien

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

JAVA-OHJELMOINNIN PERUSTEET. Sisältö 1. JAVA OHJELMOINTI... 2 2. LÄHTEITÄ... 19 3. HARJOITUKSET... 20 4. MUUTAMA MALLIRATKAISU...

JAVA-OHJELMOINNIN PERUSTEET. Sisältö 1. JAVA OHJELMOINTI... 2 2. LÄHTEITÄ... 19 3. HARJOITUKSET... 20 4. MUUTAMA MALLIRATKAISU... 1 JAVA-OHJELMOINNIN PERUSTEET Sisältö 1. JAVA OHJELMOINTI... 2 2. LÄHTEITÄ... 19 3. HARJOITUKSET... 20 4. MUUTAMA MALLIRATKAISU... 27 2 1. JAVA OHJELMOINTI Kurssin tavoite ensimmäinen ohjelmointikurssi

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

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 11.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 11.2.2009 1 / 33 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 1.3.2010 1 / 36 Monikko Monikko (engl. tuple) muistuttaa listaa, mutta monikon sisältöä ei voi muuttaa sen jälkeen,

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

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

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

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

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

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

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

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki PERL TIE-20306 Principles of Programming Languages Ryhmä 4: Joonas Lång & Jasmin Laitamäki 1. Johdanto Perl on ohjelmointikielten perhe, johon kuuluu Perl 5 ja Perl 6. Kielet ovat kuitenkin erilliset ohjelmointikielet

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 26.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 26.1.2009 1 / 33 Valintakäsky if syote = raw_input("kerro tenttipisteesi.\n") pisteet = int(syote) if pisteet >=

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python 31. tammikuuta 2009 Ohjelmointi Perusteet Pythonin alkeet Esittely Esimerkkejä Muuttujat Peruskäsitteitä Käsittely

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

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

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

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

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

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

Tieto- ja tallennusrakenteet

Tieto- ja tallennusrakenteet Tieto- ja tallennusrakenteet Sisältö Tyyppi, abstrakti tietotyyppi, abstraktin tietotyypin toteutus Tallennusrakenteet Taulukko Linkitetty rakenne Abstraktit tietotyypit Lista (Puu) (Viimeisellä viikolla)

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

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/

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

2 Konekieli, aliohjelmat, keskeytykset

2 Konekieli, aliohjelmat, keskeytykset ITK145 Käyttöjärjestelmät, kesä 2005 Tenttitärppejä Tässä on lueteltu suurin piirtein kaikki vuosina 2003-2005 kurssin tenteissä kysytyt kysymykset, ja mukana on myös muutama uusi. Jokaisessa kysymyksessä

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

Tarkennamme geneeristä painamiskorotusalgoritmia

Tarkennamme geneeristä painamiskorotusalgoritmia Korotus-eteen-algoritmi (relabel-to-front) Tarkennamme geneeristä painamiskorotusalgoritmia kiinnittämällä tarkasti, missä järjestyksessä Push- ja Raise-operaatioita suoritetaan. Algoritmin peruskomponentiksi

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016 TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 8. syyskuuta 2016 Sisällys a https://tim.jyu.fi/view/kurssit/tie/ tiea241/2016/videoiden%20hakemisto Matemaattisen

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

Lisätiedot

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012 ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012 1.1. (a) Jaettava m, jakaja n. Vähennetään luku n luvusta m niin kauan kuin m pysyy ei-negatiivisena. Jos jäljelle jää nolla, jaettava oli tasan jaollinen. int m,

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