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

Koko: px
Aloita esitys sivulta:

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

Transkriptio

1 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 käyttöä. Kaikkialla tässä luvussa tutkimme funktioita ja esittelemme joitakin tapoja välttyä toistuvalta koodin kirjoittamiselta. Tämän tunnin aiheita ovat seuraavat: Kuinka funktioita määritellään ja kutsutaan Kuinka funktioille viedään arvoja ja niistä palautetaan arvoja Kuinka funktiota kutsutaan dynaamisesti käyttäen muuttujaan tallennettua merkkijonoa Kuinka funktiolle annetaan muistia Kuinka funktiolle viedään tietoa viittausmuodossa

2 86 6. Funktiot Mikä funktio on? Voit pitää funktioita ikään kuin koneina. Kone ottaa sille syöttämäsi materiaalin ja työstää sitä tavoitteen tai tuotteen saavuttamiseksi. Funktio ottaa vastaan sille antamasi arvot, käsittelee niitä ja suorittaa sitten toiminnon (esimerkiksi tulostuksen selaimelle) tai palauttaa jonkin uuden arvon. Usein funktio suorittaa nuo molemmat vaiheet. Jos sinun on leivottava yksi kakku, teet sen ehkä itse. Mutta jos sinun on tehtävä tuhansia kakkuja, saatat rakentaa tai hankkia kakuntekokoneen. Samaten, kun mietit funktion kehittämistä, tärkeintä on saada selville, tarvitaanko funktiota useamminkin, jolloin samaa koodia ei tarvitse kirjoittaa useaan kertaan. Funktio sisältää koodilohkon, jota skriptistä voidaan kutsua. Kutsun yhteydessä funktion koodi suoritetaan. Funktiolle voidaan viedä arvoja, joita funktio sitten hyödyntää koodissaan. Kun funktio päättyy, se voi palauttaa arvon kutsuvalle koodille. Funktio on koodilohko, jota ei suoriteta välittömästi, vaan vasta sitten, kun sitä kutsutaan muualta skriptistä. Funktiot voivat olla sisäisiä funktioita tai itse kehitettyjä funktioita. Ne voivat vaatia, että niille viedään tietoa ja ne voivat palauttaa arvoja. Funktion kutsuminen Funktioita on kahta eri tyyppiä: sisäiset funktiot ja itsemääritellyt funktiot. PHP4 sisältää satoja sisäisiä funktioita. Ensimmäinen tässä kirjassa esiintynyt skriptisi sisälsi yhden funktion kutsun: print("hello Web"); print() ei ole tyypillinen funktio siinä mielessä, että se vaatisi sulkumerkit aina kutsun yhteydessä. Lauseet print(("hello Web"); ja print "Hello Web"; ovat täysin identtisiä. Tämä on poikkeustapaus funktioiden joukossa: kaikki muut funktiot vaativat sulkumerkit, ottivatpa ne argumentteja tai eivät. Tässä esimerkissä kutsutaan print()-funktiota, jolle viedään merkkijono Hello Web. Funktio hoiti sitten hommansa ja tulosti merkkijonon. Funktion kutsu koostuu funktion nimestä (nyt print) ja sulkumerkeistä. Jos funktiolle viedään kutsun yhteydessä tietoa, on tieto laitettava sulkumerkkien sisälle. Tuollaista vietävää tietoa kutsutaan argumentiksi. Jotkut funktiot ottavat useamman kuin yhden argumentin. Argumentit tulee erottaa toisistaan pilkuilla: some_function( $argu1, $argu2 );

3 6. Funktiot 87 Print() on esimerkki funktiosta, joka palauttaa arvon. Useimmat funktiot antavat jotain tietoa sinulle takaisin, kun ne ovat suorittaneet tehtävänsä, ainakin tiedon siitä, onko tehtävä onnistunut. Siksi print() palauttaa totuusarvon. Esimerkiksi abs()-funktio ottaa etumerkillisen numeerisen arvon ja palauttaa tuon numeroarvon absoluuttisen arvon. Kokeilkaamme sitä listauksen 6.1 myötä. Listaus 6.1 Sisäisen abs()-funktion kutsuminen 3: <title>listing 6.1</title> 7: $num = -321; 8: $newnum = abs( $num ); 9: print $newnum; 10: // tulostaa "321" 11:?> 12: </body> 13: </html> Tässä esimerkissä yhdistetään arvo -321 muuttujaan $num. Sitten tuo muuttuja viedään abs()-funktiolle, joka tekee välttämättömät laskennat ja palauttaa uuden arvon. Palautettu arvo sijoitetaan muuttujaan $newnum ja tulostetaan. Olisimme itse asiassa voineet käyttää tilapäismuuttujia koko ajan viemällä numeromme suoraan abs()-funktiolle ja tulostamalla tuloksen suoraan: print( abs( -321 ) ); Käyttäjän laatimien funktioiden kutsuminen noudattaa lähes samoja periaatteita. Argumentti on arvo, joka viedään funktiolle. Argumentit laitetaan sulkumerkkeihin funktion kutsun yhteydessä. Argumentit erotetaan toisistaan pilkuilla funktion määrittelyssä ja kyseisistä argumenteista tulee funktion paikallisia muuttujia.

4 88 6. Funktiot Funktion määrittely Voit määrittää funktion function-lauseella: function some_function( $argument1, $argument2 ) { // funktion runko } Funktion nimi kerrotaan avainsanan function jälkeen ja sen jälkeen tulevat sulkumerkit. Jos funktio ottaa argumentteja, on vastaavat muuttujanimet sijoitettava pilkuilla erotettuina sulkumerkkien sisälle. Kyseisten muuttujien paikalle sijoitetaan sitten vietävät arvot funktiota kutsuttaessa. Jos funktio ei ota argumentteja, ei niitä tule kutsussakaan käyttää. Listaus 6.2 määrittelee funktion. Listaus 6.2 Funktion määrittely 3: <title>listing 6.2</title> 7: function bighello() 9: print "<h1>hello!</h1>"; 10: } 11: bighello(); 12:?> 13: </body> 14: </html> Listauksen 6.2 skripti tulostaa merkkijonon HELLO HTML-otsikkoelementin (<H1>) sisälle. Esimerkissä esitellään funktio nimeltä bighello(), joka ei ota argumentteja. Siitä johtuen sulkumerkkien sisältö jää tyhjäksi. Bighello() on toimiva funktio, mutta ei kovinkaan hyödyllinen. Listaus 6.3 luo funktion, joka ottaa argumentin ja tekee jotain hyödyllistä argumentin kanssa.

5 6. Funktiot 89 Listaus 6.3 Funktio, joka ottaa argumentin 3: <title>listing 6.3</title> 7: function printbr( $txt ) 9: print ("$txt<br>\n"); 10: } 11: printbr("this is a line"); 12: printbr("this is a new line"); 13: printbr("this is yet another line"); 14:?> 15: </body> 16: </html> Näet listauksen 6.3 aikaansaaman tulostuksen kuvassa 6.1. Esimerkkimme printbr() ottaa argumentikseen merkkijonon, joten määrittelyssä sijoitamme muuttujanimen $txt sulkumerkkien sisälle. Se tieto, joka kutsun yhteydessä viedään funktiolle, sijoitetaan tuohon $txt-muuttujaan. Funktion rungossa $txt tulostetaan ja tulostukseen lisätään <BR>-elementti sekä rivinvaihtomerkki. Kun haluamme nyt kirjoittaa rivin selaimelle, voimme kutsua printbr()-funktiota sisäisen print()-funktion sijaan, jolloin meidän ei tarvitse itse vaivautua kirjoittamaan <BR>-elementtiä tulostukseen. KUVA 6.1 Funktio, joka tulostaa merkkijonon lisäten tulostukseen <BR>tagin. Arvojen palauttaminen käyttäjien laatimista funktioista

6 90 6. Funktiot Funktio voi palauttaa arvon käyttäen return-lausetta arvon tai kohteen yhteydessä. Return lopettaa funktion suorituksen ja lähettää palautettavan arvon kutsuvalle koodille. Listaus 6.4 luo funktion, joka palauttaa kahden luvun summan. Listaus 6.4 Funktio, joka palauttaa arvon 3: <title>listing 6.4</title> 7: function addnums( $firstnum, $secondnum ) 9: $result = $firstnum + $secondnum; 10: return $result;11: } 12: print addnums(3,5); 13: // tulostaa "8" 14:?> 15: </body> 16: </html> Listauksen 6.4 skripti tulostaa arvon 8. AddNums()-funktio ottaa kaksi numeerista argumenttia (nyt kutsussa viedään arvot 3 ja 5). Arvot tallennetaan muuttujiin $firstnum ja $secondnum. Arvattavasti addnums() laskee muuttujissa olevat arvot yhteen ja laittaa summan muuttujaan $result. Olisimme nytkin voineet kirjoittaa suppeampaa koodia ja jättää tilapäisen välimuuttujan $result pois koodista: function addnums( $firstnum, $secondnum ) { return ( $firstnum + $secondnum ); } Return-lause voi palauttaa arvon tai olla palauttamatta mitään. Se, millä lailla return-lauseen palauttama arvo lähetetään, voi vaihdella. Arvo voidaan antaa suoraan arvona: return 4;

