Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään



Samankaltaiset tiedostot
Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Python-ohjelmointi Harjoitus 2

Ehto- ja toistolauseet

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

Java-kielen perusteita

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma

3. Kirjoita seuraavat joukot luettelemalla niiden alkiot, jos mahdollista. Onko jokin joukoista tyhjä joukko?

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

12. Javan toistorakenteet 12.1

11. Javan toistorakenteet 11.1

12. Javan toistorakenteet 12.1

LOGIIKKA johdantoa

KOODAUSPLÄJÄYS. Ohjelmoinnin perusteet

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 2 (opetusmoniste, lauselogiikka )

Loogiset konnektiivit

Nimitys Symboli Merkitys Negaatio ei Konjuktio ja Disjunktio tai Implikaatio jos..., niin... Ekvivalenssi... jos ja vain jos...

1. Esitä rekursiivinen määritelmä lukujonolle

Ohjelmoinnin perusteet Y Python

Kaikki kurssin laskuharjoitukset pidetään Exactumin salissa C123. Malliratkaisut tulevat nettiin kurssisivulle.

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

13. Loogiset operaatiot 13.1

LUKUTEORIA johdantoa

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

Algoritmit 1. Luento 10 Ke Timo Männikkö

Kenguru 2012 Student sivu 1 / 8 (lukion 2. ja 3. vuosi)

T Kevät 2009 Logiikka tietotekniikassa: perusteet Laskuharjoitus 2 (lauselogiikka )

5/20: Algoritmirakenteita III

Määritelmä, alkuluku/yhdistetty luku: Esimerkki . c) Huomautus Määritelmä, alkutekijä: Esimerkki

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

Diskreetin matematiikan perusteet Laskuharjoitus 1 / vko 8

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

Ohjausrakenteet. Valinta:

Algoritmit 1. Luento 1 Ti Timo Männikkö

Tietotyypit ja operaattorit

etunimi, sukunimi ja opiskelijanumero ja näillä

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

Ratkaisu: Käytetään induktiota propositiolauseen A rakenteen suhteen. Alkuaskel. A = p i jollain i N. Koska v(p i ) = 1 kaikilla i N, saadaan

(iv) Ratkaisu 1. Sovelletaan Eukleideen algoritmia osoittajaan ja nimittäjään. (i) 7 = , 7 6 = = =

Java-kielen perusteita

13. Loogiset operaatiot 13.1

2017 = = = = = = 26 1

1. Kuinka monella tavalla joukon kaikki alkiot voidaan järjestää jonoksi? Tähän antaa vastauksen: tuloperiaate ja permutaatio


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

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Java-kielen perusteet

Pikapaketti logiikkaan

Harjoitus 3 -- Ratkaisut

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

11. Javan valintarakenteet 11.1

Miten osoitetaan joukot samoiksi?

1 Aritmeettiset ja geometriset jonot

-Matematiikka on aksiomaattinen järjestelmä. -uusi tieto voidaan perustella edellisten tietojen avulla, tätä kutsutaan todistamiseksi

Toinen muotoilu. {A 1,A 2,...,A n,b } 0, Edellinen sääntö toisin: Lause 2.5.{A 1,A 2,...,A n } B täsmälleen silloin kun 1 / 13

811120P Diskreetit rakenteet

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

4.3. Matemaattinen induktio

Python-ohjelmointi Harjoitus 5

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

Tenttiin valmentavia harjoituksia

16. Ohjelmoinnin tekniikkaa 16.1

Juuri 11 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty

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

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

MS-A0402 Diskreetin matematiikan perusteet

Negatiiviset luvut ja laskutoimitukset

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

Ohjelmoinnin peruskurssi Y1

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

Sisällys. Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä. 2.2

3. Muuttujat ja operaatiot 3.1

MAY1 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty Julkaiseminen sallittu vain koulun suljetussa verkossa.

811120P Diskreetit rakenteet

Predikaattilogiikkaa

SELECT-lauseen perusmuoto

Johdatus logiikkaan I Harjoitus 4 Vihjeet

Ohjelmoinnin peruskurssi Y1

