815338A Ohjelmointikielten periaatteet

Koko: px
Aloita esitys sivulta:

Download "815338A Ohjelmointikielten periaatteet 2014-2015"

Transkriptio

1 815338A Ohjelmointikielten periaatteet IV.2 Imperatiivinen ohjelmointi lauseet ja lausekkeet

2 Sisältö 1. Yleistä lausekkeista 2. Presedenssi- ja assosiaatiosäännöt 3. Tyyppimuunnokset 4. Vertailulausekkeet ja loogiset lausekkeet 5. Yleistä lauseista 6. Sijoituslause ja ehdolliset lausekkeet 7. Ohjauslauseet A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 2

3 IV.2.1. Yleistä lausekkeista Lauseke (expression) ohjelmointikielen peruselementtejä Ohjataan tietokoneen laskentaoperaatioita ohjelmointikielellä Kaikissa kielissä voidaan muodostaa lausekkeita yhdistelemällä operaattoreita ja operandeja Palauttaa aina ohjelmaan jonkin arvon, joka saadaan evaluoimalla lauseke A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 3

4 IV.2.1. Yleistä lausekkeista (2) Operaattorit Unaariset kohdistuvat yhteen operandiin Binääriset kohdistuvat kahteen operandiin Joissakin kielissä myös ternäärisiä, kolmeen operandiin kohdistuvia operaattoreita Operandit Voivat olla vakioita, muuttujia tai funktiokutsuja A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 4

5 IV Lausekkeen evaluointi Ymmärtäminen olennainen osa ohjelmointikielen tuntemusta Lausekkeen evaluointi = sen arvon laskeminen käyttäen lausekkeessa esiintyvien vakioiden ja muuttujien suoritushetkisiä arvoja Tarvitaan sääntöjä lausekkeen arvon määrittämiseksi Operaattoreiden suoritusjärjestys, Operaattoreiden assosiatiivisuus Operandien arvojen evaluointijärjestys Joissakin kielissä (esim. C++) operaattorit ylikuormitettavissa (overload) Ei Javassa A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 5

6 IV Funktion arvon evaluointi Imperatiivisissa kielissä yleensä innokas evaluointi (eager evaluation) = Funktion arvo evaluoidaan joka kerran sitä kutsuttaessa käyttämällä syöteargumenttien senhetkisiä arvoja Joissakin funktionaalisissa kielissä laiska evaluointi (lazy evaluation) = evaluoidaan vasta kun tulosta tarvitaan Funktion sivuvaikutukset (side effects): sen vaikutus funktion parametreihin tai globaaleihin muuttujiin (yleensä varottava) A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 6

7 IV.2.2. Presedenssi- ja assosiaatiosäännöt Määräävät operaattoreiden suoritusjärjestyksen Presedenssisäännöt säätelevät operaattoreiden keskinäistä suoritusjärjestystä Noudattavat (yleisesti) matematiikasta tuttuja lakeja Assosiaatiosäännöt määräävät, kumpi kahdesta presedenssiltään samanarvoisesta operaattorista suoritetaan ensin Yleisimmin vasemmalta oikealle tapahtuva suorittaminen A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 7

8 IV Aritmeettiset perusoperaattorit *x++=*y++ Yhteenlasku (+), vähennyslasku (-), kertolasku (*) ja jakolasku (/) Joissakin kielissä potenssiin korotukselle oma operaattorinsa, FORTRANissa ** Pascalissa oma operaattori div kokonaislukujen jakolaskulle (tuloksena kokonaisluku) Yleisesti myös kokonaislukujen jakojäännökselle oma operaattori C, C++ ja Java: %, Pascal: mod A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 8

9 IV Aritmeettiset perusoperaattorit (2) Esimerkki. Potenssiin korotuksen oikealta assosiatiivisuus FORTRANissa. Lauseke 2**3**2 saa arvon 512 *x++=*y++ (Ensin 3 potenssiin 2 = 9, sitten 2 potenssiin 9). Jos käytettäisiin vasemmalta assosiatiivisuutta, tulos olisi 64 (2 potenssiin 3 = 8, 8 toiseen = 64) APL: ei presedenssijärjestystä, kaikki evaluointi assosiaatiosäännön (oikealta vasemmalle) mukaan A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 9

10 IV Unaariset operaattorit Unaariset + ja (etumerkki) C, C++ ja Java: Operaattoreilla ++ ja -- kaksi muotoa prefix ja postfix Prefix muodossa operaattori muuttujan eteen ja sovelletaan muuttujaan ennen lausekkeen muuta evaluointia Postfix muodossa operaattori muuttujan jälkeen, evaluointi tapahtuu vasta muun evaluoinnin jälkeen A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 10