7 6. Funktiot 91 Palautusarvo voi olla myös lausekkeen tulos: return ( $a/$b );.Black plate (99,1) Palautettava arvo voi olla toisen funktiokutsun palauttama arvo: return ( another_function( $an_argument ) ); Dynaamiset funktiokutsut Funktio nimi voidaan sijoittaa merkkijonona muuttujaan ja sitten muuttujanimeä voidaan pitää ikään kuin itse funktionimenä. Listaus 6.5 on tästä yksinkertainen esimerkki. Listaus 6.5 Funktion kutsuminen dynaamisesti 3: <title>listing 6.5</title> 7: function sayhello() 9: print "hello<br>"; 10: } 11: $function_holder = "sayhello"; 12: $function_holder(); 13:?> 14: </body> 15: </html> Nyt muuttujaan $function_holder sijoitetaan funktionimeä sayhello() vastaava merkkijono. Sen jälkeen tuota muuttujanimeä voidaan käyttää sulkumerkkien kanssa kutsumaan sayhello()-funktiota.

8 92 6. Funktiot Miksi siitä olisi hyötyä? Tässä esimerkissä teimme vain ylimääräistä työtä, kun sijoitimme merkkijonon sayhello() muuttujaan $function_holder. Dynaamiset funktiokutsut ovat hyödyllisiä silloin, kun ohjelman kulkua halutaan muuttaa muuttuvien olosuhteiden mukaan. Haluamme skriptimme esimerkiksi käyttäytyvän eri lailla URL:n kyselyyn asetetun parametrin arvon mukaan. Voimme ottaa tuon parametrin arvon esille ja käyttää sitä juuri oikean funktion kutsumiseen. PHP:n sisäiset funktiot hyödyntävät nekin tätä piirrettä. Esimerkiksi array_walk() käyttää merkkijonoa kutsumaan funktiota jokaisen taulukon elementin kohdalla. Näet esimerkin array_walk()-funktion käytöstä luvussa 16. Muuttujien näkyvyysalue Funktion sisällä esitelty muuttuja on funktion paikallinen muuttuja. Toisin sanoen tuohon muuttujaan ei päästä käsiksi funktion ulkopuolelta tai muista funktioista. Laajemmissa projekteissa paikallisuus voi estää muuttujan arvon muuttamisen vahingossa, kun esittelet samannimisiä muuttujia eri funktioissa. Listaus 6.6 luo muuttujan funktion sisällä ja yrittää sitten tulostaa sen funktion ulkopuolella. Listaus 6.6. Muuttujan näkyvyysalue: funktion sisällä oleva muuttuja ei ole käytettävissä funktion ulkopuolella 3: <title>listing 6.6</title> 7: function test() 9: $testvariable = "this is a test variable"; 10: } 11: print "test variable: $testvariable<br>"; 12:?> 13: </body> 14: </html>

