OPPITUNTI 16 Tiedon käsittely

Koko: px
Aloita esitys sivulta:

Download "OPPITUNTI 16 Tiedon käsittely"

Transkriptio

1 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 puolestasi, mutta tiedon käsittelyn ymmärtäminen skripteissä on välttämätöntä, jos aiot muodostaa toimivia online-sovelluksia. Aiomme myös palauttaa mieleen taulukot ja tutkia joitakin kehittyneempiä piirteitä, joita PHP tarjoaa näiden tietotyyppien manipulointiin ja lajitteluun. Tämän tunnin aiheita ovat seuraavat: Kuinka tieto muunnetaan tietotyypistä toiseen Kuinka PHP automaattisesti muuntaa tiedon puolestasi lausekkeissa Eri tavat testata tietotyyppejä Miksi tietotyyppien ymmärtäminen on tärkeää Kuinka testataan, onko muuttuja asetettu Toinen menettelytapa taulukon läpikäymiseen Kuinka tarkistetaan, että elementti on mukana taulukossa Kuinka taulukon elementit muunnetaan Kuinka taulukoita lajitellaan

2 Tiedon käsittely Tietotyyppien kertaaminen Luvussa 4, "Rakennuslohkot", tutkittiin jo PHP:n tietotyyppejä. Tässä luvussa käsittelemme niitä vielä tarkemmin. Tässä jaksossa tutkimme muutamia funktioita, joilla voimme tarkistaa muuttujan tietotyypin ja tutkia olosuhteita, joissa PHP automaattisesti muuntaa tietotyypit puolestasi. Palautamme mieliin tietotyypit Tiedät jo, että PHP-muuttujissa voi olla kokonaislukuja, desimaalilukuja, merkkijonoja, boolean-arvoja, objekteja (ja olioita) tai taulukoita. Voit testata muuttujan tyypin funktiolla gettype(), jonka argumenttina on muuttuja ja palautusarvona taas tietotyyppi: $data = 454; print gettype( $data ); // tulostaa "integer" Voit muuttaa muuttujien tietotyyppejä joko ulkoisen muuntamisen kautta tai settype()-funktiolla. Ulkoinen muuntaminen (pakkomuuntaminen) tapahtuu niin, että sulkumerkeissä oleva uusi tietotyyppi laitetaan muunnettavan arvon tai muuttujan eteen. Alkuperäinen arvo ei muutu, mutta lauseke palauttaa kopion, jossa tietotyyppi on vaihdettu. Seuraava koodi muuntaa desimaaliluvun kokonaislukutyypiksi: $data = 4.333; print ( integer ) $data; // tulostaa 4 Muuttuja $data sisältää edelleen desimaaliluvun, joka siihen aiemmin sijoitettiin. Olemme pelkästään tulostaneet muunnetun arvon. Jos haluamme todella muuntaa muuttujan tietotyypin (pysyvästi), voimme käyttää apuna settype()- funktiota. Se ottaa argumenteikseen tietotyypin ja muunnettavan muuttujan: $data = 4.333; settype( $data, integer ); print $data; // tulostaa 4 Nyt $data-muuttuja sisältää kokonaisluvun. Funktio settype() on siitä harvinainen funktio, että se muuttaa yhden sille viedyistä argumenteista pysyvästi.

3 16. Tiedon käsittely 285 Monimutkaisten tyyppien muuntaminen Olet jo aiemmin nähnyt, kuinka yksinkertaisia tietotyyppejä (skalaareita ja merkkijonoja) muunnetaan toisiksi tyypeiksi. Mitä tapahtuu, kun muunnat yksinkertaisia tietotyyppejä (esimerkiksi desimaalilukuja tai kokonaislukuja) monimutkaisemmiksi tyypeiksi, esimerkiksi olioiksi ja taulukoiksi? Kun muunnat yksinkertaisen tietotyypin taulukoksi, luodaan taulukko, jonka ensimmäisenä alkiona on tuo alkuperäinen arvo: $str = "this is my string"; $arr_str = (array) $str; print $arr_str[0]; // tulostaa "this is my string" Kun muunnat skalaarin tai merkkijonon olioksi, luodaan olio, jolla on yksittäinen ominaisuus nimeltä scalar, joka sisältää alkuperäisen arvon: $str = "this is my string"; $arr_str = (object) $str; print $arr_str->scalar; // tulostaa "this is my string" Asiat muuttuvat mielenkiintoisemmiksi, kun muunnat taulukoita olioiksi ja kääntäen. Kun muunnat taulukon olioksi, luodaan uusi olio, jossa on ominaisuus jokaiselle taulukon avaimelle: $addresses = array ( street => "Williams Street", town => "Stockton" ); $obj_addresses = ( object ) $addresses; print $obj_addresses->street; // tulostaa "Williams Street" Vastaavasti olion muuntaminen taulukoksi saa aikaan taulukon, jonka elementteinä ovat olion ominaisuudet. Metodit heitetään menemään: class Point { var $x; var $y; function Point( $x, $y )