11 Aritmeettisten operaattorien presedenssisääntöjä C Java/C++ Pascal FORTRAN Ada Korkein postfix ++, -- postfix ++, -- prefix ++, -- *, /, div, mod ** **, abs prefix ++, -- unaarinen +, - (kaikki) +, - *, / *, /, mod unaarinen +, - *, /, % (kaikki) +, - unaarinen +, - *, /, % binäärinen +, - binäärinen +, - Alhaisin Binäärinen +, A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 11

12 Aritmeettisten operaattorien assosiatiivisuussääntöjä *x++=*y++ Kieli Assosiaatiosääntö C Oikealta prefix ++, --, unaarinen +, - Vasemmalta muut C++/Java Oikealta ++, --, unaarinen +, - Vasemmalta muut Pascal Vasemmalta kaikki FORTRAN Oikealta ** Vasemmalta muut Ada Vasemmalta kaikki paitsi ** ** on ei-assosiatiivinen A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 12

13 IV.2.3. Tyyppimuunnokset *x++=*y++ Tarvitaan usein aritmeettisten lausekkeiden evaluoinnissa Eksplisiittiset (ohjelmoijan tekemät) Implisiittiset (tapahtuvat automaattisesti) Aritmeettisia operaatioita voidaan suorittaa eri tietotyypeille -> kielessä selkeät säännöt operaation tuloksen tyypistä ja siitä, minkä tyyppisinä operandeja käsitellään Binääriset operaatiot on yleensä määritelty vain saman tietotyypin operandeille -> Joudutaan usein tekemään pakotettuja tyypinmuunnoksia (coercion) A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 13

14 IV.2.3. Tyyppimuunnokset (2) Esimerkki. C:ssä double osamaara; osamaara = 5/2; -> osamaara = 2.0 (kääntäjä tulkitsee literaalit 5 ja 2 kokonaisluvuiksi -> kokonaislukujen jakolasku, jonka tulos (2) muunnetaan double tyyppiseksi) Muodossa osamaara = 5.0/2; tulos on 2.5 Pascalissa jakolasku / tuottaa aina reaaliluvun, kokonaislukujen jakolaskulle on oma operaattori div A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 14

15 IV Eksplisiittinen tyypinmuunnos Useimmissa kielissä mahdollinen Tapahtuu erityisellä operaattorilla tai muistuttaa syntaksiltaan funktiokutsua Esimerkki: C:ssä edellinen jakolasku: int osoittaja = 5; int nimittaja = 2; double osamaara = (double)osoittaja/nimittaja; //Nyt 2.5 C/ C++:ssa kutsutaan kastaukseksi (cast) A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 15

16 IV Eksplisiittinen tyypinmuunnos (2) C++:ssa myös neljä operaattoria muunnokseen: static_cast, dynamic_cast, reinterpret_cast, const_cast *x++=*y++ Tulisi käyttää mieluummin kuin suoraa muunnosta Esimerkki double e = ; int luku = static_cast<int>(e); A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 16

17 IV Eksplisiittinen tyypinmuunnos (3) *x++=*y++ Eksplisiittinen tyypinmuunnos voi olla joko laajentava tai kaventava Laajentava esimerkiksi muunnos float > double Kaventava päinvastoin Kaventavia ja epäsovinnaisia tyypinmuunnoksia kannattaa käyttää harkiten A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 17

18 IV.2.4. Vertailulausekkeet ja loogiset lausekkeet Vertailulauseke (relational expression) koostuu kahdesta operandista ja vertailuoperaattorista Arvo looginen totuusarvo Vertailuoperaattorien presedenssi kaikissa kielissä alhaisempi kuin aritmeettisten operaattoreiden -> aritmeettisten lausekkeiden vertailussa laskutoimitukset suoritetaan ensin Esimerkki. Olkoon a = 8 ja b= 4. Silloin lausekkeen a + 5 < 3*b; arvo on epätosi A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 18

19 IV.2.4. Vertailulausekkeet ja loogiset lausekkeet (2) Looginen lauseke eli totuusarvolauseke (Boolean expression) koostuu totuusarvotyypin muuttujista ja vakioista sekä vertailulausekkeista ja totuusarvooperaattoreista (Boolean operators) Totuusarvo (tosi tai epätosi) lasketaan propositiologiikan mukaan A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 19

20 IV Vertailuoperaattoreita eri kielissä *x++=*y++ Operaatio C, C++, Java Pascal Yhtäsuuri == =.EQ. FORTRAN Erisuuri!= <>.NE. Suurempi > >.GT. Pienempi < <.LT. Suurempi t. yhtäsuuri Pienempi t. yhtäsuuri >= >=.GE. <= <=.LE A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 20

21 IV Loogisten operaattoreiden ominaisuuksia Totuusarvo-operaattoreiden presedenssien suhde aritmeettisiin ja vertailuoperaattoreihin yleisimmin: 1. Looginen negaatio 2. Aritmeettiset operaattorit 3. Vertailuoperaattorit 4. Looginen XOR 5. Looginen JA 6. Looginen TAI A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 21

