etunimi, sukunimi ja opiskelijanumero ja näillä



Samankaltaiset tiedostot

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

3. Muuttujat ja operaatiot 3.1

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

3. Muuttujat ja operaatiot 3.1

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

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

Ehto- ja toistolauseet

Java-kielen perusteet

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

Johdatus Ohjelmointiin

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

ITKP102 Ohjelmointi 1 (6 op)

Tietotyypit ja operaattorit

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

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

Java-kielen perusteet

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

Valitse ruudun yläosassa oleva painike Download Scilab.

7. Näytölle tulostaminen 7.1

Ohjelmoinnin perusteet Y Python

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

16. Ohjelmoinnin tekniikkaa 16.1

Ohjelmoinnin perusteet Y Python

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

16. Ohjelmoinnin tekniikkaa 16.1

Kurssikoe on maanantaina Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla.

13. Loogiset operaatiot 13.1

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

811120P Diskreetit rakenteet

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

6. Muuttujat ja Java 6.1

12. Näppäimistöltä lukeminen 12.1

Ohjelmoinnin perusteet Y Python

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

13. Loogiset operaatiot 13.1

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

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

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

PHP tehtävä 3 Atte Pekarinen TIKT13A

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

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

Harjoitus 2 (viikko 45)

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Tutoriaaliläsnäoloista

Tietueet. Tietueiden määrittely

Harjoitus 3 (viikko 39)

Ohjelmoinnin perusteet Y Python

WINHAWILLE 1 (6) Opiskelijasivut Opiskelijan ohjaus/hh/versio

Harjoitustyö: virtuaalikone

Luku 1 Johdatus yhtälöihin

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

8. Näppäimistöltä lukeminen 8.1

Ohjeita. Datan lukeminen

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Harjoitus 1 -- Ratkaisut

4. Lausekielinen ohjelmointi 4.1

811120P Diskreetit rakenteet

finnish BOI 2015, päivä 1. Muistiraja: 256 MB

8. Näppäimistöltä lukeminen 8.1

Ohjelmoinnin peruskurssi Y1

4.3. Matemaattinen induktio

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

6. Muuttujat ja Java 6.1

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

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä.

Ohjelmoinnin peruskurssi Y1

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005

TIE Johdatus ohjelmointiin

Luku 5 Kertaus. Tehtävä 1 Kerratkaa oppimanne asiat yhdessä keskustellen.

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

Ohjelmoinnin peruskurssi Y1

Algoritmit 1. Luento 4 Ke Timo Männikkö

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Luku 3. Listankäsittelyä. 3.1 Listat

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

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

Algoritmit 1. Luento 3 Ti Timo Männikkö

ITKP102 Ohjelmointi 1 (6 op)

17. Javan omat luokat 17.1

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

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

Ohjelmoinnin peruskurssi Y1

A-Tiilikate objektikirjasto

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

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

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

1. luento. Ohjelmointi (C) T0004 Syksy luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot.

12 Mallit (Templates)

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2

Python-ohjelmointi Harjoitus 2

Transkriptio:

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 vaatii abstraktia ajattelua, jonka apuvälineinä käytetään algoritmeja (algorithm). Algoritmi on vaiheittainen kuvaus jonkin tehtävän suorittamista varten äärellisessä ajassa. Algoritmilla on siis alku-, väli- ja loppuvaiheet. Mikäli äärellinen aika ei riitä, on kyseessä algoritmin asemasta niin sanottu proseduuri tai algoritmissa on virhe (ikuinen silmukka). AvaaOvi-algoritmi Tehtävänä kertoa erityisen älykkäälle robotille kuinka avata ovi. Tehdään aluksi joitakin algoritmin muotoilemista helpottavia oletuksia: ovi on kunnossa, paikallaan, kiinni, lukitsematon, ovessa on kahva eikä kahvaa tarvitse painaa. - Tartu kahvaan. - Vedä kahvasta, kunnes ovi on auki. 1.3 1.4