4 Tiedon käsittely { $this->x = $x; $this->y = $y; } } $point = new Point( 5, 7 ); $array_point = (array) $point; print $array_point[x]; // tulostaa 5 Tietotyyppien automaattinen muuntaminen Jos kirjoitat lausekkeen, jossa on kahta eri tietotyyppiä operandeina, PHP muuntaa automaattisesti tietotyypit samoiksi kehittäessään tulosta. Olet jo varmaankin hyödyntänyt tätä piirrettä ajattelematta asiaa sen kummemmin. Lomakkeen kenttien kautta saadut tiedot ovat aina merkkijonoja, mutta olet saattanut käyttää niitä testilausekkeissa tai laskuissa aivan kuin ne olisivat lukuja. Olettakaamme, että olet pyytänyt käyttäjää syöttämään lomakkeelle Webissä käytettyjen viikoittaisten tuntien määrän. Tuo arvo tallennetaan muuttujaan $hours. Tallentaminen tapahtuu alustavasti merkkijonomuodossa. $hours = "15"; if ( $hours == 15 ) print "As a frequent user you may qualify for a discount"; Yhtäsuuruuden vertailussa muunnetaan merkkijono "15" kokonaisluvuksi ja testilauseke antaa arvon tosi. Automaattisen muuntamisen säännöt ovat suhteellisen yksinkertaisia. Kokonaislukujen tai desimaalilukujen kohdalla merkkijonot muunnetaan niiden sisällön mukaan. Jos merkkijono alkaa numerolla, se muunnetaan kyseiseksi luvuksi. Niinpä esimerkiksi seuraava rivi palauttaa arvon 80: 4 * "20mb"; Jos merkkijono ei ala numerolla, se muunnetaan arvoksi 0. Niinpä seuraava rivi palauttaa nollan: 4 * "about 20mb"; Jos merkkijono sisältää numeron, jota seuraa piste, se muunnetaan desimaaliluvuksi. Niinpä seuraava esimerkki antaa tuloksen 4.8:

5 16. Tiedon käsittely * "1.2"; Inkrementointi- ja dekrementointioperaattorit ovat erikoistapauksia, kun niitä sovelletaan merkkijonoihin. Merkkijonon inkrementointi lisää ykkösen merkkijonon muunnettuun arvoon kuten ehkä odotitkin, mutta vain silloin, kun merkkijonossa on pelkästään numeroita. Uusi arvo on itsekin merkkijono: $str = "4"; $str++; print $str; // tulostaa 5 print gettype( $str ); // tulostaa "string" Jos yrität kasvattaa merkkijonoa, jossa on kirjaimia, kasvatetaan vain viimeistä merkkiä: $str = "hello"; $str++; print $str; // tulostaa "hello" Vertaa tätä toiseen merkkijonon kasvattamistapaan: $str = "hello"; $str += 1; print $str; // tulostaa 1; print gettype( $str ); // tulostaa "integer" Edellisessä esimerkissämme muunnettiin $str luvuksi 0, kun siihen lisättiin arvo 1. Operaation tuloksena on 1, joka tallennetaan muuttujaan $str; muuttujassa on nyt siis kokonaisluku. Automaattiset muunnokset kokonaislukujen ja desimaalilukujen välillä ovat suoraviivaisia. Jos jompikumpi operandi on desimaaliluku, toinenkin operandi muunnetaan desimaaliluvuksi ja tulos on desimaaliluku: $result = ( ); print gettype ( $result ); // tulostaa "double"

