OPPITUNTI 16 Tiedon käsittely
|
|
- Juha Sariola
- 6 vuotta sitten
- Katselukertoja:
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) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,
LisätiedotOPPITUNTI 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ätiedotHarjoitustyö: virtuaalikone
Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman
Lisätiedot7. 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ätiedotOhjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka
LisätiedotOPPITUNTI 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ätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat
LisätiedotJava-kielen perusteet
Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero
LisätiedotInformaatioteknologian 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ätiedotOhjelmoinnin 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ätiedotOhjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:
1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri
LisätiedotOSA 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ätiedotOhjelmoinnin 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ätiedotOlio-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ätiedot6. 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ätiedotOsoitin ja viittaus C++:ssa
Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja
LisätiedotOhjelmointiharjoituksia Arduino-ympäristössä
Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet
LisätiedotKää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ätiedotOhjelmoinnin 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ätiedotHarjoitus 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ätiedot8. 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ätiedotLuokka 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ätiedotSisä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ätiedotTietotyypit ja operaattorit
Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto
LisätiedotJava-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ätiedotOhjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen
Ohjelmointitaito (ict1td002, 12 op) Kevät 2009 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-kehitysympäristö Java-ohjelma ja luokka
LisätiedotTaulukot. 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ätiedotYleistä. 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ätiedotJava-kielen perusteita
Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa
Lisätiedot13. Loogiset operaatiot 13.1
13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.
LisätiedotOhjelmoinnin 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ätiedotMetodien 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ätiedotKielioppia: toisin kuin Javassa
Object Pascal Pascal kielen oliolaajennus (Inprise/Borland:n oma) luokat Voit uudelleenkäyttää luomiasi objekteja esim. komponentteja Periytyminen Kielioppia: toisin kuin Javassa Ei eroa isojen ja pienien
LisätiedotOhjelmoinnin 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ätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen
LisätiedotMetodit. 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ätiedotSystem.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);
Kysy Karilta tai Kimmolta, jos tehtävissä on jotain epäselvää. Kerro WETOon liittyvät ongelmat suoraan Jormalle sähköpostitse (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja
LisätiedotJava-kielen perusteet
Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero
LisätiedotOhjelmoinnin 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ätiedotSisä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ätiedot815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava
LisätiedotPerusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti
C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) Toistaiseksi helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Vaikeaa eroavuudet Pythonin ja C:n
Lisätiedot815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 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ätiedot1. 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ätiedotSystem.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ätiedotList-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ätiedot2. 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ätiedotMuuttujat ja kontrolli. Ville Sundberg
Muuttujat ja kontrolli Ville Sundberg 14.9.2007 Alkeistyyppi Alin abstraktiotaso josta tarvitsee välittää Yksittäinen, jakamaton tiedonjyvä Tavallaan kaikki alkeistyypit ovat lukuja arvojoukko vaihtelee
LisätiedotOhjelmoinnin 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ätiedotOperaattoreiden 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ätiedot815338A 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ätiedotPython-ohjelmointi Harjoitus 2
Python-ohjelmointi Harjoitus 2 TAVOITTEET Kerrataan tulostuskomento ja lukumuotoisen muuttujan muuttaminen merkkijonoksi. Opitaan jakojäännös eli modulus, vertailuoperaattorit, ehtorakenne jos, input-komento
LisätiedotSe 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ätiedotSisä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ätiedotPERL. 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ätiedotHarjoitus 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ätiedotOhjelmoinnin 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ätiedotOhjelmointi 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ätiedotJava 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ätiedotPerusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti
C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin
Lisätiedot17. 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ätiedot20. 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ätiedotSisä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ätiedotOhjelmoinnin 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ätiedotJAVA-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ätiedot7. Näytölle tulostaminen 7.1
7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio
LisätiedotOhjelmoinnin 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ätiedotOhjelmointikielet 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ätiedot17. 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ätiedotTietojen 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ätiedotOlion 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ätiedotOpintojakso 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ätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 21.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 21.1.2009 1 / 32 Tyypeistä Monissa muissa ohjelmointikielissä (esim. Java ja C) muuttujat on määriteltävä ennen
LisätiedotOhjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin
Ohjausjärjestelmien jatkokurssi Visual Basic vinkkejä ohjelmointiin http://www.techsoft.fi/oskillaattoripiirit.htm http://www.mol.fi/paikat/job.do?lang=fi&jobid=7852109&index=240&anchor=7852109 Yksiköt
Lisätiedot3.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ätiedotOhjelmoinnin 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ätiedotOhjelmoinnin 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ätiedotITKP102 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ätiedotOhjelmointi 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ätiedotIDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit
IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
LisätiedotTaulukot, 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ätiedot18. 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ätiedot15. 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ätiedotATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014
18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,
Lisätiedot5.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ätiedotOlio-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ätiedotHarjoitus 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ätiedotITKP102 Ohjelmointi 1 (6 op), arvosteluraportti
ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 8. kesäkuuta 2018 Yleistä Tentti 1 meni pistekeskiarvon (11.2) perusteella välttävästi. Omasta tehtäväpaperista saa kopion
LisätiedotITKP102 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ätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 15.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.2.2010 1 / 46 Merkkijonot Merkkijonojen avulla ohjelmassa voi esittää tekstitietoa, esim. nimiä, osoitteita ja
LisätiedotOhjelmassa 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ätiedot15. 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ätiedot4. 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ätiedot13. Loogiset operaatiot 13.1
13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.
LisätiedotHarjoitus 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ätiedotSisä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ätiedotOhjelmoinnin 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ätiedotOhjelmoinnin 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ätiedotJava-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