22 IV Loogisten operaattoreiden ominaisuuksia (2) Negaatio-operaattori, looginen JA ja looginen TAI: Pascal (ja monet muut): NOT, AND ja OR C/C++ Java:!,&& ja, C/C++ Java: lisäksi poissulkeva tai ^ (eli looginen XOR) A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 22

23 IV Loogisten operaattoreiden ominaisuuksia (3) Pascal poikkeaa e.m. presedenssisäännöistä Vertailuoperaattorit alemmalla tasolla kuin loogiset operaattorit AND samalla tasolla kertolaskun kanssa OR samalla tasolla yhteenlaskun kanssa Esimerkki. a < 10 OR b > 15; ei käänny Pascalissa, oltava (a < 10) OR (b > 15); A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 23

24 IV Loogisten operaattoreiden ominaisuuksia (4) C :ssä ei varsinaista loogista tietotyyppiä -> mahdollisuus kirjoittaa epäsovinnaisia vertailulausekkeita, esim. int x=2,y=1,z=0,u,v; u = y==z<x; v = x<y<z; muuttujalle v arvo 0 ja u:n arvo voi riippua kääntäjästä (yleisimmin saa arvon 1) *x++=*y A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 24

25 IV Oikosulkuevaluointi Englanniksi short-circuit evaluation Lausekkeen arvon määrääminen ennen kuin sen kaikkien operandien arvoja on määrätty Sovelletaan yleensä loogisiin lausekkeisiin Esimerkki. Jos a >= 25, niin (Pascalissa) (a < 25) AND (b > 10) aina epätosi -> toinen vertailu voidaan jättää tekemättä A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 25

26 IV Oikosulkuevaluointi (2) Voidaan käyttää hyväksi yksinkertaistamaan koodia C, C++ ja Java käyttävät loogisten lausekkeiden evaluoinnissa Ei käytetä yleisesti aritmeettisten lausekkeiden evaluoinnissa A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 26

27 IV.2.5. Yleistä lauseista *x++=*y++ Ohjelma koostuu primitiivisistä eli atomisista lauseista sekä näitä yhdistelemään tarkoitetuista ohjauslauseista (kontrollilauseista) Yhdessä peräkkäisyyden (kompositio) kanssa muodostavat kielen ohjausrakenteet Primitiiviset lauseet: 1. Sijoituslause, 2. Aliohjelmakutsu ja 3. Tyhjä lause A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 27

28 IV.2.5. Yleistä lauseista (2) Ohjelmointikielessä lauseet erotettava toisistaan 1. Erikoismerkki päättää lauseen Yleisin nykyään käytetty tapa 2. Erikoismerkki erottaa lauseet Käytetään Pascalissa 3. Rivinvaihto päättää lauseen Käytetään FORTRANissa, Pythonissa 4. Kielen syntaksi suunniteltu niin, ettei lauseiden erotin- tai lopetusmerkkiä tarvita Esimerkki: CLU Tyhjää lausetta käytetään, kun syntaksi vaatii lauseen, mutta ei haluta suorittaa toimintoa A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 28

29 IV.2.6. Sijoituslause ja ehdolliset lausekkeet *x++=*y++ Sijoituslause (assignment) imperatiivisen ohjelmoinnin perusta Ohjelmoija sitoo dynaamisesti muuttujan tunnisteen tietokoneen muistipaikassa olevaan arvoon Yleensä sijoitusoperaattorina yhtäsuuruusmerkki = Pascalissa ja Adassa yhdistelmä := Yleensä kielten vertailuoperaattori eroaa sijoitusoperaattorista C, C++ ja Java: voidaan käyttää kahta unaarista operaattoria ++ ja -- sijoituslauseena: luku++; (tai ++luku;) tarkoittaa sijoitusta luku = luku+1; A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 29

30 IV.2.6. Sijoituslause ja ehdolliset lausekkeet (2) Yhdistetyt sijoitusoperaattorit Samaan muuttujaan sijoitettava arvo kirjoitetaan lyhemmin Monissa kielissä mukana (ALGOL 60:stä lähtien) Esimerkiksi C, C++ ja Java: osamaara /= luku; on lyhennysmerkintä lauseelle osamaara = osamaara/luku; A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 30

31 IV Ehdollinen lauseke C, C++, C# ja Java sallivat ehdolliset lausekkeet Lauseke on muotoa <boolean_expression>? <expression1> : <expression2> Lauseke saa lausekkeen <expression1> arvon, mikäli <boolean_expression> on tosi, muussa tapauksessa lausekkeen <expression2> arvon A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 31

32 IV Sijoituslause lausekkeena Ainakin C, C++, C# ja Java-kielissä sijoituslause voi esiintyä myös operandina lausekkeessa, esimerkiksi int x,y,z = 5; x = y = z; // Nyt x ja y == 5 Sijoituslauseen käyttäminen operandina lisää lausekkeisiin sivuvaikutuksia -> heikentää luettavuutta ja erityisesti C:ssä luotettavuutta A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 32