6 Tiedon käsittely On tärkeää huomata, että automaattiset muunnokset tapahtuvat lausekkeen suorittamisen takia, mutta kumpaakaan operandia ei todellisuudessa muunneta. Jos operandi on muunnettava, kyseessä on pelkkä kopio, joka on lausekkeen osana. Tietotyyppien testaaminen Olet jo nähnyt, kuinka tietotyyppi testataan gettype()-funktiolla. Se on hyödyllistä vianhaussa, koska se kertoo tarkkaan, mitä tyyppiä muuttuja on. Usein haluat kuitenkin vain tarkistaa, onko muuttujassa tiettyä tyyppiä. PHP tarjoaa käyttöön erikoisfunktion kullekin eri tietotyypille. Nämä funktiot ottavat argumentikseen muuttujan tai arvon ja palauttavat totuusarvon. Funktiot on lueteltu taulukossa Taulukko 16.1 Tietotyyppien testaamisfunktiot Funktio Kuvaus is_array() Tosi, jos argumentti on taulukko is_bool() Tosi, jos argumentti on boolean is_double() Tosi, jos argumentti on double is_int() Tosi, jos argumentti on int is_object() Tosi, jos argumentti on olio is_string() Tosi, jos argumentti on merkkijono Näiden funktioiden avulla on tietotyyppien testaaminen helpompaa. Koodi if ( gettype( $var ) == "array" ) print "it's an array"; vastaa koodia if ( is_array( $var ) ) print "it's an array"; Näet, että jälkimmäinen testaamistapa on sutjakampi. Muita keinoja tyypin muuttamiseen Olet jo nähnyt kaksi tapaa muuntaa tietotyyppejä. Voit joko muuntaa arvon tai käyttää settype()-funktiota. Näiden tekniikoiden lisäksi PHP tarjoaa käyttöön funktioita, joilla voidaan muuntaa arvoja kokonaisluvuiksi, desimaaliluvuiksi ja merkkijonoiksi. Nämä funktiot ottavat argumentikseen minkä tahansa tietotyypin ja palauttavat muunnetun arvon. Taulukko 16.2 luettelee nämä funktiot.

7 16. Tiedon käsittely 289 Taulukko 16.2 Funktiot tietotyyppien muuntamiseen Funktio Kuvaus doubleval() Muuntaa arvon double-tyypiksi intval() Muuntaa arvon int-tyypiksi strval() Muuntaa arvon merkkijonotyypiksi Miksi tietotyypit ovat tärkeitä? PHP ei vaadi, että esittelet tietotyypin luodessasi muuttujan. Se valitsee itse sopivan tietotyypin, kun muuttujaa tai arvoa käytetään lausekkeissa. Jos kerran PHP tekee asiat noin helpoiksi, miksi meidän tulisi pitää huolta tietotyypeistä, kun käytämme erilaisia arvoja ohjelmissamme? Usein on virheiden estämiseksi hyvä tarkkailla sitä, millaista tietoa muuttujiin menee. Kuvittele, että kirjoitat funktion, joka tulostaa taulukon avaimet ja arvot selaimelle. PHP:n funktiot tukeutuvat useimmiten funktioille vietyihin argumentteihin; emme voi suinkaan vaatia, että kutsuva koodi veisi funktiolle automaattisesti taulukon. function printarray( $array ) { foreach ( $array as $key => $val ) print "$key: $val<p>"; } Edellä esitetty funktio toimii hyvin, jos funktiolle viedään kutsun yhteydessä taulukko: printarray( array(4, 4, 55) ); Mutta jos funktiolle viedäänkin vahingossa skalaari, kuten seuraavassa tehdään, syntyy virhe: printarray( 4 ); // Warning: Non array argument supplied for foreach() in // /home/matt/htdocs/php-book/data/test2.php on line 5 Testaamalla viedyn argumentin tietotyyppi voidaan funktiot tehdä paljon mukautuvaisemmiksi. Funktio voitaisiin vaikkapa päättää hiljaisesti, jos sille viedään skalaari: function printarray( $array ) { if (! is_array( $array ) )

8 Tiedon käsittely return false; foreach ( $array as $key => $val ) print "$key: $val<p>"; return true; } Kutsuva koodi testaa nyt funktion palautusarvon varmistaakseen, että se kykenee suorittamaan tehtävänsä. Voisit myös muuntaa viedyn skalaarin taulukoksi: function printarray( $array ) { if (! is_array( $array ) ) $array = (array) $array; foreach ( $array as $key => $val ) print "$key: $val<p>"; return true; } Nyt printarray()-funktio on huomattavasti joustavampi. Se osaa nyt tulostaa minkä tahansa tietotyypin taulukkomuodossa. Tietotyyppien testaaminen voi olla hyödyllistä myös joidenkin funktioiden palautusarvon testaamisessa. Jotkin kielet, esimerkiksi Java, palauttavat ennalta määritetyn tietotyypin kaikista metodeistaan. PHP:ssä ei ole sellaista rajoitusta. Tällainen joustavuus voi johtaa ajoittain ristiriitaisuuksiin. Näit esimerkin siitä luvussa 10, "Tiedostojen käsittely". Käyttämämme readdir()-funktio palauttaa arvon false, kun se kohtaa luettavan hakemiston lopun, mutta kaikkina muina kertoina hakemiston nimen. Perinteisesti voisit käyttää seuraavanlaista rakennetta $dh = opendir( "mydir" ); while ( $name = readdir( $dh ) ) print "$name<br>"; closedir( $dh ); lukeaksesi hakemiston kohteet. Jos hakemiston nimi on kuitenkin 0, while-lauseen testilauseke antaa arvon false, mikä lopettaa listaamisen. Testaamalla readdir()-funktion palautusarvon tämä ongelma voidaan kiertää: $dh = opendir( "mydir" );