9 6. Funktiot 93 KUVA 6.2 Yritetään viitata muuttujaan, joka on määritelty funktion sisällä. Kuva 6.2 esittää listauksen 6.6 tuloksen. Muuttujan $testvariable arvo ei tulostu, koska kyseinen muuttuja ei ole olemassa test()-funktion ulkopuolella. Huomaa, että tuollaiseen muuttujaan viittaaminen ei aiheuta virheilmoitusta. Samalla lailla funktion ulkopuolella esitelty muuttuja ei ole automaattisesti käytettävissä funktion sisällä. Muuttujien määrittely global-määreellä Funktiosta käsin ei ole mahdollista viitata alkuaan muuttujaan, joka on määritelty muualla. Jos yrität käyttää samannimistä muuttujaa, tulet vain asettaneeksi paikallisen muuttujan. Testatkaamme tätä listauksessa 6.7. Listaus 6.7 Funktioiden ulkopuolella esitellyt muuttujat eivät ole oletuksena käytettävissä funktion sisällä 3: <title>listing 6.7</title> 7: $life = 42; 8: function meaningoflife() 9: { 10: print "The meaning of life is $life<br>"; 11: } 12: meaningoflife(); 13:?> 14: </body> 15: </html>

10 94 6. Funktiot Listauksen 6.7 tulostus on kuvassa 6.3. Kuten saatoit odottaa, meaningoflife()-funktiolla ei ole pääsyä $lifemuuttujaan. Muuttuja on tyhjä, mikä näkyy tulostuksesta. Kaiken kaikkiaan tämä on hyvä asia. Olemme säästyneet mahdollisilta sotkuilta, joita samannimiset muuttujat voivat aiheuttaa; funktiohan voi aina ottaa argumentteja, jos sen on käsiteltävä ulkopuolisia muuttujia. Joskus saattaa kuitenkin olla paikallaan antaa funktion käyttää muuttujaa viemättä sitä argumenttina. Sellaisessa tapauksessa voidaan käyttää globallisämäärettä. Listaus 6.8 käyttää global-määrettä maailmankaikkeuden järjestyksen tallentamisen yhteydessä. Listaus 6.8 Globaalin muuttujan käyttäminen global-määreen avulla 3: <title>listing 6.8</title> 7: $life=42; 8: function meaningoflife() 9: { 10: global $life; 11: print "The meaning of life is $life<br>"; 12: } 13: meaningoflife(); 14:?> 15: </body> 16: </html> Kuva 6.4 näyttää listauksen 6.8 tulostuksen. Sijoittamalla avainsana global funktion ulkopuolella esitellyn $life-muuttujan eteen muuttujaan voidaan viitata funktion sisällä. Tuota global-määrettä on käytettävä kaikissa funktioissa, joissa muuttujaa halutaan käyttää. Ole kuitenkin varovainen. Jos muuttujaa muutetaan jossakin funktiossa, muutos vaikuttaa koko ohjelmassa. Tavallisesti funktioille viedään kopiot muuttujista eikä kopioiden muuttaminen vaikuta alkuperäisiin muuttujiin. Globaalin muuttujan muuttaminen vaikuttaa alkuperäiseen muuttujaan, ei siis muuttujan kopioon. Käytä siis global-määrettä säästeliäästi.

