811120P Diskreetit rakenteet

Samankaltaiset tiedostot
811120P Diskreetit rakenteet

811312A Tietorakenteet ja algoritmit I Johdanto

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Zeon PDF Driver Trial

Ehto- ja toistolauseet

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

811120P Diskreetit rakenteet

ITKP102 Ohjelmointi 1 (6 op)

Diskreetit rakenteet P 5 op

811120P Diskreetit rakenteet

Kirjoita, tallenna, käännä ja suorita alla esitelty ohjelma, joka tervehtii käyttäjäänsä.

Luento 5. Timo Savola. 28. huhtikuuta 2006

Java-kielen perusteita

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Algoritmit 1. Luento 1 Ti Timo Männikkö

Ohjelmoinnin perusteet Y Python

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

Ohjelmoinnin perusteet Y Python

12. Javan toistorakenteet 12.1

Muistutus aikatauluista

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

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Java-kielen perusteita

11. Javan toistorakenteet 11.1

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin perusteet Y Python

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

1. Mitä tehdään ensiksi?

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

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla:

Ohjelmoinnin perusteet Y Python

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

Ohjausrakenteet. Valinta:

Python-ohjelmointi Harjoitus 5

Tietorakenteet ja algoritmit - syksy

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

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

12. Javan toistorakenteet 12.1

ITKP102 Ohjelmointi 1 (6 op)

16. Ohjelmoinnin tekniikkaa 16.1

Ohjelmoinnin perusteet Y Python

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia

Harjoitustyön testaus. Juha Taina

Tietotekniikan valintakoe

811120P Diskreetit rakenteet

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

Ohjelmoinnin perusteet Y Python

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Ohjelmoinnin perusteet Y Python

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Harjoitus 3 (viikko 39)

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Harjoitus 1 -- Ratkaisut

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

16. Ohjelmoinnin tekniikkaa 16.1

811120P Diskreetit rakenteet

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

Ohjelmoinnin peruskurssi Y1

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

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

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007

Harjoitus 1 -- Ratkaisut

Algoritmit 2. Luento 13 Ti Timo Männikkö

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

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

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 12 (opetusmoniste, kappaleet )

Ohjelmoinnin peruskurssi Y1

Python-ohjelmointi Harjoitus 2

Ohjelmoinnin perusteet Y Python

Sisältö. 22. Taulukot. Yleistä. Yleistä

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

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

UML -mallinnus TILAKAAVIO

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Ohjelmoinnin peruskurssi Y1

Yhteydettömän kieliopin jäsennysongelma

Ohjelmoinnin peruskurssi Y1

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

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Ohjelmoinnin perusteet Y Python

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti


Ohjelmoinnin perusteet Y Python

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

Ohjelmoinnin perusteet Y Python

Transkriptio:

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 Viestin salaaminen Lyhimmän reitin löytäminen kahden paikkakunnan välillä Robottikäden liikkeen optimointi 811120P Diskreetit rakenteet, Algoritmeista 2

1.1 Algoritmin käsite. Heuristinen esimerkki 1. Sujauta pankkikorttisi sille varattuun aukkoon. 2. Kirjoita tunnuslukusi (PIN), kun sitä kysytään. 3. Valitse vaihtoehto 'käteisnosto' valikosta. 4. Valitse tai kirjoita summa, jonka haluat nostaa. x P(x) x P(x) 5. Valitse kirjaustapahtumista 'näytölle' tai 'kuitille. 6. Ota korttisi ja nostamasi summa. 7. Jos olit valinnut kohdassa 5 vaihtoehdon 'kuitille', ota kuitti. 811120P Diskreetit rakenteet, Algoritmeista 3

1.1 Algoritmin käsite. Algoritmin ominaisuuksia 1. Algoritmi muodostuu äärellisestä ohjejoukosta 2. Algoritmilla on toteuttaja (esim. ihminen tai kone) 3. On olemassa laittee tiedon käsittelyyn ja tallennukseen 4. Algoritmi käsittelee tietoa; sillä on syöte ja tuloste 5. Syötteen on oltava tiettyä muotoa ja äärellisesti esitettävissä; syötteen koolla ei ole kiinteää ylärajaa 6. Annetulla syötteellä toteuttaja suorittaa ohjeet mekaanisesti, deterministisesti ja askelittain 7. Tiedon tallentamiseen käytetyn muistitilan koko on äärellinen; koolla ei kuitenkaan ole kiinteää ylärajaa 811120P Diskreetit rakenteet, Algoritmeista 4

1.1 Algoritmin käsite. Algoritmin ominaisuuksia (2) 8. Jokaisella sovittua muotoa olevalla syötteellä algoritmi pysähtyy äärellisen askelmäärän jälkeen 9. Jokaisella sovittua muotoa olevalla syötteellä algoritmi joko ei tulosta mitään tai antaa äärellisen, yksikäsitteisen ja hyvin määritellyn tulosteen Erityisen oleellista hyvin määritelty äärellinen syöte, askelien mekaaninen suorittaminen, algoritmin päättyminen, hyvin määritelty tulos 811120P Diskreetit rakenteet, Algoritmeista 5

1.2 Pseudokoodi Tällä kurssilla algoritmit kirjoitetaan pseudokoodia (eli pseudokieltä) käyttäen Pseudokoodi: strukturoitua suomea ja / tai englantia Rakenne tärkeää Ei keskitytä ohjelmointikielten yksityiskohtiin Kykenee käsittelemään mm. Erilaisia lukuja Erilaisia merkkejä Jonoja ja joukkoja Listoja ja taulukoita 811120P Diskreetit rakenteet, Algoritmeista 6