Surjektion käsitteen avulla kuvauksia voidaan luokitella sen mukaan, kuvautuuko kaikille maalin alkioille jokin alkio vai ei.

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

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

11. Javan valintarakenteet 11.1

Ratkaisu: Yksi tapa nähdä, että kaavat A (B C) ja (A B) (A C) ovat loogisesti ekvivalentit, on tehdä totuustaulu lauseelle

1. Osoita, että joukon X osajoukoille A ja B on voimassa toinen ns. de Morganin laki (A B) = A B.

Prolog kielenä Periaatteet Yhteenveto. Prolog. Toni ja Laura Fadjukoff. 9. joulukuuta 2010

2 Raja-arvo ja jatkuvuus

Harjoitustyön testaus. Juha Taina

Logiikka I 7. harjoituskerran malliratkaisut Ratkaisut laati Miikka Silfverberg.

Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion.

811120P Diskreetit rakenteet

Lukion matematiikkakilpailun alkukilpailu 2015

3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö

Käyttäjän käsikirja WTN radiomajakka. Version: FIN180427

Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä:

Kaikkiin tehtäviin laskuja, kuvia tai muita perusteluja näkyviin.

Transkriptio:

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. Tarkka suunnitelma ongelmanratkaisusta ja sen toteuttamisesta säästää myöhemmin paljon aikaa ja vaivaa mahdollisista virheiden etsimisistä. Hyvin toteutettu suunnitelma ongelmanratkaisusta on looginen ja selkeä.

Algoritmit Ohjelman tekemisen hahmottamisessa käytetään apuna algoritmeja. Algoritmia voitaisiin kuvata esimerkiksi tietyn ongelman ratkaisemiseksi annettuina täsmällisinä, suoritettavissa olevina ristiriidattomina peräkkäisinä käskyinä, joita on äärellinen määrä. Muodostetun algoritmin tulee toimia kaikissa mahdollisissa tapauksissa.

Muodosta algoritmi seuraavasta tapauksesta: Laita numerot 1, 5 ja 8 järjestykseen suurimmasta pienimpään. Käytössä olevat toiminnot ovat kahden luvun vertaaminen keskenään ja niiden paikan vaihtaminen.

Esimerkki algoritmista 1 Vertaa ensimmäistä ja toista lukua keskenään. Jos toinen luku on suurempi kuin ensimmäinen, vaihda lukujen paikkoja. uusi järjestys 5, 1, 8 2 Vertaa toista ja kolmatta lukua keskenään. Jos kolmas luku on suurempi kuin toinen, vaihda lukujen paikkaa uusi järjestys 5, 8, 1 3 Vertaa ensimmäistä ja toista lukua keskenään. Jos toinen luku on suurempi kuin ensimmäinen, vaihda lukujen paikkoja. uusi järjestys 8, 5, 1 4 Jatka vertailua, kunnes olet tehnyt kierroksia yhtä monta kuin mitä joukossa on alkioita.

Tehtävän 3 algoritmi vaihtoehto a 1 Vertaa kirjaimia 1 ja 2. Jos kirjain 2 on aakkosissa ennen kirjainta 1 vaihda kirjaimien paikkaa. Uusi järjestys D, G, H, C 2 Vertaa kirjaimia 2 ja 3. Jos kirjain 3 on aakkosissa ennen kirjainta 2 vaihda kirjaimien paikkaa. Uusi järjestys D, G, H, C 3 Vertaa kirjaimia 3 ja 4. Jos kirjain 4 on aakkosissa ennen kirjainta 3 vaihda kirjaimien paikkaa. Uusi järjestys D, G, C, H 4 Toista kohdat 1-3, kunnes tulee kierros, jolloin ei tarvitse tehdä yhtään vaihtoa. Kierroksia yhteensä 3. Vertailuja 9 kappaletta.