11 6. Funktiot 95 KUVA 6.3 Yritämme tulostaa globaalin muuttujan funktion sisällä Tilan tallentaminen funktiokutsujen välillä staticmääreen avulla Funktioiden sisällä olevilla muuttujilla on onnellinen mutta lyhyt elämä. Ne syntyvät, kun funktiota aletaan ajaa ja kuolevat, kun funktion ajaminen päättyy. Juuri niin tuleekin olla. Usein ohjelmoinnissa on järkevintä sijoittaa eri toiminnot erillisiin funktioihin, jotka tietävät mahdollisimman vähän toisistaan. Joskus funktion tietojen tulisi kuitenkin kestää kauemminkin. Olettakaamme, että haluaisimme funktion pitävän kirjaa siitä, kuinka monta kertaa sitä on kutsuttu. Miksi? Esimerkeissämme funktio on kehitetty luomaan numeroituja otsikoita skriptissä, joka muodostaa dynaamisesti online-dokumentaation. Me voisimme tietenkin käyttää juuri opittua global-määrettä numeroinnin toteuttamiseen ja listauksessa 6.9 kokeillaankin tuota menettelyä. Listaus 6.9 Globaalin muuttujan käyttäminen arvon muistamiseen funktiokutsujen välillä 3: <title>listing 6.9</title> 7: $num_of_calls = 0; 8: function andanotherthing( $txt ) 9: { 10: global $num_of_calls; 11: $num_of_calls++; 12: print "<h1>$num_of_calls. $txt</h1>";

12 96 6. Funktiot 13: } 14: andanotherthing("widgets"); 15: print("we build a fine range of widgets<p>"); 16: andanotherthing("doodads"); 17: print("finest in the world<p>"); 18:?> 19: </body> 20: </html> Tehtävän suoritus onnistuu noin. Esittelemme muuttujan $num_of_calls funktion andanotherthing() ulkopuolella. Tuo muuttuja on käytettävissä funktiossa global-määreen avulla. Tulostus esitetään kuvassa 6.5. Joka kerta, kun funktiota kutsutaan, $num_of_calls-muuttujaa kasvatetaan yhdellä. Otsikon tulostuksessa voidaankin sitten esittää myös numerot. KUVA 6.4 Funktiossa viitataan paikalliseen muuttujaan. Tämä ei kuitenkaan ole hienoin ratkaisu. Funktiot, jotka käyttävät global-määrettä, eivät ole itsenäisiä funktioita. Jos niitä käytetään uudelleen jossain toisessa ohjelmassa, on tuossa toisessakin ohjelmassa esiteltävä globaali $num_of_calls-muuttuja. Juuri tällaisessa tapauksessa on static-määre hyödyllinen. Jos esittelet muuttujan funktion sisällä käyttämällä static-määrettä, muuttuja säilyy paikallisena, mutta se muistaa kuitenkin arvonsa kutsusta toiseen. Kun funktiota kutsutaan uudelleen, funktion staattisessa muuttujassa on siihen edellisellä suorituskerralla tallennettu arvo. Listauksessa 6.10 on edellistä esimerkkiä muutettu käyttämään staticmäärettä. KUVA 6.5 Global-määreen avulla voidaan seurata funktion kutsujen määrää.

13 6. Funktiot 97 Listaus 6.10 Staattisen muuttujan arvo säilyy kutsujen välillä 3: <title>listing 6.10</title> 7: function andanotherthing( $txt ) 9: static $num_of_calls = 0; 10: $num_of_calls++; 11: print "<h1>$num_of_calls. $txt</h1>"; 12: } 13: andanotherthing("widgets"); 14: print("we build a fine range of widgets<p>"); 15: andanotherthing("doodads"); 16: print("finest in the world<p>"); 17:?> 18: </body> 19: </html> Nyt andanotherthing() on täysin itsenäinen funktio. Kun nyt esittelemme $num_of_calls-muuttujan, sijoitamme siihen alkuarvon. Tämä alustus ohitetaan, kun funktiota kutsutaan toisen kerran. Sen sijaan toisessa kutsussa muistetaan muuttujaan ensimmäisessä kutsussa sijoitettu arvo. Nyt funktio voidaan sijoittaa muihin skripteihin ilman, että tarvitsisi huolehtia globaaleista muuttujista. Vaikka listauksen 6.10 tulostus on aivan sama kuin listauksen 6.9 tulostus, koodi on paljon elegantimpaa. Lisää argumenteista Olet jo nähnyt, kuinka funktioille viedään argumentteja. Aiheesta on kuitenkin käsittelemättä vielä paljon. Tässä osassa tutkimme argumenttien oletusarvoja ja viittausten viemistä funktioille.

14 98 6. Funktiot Argumenttien oletusarvot PHP tarjoaa näppärän lisäpiirteen joustavien funktioiden kehittämiseen. Olemme toistaiseksi sanoneet, että funktiot ottavat yhden tai useamman argumentin. Tekemällä joistakin argumenteista valinnaisia saadaan funktioista joustavampia. Listaus 6.11 luo hyödyllisen funktion, joka osaa muotoilla merkkijonoa, joka taas on HTML:n <font>elementissä. Haluamme nyt antaa käyttäjälle funktion, jonka avulla hän voi muuttaa <font>-elementin sizemäärettä, joten funktion argumentiksi on annettava merkkijonon lisäksi myös $size. Listaus 6.11 Funktio, joka ottaa kaksi argumenttia 3: <title>listing 6.11</title> 7: function fontwrap( $txt, $size ) 9: print "<font size=\"$size\" face=\"helvetica,arial,sans-serif\">$txt</ A font>";10: } 11: fontwrap("a heading<br>",5); 12: fontwrap("some body text<br>",3); 13: fontwrap("some more body text<br>",3); 14: fontwrap("yet more body text<br>",3); 15:?> 16: </body> 17: </html> Kuva 6.6 esittää listauksen 6.11 tulostuksen. Vaikka funktiomme onkin hyödyllinen, käyttäjät halunnevat muuttaa fontin kokoa vain ajoittain. Useimmiten oletuskoko 3 riittää. Sijoittamalla tuon arvon argumenttina olevan $size-muuttujan arvoksi funktion määrittelyssä teemme argumentista valinnaisen. Jos funktion kutsussa ei anneta argumentin arvoa, käytetään tuota oletusarvoa argumenttina.