33 IV.2.7. Ohjauslauseet Ohjauslauseilla (control statements) toteutetaan kielen ohjausrakenteet Yleensä kielissä useampia ohjauslauseita Ohjausrakenteet muotoutuneet ja lukujen taitteessa rakenteisen ohjelmoinnin (structured programming) mukana Havainto: pelkkä peräkkäisyys ja ehdollinen hyppykäsky johtivat suuremmissa ohjelmissa lukukelvottomaan ja epäluotettavaan koodiin A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 33

34 IV.2.7. Ohjauslauseet (2) Rakenteisen ohjelmoinnin ihanne: ohjelma koostuu sisäkkäisistä rakenteista, joilla kullakin yksi tulo- ja poistumiskohta Tarvitaan useammanlaisia valinta- ja toistolauseita Useissa nykykielissä (esimerkiksi Java) hyppykäsky (goto) jätetty pois Yleisesti nykykielten ohjausrakenteissa Koodin suoritus alkaa aina ensimmäisestä lauseesta (yksi tulokohta) Useamman tulokohdan sallimisen riskit suuremmat kuin edut Ohjausrakenteen sisältä voidaan poistua useammasta kohdasta A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 34

35 IV Valintalauseet Voidaan jakaa kahden vaihtoehdon lauseisiin ja monivalintalauseisiin Välimuoto: FORTRANin aritmeettinen valintalause: IF (ARITMEETTINEN LAUSEKE) N1, N2, N3 N1, N2 ja N3 viitteitä, joiden osoittamiin kohtiin hypätään lausekkeen arvon perusteella: Positiivisella arvolla hypätään kohtaan N1, nollalla kohtaan N2 ja negatiivisella kohtaan N3 Hyppykohdat voivat olla missä tahansa -> suuri ongelma luettavuuden kannalta ja altistaa virheille A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 35

36 IV Kahden vaihtoehdon valintalause *x++=*y++ Useimpien nykykielten valintalause pohjautuu ALGOL 60 kielen kahden vaihtoehdon valintalauseeseen: if (<looginen_lauseke>) then <lause1> [else <lause2>] Sisältää roikkuvan elsen ongelman: sisäkkäisistä if else rakenteista ei voida varmuudella sanoa, mihin if lauseeseen else kuuluu Semanttinen ratkaisu: else liittyy aina lähimpään if lauseeseen A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 36

37 IV Kahden vaihtoehdon valintalause (2) Adasta roikkuvan elsen ongelma poistettu: if ehto then... [else...] end if; A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 37

38 IV Monivalintarakenne Yleisimmin pohjautuu ALGOL-W kielen case lauseeseen: case <kokonaisluku_lauseke> of begin end <lause_1>; <lause_2>;... <lause_n> Lausekkeen kokonaisluku_lauseke arvolla 1 valitaan lause_1 jne A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 38

39 IV Monivalintarakenne (2) Pascal: case lauseke of end const_list_1: <lause_1>; const_list_2: <lause_2>;... const_list_n: <lause_n> lauseke lueteltavaa tyyppiä, alkuaan ei oletusvalintaa (itse asiassa ei lainkaan määritelty, mitä tapahtuu, jos lausekkeen arvo ei ole mikään luetelluista arvoista) Myöhemmin lisätty mahdollisuus oletustoimintoon else -vaihtoehdolla A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 39

40 IV Monivalintarakenne (3) C pohjaiset kielet: switch(<lauseke>) { } case vakio_1: <lause_1>; case vakio_2: <lause_2>; case vakio_n: <lause_n>; [default: <oletus_lause>] Lauseke mitä tahansa lueteltavaa tyyppiä A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 40

41 IV Monivalintarakenne (4) C-pohjaisten kielten monivalinta jatkuu... Semantiikka: Lausekkeen arvoa verrataan lueteltuihin vakioihin. Kun arvo löydetään suoritetaan listan lauseita tästä lauseesta alkaen, kunnes kohdataan break-lause tai kontrollirakenne loppuu. Kummassakin tapauksessa kontrolli siirtyy rakennetta seuraavaan lauseeseen. Arviointi: joustava, mutta jostakin case-osasta breakin unohtaminen voi johtaa harvinaisiin virhetilanteisiin A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 41

42 IV Toistolauseet Voidaan jakaa määrättyihin ja määräämättömiin toistolauseisiin Määrätty: laskuri kontrolloi toistoa ja toistojen lukumäärä tiedetään etukäteen Määräämätön: looginen ehto kontrolloi toistoa ja lukumäärää ei välttämättä tiedetä ennalta. Toistorakenteen kontrolloimaa ohjelmalohkoa sanotaan usein silmukaksi (loop) A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 42