Tehtävän 3 algoritmi vaihtoehto b 1 Vertaa kirjaimia 1 ja 2. Jos kirjain 2 on aakkosissa ennen kirjainta 1 vaihda kirjaimien paikkaa. Uusi järjestys D, G, H, C 2 Vertaa kirjaimia 1 ja 3. Jos kirjain 3 on aakkosissa ennen kirjainta 1 vaihda kirjaimien paikkaa. Uusi järjestys D, G, H, C 3 Vertaa kirjaimia 1 ja 4. Jos kirjain 4 on aakkosissa ennen kirjainta 1 vaihda kirjaimien paikkaa. Uusi järjestys C, G, H, D 4 Vertaa kirjaimia 2 ja 3. Jos kirjain 3 on aakkosissa ennen kirjainta 2 vaihda kirjaimien paikkaa. Uusi järjestys C,G, H, D

Tehtävän 3 algoritmi vaihtoehto b 5 Vertaa kirjaimia 2 ja 4. Jos kirjain 4 on aakkosissa ennen kirjainta 2 vaihda kirjaimien paikkaa. Uusi järjestys C,D, H, G 6 Vertaa kirjaimia 3 ja 4. Jos kirjain 4 on aakkosissa ennen kirjainta 3 vaihda kirjaimien paikkaa. Uusi järjestys C,D, G, H 7 Lopeta, kun vertailtavia lukuja ei enää ole. ( Vertailuja 6 kappaletta )

Tehtävä 4A 1 Siirrä ensimmäinen numero muistipaikkaan. Muistipaikka: 7 2 Vertaa muistipaikan numeroa ja toista numeroa keskenään. Jos toinen numero on muistipaikan numeroa suurempi, vaihda toinen numero muistipaikkaan. Muistipaikka: 55 3 Vertaa muistipaikan numeroa ja kolmatta numeroa keskenään. Jos kolmas numero on muistipaikan numeroa suurempi, vaihda kolmas numero muistipaikkaan. Muistipaikka: 65 4 Vertaa muistipaikan numeroa ja neljättä numeroa keskenään. Jos neljäs numero on muistipaikan numeroa suurempi, vaihda kolmas numero muistipaikkaan. Muistipaikka: 65

Tehtävä 4A algoritmi 5 Vertaa muistipaikan numeroa ja viidettä numeroa keskenään. Jos viides numero on muistipaikan numeroa suurempi, vaihda viides numero muistipaikkaan. Muistipaikka: 88 6 Vertaa muistipaikan numeroa ja kuudetta numeroa keskenään. Jos kuudes numero on muistipaikan numeroa suurempi, vaihda kuudes numero muistipaikkaan. Muistipaikka: 88 7 Lopeta vertailu, kun olet päässyt lukujonon viimeiseen lukuun. Muistipaikassa oleva numero on luvuista suurin.

Tehtävän 4B algoritmi Luvut laitetaan ensin suuruusjärjestykseen jommallakummalla tehtävän 3 tavoista. Tällöin suurin luku on lukujonon viimeinen luku. ( Tai ensimmäinen luku, jos järjestys on suurimmasta pienimpään. )

Tehtävän 5 algoritmi Luvut laitetaan suuruusjärjestykseen jommallakummalla tehtävän 3 tavoista. Tällöin toiseksi suurin luku on toiseksi viimeisenä lukujonossa. ( Tai toinen luku, jos järjestys on suurimmasta pienimpään. )

Vuokaavio Algoritmien suunnittelussa ja esittämisessä käytetäänkin usein vuokaavioesitystä. Vuokaavioesityksellä algoritmin toiminta voidaan esittää yksinkertaisemmin kuvioiden avulla eikä samaa selitystä tarvitse turhaan toistaa.

Vuokaavioissa käytettävät merkit Soikiolla kuvataan algoritmin aloitusta ja lopetusta. Aloitussoikiosta lähtee vain yksi nuoli, eikä siihen voi tulla yhtään nuolta. Lopetussoikioosta ei voi lähteä nuolia. Suorakulmio kuvaa tietokoneen prosessointia. Tietokoneen suorittama tehtävä kirjoitetaan suorakaiteen sisään. Suorakulmiosta voi lähteä vain yksi nuoli! Suunnikas kuvaa päätöksen tekoa eli eri vaihtoehtojen valintaa. Suunnikkaasta lähtee aina kaksi nuolta. Nuolilla kuvataan ohjelman etenemissuuntaa.