9 16. Tiedon käsittely 291 while ( is_string( $name = readdir( $dh ) ) ) print "$name<br>"; closedir( $dh ); Läsnäolon tai tyhjyyden testaaminen Muuttujien tietotyyppien testaaminen voi olla hyödyllistä, mutta sinun on ensin oltava varma siitä, että muuttuja on olemassa. Jos muuttuja on olemassa, on sen jälkeen testattava, onko muuttujassa arvo. Testit voidaan suorittaa isset()-funktion avulla. Se ottaa argumentikseen muuttujan ja palauttaa arvon tosi, jos muuttujassa on arvo: $notset; if ( isset( $notset ) ) print "\$notset is set"; else print "\$notset is not set"; // tulostaa "$notset is not set" Sellaisen muuttujan kohdalla, joka on esitelty, mutta johon ei vielä ole sijoitettu arvoa, funktio palauttaa arvon epätosi. Sinun tulisi kuitenkin olla tietoinen yhdestä vaarasta. Jos sijoitat muuttujaan arvon 0 tai tyhjän merkkijonon, sitä pidetään asetettuna muuttujana: $notset = ""; if ( isset( $notset ) ) print "\$notset is set"; else print "\$notset is not set"; // tulostaa "$notset is set" Muuttujat, jotka alustetaan lomakkeen lähettämisen yhteydessä, ovat aina asetettuja, vaikka käyttäjä ei olisikaan syöttänyt mitään tietoa lomakkeen kenttiin. Tällaisten tilanteiden varalta sinun on testattava, onko muuttuja tyhjä. Se voidaan tehdä empty()-funktiolla, joka ottaa argumentikseen muuttujan ja palauttaa arvon tosi, jos muuttujaa ei ole asetettu tai siinä on muuta tietoa kuin 0 tai tyhjä merkkijono. Se palauttaa arvon tosi myös silloin, kun muuttujassa on tyhjä taulukko: $notset = ""; if ( empty( $notset ) )

10 Tiedon käsittely print "\$notset is empty"; else print "\$notset contains data"; // tulostaa "$notset is empty" Lisää taulukoista Luvussa 7, "Taulukot", esittelimme taulukot ja joitakin funktioita, joita voidaan käyttää taulukoiden yhteydessä. Tässä jaksossa tutkimme vielä muutamia muita taulukoihin liittyviä funktioita ja tekniikoita. Vaihtoehtoinen tapa taulukon läpikäynnissä PHP4 sisältää foreach-lauseen, jolla on vaivatonta lukea taulukon alkioita. Käytämme sitä useimmissa kirjan esimerkeissä. PHP3-skripteissä on käytettävä toista menettelytapaa taulukon läpikäynnissä. Jos aiot jakaa skriptejä, joiden tulisi olla yhteensopivia PHP3:n kanssa tai haluaisit muutoin tuntea koodia, joka kirjoitettiin ennen PHP4-versiota, on tärkeää tutustua tähän jaksoon. Kun luot taulukon, PHP ylläpitää sisäistä osoitinta, joka alustavasti osoittaa taulukon ensimmäiseen alkioon. Tuon alkion avain ja arvo saadaan esille funktiolla each(). Se ottaa argumentikseen taulukkomuuttujan ja palauttaa nelialkioisen taulukon. Kaksi noista alkioista on numeerisesti indeksoituja ja kaksi on otsikoitu nimien "key" ja "value" mukaan. Kun each()-funktiota on kutsuttu, sisäinen osoitin siirtyy taulukon seuraavaan alkioon, ellei ole jo tultu taulukon loppuun, jolloin funktio palauttaa arvon false. Luokaamme nyt taulukko ja kokeilkaamme each()-funktiota: $details = array( school => "Slickly High", course => "Selective Indifference" ); $element = each( $details ); print "$element[0]<br>"; // tulostaa "school" print "$element[1]<p>"; // tulostaa "Slickly High" print "$element[key]<br>"; // tulostaa "school" print "$element[value]<br>"; // tulostaa "Slickly High" Alustamme nyt taulukon nimeltä $details kahdella alkiolla. Sitten viemme muuttujan each()-funktioon ja tallennamme palautusarvon uuteen taulukkoon nimeltä $element. Tämä taulukko sisältää $details-taulukon ensimmäisen alkion avaimen ja arvon. Funktion palauttaman taulukon sijoittaminen taulukkomuuttujaan on hieman tehotonta. Onneksi PHP tarjoaa käyttöön list()-funktion, joka ottaa minkä tahansa määrän argumentteja ja sijoittaa niihin vastaavat taulukon arvot: $array = array( 44, 55, 66, 77 ); list( $first, $second ) = $array; print "$first"; // tulostaa 44