1.2 Pseudokoodi. Esitystapa Syöte: Taulukko A[1,..,n], n >= 1 Tulostus: Taulukon alkioiden summa SUMMA(A) 1. sum = 0 2. i = 1 3. while (i <= n) do 4. sum = sum + A[i] 5. i = i+1 6. return sum Nimi ja parametrilista Algoritmin askeleet Otsikko Algoritmin paluuarvo 811120P Diskreetit rakenteet, Algoritmeista 7

1.2 Pseudokoodi. Muuttujat ja sijoituslauseke Koodissa voi esiintyä muuttujia, joilla on nimi ja arvo Muuttujan arvoa muutetaan sijoituslausekkeella (operaattori =) Esim. koodissa y = 12 x = 2*y + 1 sijoitetaan muuttujaan y arvo 12 ja tämän jälkeen muuttujaan x arvo 2*12+1 eli 25 Tehtävä: Kirjoita algoritmi, joka palauttaa ympyrän piirin pituuden, kun ympyrän säde saadaan syötteenä 811120P Diskreetit rakenteet, Algoritmeista 8

1.2 Pseudokoodi. Taulukot Taulukko on jono saman tyyppisiä arvoja, joita voidaan lukea ja kirjoittaa Taulukon alkioihin viitataan taulukon nimellä ja hakasuluissa olevalla indeksillä Esim. taulu = {10, 8, 15, 20} Tällöin taulu[1] = 10, taulu[2] = 8, taulu[3] = 15, taulu[4] = 20 Sijoituksen taulu[2] = 11 jälkeen taulukossa taulu ovat arvot {10,11,15,20} 811120P Diskreetit rakenteet, Algoritmeista 9

1.2.1 Pseudokoodin lauseet Sijoituslause Ehtolauseet if then if then else Toistolauseet for do while do do while Syöttölauseet tiedon lukemiseen ja tulostamiseen Yhdistetty lause Näillä toteutetaan algoritmin kontrollirakenteet. Säätelevät kuinka monta kertaa ja millä ehdolla algoritmin lauseita suoritetaan Kokoaa useita lauseita loogisesti yhdeksi, ilmaistaan sisennyksellä 811120P Diskreetit rakenteet, Algoritmeista 10

1.2.1 Pseudokoodin lauseet. Syöttölauseet - read lukee käyttäjän syötteen muuttujaan read arvo x P(x) x P(x) Suoritus: Ohjelma pysähtyy odottamaan käyttäjän syötettä ja sijoittaa syötteen muuttujaan arvo - print tulostaa muuttujan arvon print tulos Suoritus: tulostaa muuttujan tulos arvon 811120P Diskreetit rakenteet, Algoritmeista 11

1.2.1 Pseudokoodin lauseet. Ehtolauseet x P(x) x P(x) - C ehto, S1 ja S2 mitä tahansa pseudokielen lauseita if C then S1 Suoritus: jos C on voimassa, suoritetaan S1; jos C ei ole voimassa, ei tehdä mitään if C then S1 else S2 Suoritus: jos C on voimassa, suoritetaan S1; jos C ei ole voimassa suoritetaan S2 811120P Diskreetit rakenteet, Algoritmeista 12

1.2.1 Pseudokoodin lauseet. Ehtolauseet (2) Tehtävä1: Kirjoita algoritmi MINIMI2, joka palauttaa kahdesta syötteenä saamastaan reaaliluvusta pienemmän arvon (jos luvut samat palautetaan k.o. arvo). Älä käytä ehtolauseessa else-osaa. Tehtävä2: Kirjoita algoritmi KARVO2, joka tulostaa kahden syötteenä saamansa reaaliluvun keskiarvon, mikäli luvut ovat positiivisia. Jos jompikumpi luvuista ei ole positiivinen, tulostetaan ilmoitus luvut eivät positiiviset. 811120P Diskreetit rakenteet, Algoritmeista 13

1.2.1 Pseudokoodin lauseet. Toistolauseet x P(x) x P(x) - i indeksimuuttuja, a ja b kokonaislukuvakioita tai muuttujia, S mikä tahansa pseudokielen lause for i = a to b do S Suoritus jos a b, lauseke S suoritetaan indeksimuuttujan i arvoilla a, a+1,..., b jos a > b, ei tehdä mitään ja toistolauseke katsotaan suoritetuksi 811120P Diskreetit rakenteet, Algoritmeista 14

1.2.1 Pseudokoodin lauseet. Toistolauseet (2) - C ehto ja S mikä tahansa pseudokielen lause while C do S Suoritus: Lausetta S toistetaan niin kauan kuin ehto C on voimassa do S while C Suoritus: Suoritetaan lause S ja mikäli C on voimassa, toistetaan sama uudelleen. Siis S suoritetaan vähintään kerran, vaikka C ei olisi aluksi voimassa 811120P Diskreetit rakenteet, Algoritmeista 15

1.2.1 Pseudokoodin lauseet. Toistolauseet (3) Tehtävä1: Kirjoita algoritmi MAKSIMI, joka palauttaa syötteenä saamansa n-paikkaisen reaalilukutaulukon X[1..n] suurimman arvon. Käytä toistorakenteena forsilmukkaa. Tehtävä2: Kirjoita algoritmi SUMMA, joka palauttaa käyttäjän syöttämien positiivisten lukujen summan. Lukujen kysely lopetetaan, kun käyttäjä syöttää negatiivisen luvun tai nollan. Käytä toistorakenteena while-do-silmukkaa Tehtävä3: Tee edellinen tehtävä käyttäen do-whilesilmukkaa Tehtävä4: Suorita tehtävän 1 algoritmi paperilla ja kynällä, kun syötteenä on taulukko X[1..4] = {5,3,9,2} 811120P Diskreetit rakenteet, Algoritmeista 16