43 IV Määrätyt toistolauseet Silmukkalaskuri (silmukkamuuttuja, loop variable) kontrolloi silmukan päättymistä Silmukkalaskurin alkuarvo (initial value), loppuarvo (terminal value) ja askel (stepsize) ovat silmukkaparametreja (loop parameters) A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 43

44 IV Määrätyt toistolauseet (2) Määrätyn toistorakenteen arviointikriteerit: 1.Mikä on silmukkamuuttujan tyyppi ja näkyvyysalue? 2.Mikä on silmukkamuuttujan arvo silmukan päättymisen jälkeen? 3.Saako silmukkamuuttujan arvoa muuttaa silmukan sisällä ja vaikuttaako silmukan suorituksen lopettamiseen? 4.Evaluoidaanko silmukkaparametrit ainoastaan kerran vai joka iteraatiokerralla? A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 44

45 IV Määrätyt toistolauseet (3) FORTRANin toistorakenteen muoto DO <viite> <muuttuja> = <alkuarvo>,<loppuarvo> [,<askel>] Silmukan rajaa viite, esimerkiksi luvut 1,3,5,7 ja 9 tulostava silmukka voitaisiin kirjoittaa DO 100 I = 1,10,2 PRINT *,I 100 CONTINUE A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 45

46 IV Määrätyt toistolauseet (4) FORTRANin toistorakenne jatkuu... Versiossa 77 silmukkamuuttuja kokonaisluku- tai reaalilukutyyppiä, myöhemmin rajoitettu kokonaisluvuksi FORTRANissa ei saa muuttaa silmukkamuuttujan arvoa silmukan sisällä Silmukkamuuttujan arvoksi jää sille viimeksi määritelty arvo Silmukkaparametrit evaluoidaan kerran silmukkaan tultaessa ja näitä käyttäen lasketaan silmukan kierrosluku -> toistot tiedetään etukäteen A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 46

47 IV Määrätyt toistolauseet (5) *x++=*y++ ALGOL 60:ssä silmukan rakenne: <for_stmt> ::= for var := <list_elemt> {, <list_elemt>} do <statement> <list_elemt> ::= <expression> <expression> step <expression> until <expression> <expression> while <Boolean_expr> Pyrittiin joustavuuteen Yhdistetty looginen ja laskuriin perustuva toistorakenne Mahdollista kirjoittaa oikeaoppisia, mutta hyvin monimutkaisia silmukkaehtoja -> kielen luettavuus heikkenee Voidaan hankaloittaa muuttamalla esimerkiksi askelta ja ylärajaa silmukan sisällä A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 47

48 IV Määrätyt toistolauseet (6) Esimerkkejä (ALGOL): for laskuri := 1,3,5,7 do summa := summa + laskuri; for laskuri := 1 step 2 until 7 do summa := summa + laskuri; for laskuri := 1,15,9 step 2 until 17, 2 * laskuri while laskuri < 150, -5, 22 do summa := summa + laskuri; Kaksi ensimmäistä selkeitä, kolmas sekava A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 48

49 IV Määrätyt toistolauseet (7) Pascal kielen for lause: for var := alkuarvo (to downto)loppuarvo do <statement> Erittäin yksinkertainen Askel aina kooltaan 1, tehdään joko ylös- tai alaspäin Silmukkamuuttuja lueteltavaa tyyppiä; normaali muuttuja, jonka näkyvyysalue määräytyy kuten muuttujien yleensäkin A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 49

50 IV Määrätyt toistolauseet (8) Pascal-kielen toistorakenne jatkuu... Silmukkamuuttujan arvo silmukan päättyessä epämääräinen Alkuarvon ja loppuarvon evaluointi tapahtuu ainoastaan kerran -> muuttaminen silmukan sisällä ei vaikuta toistokertojen määrään Silmukkalaskurin arvoa ei saisi muuttaa silmukan sisällä Yleensä Pascalissa ei tarkisteta tätä A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 50

51 IV C-pohjaisten kielten for-lause Muoto: for(lauseke_1;lauseke_2;lauseke_3) lause; Erittäin joustava Ei varsinaista silmukkamuuttujaa 1. Ensimmäinen lauseke suoritetaan ennen silmukan ensimmäistä kierrosta 2. lauseke_2 kontrolloi silmukan päättymistä; evaluoidaan ennen jokaista silmukan kierrosta ja jos!= 0, silmukan seuraava kierros suoritetaan. 3. lauseke_3 evaluoidaan jokaisen kierroksen jälkeen A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 51

52 IV C-pohjaisten kielten for-lause (2) Huom! Lauseke voi olla useiden lausekkeiden muodostama lista, jolloin sen arvo on viimeisen lausekkeen arvo. Esim. for(i = 12; x = 0, y = 1; i++) { } printf("luuppi\n"); ikuinen silmukka *x++=*y A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 52