11 16. Tiedon käsittely 293 print "<BR>"; print "$second"; // tulostaa 55 Huomaa, että saatoimme kopioida edellisen esimerkin taulukon kaksi ensimmäistä alkiota nimettyihin muuttujiin käyttämällä list()-funktiota. Voimme käyttää list()-funktiota sijoittamaan arvot kahteen muuttujaan joka kerta, kun each()-funktiota on kutsuttava. Sitten voimme käsitellä noita arvoja foreach-lauseessa: $details = array( school => "Slickly High", course => "Selective Indifference" ); while ( list ( $key, $value ) = each( $details ) ) print "$key: $value<br>"; Vaikka tämä koodi toimiikin, yksi rivi kuitenkin puuttuu. Jos taulukko on käyty läpi jo aiemmin, sisäinen osoitin on asetettu osoittamaan viimeiseen alkioon. Voit asettaa sisäisen osoittimen takaisin taulukon alkuun reset()-funktiolla, joka ottaa argumentikseen taulukon. Niinpä tämä tutumpi rakenne foreach( $details as $key => $value ) print "$key: $value<br>"; on sama kuin reset( $details ); while ( list ( $key, $value ) = each( $details ) ) print "$key: $value<br>"; Arvon olemassaolon tarkistaminen Ennen PHP4:ää oli arvon esiintyminen taulukossa tarkistettava kulkemalla taulukkoa alkio kerrallaan. Jos arvo löytyi, voitiin hypätä pois silmukasta. Muutoin mentiin aina viimeiseen alkioon saakka. PHP4 tarjoaa käyttöön is_array()-funktion, joka ottaa kaksi argumenttia: etsittävän arvon ja taulukon. Funktio palauttaa arvon true, jos arvo löytyy ja muutoin arvon false. $details = array( school => "Slickly High", course => "Selective Indifference" );

12 Tiedon käsittely if ( in_array( "Selective Indifference", $details ) ) print "This course has been suspending pending investigation<p>\n"; Alkion poistaminen taulukosta Voit poistaa taulukon minkä tahansa alkion unset()-funktiolla; se ottaa argumentikseen muuttujan tai taulukon alkion ja tuhoaa sen eleettömästi. Jos argumenttina on taulukon alkio, taulukkoa lyhennetään automaattisesti. unset( $test[address] ); unset( $numbers[1] ); Yksi mahdollinen vaaratekijä unset()-funktion kohdalla on se, että taulukon peräkkäiset indeksit eivät muutu uuden taulukkokoon mukaan. Niinpä, jos olet poistanut edellisen esimerkin $numbers-taulukosta kohteen $numbers[1], näyttää taulukko sen jälkeen seuraavalta: $numbers[0] $numbers[2] $numbers[3] Voit silti käydä taulukkoa läpi foreach-silmukalla ilman ongelmia. Funktion käyttäminen taulukon jokaisen alkio kohdalla Voit muuttaa skalaarimuuttujaa helposti lausekkeessa. Muutoksen tekeminen taulukon jokaiseen alkioon on jo hieman vaikeampaa. Jos haluat esimerkiksi kasvattaa taulukon jokaista arvoa, sinun on yleensä käytävä läpi koko taulukko ja tehtävä kasvatus alkio alkiolta. PHP tarjoaa kuitenkin käyttöön näppärämmän vaihtoehdon. Funktio array_walk() vie taulukon jokaisen alkion avaimen ja arvon käyttäjän funktiolle. Se ottaa argumenteikseen taulukkomuuttujan, merkkijonon, joka edustaa funktion nimeä, sekä valinnaisen lisäargumentin, joka viedään valitulle funktiolle. Luokaamme nyt esimerkki. Olemme saaneet tietokannastamme hintataulukon, mutta ennen kuin alamme käsitellä arvoja, on meidän lisättävä vero jokaiseen hintaan. Ensiksi meidän tulisi luoda funktio, joka lisää veron hintaan: function add_tax( &$val, $key, $tax_pc ) { $val += ( ($tax_pc/100) * $val ); }

