OPPITUNTI 5 Ohjelman kulku

Koko: px
Aloita esitys sivulta:

Download "OPPITUNTI 5 Ohjelman kulku"

Transkriptio

1 5. Ohjelman kulku 67 OPPITUNTI 5 Ohjelman kulku Viime tunnilla luomamme skriptit olivat suoraviivaisia. Ohjelmalauseet suoritettiin aina samassa järjestyksessä, joten ohjelmissamme ei ollut lainkaan joustavuutta. Tutkimme nyt joitakin rakenteita, joiden avulla skriptit voivat sopeutua eri olosuhteisiin. Tämän tunnin aiheita ovat seuraavat: Kuinka ohjelmassa voidaan haarautua if-lauseessa olevan testin perusteella Kuinka ohjelmassa voidaan suorittaa vaihtoehtoinen koodilohko, jos if-lauseessa olevan testin tulos ei ole tosi Kuinka switch-case-rakenteen avulla suoritetaan testilausekkeen antamaa tulosta vastaava koodi Kuinka koodilohkoa suoritetaan toistuvasti while-rakenteen avulla Kuinka for-silmukkaa käytetään Kuinka silmukoista voidaan hypätä pois Kuinka silmukoita laitetaan sisäkkäin

2 68 5. Ohjelman kulku Ohjelman kulun muuttaminen Useimmat skriptit suorittavat ehtolauseita ja muuttavat käytöstään niiden perusteella. Kyky tehdä päätöksiä tekee PHP-sivuista dynaamisia, koska tällöin sivujen toiminta ja tulostus voi muuttua olosuhteiden mukaan. Kuten useimmissa ohjelmointikielissä, myös PHP4:ssä on if-lause päätöksenteon mahdollistamiseen. If-lause If-lause tutkii sulkumerkkien sisällä olevaa testilauseketta. Jos lausekkeen tulos on tosi, suoritetaan iflauseen rungon koodilohko. Muutoin koko koodilohko ohitetaan. Näin skriptit voivat tehdä päätöksiä useidenkin eri tekijöiden perusteella. if ( lauseke ) { // koodi, joka suoritetaan, jos lauseke on tosi } Listaus 5.1 suorittaa koodilohkon, jos muuttujassa on merkkijono "happy". Listaus 5.1 If-lause 3: <title>listing 5.1</title> 7: $mood = "happy"; 8: if ( $mood == "happy" ) 9: { 10: print "Hooray, I'm in a good mood"; 11: } 12:?> 13: </body> 14: </html>

3 5. Ohjelman kulku 69 Ohjelma käyttää yhtäsuuruuden vertailun operaattoria (==) vertaamaan muuttujaa $mood merkkijonoon happy. Jos merkkijonot ovat samoja, lausekkeen tulos on tosi ja if-lauseen alla oleva koodi suoritetaan. Vaikka koodi onkin nyt aaltosulkujen sisällä, aaltosulkuja tarvitaan normaalisti vain silloin, kun if-lauseen rungossa on enemmän kuin yksi ohjelmalause. Seuraava koodi olisi siis myöskin sopiva: if ( $mood == "happy" ) print "Hooray, I'm in a good mood"; Jos muutat muuttujan $mood arvoksi sad ja ajat skriptin, testiehto on epätosi ja koodi ohitetaan. Tällöin skripti jää mykäksi. Else-osan käyttö if-lauseessa Kun työskentelet if-lauseella, saatat usein haluta määrittää vaihtoehtoisen koodin, joka suoritetaan silloin, kun if-lauseen testilauseke on epätosi. Voit tehdä niin lisäämällä else-osan if-rakenteeseen: if ( lauseke ) { // koodi, joka suoritetaan, jos testi on tosi } else { // koodi, joka suoritetaan muutoin } Listaus 5.2 on lisännyt listaukseen 5.1 koodin, jonka mukaan suoritetaan tietty koodi silloin, kuin testiehto ei ole tosi. Listaus 5.2 If-lause, jossa mukana else 3: <title>listing 5.2</title> 7: $mood = "sad";

4 70 5. Ohjelman kulku 8: if ( $mood == "happy" ) 9: { 10: print "Hooray, I'm in a good mood"; 11: } 12: else 13: { 14: print "Not happy but $mood"; 15: } 16:?> 17: </body> 18: </html> Nyt $mood sisältää merkkijonon sad, joka ei ole sama kuin happy, joten if-lauseen testi antaa tuloksen false. Tällöin if-rungon koodi ohitetaan. Sen sijaan suoritetaan else-osan jälkeinen koodi, joka tulostaa viestin "Not happy but sad" selaimelle. Else-osan avulla voidaan toteuttaa kehittyneempiä päätöksentekoprosesseja, mutta edelleenkin joudutaan rajoittumaan joko-tai-haarautumiseen. PHP4 sallii kuitenkin useiden peräkkäisten testilausekkeiden tutkimisen. Elseif-osan käyttäminen if-lauseessa Voit käyttää if-elseif-else-rakennetta ohjelmissasi testaamaan useita lausekkeita ennen oletuskoodin käyttämistä: if ( lauseke ) { // koodi, joka suoritetaan, jos testi on tosi } elseif ( another expression ) { // koodi, joka suoritetaan, jos edellinen testi oli epätosi // ja tämä on tosi else { // koodi, joka suoritetaan muutoin }

5 5. Ohjelman kulku 71 Jos ensimmäinen lauseke ei ole tosi, ensimmäinen koodilohko ohitetaan. Sen jälkeen tutkitaan testilauseke uudelleen elseif-osan toimesta. Jos lauseke antaa nyt tuloksen tosi, suoritetaan toinen koodilohko. Muutoin suoritetaan vasta else-osan jälkeen oleva koodilohko. Ohjelmaan voidaan sijoittaa haluttu määrä elseif-osia; else-osa voi jäädä pois, jos mitään oletuskoodia ei haluta laittaa mukaan. Listaus 5.3 lisää elseif-osan edelliseen esimerkkiimme. Listaus 5.3 If-lause, joka käyttää else- ja elseif-osia 3: <title>listing 5.3</title> 7: $mood = "sad"; 8: if ( $mood == "happy" ) 9: { 10: print "Hooray, I'm in a good mood";.black plate (81,1) 11: } 12: elseif ( $mood == "sad" ) 13: { 14: print "Awww. Don't be down!"; 15: } 16: else 17: { 18: print "Neither happy nor sad but $mood"; 19: } 20:?> 21: </body> 22: </html> Nytkin muuttujassa $mood on merkkijono sad. Teksti ei ole sama kuin happy, joten ensimmäinen koodilohko ohitetaan. Sitten elseif-osa testaa, onko muuttujassa arvo sad ja testin tulos on tosi. Siksi suoritetaankin seuraavana oleva koodilohko.

6 72 5. Ohjelman kulku Switch-rakenne Switch-rakenne on vaihtoehtoinen keino muuttaa ohjelman kulkua testilausekkeen tuloksen mukaan. Switch-rakenteen ja if-lauseen välillä on joitakin peruseroja. Käyttämällä if-lausetta elseif-osan kanssa voidaan toteuttaa useita testejä. Switch suorittaa aina vain yhden lausekkeen, jonka tuloksena on jokin yksinkertaista tietotyyppiä oleva arvo (numero, merkkijono tai totuusarvo) ja sitten toteutetaan tuota arvoa vastaava koodi. If-lauseessa olevan testilausekkeen arvo voi olla vain joko tosi tai epätosi. Sen sijaan switch-rakenteen lausekkeen tulosta voidaan verrata kuinka moneen arvoon tahansa. switch ( lauseke ) { case result1: // suorita tämä, jos lausekkeen tulos on result1 break; case result2: // suorita tämä, jos lausekkeen tulos on result2 break; default: // suorita tämä, jos break-komentoa ei ole kohdattu aiemmin } Switch-lauseen lauseke on usein pelkkä muuttuja. Switch-rakenteen sisällä on monesti lukuisa määrä case-osia. Kukin case-osa vertaa lausekkeen tuottamaa tulosta case-arvoon. Jos arvot ovat samoja, suoritetaan case-osan jälkeinen koodi. Break-lause päättää switch-rakenteen suorittamisen. Jos breakosa puuttuu, jatketaan switch-rakenteessa alaspäin, kunnes seuraava break-lause tai default-osa kohdataan. Jos default-osa kohdataan, sen koodi suoritetaan. Älä unohda sijoittaa break-lausetta jokaisen case-osan jälkeisen koodin viimeiseksi lauseeksi. Jos break puuttuu, ohjelman suoritus jatkuu seuraavaan case-osaan ja jopa default-osaan saakka. Useimmiten ohjelma ei tällöin toimi niin kuin halusit sen toimivan. Listaus 5.4 toteuttaa aiemman if-esimerkkiohjelman switch-rakenteen avulla. Listaus 5.4 Switch-lause

7 5. Ohjelman kulku 73 3: <title>listing 5.4</title> 7: $mood = "sad"; 8: switch ( $mood ) 9: { 10: case "happy": 11: print "Hooray, I'm in a good mood"; 12: break; 13: case "sad": 14: print "Awww. Don't be down!"; 15: break; 16: default: 17: print "Neither happy nor sad but $mood"; 18: } 19:?> 20: </body> 21: </html> Tässäkin esimerkissä muuttuja $mood alustetaan merkkijonolla sad. Switch-lause käyttää tätä muuttujaa lausekkeessaan. Ensimmäinen case-osa testaa, onko muuttujassa $mood arvo happy. Näin ei ole, joten skripti jatkaa seuraavaan case-osaan. Nyt sad on sama kuin $mood-muuttujan arvo, joten suoritetaan vastaava koodilohko. Break päättää prosessin. Ehto-operaattorin käyttö Ehto-operaattori muistuttaa if-lausetta, mutta se palauttaa arvon, joka voi johtua kahdesta eri lausekkeesta. Nuo lausekkeet erotetaan toisistaan kaksoispisteellä (:). Se, mitä lauseketta käytetään arvon generoimiseen, riippuu testilausekkeen tuloksesta: (lauseke)? palautetaan, jos lauseke on tosi:palautetaan, jos lauseke on epätosi;

8 74 5. Ohjelman kulku Jos testin tulos on tosi, palautetaan ensimmäisenä oleva arvo. Muutoin palautetaan toisena oleva arvo. Listaus 5.5 käyttää ehto-operaattoria asettamaan muuttujan arvon $mood-muuttujassa olevan arvon mukaan. Listaus 5.5 Ehto-operaattorin käyttäminen 3: <title>listing 5.5</title> 7: $mood = "sad"; 8: $text = ( $mood=="happy" )?"Hooray, I'm in a good mood":"not happy but $mood"; 9: print "$text"; 10:?> 11: </body> 12: </html> Muuttujaan $mood sijoitetaan arvo sad. Sitten testataan, onko muuttujassa arvo happy. Koska testin tulos on epätosi, palautetaan viimeisen lausekkeen tulos. Ehto-operaattoria voi olla vaikea lukea, mutta se sopii hyvin käyttöön, kun vaihtoehtoja on vain kaksi. Sen avulla saadaan myös tiiviimpää koodia. Silmukat Toistaiseksi olemme tutkineet päätöksentekoa; skripti voi tehdä päätöksen siitä, mikä koodi suoritetaan seuraavaksi. Skripti voi lisäksi toistaa samaa koodia tietyn kertamäärän. Silmukkarakenteet on kehitetty toistuvien toimintojen suorittamiseen. Lähes aina silmukka jatkaa suorittamistaan, kunnes tietty ehto on saavutettu. Silmukasta voidaan myös poistua kesken kaiken, kun jokin ehto toteutuu. While-lause While-lause muistuttaa hieman if-lausetta: while ( lauseke ) { // koodia }

9 5. Ohjelman kulku 75 Niin kauan kuin rakenteen testilauseke on tosi, suoritetaan koodilohkoa toistuvasti. Lohkon sisällä tapahtuu yleensä jotain, mikä vaikuttaa rakenteen testilausekkeeseen. Muutoin silmukka olisi päättymätön. Listaus 5.6 luo while-silmukan, joka laskee ja tulostaa kahden kerrannaisia. Listaus 5.6 While-lause 3: <title>listing 5.6</title> 7: $counter = 1; 8: while ( $counter <= 12 ) 9: { 10: print "$counter times 2 is ".($counter*2)."<br>"; 11: $counter++; 12: } 13:?> 14: </body> 15: </html> Tässä esimerkissä alustetaan ensin muuttuja $counter. While-lause testaa muuttujan arvon. Niin kauan kuin muuttujan arvo on pienempi tai yhtäsuuri kuin 12, silmukka jatkaa suoritustaan. While-silmukan sisällä on koodilohko, jossa muuttujan $counter-arvo tuplataan ja tulostetaan selaimelle. Sitten muuttujaa kasvatetaan yhdellä. Juuri tuo viimeinen vaihe on tärkeä, koska ilman muuttujan $counter muuttamista ei testilausekkeen arvoksi tulisi koskaan false-arvoa. Jos testilauseke ei muuttuisi, silmukka olisi päättymätön. Do-while-lause Do-while-lause näyttää ylösalaisin käännetyltä while-lauseelta. Olennainen ero noiden kahden rakenteen välillä on siinä, että do-while-rakenteessa koodilohko suoritetaan ennen testin suorittamista eikä sen jälkeen: do { // koodi } while (lauseke);

10 76 5. Ohjelman kulku Testilausekkeen tulee do-while-rakenteessa päättyä aina puolipisteeseen, koska koko rakenne päättyy siihen. Tämä lause saattaisi olla hyödyllinen silloin, kun koodilohko tulee suorittaa ainakin kerran, vaikka testin tulos olisi epätosi. Listaus 5.7 luo do-while-rakenteen. Koodilohko suoritetaan yhden kerran. Listaus 5.7 Do-while-lause 3: <title>listing 5.7</title> 7: $num = 1; 8: do 9: { 10: print "Execution number: $num<br>\n"; 11: $num++; 12: } 13: while ( $num > 200 && $num < 400 ); 14:?> 15: </body> 16: </html> Do-while-lause testaa, onko muuttujassa $num oleva arvo suurempi kuin 200 ja pienempi kuin 400. Muuttujassa on alkuarvona 1, joten lauseke palauttaa arvon false. Siitä huolimatta koodilohko suoritetaan yhden kerran ja se tulostaa yhden rivin selaimelle. For-lause For-rakenteella ei voida tehdä mitään sellaista, jota ei voitaisi toteuttaa while-lauseella. Toisaalta forrakenne on usein nätimpi ja turvallisempi tapa toteuttaa sama toiminto. Listauksessa 5.6 alustimme muuttujan while-silmukan ulkopuolella. Sitten while-rakenteen testilauseke testasi muuttujan. Muuttujaa kasvatettiin sitten koodilohkossa. For-lauseessa voidaan nuo toiminnot suorittaa suoraan for-lauseen

11 5. Ohjelman kulku 77 otsikkorivillä. Näin saadaan tiiviimpää koodia ja on helpompi muistaa muuttujan kasvattaminen, joten päättymättömien silmukoiden tekemisen vaara on vähäisempi kuin while-silmukkaa käytettäessä. for ( alustus; testaus; kasvatus ) { // suoritettava koodi } For-lauseen otsikossa olevat lausekkeet erotetaan toisistaan puolipisteillä. Tavallisesti ensimmäinen lauseke alustaa laskurimuuttujan, toinen testaa ehdon ja kolmas kasvattaa muuttujaa. Listaus 5.8 käyttää for-silmukkaa; kyseessä on listauksen 5.6 päivitys. Listaus 5.8 For-lauseen käyttäminen 3: <title>listing 5.8</title> 7: for ( $counter=1; $counter<=12; $counter++ ) 8: { 9: print "$counter times 2 is ".($counter*2)."<br>"; 10: } 11:?> 12: </body> 13: </html>

12 78 5. Ohjelman kulku Listausten 5.6 ja 5.8 tulokset ovat aivan samoja. For-lause tekee kuitenkin tiiviimpää koodia. Koska muuttuja $counter alustetaan ja sitä kasvatetaan for-silmukan otsikossa, silmukan toimintaa on helppo ymmärtää. For-silmukan otsikossa alustetaan $counter ensin arvolla 1, sitten testilauseke testaa, onko muuttujan arvo pienempi tai yhtäsuuri kuin 12. Viimeinen lauseke kasvattaa muuttujan arvoa yhdellä. Kun ohjelman kulku saavuttaa for-silmukan, $counter-muuttujaa kasvatetaan ja testilauseke suoritetaan. Jos testin tulos on true, koodilohko suoritetaan. Sitten muuttujaa kasvatetaan ja testi suoritetaan uudelleen. Tätä prosessia jatketaan, kunnes testin tulos on false. Silmukoista poistuminen break-lauseella Sekä while- että for-lauseet käyttävät sisäisiä testejä, joiden avulla silmukat voidaan päättää. Breaklause mahdollistaa kuitenkin silmukan lopettamisen muiden testiehtojen mukaan. Menettelyllä voidaan ehkäistä virheitä. Listaus 5.9 luo yksinkertaisen for-rakenteen, joka jakaa suuren luvun muuttujalla, jota inkrementoidaan. Tulos esitetään näytöllä. Listaus 5.9 For-silmukka, joka jakaa luvun 4000 kymmenellä peräkkäisellä kokonaisluvulla 3: <title>listing 5.9</title> 7: for ( $counter=1; $counter <= 10, $counter++ ) 8: { 9: $temp = 4000/$counter; 10: print "4000 divided by $counter is... $temp<br>"; 11: } 12:?> 13: </body> 14: </html> Esimerkissä muuttuja $counter alustetaan ensin arvolla 1. For-lauseen testi tarkistaa, onko muuttujan arvo pienempi tai yhtäsuuri kuin 10. Koodilohkossa arvo 4000 jaetaan $counter-muuttujan arvolla ja tulos esitetään näytöllä. Kaikki näyttää aivan selkeältä. Mutta entäpä jos muuttujan $counter arvo saadaan käyttäjältä? Tuo arvo voi olla negatiivinen tai jopa merkkijono. Katsokaamme ensimmäistä tapausta. Jos $counter-muuttujan alkuarvo on arvon 1 sijaan -4, luku 4000 tulee jaetuksi nollalla, kun koodilohko suoritetaan viidennen kerran. Sellaista

13 5. Ohjelman kulku 79 ei voida sallia. Listaus 5.10 varautuu tätä tilannetta varten lopettamalla silmukan, jos $counter-muuttujan arvo on nolla. Listaus 5.10 Break-lauseen käyttäminen 3: <title>listing 5.10</title> 7: $counter = -4; 8: for ( ; $counter <= 10; $counter++ ) 9: { 10: if ( $counter == 0 ) 11: break; 12: $temp = 4000/$counter; 13: print "4000 divided by $counter is... $temp<br>"; 14: } 15:?> 16: </body> 17: </html> Luvun jakaminen nollalla ei aiheuta PHP4:ssä vakavaa virhettä. Sen sijaan annetaan varoitus ja suorittamista jatketaan eteenpäin. Esimerkissä käytetään if-lausetta testaamaan $counter-muuttujan arvoa. Jos arvo on nolla, break-lause lopettaa heti silmukan suorittamisen ja suoritusta jatketaan silmukan jälkeen tulevasta ohjelmalauseesta. Huomaa, että alustimme $counter-muuttujan for-lauseen otsikon ulkopuolella simuloidaksemme tilannetta, jossa muuttujan arvo tulee käyttäjältä tai vaikkapa tietokantahaun tuloksena. Voit jättää pois mitkä tahansa osat for-lauseen otsikosta, mutta tällöinkin sinun on jätettävä puolipisteet paikoilleen.

14 80 5. Ohjelman kulku Koodin ohittaminen continue-lauseella Continue-lause lopettaa koodilohkon suorittamisen, mutta ei lopeta koko silmukkaa. Sen sijaan se aloittaa uuden kierroksen. Listauksen 5.10 break-lause oli melko ehdoton. Listauksessa 5.11 käytetään continuelausetta, jonka avulla vältetään nollalla jakaminen, mutta silmukkaa ei kuitenkaan tällöin lopeteta. Listaus 5.11 Continue-lause 3: <title>listing 5.11</title> 7: $counter = -4; 8: for ( ; $counter <= 10; $counter++ ) 9: { 10: if ( $counter == 0 ) 11: continue; 12: $temp = 4000/$counter; 13: print "4000 divided by $counter is... $temp<br>"; 14: } 15:?> 16: </body> 17: </html> Olemme nyt vaihtaneet break-lauseen continue-lauseeseen. Jos $counter-muuttujan arvo ominaisuus nolla, koodilohkon yli hypätään ja jatketaan seuraavasta kierroksesta eteenpäin. Break ja continue voivat tehdä koodista vaikealukuista. Koska ne tekevät silmukoista monimutkaisempia, ne voivat aiheuttaa vaikeasti selvitettäviä virheitä. Niitä tulisikin käyttää säästeliäästi.

15 5. Ohjelman kulku 81 Sisäkkäiset silmukat Silmukat voivat sisältää muita silmukkarakenteita. Tuollaiset yhdistelmät ovat erityisen hyödyllisiä työskenneltäessä dynaamisesti luotavilla HTML-taulukoilla. Listaus 5.12 käyttää kahta for-silmukkaa tulostamaan kertotaulu selaimelle. Listaus 5.12 Kaksi sisäkkäistä for-silmukkaa 3: <title>listing 5.12</title> 7: print "<table border="1">\n"; 8: for ( $y=1; $y<=12; $y++ ) 9: { 10: print "<tr>\n"; 11: for ( $x=1; $x<=12; $x++ ) 12: { 13: print "\t<td>"; 14: print ($x*$y); 15: print "</td>\n"; 16: } 17: print "</tr>\n"; 18: } 19: print "</table>"; 20:?> 21: </body> 22: </html> Ulompi for-lause alustaa muuttujan nimeltä $y asettaen sen alkuarvoksi arvon 1. Se määrittää testilausekkeen, jossa testataan, onko $y pienempi tai yhtäsuuri kuin 12 ja määrittää $y-muuttujan kasvattamisen. Jokaisella kierroksella koodilohko tulostaa TR-elementin (taulukon rivi) ja määrittää toisen for-lauseen. Tuo sisäinen silmukka alustaa muuttujan nimeltä $x ja määrittää muut osat samalla lailla kuin ulompi for-silmukka. Kullakin kierroksella sisempi for-silmukka tulostaa TD-elementin (taulukon solu) selaimelle sekä kertolaskun $x * $y tuloksen. Tuloksena on siististi muotoiltu kertotaulu.

16 82 5. Ohjelman kulku Yhteenveto Tällä tunnilla opit käyttämään kontrollirakenteita ja näit, kuinka niiden avulla voidaan skripteistä tehdä joustavia ja dynaamisia. Useimpia näistä rakenteista käytetään uudelleen ja uudelleen kirjan loppuosan esimerkeissä. Luvussa kerrottiin myös, kuinka määritetään if-lause ja kuinka siihen lisätään vaihtoehtoisia toimintoja elseif- ja else-osilla. Opit lisäksi käyttämään switch-lausetta ja muuttamaan sen avulla ohjelman kulkua useiden testitulosten perusteella. Tutustuit luvussa myös silmukoihin, erityisesti while- ja for-rakenteisiin, ja sait tietää, kuinka silmukoihin voidaan laittaa lisäkontrollia break- ja continue-lauseiden avulla. Lopuksi sait tietää, kuinka silmukoita voidaan laittaa sisäkkäin, ja näit myös tyypillisen esimerkin siitä. K&V K Täytyykö kontrollirakenteen testilausekkeen tuloksen olla totuusarvo? V Kyllä, mutta testilausekkeen yhteydessä nolla, määrittelemätön muuttuja tai tyhjä merkkijono vastaavat arvoa false. Kaikki muut arvot vastaavat arvoa true. K Onko kontrollirakenteen koodilohko laitettava aina aaltosulkuihin? V Jos koodilohkossa on vain yksi rivi, voidaan aaltosulut jättää pois. K Käytiinkö tässä luvussa läpi kaikki erilaiset silmukat? V Luvussa 7, Taulukot, kerrotaan vielä foreach-silmukkarakenteesta, jonka avulla on kätevää käydä läpi taulukoita. Työpaja Työpaja tarjoaa pikakysymyksiä, joiden avulla voit kerrata läpikäytyä materiaalia. Yritä ymmärtää vastaukset ennen kuin jatkat seuraavaan lukuun. Vastaukset annetaan liitteessä A. Kysymyksiä 1. Kuinka käyttäisit if-lausetta tulostaaksesi merkkijonon Nuorehko selaimelle, jos $age-muuttujan arvo on väliltä 18-35? Jos muuttujan arvo on jotain muuta, tulisi ohjelman tulostaa viesti Muu. 2. Kuinka laajentaisit kysymyksen 1 koodiasi tulostamaan merkkijonon Lapsi, jos $age-muuttujan arvo on väliltä 1-17? 3. Kuinka loisit while-lauseen, joka tulostaa parittomat luvut väliltä 1-49?

17 5. Ohjelman kulku Kuinka muuntaisit kysymyksen 3 while-lauseen for-lauseeksi? Toiminta 1. Tutki kontrollirakenteiden syntaksia. Mieti, kuinka nuo menettelytavat voisivat auttaa skriptien teossa. 2. Tutki ehto-operaattoria. Mikä erottaa sen luvun lopun kontrollirakenteista? Mitä hyötyä ehto-operaattorista voisi olla?

18 84 5. Ohjelman kulku

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

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

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

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

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

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

Osa. Toimintojen toteuttaminen ohjelmissa vaatii usein haarautumisia ja silmukoita. Tässä luvussa tutustummekin seuraaviin asioihin:

Osa. Toimintojen toteuttaminen ohjelmissa vaatii usein haarautumisia ja silmukoita. Tässä luvussa tutustummekin seuraaviin asioihin: Osa II 8. oppitunti Kehittynyt ohjel- man kulku Toimintojen toteuttaminen ohjelmissa vaatii usein haarautumisia ja silmukoita. Tässä luvussa tutustummekin seuraaviin asioihin: Mitä silmukat ovat ja kuinka

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

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

OPPITUNTI 3 Ensimmäinen skripti

OPPITUNTI 3 Ensimmäinen skripti 3. Ensimmäinen skripti 35 OPPITUNTI 3 Ensimmäinen skripti Kun olet asentanut PHP:n ja asettanut sen kokoonpanon, on aika laittaa ohjelmisto testaukseen. Tällä tunnilla luot ensimmäisen skriptisi ja tutkit

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

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

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

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

JavaScript alkeet Esimerkkikoodeja moniste 2 (05.10.11 Metropolia)

JavaScript alkeet Esimerkkikoodeja moniste 2 (05.10.11 Metropolia) JavaScript alkeet Esimerkkikoodeja moniste 2 (05.10.11 Metropolia) Esim 5.1 laskujärjestys operaattorit var tulos = 5 + 4 * 12 / 4; document.write("5 + 4 * 12 / 4 laskutoimituksen tulos

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

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

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

Python-ohjelmointi Harjoitus 5

Python-ohjelmointi Harjoitus 5 Python-ohjelmointi Harjoitus 5 TAVOITTEET Kerrataan silmukkarakenteen käyttäminen. Kerrataan jos-ehtorakenteen käyttäminen. Opitaan if else- ja if elif else-ehtorakenteet. Matematiikan sisällöt Tehtävät

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

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

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

Palvelinpuolen ohjelmointi

Palvelinpuolen ohjelmointi Palvelinpuolen ohjelmointi Staattiset ja dynaamiset web-sivut Staattiset web-sivut ovat valmiissa muodossaan palvelimella (tai paikallisesti omalla koneella). Javascript mahdollistaa paikalliset dynaamiset

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

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

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

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

OSA II Kieli. Oppitunti. 4. Rakennuslohkot 5. Ohjelman kulku 6. Funktiot 7. Taulukot 8. Oliot

OSA II Kieli. Oppitunti. 4. Rakennuslohkot 5. Ohjelman kulku 6. Funktiot 7. Taulukot 8. Oliot 43 OSA II Kieli Oppitunti 4. Rakennuslohkot 5. Ohjelman kulku 6. Funktiot 7. Taulukot 8. Oliot 4. Rakennuslohkot 45 OPPITUNTI 4 Rakennuslohkot Tällä tunnilla joudut paneutumaan itse ohjelmointikieleen.

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

UML -mallinnus TILAKAAVIO

UML -mallinnus TILAKAAVIO UML -mallinnus TILAKAAVIO SISÄLLYS 3. Tilakaavio 3.1 Tilakaavion alku- ja lopputilat 3.2 Tilan nimi, muuttujat ja toiminnot 3.3 Tilasiirtymä 3.4 Tilasiirtymän vai tilan toiminnot 3.5 Tilasiirtymän tapahtumat

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

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

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

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

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3 16. Lohkot 16.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 16.2 Lohkot Kaarisulut

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

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

6. Funktiot 85. Kuinka funktioita määritellään ja kutsutaan. Kuinka funktioille viedään arvoja ja niistä palautetaan arvoja

6. Funktiot 85. Kuinka funktioita määritellään ja kutsutaan. Kuinka funktioille viedään arvoja ja niistä palautetaan arvoja 6. Funktiot 85 OPPITUNTI 6 Funktiot Funktiot ovat hyvin laaditun skriptin perusta. Ne tekevät koodista helppolukuista ja uudelleen käytettävää. Laajoja projekteja on mahdotonta hallita ilman funktioiden

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

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

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

Sisällys. 16. Lohkot. Lohkot. Lohkot

Sisällys. 16. Lohkot. Lohkot. Lohkot Sisällys 16. ohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 16.1 16.2 ohkot aarisulut

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

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

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

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3 15. Lohkot 15.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.2 Lohkot Aaltosulkeet

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 11.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 11.2.2009 1 / 33 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

Sisällys. 15. Lohkot. Lohkot. Lohkot

Sisällys. 15. Lohkot. Lohkot. Lohkot Sisällys 15. Lohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.1 15.2 Lohkot Aaltosulkeet

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

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

Zeon PDF Driver Trial

Zeon PDF Driver Trial Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

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

Ctl160 Tekstikorpusten tietojenkäsittely Kolmas luento,

Ctl160 Tekstikorpusten tietojenkäsittely Kolmas luento, Ctl160 490160-0 Kolmas luento, 10.2.2003 Nicholas Volk Yleisen kielitieteen laitos, Helsingin yliopisto Ctl160 490160-0Kolmas luento, 10.2.2003 p.1/28 Unohtui viime kerralla... Skriptin ajaminen edellyttää

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ältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

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

Muuttujien roolit Kiintoarvo cin >> r;

Muuttujien roolit Kiintoarvo cin >> r; Muuttujien roolit Muuttujilla on ohjelmissa eräitä tyypillisiä käyttötapoja, joita kutsutaan muuttujien rooleiksi. Esimerkiksi muuttuja, jonka arvoa ei muuteta enää kertaakaan muuttujan alustamisen jälkeen,

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

JavaScript alkeet Esimerkkikoodeja moniste 2

JavaScript alkeet Esimerkkikoodeja moniste 2 JavaScript alkeet Esimerkkikoodeja moniste 2 Esim 5.1 laskujärjestys operaattorit var tulos = 5 + 4 * 12 / 4; document.write("5 + 4 * 12 / 4 laskutoimituksen tulos on " + tulos,"");

Lisätiedot

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: {

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: { Osa I 2. oppitunti C++-ohjelman osat Ennen kuin menemme yksityiskohtaisemmin sisälle C++-luokkiin, -muuttujiin jne, katsokaamme ensin, millaisista osista C++-ohjelma koostuu. Tämän tunnin aikana opit seuraavat

Lisätiedot

4. oppitunti. Ilmaukset ja ohjelmalauseet. Osa

4. oppitunti. Ilmaukset ja ohjelmalauseet. Osa Osa I 4. oppitunti Ilmaukset ja ohjelmalauseet Ohjelma ei todellisuudessa ole mitään muuta kuin joukko komentoja, jotka suoritetaan peräkkäin. Monipuolisuutta ohjelmaan saadaan, kun ohjelmassa haaraudutaan

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

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 26.9.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 26.9.2018 1 / 21 Oppimistavoitteet: tämän luennon jälkeen Osaat kirjoittaa for-käskyn avulla ohjelman, joka toistaa haluttua

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.2.2011 1 / 37 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

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 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

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

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

12.10.2011. Erittäin nopea tapa saada kehitysympäristö php:lle pystyyn Voidaan asentaa muistitikulle

12.10.2011. Erittäin nopea tapa saada kehitysympäristö php:lle pystyyn Voidaan asentaa muistitikulle (Ei yhtään videota tällä kertaa.) X niin kuin Cross-Platform, Apache, MySql, PHP, Perl Kehitysympäristö EI tuotantokäyttöön Monet tärkeät tietoturva-asetukset ovat oletuksena pois päältä Erittäin nopea

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

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

5.4. Sulautetun järjestelmän C-kielen perusteet. 4/8. Ohjausrakenteet 7.1.2008 pva

5.4. Sulautetun järjestelmän C-kielen perusteet. 4/8. Ohjausrakenteet 7.1.2008 pva 5.4. Sulautetun järjestelmän C-kielen perusteet. 4/8. Ohjausrakenteet 7.1.2008 pva Superohjelmoija on insinörttitaiteilija ja ryhtyessään koodaamaan, hän keskittyy kunnolla, leijuu jonnekin sfääreihin

Lisätiedot

OPPITUNTI 11 DBM-funktioiden käyttö

OPPITUNTI 11 DBM-funktioiden käyttö 11. DBM-funktioiden käyttö 193 OPPITUNTI 11 DBM-funktioiden käyttö Jos sinulla ei ole pääsyä SQL-tietokantaan, esimerkiksi MySQL- tai Oracle-tietokantaan, sinulla on varmaankin mahdollisuus käyttää DBM-tyylistä

Lisätiedot

Harjoitus 3 -- Ratkaisut

Harjoitus 3 -- Ratkaisut Harjoitus 3 -- Ratkaisut 1 ' '-merkki kirjoitetaan =, ' '-merkki!=, ' '-merkki ==. Yhtälöiden ratkaisusta puhutaan lisää myöhemmin. a f x, y : If ehtolauseke x y, y tämä palautetaan, jos

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

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

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

Apuja ohjelmointiin» Yleisiä virheitä

Apuja ohjelmointiin» Yleisiä virheitä Apuja ohjelmointiin» Yleisiä virheitä Ohjelmaa kirjoittaessasi saattaa Visual Studio ilmoittaa monenlaisista virheistä "punakynällä". Usein tämä johtuu vain siitä, että virheitä näytetään vaikket olisi

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

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

8. Oliot 123. Kuinka luokkia luodaan ja olioita saadaan aikaan. Kuinka luodaan ja käsitellään ominaisuuksia ja metodeja

8. Oliot 123. Kuinka luokkia luodaan ja olioita saadaan aikaan. Kuinka luodaan ja käsitellään ominaisuuksia ja metodeja 8. Oliot 123 OPPITUNTI 8 Oliot Oliopohjainen ohjelmointi on vaarallista. Se muuttaa koodaamista koskevia ajatuksiasi ja kun uudet käsitteet ovat saaneet jalansijaa, ne eivät katoa mitenkään. PHP on Perlin

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

4.3. Matemaattinen induktio

4.3. Matemaattinen induktio 4.3. Matemaattinen induktio Matemaattinen induktio: Deduktion laji Soveltuu, kun ominaisuus on osoitettava olevan voimassa luonnollisilla luvuilla. Suppea muoto P(n) : Ominaisuus, joka joka riippuu luvusta

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP2 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 17. toukokuuta 219 Yleistä Tentti 1 oli pistekeskiarvon (14,6) perusteella hieman tavanomaista helpompi. Omasta tehtäväpaperista

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 10.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 10.2.2010 1 / 43 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

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

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

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

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

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

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Demot Timo Männikkö Algoritmit 1 Demot 1 31.1.-1.2.2018 Timo Männikkö Tehtävä 1 (a) Algoritmi, joka tutkii onko kokonaisluku tasan jaollinen jollain toisella kokonaisluvulla siten, että ei käytetä lainkaan jakolaskuja Jaettava

Lisätiedot