15 6. Funktiot 99 KUVA 6.6 Funktio, joka muotoilee tulostettavaa merkkijonoa. Listaus 6.12 käyttää tätä tekniikkaa tehden $size-argumentista valinnaisen. Listaus 6.12 Funktio, jossa on valinnainen argumentti 3: <title>listing 6.12</title> 7: function fontwrap( $txt, $size=3 ) 9:print"<fontsize=\"$size\"face=\"Helvetica,Arial,Sans-Serif\">$txt</font> "; 10: } 11: fontwrap("a heading<br>",5); 12: fontwrap("some body text<br>"); 13: fontwrap("some more body text<br>"); 14: fontwrap("yet more body text<br>"); 15:?> 16: </body> 17: </html> Kun fontwrap()-funktion kutsussa annetaan toinen argumentti, sitä arvoa käytetään argumentissa ja siten funktion sisällä size-attribuutissa. Kun argumentti jätetään pois kutsun yhteydessä, funktio käyttää arvona oletusarvoa 3. Voit luoda niin monta valinnaista argumenttia kuin haluat. Kun annat oletusarvon yhdelle argumentille, on oletusarvo annettava myös kaikille muille tuon argumentin jälkeen tuleville argumenteille.

16 Funktiot Muuttujaviittausten vienti funktioille Kun viet argumentteja funktioille, niiden kopiot tallennetaan parametrimuuttujiin. Noihin muuttujiin funktion sisällä tehdyt muutokset eivät näy funktion ulkopuolella; muutoksethan tapahtuvat kopioihin eivätkä alkuperäisiin muuttujiin. Listaus 6.13 havainnollistaa tätä. Listaus 6.13 Argumentin vieminen funktiolle arvona 3: <title>listing 6.13</title> 7: function addfive( $num ) 9: $num += 5; 10: } 11: $orignum = 10; 12: addfive( $orignum ); 13: print( $orignum ); 14:?> 15: </body> 16: </html> Listauksen addfive()-funktio ottaa yhden numeroarvon parametrikseen ja lisää siihen arvon 5. Se ei palauta mitään. Sijoitamme arvon muuttujaan $orignum ja viemme sitten muuttujan addfive()-funktiolle. Kopio muuttujan sisällöstä tallennetaan muuttujaan $num. Funktion sisällä lisätään $num-muuttujaan arvo 5, mutta alkuperäinen $orignum-muuttuja ei muutu lainkaan. Tulostus näyttää, että arvo on edelleen 10. Oletuksena muuttujat viedään funktioille arvoina. Toisin sanoen muuttujien arvoista tehdään paikalliset kopiot. Argumentit on mahdollista viedä funktioille viittauksina. Tällöin funktio voi muokata viittausta haluttuun muuttujaan eikä muokkauksen kohteena ole enää pelkkä muuttujan arvon kopio. Viittauksia käytettäessä voidaan funktioiden sisällä muuttaa alkuperäisiä muuttujia: viittaus on jonkun muuttujan aliasnimi, viittaus ja viittauksen kohteena oleva muuttuja jakavat saman muistipaikan. Argumentti muutetaan viittaukseksi sijoittamalla et-merkki (&) funktion määrittelyssä argumenttinimen eteen tai funktiokutsun yhteydessä muuttujanimen eteen. Listaukset 6.14 ja 6.15 esittelevät näitä menettelytapoja.

17 6. Funktiot 101 Listaus 6.14 Argumentin vieminen viittauksena funktiolle 3: <title>listing 6.14</title> 7: function addfive( $num ) 9: $num += 5; 10: } 11: $orignum = 10; 12: addfive( &$orignum ); 13: print( $orignum ); 14:?> 15: </body> 16: </html> Listaus 6.15 Viittausparametri funktion määrittelyssä 3: <title>listing 6.15</title> 7: function addfive( &$num ) 9: $num += 5; 10: } 11: $orignum = 10; 12: addfive( $orignum ); 13: print( $orignum );

18 Funktiot 14:?> 15: </body> 16: </html> Kaiken kaikkiaan on järkevämpää lisätä & funktion määrittelyyn. Sillä tavoin voidaan varmistua siitä, että funktio käyttäytyy aina johdonmukaisesti. Yhteenveto Tällä tunnilla opiskelit funktioita, niiden kehittämistä ja käyttöä. Opit funktion argumenttien merkityksen sekä global- ja static-määreiden käyttämisen. Opit myös viemään funktioille viittauksia ja luomaan valinnaisia argumentteja. K&V K Voiko funktio käsitellä globaaleja muuttujia millään muulla tavalla kun global-määreen avulla? V Globaaleja muuttujia voidaan käsitellä skriptin sisällä myös sisäisen assosiatiivisen $GLOBALS-taulukon kautta. Esimerkiksi globaaliin $test-muuttujaan voidaan funktion sisällä viitata tunnuksella $GLOBAL[test]. Saat lisätietoa assosiatiivisista taulukoista seuraavalla tunnilla. Voit muuttaa globaaleja muuttujia funktion sisällä myös viittauksia käyttämällä. K Voiko funktion kutsun laittaa merkkijonoon samalla lailla kuin muuttujan? V Ei. Funktion kutsu ei voi olla lainausmerkeissä.