13 16. Tiedon käsittely 295 Jokaisen funktion, jota käytetään array_walk()-funktion kanssa, tulee ottaa vastaan avain ja arvo sekä valinnainen kolmas argumentti. Jos haluat muuttaa funktiolle vietyä arvoa, on sinun lisättävä et-merkki (&) argumentin eteen funktion esittelyssä. Se takaa, että vietyä arvoa voidaan muuttaa funktiossa ja muutokset tietenkin näkyvät alkuperäisessä taulukossa. Siksi add_tax()-funktiomme ei tarvitse palauttaa arvoa. Nyt kun olemme luoneet funktion, voimme kutsua sitä array_walk()-funktion kautta: function add_tax( &$val, $key, $tax_pc ) { $val += ( ($tax_pc/100) * $val ); } $prices = array( 10, 17.25, ); array_walk( $prices, "add_tax", 10 ); foreach ( $prices as $val ) print "$val<br>"; // Tulostus: // 11 // // Nyt viemme $prices-taulukon array_walk()-funktiolle; toisena argumenttina on add_tax()-funktion nimi. Funktion tulee tietää nykyinen veroprosentti. Kolmantena valinnaisena argumenttina array_walk()- funktiolle vietävä arvo kuvaa veroprosenttia, joka viedään nimetylle funktiolle. Mukautettu taulukoiden lajittelu Olet jo nähnyt, kuinka taulukoita lajitellaan avaimen tai arvon mukaan. Sinun ei tarvitse kuitenkaan aina lajitella taulukkoa näin suoraviivaisella tavalla. Saatat esimerkiksi haluta lajitella taulukon moniulotteisessa taulukossa olevan alkion arvojen mukaan tai käyttää täysin erilaista kriteeriä kuin standardia merkkien vertailua. PHP mahdollistaa omien vertailufunktioiden luomisen taulukon lajittelussa. Numeerisesti indeksoidun taulukon kohdalla se tehdään usort()-funktiota kutsumalla; se ottaa argumenteikseen lajiteltavan taulukon ja sen funktion nimen, jota käytetään vertailuissa. Määrittelemäsi funktion tulee ottaa kaksi argumenttia, joissa ovat vertailtavat taulukon arvot. Jos ne ovat samanlaisia (kriteeriesi mukaan), funktion tulee palauttaa arvo 0. Jos ensimmäinen argumentti on pienempi kuin toinen (tulee ennen toista), funktion tulee palauttaa arvo -1 ja muutoin 1.

14 Tiedon käsittely Listaus 16.1 käyttää usort()-funktiota moniulotteisen taulukon lajittelemiseksi. Listaus 16.1 Moniulotteisen taulukon lajitteleminen yhden kentän mukaan usort()- funktiolla 1: <?php 2: $products = array( 3: array( name=>"hal 2000", price=> ), 4: array( name=>"tricorder", price=>55.5 ), 5: array( name=>"orac AI", price=> ), 6: array( name=>"sonic Screwdriver", price=>22.5 ) 7: ); 8: function pricecmp( $a, $b ) 9: { 10: if ( $a[price] == $b[price] ) 11: return 0; 12: if ( $a[price] < $b[price] ) 13: return -1; 14: return 1; 15: } 16: usort( $products, pricecmp ); 17: foreach ( $products as $val ) 18: print "$val[name]: $val[price]<br>\n"; 19:?> Määrittelemme nyt taulukon nimeltä $products, joka halutaan lajitella price-kentän mukaan. Luomme sitten oman lajittelufunktion nimeltä pricecmp(). Se ottaa kaksi argumenttia nimeltä $a ja $b. Noissa argumenteissa on kaksi taulukkoa, jotka muodostavat $products-taulukon toisen tason. Vertaamme niiden hinta-alkioita ja palautamme arvon 0, jos hinnat ovat samoja, arvon -1, jos ensimmäinen on pienempi kuin toinen, ja arvon 1 muutoin. Kun olemme määritelleet sekä funktion että taulukon, kutsumme usort()-funktiota, jolle viedään $productstaulukko ja vertailufunktion nimi. Funktio kutsuu vertailufunktiota useaan kertaan ja vie sille kaksi alkiota $products-taulukosta; alkioiden paikat vaihdetaan palautusarvon mukaan. Lopuksi käymme silmukassa läpi taulukon ja esitämme uuden järjestyksen. Käytä usort()-funktiota numeerisesti indeksoitujen taulukoiden lajitteluun. Jos haluat kokeilla samaa assosiatiivisen taulukon kohdalla, käytä uasort()-funktiota. Se tekee lajittelun säilyttäen avainten ja arvojen välisen yhteyden. Listaus 16.2 lajittelee assosiatiivisen taulukon käyttäen uasort()-funktiota.