53 IV C-pohjaisten kielten for-lause (3) Java, erot C++ -kieleen 1.Javassa toisen lausekkeen on oltava looginen lauseke 2.Java ei salli lausekelistaa toisena lausekkeena for(int i = 0; bb = true, ba = false; i++) { } // SILMUKKA ei käy Javassa, käy C++:ssa *x++=*y A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 53

54 IV C-pohjaisten kielten for-lause (4) *x++=*y++ Kaikissa kielissä for silmukan lausekkeet voivat olla tyhjiä, esimerkiksi for(;;) { // SILMUKKA } ikuinen silmukka C-tyyppisessä for-lauseessa kaikkia silmukkaparametreja voidaan muuttaa silmukan sisällä A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 54

55 IV Määräämättömät toistolauseet Lopetusehtona looginen ehto Toistokertoja ei välttämättä tiedetä ennakolta Useimmissa kielissä on toteutettu erilaisia rakenteita tällaisille toistoille ALGOL 60-kielen toistolause ja C-kielen for-lause oikeastaan tällainen rakenne Määräämättömät toistolauseet ovat määrättyjä yksinkertaisempia -> problematiikka helpompi A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 55

56 IV Määräämättömät toistolauseet (2) Arviointikriteerit: *x++=*y++ 1.Testataanko ehto ennen silmukan suorittamista (alkuehtoinen toisto, pretest) vai sen jälkeen (loppuehtoinen toisto, posttest)? 2. Onko määräämätön toistolause määrätyn toistolauseen erikoistapaus vai erillinen lause? ALGOL 60:ssä kaikki toistorakenteet for-lauseella FORTRANissa ei loogista toistolausetta Toistolauseet toteutettava DO-silmukkaa ja hyppykäskyjä käyttäen A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 56

57 IV Määräämättömät toistolauseet (3) Java, C ja C++: toistolauseet sekä alku- että loppuehtoiselle toistolle. Alkuehtoinen muoto on while(lauseke) lause; Loppuehtoinen do lause; while(lauseke); *x++=*y A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 57

58 IV Määräämättömät toistolauseet (4) Java, C ja C++: toistolauseet jatkuu... Loppuehtoisen toiston lause suoritetaan ainakin kerran, vaikka lauseke olisikin aluksi epätosi. C:ssä lauseke on jokin aritmeettinen lauseke tai lausekkeiden muodostama lista, C++:ssa myös looginen lauseke *x++=*y++ Javassa lausekkeen on oltava looginen lauseke eikä listaa sallita A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 58

59 IV Määräämättömät toistolauseet (5) *x++=*y++ Pascalissa sekä alkuehtoinen että loppuehtoinen toisto: Alkuehtoinen toisto Loppuehtoinen toisto WHILE ehto DO lause; REPEAT lause1; lause2; UNTIL ehto; Loppuehtoisen toiston lopetuslogiikka on käänteinen C-kieleen verrattuna: lauseita toistetaan, kunnes ehto tulee todeksi. Huomaa: jälkimmäisessä lauselista, ei tarvita koottua lausetta. Alkuehtoisessa on oltava koottu lause. Ortogonaalisuuden puute Pascalissa A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 59

60 IV Pakotettu poistuminen silmukasta Helpottaa ohjelmointia, vaikka rikkoo rakenteisen ohjelmoinnin ihanteita (vain yksi poistumiskohta rakenteessa) Adassa rakenne silmukalle, joka on ikuinen, ellei ohjelmoija määrittele poistumiskohtaa loop if(toistoja > 10) then exit; end if; end loop; *x++=*y A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 60

61 IV Pakotettu poistuminen silmukasta (2) C-kieleen pohjautuvissa kielissä break käsky. for(;;) { } if(toistoja > 10) break; Poistumiskohtia voi olla useita (haittaa kuitenkin koodin luettavuutta -> käytä harkiten) Useimpiin kieliin toteutettu silmukasta poistuminen, mukavuushyöty katsotaan suuremmaksi kuin haitat A Ohjelmointikielten periaatteet, Lauseet ja lausekkeet 61

815338A Ohjelmointikielten periaatteet

815338A Ohjelmointikielten periaatteet 815338A Ohjelmointikielten periaatteet 2015-2016 IV.2 Imperatiivinen ohjelmointi lauseet ja lausekkeet Sisältö 1. Yleistä lausekkeista 2. Presedenssi- ja assosiaatiosäännöt 3. Tyyppimuunnokset 4. Vertailulausekkeet

Lisätiedot

Lauseet ja lausekkeet imperatiivisissa ohjelmointikielissä

Lauseet ja lausekkeet imperatiivisissa ohjelmointikielissä Lauseet ja lausekkeet imperatiivisissa ohjelmointikielissä Tässä dokumentissa käsitellään lauseiden ja lausekkeiden muodostamista sekä kontrollirakenteita imperatiivisissa ohjelmointikielissä. Esimerkeissä

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

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

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

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

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 4 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten lauseisiin, lausekkeisiin ja aliohjelmiin liittyvät kysymykset. Tehtävä 1. Mitä

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero

Lisätiedot

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

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

Lisätiedot

Tietotyypit ja operaattorit

Tietotyypit ja operaattorit Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto

Lisätiedot

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

Lisätiedot

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

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

Lisätiedot

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

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

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if 3 Lauseet Lue kirjasta s. 54-84 Tämän osan sisältö Ehdollinen lause if Looginen lauseke vertailut AND-operaattori &&, & OR-operaattori, NOT-operaattori! Valintalause switch Toistolauseet while for do while

Lisätiedot

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

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

Lisätiedot

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

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

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

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

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

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

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus) VISUAL BASIC OHJEITA Kutsuttava ohjelma alkaa kometoparilla Sub... End Sub Sub ohjelmanimi()...koodia... End Sub Muuttujat Muuttujan esittely Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency,

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

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

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

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

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

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten Sisällys 16. Ohjelmoinnin tekniikkaa Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti

Lisätiedot

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

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin Sisällys 17. Ohjelmoinnin tekniikkaa for-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. if-else-lause vaihtoehtoisesti

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 25.1.2010 1 / 41 Valintakäsky if Tähänastiset ohjelmat ovat toimineen aina samalla tavalla. Usein ohjelman pitäisi

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1 16. Ohjelmoinnin tekniikkaa 16.1 Sisällys Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti

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

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

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

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

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

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

16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1 16. Ohjelmoinnin tekniikkaa 16.1 Sisällys For-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. If-else-lause vaihtoehtoisesti

Lisätiedot

Python-ohjelmointi Harjoitus 2

Python-ohjelmointi Harjoitus 2 Python-ohjelmointi Harjoitus 2 TAVOITTEET Kerrataan tulostuskomento ja lukumuotoisen muuttujan muuttaminen merkkijonoksi. Opitaan jakojäännös eli modulus, vertailuoperaattorit, ehtorakenne jos, input-komento

Lisätiedot

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

Fortran 90/95. + sopii erityisesti numeriikkaan:

Fortran 90/95. + sopii erityisesti numeriikkaan: Fortran 90/95 + sopii erityisesti numeriikkaan: + optimoivat kääntäjät tehokas koodi + mukana valmiiksi paljon varusfunktioita + kompleksiluvut + taulukko-operaatiot + operaattorit laajennettavissa myös

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen

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

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

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

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmointiharjoituksia Arduino-ympäristössä Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

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

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100 Tiedonsiirtokäskyt LOAD LOAD-käsky toimii jälkimmäisestä operandista ensimmäiseen. Ensimmäisen operandin pitää olla rekisteri, toinen voi olla rekisteri, vakio tai muistiosoite (myös muuttujat ovat muistiosoitteita).

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

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

Osoitin ja viittaus C++:ssa

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

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 19.9.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 19.9.2018 1 / 18 Oppimistavoitteet: tämän luennon jälkeen Osaat kirjoittaa Python-ohjelman, joka suorittaa eri kerroilla

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

Kielioppia: toisin kuin Javassa

Kielioppia: toisin kuin Javassa Object Pascal Pascal kielen oliolaajennus (Inprise/Borland:n oma) luokat Voit uudelleenkäyttää luomiasi objekteja esim. komponentteja Periytyminen Kielioppia: toisin kuin Javassa Ei eroa isojen ja pienien

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

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

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004 Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;

Lisätiedot

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Tällä luennolla Algebralliset tietotyypit Hahmonsovitus (pattern matching) Primitiivirekursio Esimerkkinä binäärinen hakupuu Muistattehan...

Lisätiedot

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

1. luento. Ohjelmointi (C) T0004 Syksy 2003. 1. luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot. EVTEK Teknillinen ammattikorkeakoulu Ohjelmointi (C) T0004 Syksy 2003 Olli Hämäläinen kurssin sisältö ja tavoitteet työmuodot luennot 1-2/2003 laboratorioharjoitukset 1-2/2003 kotitehtävät, laboratoriokerrat

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

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

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

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

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

Lisätiedot

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

Muuttujat ja kontrolli. Ville Sundberg

Muuttujat ja kontrolli. Ville Sundberg Muuttujat ja kontrolli Ville Sundberg 14.9.2007 Alkeistyyppi Alin abstraktiotaso josta tarvitsee välittää Yksittäinen, jakamaton tiedonjyvä Tavallaan kaikki alkeistyypit ovat lukuja arvojoukko vaihtelee

Lisätiedot

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin Ohjausjärjestelmien jatkokurssi Visual Basic vinkkejä ohjelmointiin http://www.techsoft.fi/oskillaattoripiirit.htm http://www.mol.fi/paikat/job.do?lang=fi&jobid=7852109&index=240&anchor=7852109 Yksiköt

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

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen Chapel TIE-20306 Ryhmä 91 Joonas Eloranta Lari Valtonen Johdanto Chapel on Amerikkalaisen Cray Inc. yrityksen kehittämä avoimen lähdekoodin ohjelmointikieli. Chapel on rinnakkainen ohjelmointikieli, joka