19 6. Funktiot 103 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. Onko tämä totta? Jos funktio ei ota argumenttia, voit jättää sulkumerkit pois kutsun yhteydessä. 2. Kuinka funktio palauttaa arvon? 3. Mitä seuraava koodi tulostaisi selaimelle? $number = 50; function tentimes() { $number = $number * 10; } tentimes(); print $number; 4. Mitä seuraava koodi tulostaisi selaimelle? $number = 50; function tentimes() { global $number; $number = $number * 10; } tentimes(); print $number;

20 Funktiot 5. Mitä seuraava koodi tulostaisi selaimelle? $number = 50; function tentimes( $n ) { $n = $n * 10; tentimes( $number ); print $number; 6. Mitä seuraava koodi tulostaisi selaimelle? $number = 50; function tentimes( &$n ) { $n = $n * 10; } tentimes( $number ); print $number; Toiminta 1. Luo funktio, joka ottaa argumenteikseen neljä merkkijonoa ja palauttaa merkkijonon, joka sisältää HTML-taulukkoelementin, jossa kukin muuttuja (viety merkkijono) on omassa solussaan.

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

OPPITUNTI 5 Ohjelman kulku

OPPITUNTI 5 Ohjelman kulku 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.

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

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

Osoitin ja viittaus C++:ssa

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

Lisätiedot

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus?

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus? Osa III 11. oppitunti Viittaukset Kahdessa viime luvussa opit käyttämään osoittimia kohteiden käsittelyyn vapaalla muistialueella sekä viittaamaan noihin kohteisiin epäsuorasti. Tässä luvussa käsiteltävät

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

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

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

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

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

11/20: Konepelti auki

11/20: Konepelti auki Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon

Lisätiedot

7. Taulukot 105. Kuinka taulukoiden tietoa käsitellään ja lajitellaan

7. Taulukot 105. Kuinka taulukoiden tietoa käsitellään ja lajitellaan 7. Taulukot 105 OPPITUNTI 7 Taulukot Taulukot ja niiden käsittelyyn liittyvät toiminnot laajentavat suuresti PHP4-skriptien käyttöaluetta ja joustavuutta. Kun tunnet taulukot, voit tallentaa niihin monimutkaisia

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus Sisällys 19. Olio-ohjelmointia Javalla Olioiden esittely ja alustus. Metodit Yleistä metodeista. Mihin metodeja tarvitaan? Metodien määrittely. Omat metodit: nimeäminen, paikka, kutsuminen, parametrit

Lisätiedot

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

3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä. PHP-kielen perusteet Käytä lähteenä PHP:n virallista manuaalia http://www.php.net/docs.php tai http://www.hudzilla.org/php (siirry Paul Hudsonin verkkokirjaan). Lisää materiaalia suomeksi esimerkiksi ohjelmointiputkan

Lisätiedot

19. Olio-ohjelmointia Javalla 19.1

19. Olio-ohjelmointia Javalla 19.1 19. Olio-ohjelmointia Javalla 19.1 Sisällys Olioiden esittely ja alustus. Metodit Yleistä metodeista. Mihin metodeja tarvitaan? Metodien määrittely. Omat metodit: nimeäminen, paikka, kutsuminen, parametrit

Lisätiedot

Harjoitus 2 (viikko 45)

Harjoitus 2 (viikko 45) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista lisätä static-määre operaatioidesi otsikoihin, jotta ohjelmasi kääntyvät. Muista noudattaa hyvän

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 22. huhtikuuta 2016 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille! Kirjoittamasi luokat, funktiot ja aliohjelmat

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

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.2.2009 1 / 43 Funktiot Tähän asti esitetyt ohjelmat ovat oleet hyvin lyhyitä. Todellisessa elämässä tarvitaan kuitenkin

Lisätiedot

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 16.3.2009 1 / 40 Kertausta: tiedostosta lukeminen Aluksi käsiteltävä tiedosto pitää avata: tiedostomuuttuja = open("teksti.txt","r")

Lisätiedot

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 6. Metodit 6.1 Sisällys Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen Olio-ohjelmoinnissa ohjelma

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 31.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 31.1.2011 1 / 41 Luentopalaute kännykällä käynnissä! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 1.2.2010 1 / 47 Sijoituksen arvokehitys, koodi def main(): print "Ohjelma laskee sijoituksen arvon kehittymisen."

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

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

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja

Lisätiedot

Osa III. Edelliset kolme lukua ovat käsitelleet viittausten ja osoittimien käyttöä. Tämän luvun aiheita ovat:

Osa III. Edelliset kolme lukua ovat käsitelleet viittausten ja osoittimien käyttöä. Tämän luvun aiheita ovat: Osa III 12. oppitunti Kehittyneet viittaukset ja osoittimet Edelliset kolme lukua ovat käsitelleet viittausten ja osoittimien käyttöä. Tämän luvun aiheita ovat: Kuinka viittausten viemisellä voidaan tehostaa

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

GeoGebra-harjoituksia malu-opettajille

GeoGebra-harjoituksia malu-opettajille GeoGebra-harjoituksia malu-opettajille 1. Ohjelman kielen vaihtaminen Mikäli ohjelma ei syystä tai toisesta avaudu toivomallasi kielellä, voit vaihtaa ohjelman käyttöliittymän kielen seuraavasti: 2. Fonttikoon

Lisätiedot

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne.

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne. Proseduurit Proseduuri voi olla 1) Funktio, joka palauttaa jonkin arvon: real function sinc(x) real x sinc = sin(x)/x... y = sinc(1.5) 2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma

Lisätiedot

Kotisivuohjeet. Eteläpohjalaiset Kylät ry. Sivupohjien rakenne

Kotisivuohjeet. Eteläpohjalaiset Kylät ry. Sivupohjien rakenne Kotisivuohjeet Tässä ohjeessa käydään läpi kotisivujen tekemisen perusteet keskittyen html-koodiin ja sen ominaisuuksiin. Sivupohjissa ulkoasu ja rakenne on pääasiassa jaettu erilliseen css-tyylitiedostoon,

Lisätiedot

3. Muuttujat ja operaatiot 3.1

3. Muuttujat ja operaatiot 3.1 3. Muuttujat ja operaatiot 3.1 Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi. Operaattorit. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit.

Lisätiedot

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

Harjoitus 1 -- Ratkaisut

Harjoitus 1 -- Ratkaisut Kun teet harjoitustyöselostuksia Mathematicalla, voit luoda selkkariin otsikon (ja mahdollisia alaotsikoita...) määräämällä soluille erilaisia tyylejä. Uuden solun tyyli määrätään painamalla ALT ja jokin

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Luokat ja oliot. Ville Sundberg

Luokat ja oliot. Ville Sundberg Luokat ja oliot Ville Sundberg 12.9.2007 Maailma on täynnä olioita Myös tietokoneohjelmat koostuvat olioista Σ Ο ω Μ ς υ φ Ϊ Φ Θ ψ Љ Є Ύ χ Й Mikä on olio? Tietokoneohjelman rakennuspalikka Oliolla on kaksi

Lisätiedot

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta. Tehtävä 63. Kirjoita oma versio funktiosta strcmp(),joka saa parametrinaan kaksi merkkiosoitinta. Tee ohjelma, jossa luetaan kaksi merkkijonoa, joita sitten verrataan ko. funktiolla. Tehtävä 64. Kirjoita

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 27.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 27.1.2010 1 / 37 If-käsky toistokäskyn sisällä def main(): HELLERAJA = 25.0 print "Anna lampotiloja, lopeta -300:lla."

Lisätiedot

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla Tietojen syöttäminen ohjelmalle Tähän mennessä on käsitelty Javan tulostuslauseet System.out.print ja System.out.println sekä ohjelman perusrakenneosat (muuttujat, vakiot, lauseet). Jotta päästään tekemään

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

OPPITUNTI 20 Tilan tallentaminen istuntofunktioilla

OPPITUNTI 20 Tilan tallentaminen istuntofunktioilla 20. Tilan tallentaminen istuntofunktiolla 353 OPPITUNTI 20 Tilan tallentaminen istuntofunktioilla Edellisellä tunnilla tutkimme tilan tallentamista evästeiden ja kyselymerkkijonojen avulla. PHP4 on kuitenkin

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.

Lisätiedot

Johdatus Ohjelmointiin

Johdatus Ohjelmointiin Johdatus Ohjelmointiin Syksy 2006 Viikko 2 13.9. - 14.9. Tällä viikolla käsiteltävät asiat Peruskäsitteitä Kiintoarvot Tiedon tulostus Yksinkertaiset laskutoimitukset Muuttujat Tiedon syöttäminen Hyvin

Lisätiedot

5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma

5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma 5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma Every cloud has a silver line. - englantilainen sananlasku Tässä osiossa tärkeää: yksi- ja moniulotteinen taulukko Sisältö Yleistä Yksiulotteinen

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

Ohjelmoinnin 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

Javan perusteita. Janne Käki

Javan perusteita. Janne Käki Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).

Lisätiedot

Verkkosivut perinteisesti. Tanja Välisalo 11.2.2009