15 16. Tiedon käsittely 297 Listaus 16.2 Moniulotteisen assosiatiivisen taulukon lajitteleminen uasort()-funktiolla 1: <?php 2: $products = array( 3: "HAL 2000" => array( color =>"red", price=> ), 4: "Tricorder" => array( color =>"blue", price=>55.5 ), 5: "ORAC AI" => array( color =>"green", price=> ), 6: "Sonic Screwdriver" => array( color =>"red", price=>22.5 ) 7: ); 8: function pricecmp( $a, $b ) 9: { 10: if ( $a[price] == $b[price] ) 11: return 0; 12: if ( $a[price] < $b[price] ) 13: return -1; 14: return 1; 15: } 16: uasort( $products, pricecmp ); 17: foreach ( $products as $key => $val ) 18: print "$key: $val[price]<br>\n"; 19:?> Voit lajitella assosiatiivisen taulukon sen avainten suhteen funktiolla uksort(). Se toimii aivan samoin periaattein kuin usort() ja uasort(), paitsi että se vertailee taulukon avaimia. Listaus 16.3 käyttää uksort()-funktiota lajittelemaan taulukon avaimessa olevien merkkien lukumäärän mukaan. Käytämme nyt strlen()-funktiota, joka ottaa argumentikseen yksittäisen merkkijonon ja palauttaa kokonaisluvun, joka edustaa merkkien määrää; funktio on esillä seuraavassa luvussa. Listaus 16.3 Assosiatiivisen taulukon lajittelu avaimen pituuden mukaan uksort()- funktiolla 1: <?php 2: $exes = array( 3: xxxx => 4, 4: xxx => 5, 5: xx => 7,

16 Tiedon käsittely 6: xxxxx => 2, 7: x => 8 8: ); 9: function pricecmp( $a, $b ) 10: { 11: if ( strlen( $a ) == strlen( $b ) ) 12: return 0; 13: if ( strlen( $a ) < strlen( $b ) ) 14: return -1; 15: return 1; 16: } 17: uksort( $exes, pricecmp ); 18: foreach ( $exes as $key => $val ) 19: print "$key: $val<br>\n"; 20: 21: // tulostus: 22: // x: 8 23: // xx: 7 24: // xxx: 5 25: // xxxx: 4 26: // xxxxx: 2 27: 28:?> Yhteenveto Tällä tunnilla olet saanut työstää taulukoita ja tietotyyppejä. Opit muuntamaan monimutkaisia tietotyyppejä skalaareiksi ja kääntäen. Sait tietää, kuinka PHP käsittelee lausekkeissa olevia erilaisia tietotyyppejä ja muuntaa niitä automaattisesti. Kokeilit luvussa myös funktioita, esimerkiksi is_array()-funktiota, jotka testaavat muuttujan tietotyypin sekä funktioita, jotka muuntavat tiedon tyypin halutuksi tyypiksi. Opit käymään läpi taulukon perinteisellä tavalla käyttämällä each()- ja list()-funktioita. Opit myös tutkimaan, onko tietty arvo taulukossa, käyttämällä is_array()-funktiota, ja poistamaan alkion taulukosta unset()- funktiolla. Luvun lopussa sait tietää, kuinka taulukko muunnetaan array_walk()-funktiolla ja lajitellaan sellaisilla funktioilla kuin usort(), uasort() ja uksort().

17 16. Tiedon käsittely 299 K&V K Olemmeko nyt käsitelleet kaikki PHP4:n taulukkofunktiot? V Emme, on vielä olemassa joukko taulukkofunktioita, joita emme saaneet mahtumaan tähän kirjaan! Voit tutkia niitä osoitteesta 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. Millä yksittäisellä funktiolla voit muuntaa minkä tahansa tietotyypin toiseksi tietotyypiksi? 2. Voisitko tehdä sen myös ilman funktiota? 3. Mitä seuraava koodi tulostaa? print "four" * 200; 4. Kuinka saat selville, onko muuttujassa taulukko? 5. Mikä funktio on tarkoitettu muuntamaan argumenttinsa kokonaisluvuksi? 6. Kuinka testaisit, onko muuttuja asetettu? 7. Kuinka testaisit, sisältääkö muuttuja tyhjän arvon, esimerkiksi nollan tai tyhjän merkkijonon? 8. Millä funktiolla tuhoaisit taulukon alkion? 9. Millä funktiolla voit lajitella numeerisesti indeksoidun taulukon? Toiminta 1. Tutki aiemmin tekemiäsi skriptejä ja kirjan aiempia esimerkkejä. Muunna muutama foreach-lausetta käyttävä ohjelma sellaiseksi, että se on yhteensopiva PHP3:n kanssa. 2. Luo taulukko, jossa on erilaisia tietotyyppejä. Lajittele sitten taulukko tietotyypin mukaan.

