815338A Ohjelmointikielten periaatteet
|
|
- Riitta Heino
- 8 vuotta sitten
- Katselukertoja:
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 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ätiedotLauseet 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ätiedotAlkuarvot 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ätiedotEhto- 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ätiedotKoottu 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ätiedotJava-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ätiedot815338A 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ätiedotJava-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ätiedotJava-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ätiedot13. 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ätiedotTietotyypit 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ätiedot13. 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ätiedotPerusteet. 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ätiedotPalautetta 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ätiedot12. 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ätiedotLauseet. 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ätiedotPerusteet. 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ätiedotEhto- 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ätiedotSisä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ätiedot12. 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ätiedot11. 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ätiedotMuuttujatyypit 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ätiedotSisä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ätiedot815338A 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ätiedotOhjelmoinnin 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ätiedot5/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ätiedotSisä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ätiedotSisä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ätiedotOhjelmoinnin 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ätiedot16. 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ätiedotITKP102 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ätiedotImperatiivisen 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ätiedotMuistutus 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ätiedotOhjausrakenteet. Valinta:
Ohjausrakenteet Luento antaa yleiskuvan siitä kuinka ohjelmassa suorittaan vaihtoehtoisia tehtäviä valintarakenteiden avulla ja kuinka samanlaisia ohjelma-askeleita toistetaan toistorakenteiden avulla
Lisätiedot811120P 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ätiedot811120P 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ätiedot16. 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ätiedotPython-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ätiedotOhjelmoinnin 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ätiedotFortran 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ätiedotOhjelmoinnin 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ätiedotTutoriaalilä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ätiedotSisä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ätiedotOhjelmointitaito (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ätiedot815338A 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ätiedotOhjelmointiharjoituksia 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ätiedotOhjelmoinnin 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ätiedotLOAD 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ätiedotOhjelmoinnin 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ätiedotJava-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ätiedotOsoitin 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ätiedotOhjelmoinnin 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ätiedotPerinteiset 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ätiedotKielioppia: 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ätiedotAlgoritmit. 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ätiedotetunimi, 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ätiedotVertailulauseet. 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ätiedotAlgebralliset 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ätiedot1. 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ätiedot1. 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ätiedotOhjelmoinnin 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ätiedotSisä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ätiedotOngelma(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ätiedot3. 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ätiedotMuuttujat 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ätiedotOhjausjä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ätiedotTä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ätiedotChapel. 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ätiedot815338A 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ätiedotJohdanto 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ätiedotICT1TN004. 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ätiedotOhjelmoinnin 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ätiedotOhjelmoinnin 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ätiedot7. 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ätiedotTyyppejä 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ätiedotTIEP114 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ätiedotOhjelmointitaito (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ätiedotOhjelmoinnin 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ätiedotOhjelmoinnin 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ätiedotC-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ätiedotTieto 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ätiedotITKP102 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ätiedotIDL - 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ätiedot811120P 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ätiedotATK 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ätiedot815338A 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ätiedotTIEP114 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ätiedotOhjelmassa 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ätiedotSystem.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ätiedotJakso 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ätiedotOngelma(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ätiedot11. 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ätiedotLuento 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ätiedotVasen 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ätiedotOhjelmoinnin 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ätiedotDiskreetin 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ätiedotOhjelmointikieli 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ätiedot11. 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ätiedotITKP102 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ätiedotJakso 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