AvaaOvi-algoritmi Usein ensimmäisessä hahmotelmassa havaitaan virhe (niin sanottu bugi): Edellä ei huomioitu sitä, että jotkut ovet voi avata myös työntämällä.? - Tartu kahvaan. - Jos ovi on vedettävää mallia, niin vedä kahvasta, kunnes ovi auki. - Muuten työnnä kahvasta, kunnes ovi on auki. ja operaatiot Edellinen algoritmi oli hyvin vapaamuotoinen, koska toimijan oletettiin olevan koneeksi älykäs. Valitettavasti nykytietokoneet tarvitsevat tyhminä härveleinä paljon yksityiskohtaisempia ohjeita. Algoritmia muuttujien ja operaatioiden avulla tarkentamalla päästään lähemmäs tietokonetta. AvaaOvi-algoritmi voidaan jakaa karkeasti toimintoihin ja toimintojen kohteisiin. Esim. vaiheessa Tartu kahvaan on toiminto tartu ja kohde kahva. 1.5 1.6 ja operaatiot Tarkemmissa algoritmeissa (ja ohjelmissa) kohteet esitetään muuttujina ja toiminnot operaatioina. Myös kohteen osat (esim. ovi ja kahva) ja ominaisuudet (esim. oven väri) voidaan ajatella muuttujiksi. Algoritmin epämääräisemmät osat, kuten ovi on vedettävää mallia, voidaan ymmärtää tilanteen mukaan joko muuttujiksi tai toiminnoiksi. Ajattelussa siirrytään näin abstraktimmalle tasolle: algoritmissa käsitellään muuttujien sisältämiä tietoja operaatioita suorittamalla. Muuttujalla on nimi (tunnus) ja nimeen liittyvä arvo. Muuttuja ei ole matematiikasta tuttu käsite, jolla symboloidaan usein tuntematonta arvoa. Esim. yhtälössä x + 1 = 0 tuntematon arvo on x. Algoritmissa muuttujan arvo on yleensä tunnettu ja erityisesti erona on se, että arvo voi muuttua algoritmin edetessä vaiheesta toiseen. Muuttuja muistuttaa hieman suuretta eli mitattavaa ominaisuutta. Esimerkiksi lämpötila (T) on suure, jolla mitataan aineen lämpöenergian määrää. 1.7 1.8

Esim. kurssin ilmoittautumistietoja käsittelevässä algoritmissa voisi olla muun muassa muuttujat etunimi, sukunimi ja opiskelijanumero ja näillä muuttujilla arvot "Mikko", "Meikäläinen" ja 12345, kun Mikko Meikäläinen ilmoittautuu kurssille. Tiina Terävän ilmoittautuessa muuttujien aikaisemmat arvot korvautuvat Tiinan arvoilla. Yleensä vain yhden muuttujan arvo muuttuu, kun algoritmi etenee vaiheesta toiseen. On myös mahdollista, että vaiheesta toiseen siirryttäessä yhdenkään muuttujan arvo ei muutu. Algoritmin tila tarkoittaa muuttujien arvoja tietyssä algoritmin vaiheessa. 1.9 1.10 Algoritmin ymmärrettävyyden kannalta on erittäin tärkeää, että muuttujan nimestä nähdään minkä tiedon säilyttämiseen muuttujaa käytetään. Nimissä käytetään kirjaimia ja numeroita. Yleensä hyvä nimi on riittävän pitkä. Esim. syntymäpäivän sisältävälle muuttujalle on parempi antaa nimeksi vaikkapa syntpvm kuin p. Lyhyitä nimiä voi käyttää vain, jos erehtymisen vaaraa ei ole. Muuttujille määritellään lausekielissä yleensä tyyppi: muun muassa kokonais- ja liukuluvut sekä yksittäiset merkit ja merkkijonot ovat käytettävissä. Esim. henkilön paino ja pituus on järkevää esittää lukuina, kun taas etu- ja sukunimi ovat luontevasti merkkijonoja. Muuttujalle ei voi antaa mittayksikköä. Esim. henkilön pituus esitetään muuttujana ilman metrin tunnusta (m), vaikka pituussuureen yksiköksi on sovittu metri. oletetaan toistaiseksi alkeistyyppisiksi ja niiden tyyppejä ei määritellä, jotta algoritmien kirjoittaminen ei olisi kurssin alkuvaiheessa liian vaikeaa. 1.11 1.12

Operaatiot Muuttujien arvojen käsittelyyn. Operaatio saa muuttujan arvon käyttöönsä yksilöimällä arvon muuttujan nimen avulla. Perusoperaatioita kutsutaan usein operaattoreiksi ja niille on annettu omat symbolit. Operaattorin käsittelemät arvot ovat operandeja. Perusoperaatioiden lisäksi usein on käytettävissä monimutkaisempia operaatioita esimerkiksi arvojen tulostamiseen. Sijoitusoperaattori Perusoperaatioista tärkein on sijoitusoperaattori ( ), joka korvaa muuttujan vanhan arvon uudella. Yleisesti: muuttujannimi arvo missä muuttujan nimi (1. operandi) on aina operaattorin vasemmalla puolella ja uusi arvo (2. operandi) operaattorin oikealla puolella. Sijoitus ymmärretään yleensä algoritmin vaiheeksi. Uusi arvo voi olla pelkkä arvo, muuttujan arvo tai esimerkiksi laskutoimituksen tulos. Esim. ilmoittautumisalgoritmi, jossa muuttujiin sijoitetaan pelkkiä arvoja: etunimi "Tiina" sukunimi "Terävä" opiskelijanumero 54321 1.13 1.14 Sijoitusoperaattori Sijoitusoperaattori Muuttujien arvot ovat samat, mutta säilyvät erillisinä, kun muuttujan arvo sijoitetaan toisen muuttujan arvoksi. Esim. sijoituksia aikaa ja matkaa käsittelevässä algoritmissa: matka 100 aika 2 matka2 matka (matka = 100, matka2 = 100) matka 30 (matka = 30, matka2 = 100) 3. sijoituksen jälkeen muuttujilla matka ja muuttujalla matka2 on edelleen oma erillinen arvo, vaikka molempien muuttujien arvo on 100. Koska arvot ovat erilliset, muuttujan matka2 arvo ei muutu, kun muuttujalle matka annetaan uusi arvo 4. sijoituksessa. Esim. sijoituksia elokuva-arvosteluja hallinnoivassa algoritmissa: nimi "Aliens" (Merkkijono suljetaan lainausmerkkeihin.) julkaisuvuosi 1986 luokka 'A' (Yksittäinen merkki suljetaan suoriin yksinkertaisiin lainausmerkkeihin eli niin sanottuihin hipsuihin.) 1.15 1.16