Lisätiedot

815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset

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

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

ICT1TN004. Skriptikielet. Heikki Hietala

ICT1TN004. Skriptikielet. Heikki Hietala Skriptikielet Heikki Hietala Skriptikielet Skriptikielet eli komentosarjakielet ovat ohjelmointikieliä, joilla automatisoidaan tehtäviä Toisaalta niitä käytetään käyttöjärjestelmälle ominaisia tehtäviä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 19.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 19.1.2011 1 / 39 Haluatko antaa palautetta luennoista? Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.2.2010 1 / 46 Merkkijonot Merkkijonojen avulla ohjelmassa voi esittää tekstitietoa, esim. nimiä, osoitteita ja

Lisätiedot

7. Näytölle tulostaminen 7.1

7. Näytölle tulostaminen 7.1 7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio

Lisätiedot

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

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Tyyppejä ja vähän muutakin TIEA341 Funktio ohjelmointi 1 Syksy 2005 Viime luennolla... Haskellin alkeita pääasiassa Hello World!... ja muita tutunoloisia ohjelmia Haskellilla Haskellin voima on kuitenkin

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 3.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 1 / 36 Esimerkki: asunnon välityspalkkio Kirjoitetaan ohjelma, joka laskee kiinteistönvälittäjän asunnon

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

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

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

Lisätiedot

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 1 Tieto ja sen osoite (3) X DC LOAD, =X LOAD R2, X int x =; symbolin X arvo muuttujan X arvo

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 8. kesäkuuta 2018 Yleistä Tentti 1 meni pistekeskiarvon (11.2) perusteella välttävästi. Omasta tehtäväpaperista saa kopion

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

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 4. Joukot, relaatiot ja funktiot Osa 3: Funktiot 4.3 Funktiot Olkoot A ja B joukkoja. Funktio joukosta A joukkoon B on sääntö, joka liittää yksikäsitteisesti määrätyn

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

815338A Ohjelmointikielten periaatteet

815338A Ohjelmointikielten periaatteet 815338A Ohjelmointikielten periaatteet 2015-2016 VI Funktionaalinen ohjelmointi Sisältö 1. Johdanto ja peruskäsitteitä 2. LISP- ja Scheme-kielet 3. Haskell 4. IO funktionaalisissa kielissä 5. Muita funktionaalisia

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

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

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

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

System.out.printf(%d / %d = %.2f%n, ekaluku, tokaluku, osamaara); Kysy Karilta tai Kimmolta, jos tehtävissä on jotain epäselvää. Kerro WETOon liittyvät ongelmat suoraan Jormalle sähköpostitse (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja

Lisätiedot

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 1 Muuttujan X osoite on 230 Muuttujan X arvo on 12 Symbolin X arvo on 230 symbolit ovat yleensä

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

11. Javan valintarakenteet 11.1

11. Javan valintarakenteet 11.1 11. Javan valintarakenteet 11.1 Sisällys If- ja if-else-lauseet. Orpo else. Valintaa toisin: switch-lause. 11.2 If-lause Merkitään varatulla sanalla if. Kuvaa yksisuuntaisen päätöksen: rakenteen lauseet

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

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen: Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen: S A S B Samaan jäsennyspuuhun päästään myös johdolla S AB Ab ab: S A S B Yhteen jäsennyspuuhun liittyy aina tasan yksi vasen

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9 Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9 Tuntitehtävät 9-10 lasketaan alkuviikon harjoituksissa ja tuntitehtävät 13-14 loppuviikon harjoituksissa. Kotitehtävät 11-12 tarkastetaan loppuviikon

Lisätiedot

Ohjelmointikieli TIE Principles of Programming Languages Syksy 2017 Ryhmä 19

Ohjelmointikieli TIE Principles of Programming Languages Syksy 2017 Ryhmä 19 Ohjelmointikieli TIE-20306 Principles of Programming Languages Syksy 2017 Ryhmä 19 Juho Kärnä Ville Mäntysaari 1. Johdanto D on yleiskäyttöinen, strukturoitu, staattisesti tyypitetty, käännettävä ohjelmointikieli

Lisätiedot

11. Javan valintarakenteet 11.1

11. Javan valintarakenteet 11.1 11. Javan valintarakenteet 11.1 Sisällys If- ja if--lauseet. Orpo. Valintaa toisin: switch-lause. 11.2 Valintarakenteet Valintarakenteilla ilmaistaan formaalisti, kuinka algoritmin suoritus voi haarautua

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 12. huhtikuuta 2019 Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä. Yksi A4-kokoinen lunttilappu

Lisätiedot

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 1 Muuttujan X osoite on 230 Muuttujan X arvo on 12 Symbolin X arvo on 230 Tieto ja sen osoite

Lisätiedot