Harjoitus 6 Aloita Tarkista säätila Epätosi Sataa Tosi Ota sateenvarjo Lähde ulos Lopeta

Harjoitus 7 Aloita Heitä uistin veteen Epätosi Sait kalan Tosi Irrota kala uistimesta ja heitä veteen Mittaa kala Lopeta Tosi Kala on täysimittainen Epätosi

Harjoitus 8A Aloita Heitä noppa Laske silmälukujen summa Tosi Summa on yli 12 Epätosi Lopeta

Aloita Harjoitus 8B Heitä noppa Silmäluku on 4 Epätosi Laske silmälukujen summa Tosi Summa on yli 12 Epätosi Tosi Lopeta

Harjoitus 8C Aloita Heitä noppa Laita silmäluku muistiin Heitä noppa Siirrä silmäluku muistiin Tosi Vertaa silmälukua muistissa olevaan Luku on sama Epätosi Lopeta

Logiikka ohjelmoinnissa Ohjelmoinnissa on paljon valintoja ja toistoa. Edellä tehdyistä algoritmeista voi huomata, että valinta tehtiin aina jonkin ehdon perusteella. Esimerkiksi tehtävässä 6 sateenvarjon mukaan ottamisen ehtona oli sade. Ohjelmoinnissa käytettävät valinta-tapaukset esitetäänkin ehtolausekkeina. Ehtolausekkeissa asioita verrataan toisiinsa. Tehtävässä 6 verrataan ulkona vallitsevaa säätä ehtoon ulkona sataa. Ehto voi ohjelmoinnissa olla joko tosi tai epätosi. Tehtävässä 6 väite ulkona sataa on siis ehtona joko tosi tai epätosi.

Vertailuoperaattorit Ohjelmoinnin ehtolausekkeissa asioiden samanlaisuus tai erilaisuus selvitetään vertailuoperaattoreiden avulla. Java-ohjelmoinnissa vertailuoperaattorit ovat: == Yhtä suuri kuin!= Erisuuri kuin > Suurempi kuin < Pienempi kuin >= Suurempi tai yhtä suuri kuin <= Pienempi tai yhtä pieni kuin

Esimerkki vertailuoperaattoreista 2 >= 1 Tosi väite 3!= 3 Epätosi väite a < c Tosi väite

Ja- ja tai-operaattorit Monimutkaisempien ehtojen täyttymisen tutkimiseen tarvitaan loogisia operaattoreita. Loogisia operaattoreitaovat esimerkiksi ehdolliset ja- ja tai-operaattorit. Yhdistettäessä ehdot ja-operaattorilla, on molempien ehtojen oltava tosia, jotta lopputulos olisi tosi. Yhdistettäessä ehdot tai-operaattorilla, on lopputulos tosi useammassa eri vaihtoehdossa.

Ja-operaattori esimerkki Olkoon lauseet A = Paidassa on punaista ja B = Paidassa on vihreää. Tarkastellaan ja-operaattorilla yhdistettyjä ehtoja seuraavissa tapauksissa: I) A on tosi ja B on tosi? ->Väite A ja B on tosi. II) A on epätosi ( Paidassa ei ole punaista ) ja B on tosi? -> Väite A ja B on epätosi. III) A on tosi ja B on epätosi ( Paidassa ei ole vihreää ) -> Väite A ja B on epätosi. IV) A on epätosi ( Paidassa ei ole punaista ) ja B on epätosi ( Paidassa ei ole vihreää )? -> Väite A ja B on epätosi.

Tai-operaattori Olkoon lauseet A = Paidassa on punaista ja B = Paidassa on vihreää. Tarkastellaan tai-operaattorilla yhdistettyjä ehtoja seuraavissa tapauksissa: I. Onko väite A tai B tosi, jos A on tosi ja B on tosi? ->Väite A tai B on tosi. II. Onko väite A tai B tosi, jos A on epätosi ja B on tosi? -> Väite A tai B on tosi. III. Onko väite A tai B tosi, jos A on tosi ja B on epätosi? -> Väite A tai B on tosi. IV. Onko väite A tai B tosi, jos A on epätosi ja B on epätosi? -> Väite A ja B on epätosi.