18 Tiedon käsittely

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

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

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

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

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

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, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006 TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa

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

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

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

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

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

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

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

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi

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

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

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

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. 1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).

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

Tietotyypit ja operaattorit

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

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet

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

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

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

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

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

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

Metodien tekeminen Javalla

Metodien tekeminen Javalla 1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.

Lisätiedot

Kielioppia: toisin kuin Javassa

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

Lisätiedot

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

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

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

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

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

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

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

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

Lisätiedot

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

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

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

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

System.out.printf(%d / %d = %.2f%n, ekaluku, tokaluku, osamaara); Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Ohjelmointitehtävien osalta palautetaan

Lisätiedot

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen 1 List-luokan soveltamista List-luokan metodeja Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen 1 List-luokan metodeja List-luokan

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

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

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

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

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

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A. Tehtävä. Tämä tehtävä on aineistotehtävä, jossa esitetään ensin tehtävän teoria. Sen jälkeen esitetään neljä kysymystä, joissa tätä teoriaa pitää soveltaa. Mitään aikaisempaa tehtävän aihepiirin tuntemusta

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki PERL TIE-20306 Principles of Programming Languages Ryhmä 4: Joonas Lång & Jasmin Laitamäki 1. Johdanto Perl on ohjelmointikielten perhe, johon kuuluu Perl 5 ja Perl 6. Kielet ovat kuitenkin erilliset ohjelmointikielet

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

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

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmointi 2 / 2010 Välikoe / 26.3 Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

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

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

20. Javan omat luokat 20.1

20. Javan omat luokat 20.1 20. Javan omat luokat 20.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang Sisällys 20. Javan omat luokat Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.1 20.2 Java API Java-kielen Application Programming Interface (API)

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

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

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

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

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

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

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

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

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja

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

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

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

Lisätiedot

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

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

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 4: Symbolit, derivojaesimerkki, kierroksen 1 ratkaisut (mm. SICP 2.32.3.2) Riku Saikkonen 1. 11. 2011 Sisältö 1 Symbolit ja sulkulausekkeet 2 Lisää Schemestä:

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

Ohjelmointi 1 C#, kevät 2013, 2. tentti

Ohjelmointi 1 C#, kevät 2013, 2. tentti ITKP102 Ohjelmointi 1 C# 15.5.2013 1 / 6 Ohjelmointi 1 C#, kevät 2013, 2. tentti Tentaattori Antti-Jussi Lakanen Tässä tentissä saa olla mukana omia muistiinpanoja yhden arkin verran. Tentin valvojalla

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

Taulukot, silmukat ja muut joka koodin pikku veijarit

Taulukot, silmukat ja muut joka koodin pikku veijarit Taulukot, silmukat ja muut joka koodin pikku veijarit Janne Käki 7.9.6 MERKKI liikenne jono METRI para laku MOGARI ATRI psyki buutti ESINE pelottelu ellistäminen runsauden kuono TUNTI SARVI kusi assistentti

Lisätiedot

18. Abstraktit tietotyypit 18.1

18. Abstraktit tietotyypit 18.1 18. Abstraktit tietotyypit 18.1 Sisällys Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

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

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

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

Olio-ohjelmointi Syntaksikokoelma

Olio-ohjelmointi Syntaksikokoelma C++-kielen uusia ominaisuuksia Olio-ohjelmointi Syntaksikokoelma 31.10.2008 Bool-tietotyyppi: Totuusarvo true (1), jos ehto on tosi ja false (0) jos ehto epätosi. Dynaaminen muistinvaraus: Yhden muuttuja

Lisätiedot

Harjoitus 3 (viikko 39)

Harjoitus 3 (viikko 39) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Vältä liian pitkiä rivejä. Ohjelmointitehtävien

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

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

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

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

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

4. Luokan testaus ja käyttö olion kautta 4.1

4. Luokan testaus ja käyttö olion kautta 4.1 4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään

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

Harjoitus 4 (viikko 47)

Harjoitus 4 (viikko 47) Kaikki tämän harjoituksen tehtävät liittyvät joko suoraan tai epäsuorasti kurssin toiseen harjoitustyöhön. Saa hyvän alun harjoitustyön tekoon, kun ratkaiset mahdollisimman monta tehtävää. Mikäli tehtävissä

Lisätiedot

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä Sisälls 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen.. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona.. Muuttumattomat ja muuttuvat merkkijonot.

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

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

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Käyttäjän kanssa keskusteleva ohjelma 1 Kirjoittaminen konsolinäkymään //Java ohjelma, joka tulostaa konsoli-ikkunaan public class HeiMaailma { public void aja() { // kirjoitus ja

Lisätiedot