Aritmeettiset operaattorit Aritmeettiset operaattorit Myös tutut aritmeettiset operaattorit (+, -,, /) ovat käytettävissä. Aritmeettisen operaattorin operandit ovat arvoja ja tulos on arvo, joka voidaan sijoittaa muuttujaan. Laskujärjestys koulusta tuttu. Sijoitusoperaattori on heikko: esimerkiksi aritmetiikka suoritetaan ennen sijoitusta. Esim. aritmetiikkaa pelkillä arvoilla: tulosumma 1 2 + 2 2 missä ensin lasketaan tulot 1 2 ja 2 2, toiseksi summataan tulot 2 + 4 ja lopuksi sijoitetaan summa muuttujan arvoksi. Sijoitus muodostaa algoritmin vaiheen, vaikka ennen sijoittamista lasketaan aritmeettisilla operaatioilla. Esim. nopeuden laskeminen muuttujien avulla: nopeus matka / aika Otetaan aluksi käyttöön muuttujien arvot: 30 / 2 Tämän jälkeen lasketaan osamäärä: 15 ja lopuksi sijoitetaan osamäärä muuttujan arvoksi: nopeus 15 Huom! Sama muuttuja voi esiintyä myös sijoitusoperaattorin molemmin puolin. Esim. lisätään aikaa: aika aika + 1 jolloin selvitetään muuttujan nykyinen arvo: 2 + 1 lasketaan summa: 3 ja sijoitetaan se uudeksi arvoksi: aika 3 1.17 1.18 Vertailuoperaattorit Algoritmeissa tarvitaan usein myös vertailuoperaattoreita (<, =, >,,, ). Oletetaan toistaiseksi, että vertailu palauttaa arvon kyllä (K) tai ei (E). (Nämä voidaan ajatella totuusarvoiksi tosi ja epätosi.) Esim. luku 10 arvaus 13-3 samat luku = arvaus (samat = K) pienempi arvaus < 1 (pienempi = E) Operaatiot Perusoperaatioiden lisäksi voidaan olettaa, että on käytettävissä myös muita operaatioita. Näille ei ole varattu symbolia - muut operaatiot tunnistetaan muuttujien tapaan nimen avulla. Erotetaan muuttujista nimen perään kirjoitettavan kaarisulkuparin (( )) avulla. Esim. nimi kiinni on muuttujan tunnus, mutta nimi kiinni() tarkoittaa operaatiota, jolla voitaisiin esimerkiksi tutkia onko ovi kiinni. 1.19 1.20

Operaatiot Operaatio voi saada parametrina arvon. Parametri välitetään operaatiolle kirjoittamalla se sulkujen väliin. Operaatio voi myös palauttaa arvon (niin sanottu paluuarvo), joka asetetaan usein muuttujan arvoksi. Esim. tartu(kahva) onkovedettävämalli vedettävä(ovi) arvattava arvoluku() min min(400, paino) Operaatiot Sopivat myös kommunikointiin ympäristön kanssa: Algoritmin laatija voisi käyttää esimerkiksi lue() ja tulosta(arvo) -operaatioita tietojen lukemiseen näppäimistöltä ja tulostamiseen näytölle. Esim. matka aika LaskeNopeus matka lue() aika lue() nopeus matka / aika tulosta(nopeus) nopeus 1.21 1.22 Algoritmista ohjelmaksi Ohjelma on algoritmin konkreettinen toteutus jollakin ohjelmointikielellä. Muuttujien ja operaatioiden esitystapa vaihtelee ohjelmointikielestä toiseen. Algoritmeja hahmotellaan toisinaan vuokaavioiden tai usein pseudokoodin avulla ennen varsinaista toteutusta. 1.23