Verkkosivut perinteisesti. Tanja Välisalo 11.2.2009 Verkkosivut perinteisesti Tanja Välisalo 11.2.2009 WWW-sivujen vieminen omaan kotisivutilaan yliopiston mikroverkossa https://salasana.jyu.fi Klikkaa painiketta Activate WWW Klikkaa painiketta Activate

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

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Viimeksi muokattu 5. toukokuuta 2012 Maastotietokannan torrent-jakeluun sisältyy yli 5000 zip-arkistoa,

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

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

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Muilla kielillä: English Suomi Pong-peli, vaihe 3 Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Jaetaan ohjelma pienempiin palasiin (aliohjelmiin) Lisätään peliin maila (jota ei voi vielä

Lisätiedot

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2 TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos TKT-3200 Tietokonetekniikka I Harjoitustyö 4: Cache, osa 2.. 2010 Ryhmä Nimi Op.num. 1 Valmistautuminen Cache-työn toisessa osassa

Lisätiedot

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

Lisätiedot

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

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit. 3. Muuttujat ja operaatiot Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi.. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit. Arvojen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 26.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 1 / 34 Luentopalaute kännykällä käynnissä! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1 Tietorakenteet ja algoritmit syksy 2012 Laskuharjoitus 1 1. Tietojenkäsittelijä voi ajatella logaritmia usein seuraavasti: a-kantainen logaritmi log a n kertoo, kuinka monta kertaa luku n pitää jakaa a:lla,

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

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

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

7. Näytölle tulostaminen 7.1

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

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 17.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 17.2.2010 1 / 41 Sanakirja Monissa sovelluksissa on tallennettava rakenteeseen avain arvo-pareja. Myöhemmin rakenteesta

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 28.1.2009 1 / 28 Esimerkki: murtoluvun sieventäminen Kirjoitetaan ohjelma, joka sieventää käyttäjän antaman murtoluvun.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 8.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 8.2.2010 1 / 38 Debuggeri Tyypillinen tilanne: ohjelma on kirjoitettu, Python-tulkki ei valita virheistä, mutta ohjelma

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

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

Lisätiedot

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

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1 9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.

Lisätiedot

815338A Ohjelmointikielten periaatteet 2014-2015

815338A Ohjelmointikielten periaatteet 2014-2015 815338A Ohjelmointikielten periaatteet 2014-2015 X Skriptiohjelmointi Sisältö 1. Johdanto 2. Skriptikielten yleispiirteitä 3. Python 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 2 X.1 Johdanto

Lisätiedot

OPPITUNTI 21 Palvelinympäristö

OPPITUNTI 21 Palvelinympäristö 21. Palvelinympäristö 365 OPPITUNTI 21 Palvelinympäristö Edellisellä tunnilla tutkimme tekniikoita, joiden avulla voidaan kommunikoida etäkoneiden kanssa ja saada tietoa käyttäjiltä. Tällä tunnilla käsittelemme

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

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen

Lisätiedot

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

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

Tietorakenteet (syksy 2013)

Tietorakenteet (syksy 2013) Tietorakenteet (syksy 2013) Harjoitus 1 (6.9.2013) Huom. Sinun on osallistuttava perjantain laskuharjoitustilaisuuteen ja tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. Näiden laskuharjoitusten

Lisätiedot

Harjoitus 1 -- Ratkaisut

Harjoitus 1 -- Ratkaisut Kun teet harjoitustyöselostuksia Mathematicalla, voit luoda selkkariin otsikon (ja mahdollisia alaotsikoita...) määräämällä soluille erilaisia tyylejä. Uuden solun tyyli määrätään painamalla ALT ja jokin

Lisätiedot

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

Lisätiedot

OPPITUNTI 16 Tiedon käsittely

OPPITUNTI 16 Tiedon käsittely 16. Tiedon käsittely 283 OPPITUNTI 16 Tiedon käsittely Tällä tunnilla käsittelemme tarkemmin tiedon testaamista ja muokkaamista. Tutkimme uudelleen tietotyyppejä. PHP käsittelee tietotyyppejä automaattisesti

Lisätiedot

TEEMA 2 TAULUKKODATAN KÄSITTELY JA TIEDON VISUALISOINTI LUENTO 3

TEEMA 2 TAULUKKODATAN KÄSITTELY JA TIEDON VISUALISOINTI LUENTO 3 TEEMA 2 TAULUKKODATAN KÄSITTELY JA TIEDON VISUALISOINTI LUENTO 3 TIEY4 Tietotekniikkataidot Kevät 2019 Juhani Linna 20.3.2019 TÄLLÄ LUENNOLLA Taustaa harjoituksiin 4 ja 5: 1. Harjoitusten 4 ja 5 esittely

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

Käyttöpaneelin käyttäminen

Käyttöpaneelin käyttäminen Tässä luvussa on tietoja käyttöpaneelista, tulostinasetusten muuttamisesta ja käyttöpaneelin valikoista. Useimmat tulostinasetukset voidaan muuttaa sovellusohjelmalla tai tulostinajurilla. Sovellusohjelmalla

Lisätiedot

add_action( wordcamp_jkl, johdatus_filttereihin );

add_action( wordcamp_jkl, johdatus_filttereihin ); add_action( wordcamp_jkl, johdatus_filttereihin ); WordCamp JKL 9.2.2018 Mikko Saari Painava sana oy mikko@mikkosaari.fi @msaari Mitä filterit ja actionit ovat? Filter ja action ovat melkein samoja asioita:

Lisätiedot

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Osoittimet Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Muistilohkon koko riippuu muuttujan tyypistä, eli kuinka suuria arvoja muuttujan

Lisätiedot

OPPITUNTI 10 Tiedostojen käsittely

OPPITUNTI 10 Tiedostojen käsittely 10. Tiedostojen käsittely 173 OPPITUNTI 10 Tiedostojen käsittely Tiedostojen testaaminen, lukeminen ja kirjoittaminen ovat yleisiä toimenpiteitä käytännön ohjelmissa ja niitä vastaava tekniikka on mukana

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 18.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 18.3.2009 1 / 51 Olioista (kertausta) Olioiden avulla voidaan kuvata useammasta arvosta koostuvaa kokonaisuutta

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot