OPPITUNTI15 Päivämäärien käsittely

Koko: px
Aloita esitys sivulta:

Download "OPPITUNTI15 Päivämäärien käsittely"

Transkriptio

1 15. Päivämäärien käsittely 269 OPPITUNTI15 Päivämäärien käsittely Päivämäärät kuuluvat niin usein jokapäiväiseen elämään, että niiden käsittely on rutiininomaista. Kalenterin käsittely ei aina ole kuitenkaan niin helppoa ohjelmallisesti. Onneksi PHP tarjoaa käyttöön voimallisia työkaluja päivämääräaritmetiikkaan ja päivämäärien käsittelyyn. Tämän luvun aiheita ovat seuraavat: Kuinka ottaa esille nykyinen päivämäärä ja kellonaika Kuinka saada tietoa päivämäärästä Kuinka muotoillaan päivämääräinformaatiota Kuinka testata päivämäärien oikeellisuus Kuinka asettaa päivämääriä Kuinka muodostaa yksinkertainen kalenteriskripti

2 Päivämäärien käsittely Päivämäärän sieppaaminen time()-funktiolla PHP:n time()-funktio antaa kaiken tarvittavan informaation nykyisestä päivämäärästä ja ajasta. Se ei vaadi lainkaan argumentteja, mutta palauttaa kokonaisluvun. Tuo lukuarvo on hieman vaikeaselkoinen, mutta kuitenkin hyvin hyödyllinen. print time(); // näytetulostus: Funktion palauttama kokonaisluku edustaa sekuntien määrää, joka on kulunut keskiyöstä GMTaikaa. Tuo hetki tunnetaan UNIX-aikana ja kulunutta sekuntimäärää kutsutaan aikaleimaksi. PHP tarjoaa käyttöön erinomaisia työkaluja aikaleiman muuntamiseen ihmisille sopivampaan muotoon. Aikaleimamuoto on kuitenkin kaikkein turhin tapa tallentaa päivämäärä, eikö totta? Itse asiassa asia on päinvastoin. Juuri tuosta yhdestä ainoasta lukuarvosta saadaan irti monenlaista informaatiota. Ja kaiken lisäksi tuon lukuarvon ansiosta päivämäärä- ja aika-aritmetiikka on yksinkertaista. Pohdipa kotitekoista päivämääräjärjestelmää, johon pitää kirjaa kuukauden päivistä, kuukausista ja vuosista. Kuvittele nyt skriptiä, jonka tulee lisätä yksi päivä annettuun päivämäärään. Jos tuo päivämäärä sattuisi olemaan 31. joulukuuta 1999, vaikuttaisi päivän lisääminen myös kuukauden ja vuosiluvun muuttumiseen (tulos olisi siis 1. tammikuuta 2000). Aikaleiman avulla voidaan lisäämisessä käyttää päivää vastaavaa sekuntilukua ja siinä kaikki. Voit sitten muuntaa tuon luvun johonkin muuhun, havainnollisempaan muotoon. Aikaleiman muuntaminen getdate()-funktiolla Nyt kun käytössäsi on aikaleima, sinun on osattava muuntaa se ennen päivämäärän esittämistä käyttäjälle. Se tapahtuu getdate()-funktiolla. Funktio ottaa argumentikseen aikaleiman ja palauttaa assosiatiivisen taulukon, jossa päivämäärätieto on. Jos jätät pois aikaleiman kutsun yhteydessä, funktio käyttää nykyistä aikaleimaa, jonka funktion time() palauttaa. Taulukko 15.1 luettelee getdate()-funktion palauttaman taulukon elementtien merkityksen. Taulukko 15.1 getdate()-funktion palauttaman taulukon elementit. Avain Selitys Esimerkki seconds Yli minuutin menevät sekunnit (0 59) 28 minutes Yli tunnin menevät minuutit (0 59) 7 hours Päivän tunnit (0 23) 12 mday Kuukauden päivä (1 31) 20 wday Viikonpäivän numero (0 6) 4 mon Kuukauden numero (1 12) 1 year Vuosi (4 numeroa) 2000 yday Vuoden päivä (0 365) 19 weekday Viikonpäivän nimi Thursday month Kuukauden nimi January 0 Aikaleima Listaus 15.1 käyttää getdate()-funktiota aikaleimatiedon jäsentelyyn; siinä oleva foreach-lause tulostaa jokaisen elementin. Tyypillinen tulostus esitetään kuvassa Funktio palauttaa päivämäärän suhteessa paikalliseen aikavyöhykkeeseen.

3 15. Päivämäärien käsittely 271 Listaus 15.1 Päivämäärän selvittäminen getdate()-funktiolla 1: <html> 2: <head> 3: <title>listing 15.1 Acquiring date information with getdate()</title> 4: </head> 5: <body> 6: <?php 7: $date_array = getdate(); // ei argumenttia, joten käyt. nyk. päivämäärää 8: foreach ( $date_array as $key => $val ) 9: { 10: print "$key = $val<br>"; 11: } 12:?> 13: <hr> 14: <? 15: print "Today's date: $date_array[mday]/$date_array[mon]/ $date_array[year]<p>"; 16:?> 17: </body> 18: </html> KUVA 15.1 Funktion getdate() käyttö. Aikaleiman muuntaminen date()-funktiolla Voit käyttää getdate()-funktiota halutessasi käsitellä funktion tuottamia elementtejä. Joskus saatat kuitenkin haluta vain esittää päivämäärän merkkijonona. Funktio date() palauttaa muotoillun merkkijonon, joka esittää päivämäärätiedot. Voit tehdä kokeiluja funktiolla ja saatkin pian nähdä, kuinka monipuolisesti funktion tuottamaa tulosta voidaan muotoilla; muotoilutapa annetaan funktion argumenttina.

4 Päivämäärien käsittely Muotoilumerkkijonon lisäksi date() ottaa valinnaiseksi argumentikseen aikaleiman. Taulukko 15.2 luettelee muotoilumerkkijonon mahdolliset koodit. Kaikki muu muotoilumerkkijonossa oleva tieto laitetaan mukaan palautusarvoon. Taulukko 15.2 Muotoilukoodit, jotka date()-funktio hyväksyy Muotoilukoodi Selitys Esimerkki a am tai pm pm A AM tai PM PM d Kuukauden päivä (lukuarvo etunollalla) 20 D Viikonpäivä (kolme kirjainta) Thu F Kuukauden nimi January h Tunti (12 tunnin muoto, etunollat mukana) 12 H Tunti (24 tunnin muoto, etunollat mukana) 12 g Tunti (12 tunnin muoto, ei etunollia mukana) 12 G Tunti (24 tunnin muoto, ei etunollia mukana) 12 i Minuutit 47 j Kuukauden päivä (ei etunollia) 20 I Viikonpäivän nimi Thursday L Karkausvuosi ( 1 on kyllä, 0 on ei) 1 m Vuoden kuukausi (numero, etunollat mukana) 01 M Vuoden kuukausi (nimi, 3 kirjainta) Jan n Vuoden kuukausi (numero, ei etunollia) 1 s Tunnin sekunnit 24 U Aikaleima y Vuosi (2 numeroa) 00 Y Vuosi (4 numeroa) 2000 z Vuoden päivä (0 365) 19 Z Siirtymä sekunneissa GMT:stä 0 Listaus 15.2 käyttää muutamaa muotoilutapaa. Listaus 15.2 Päivämäärän muotoileminen date()-funktiolla 1: <html> 2: <head> 3: <title>listing 15.2 Formatting a date with date()</title> 4: </head> 5: <body> 6: <?php 7: print date("m/d/y G.i:s<br>", time()); 8: // 01/20/ :55 9: print "Today is "; 10: print date("j of F Y, \a\\t g.i a", time()); 11: // Tulostaa: "Today is 20 of January 2000, at 1.27 pm" 12:?>

5 15. Päivämäärien käsittely : </body> 14: </html> Vaikka muotoilumerkkijono näyttääkin oudolta, se on helppo muodostaa. Jos haluat lisätä merkkijonon muotoiluun, jossa on muotoilukoodeina toimivia kirjaimia, voit eliminoida niiden merkityksen asettamalla kenoviivan (\) niiden eteen. Jos käytät escape-merkkejä sellaisten ohjausmerkkien (esimerkiksi n ja \n) yhteydessä, sinun on laitettava eteen vielä toinen escape-merkki, joka eliminoi ensimmäisen escape-merkin. Niinpä merkkiyhdistelmän \n (ohjausmerkkinä rivinvaihto) eteen tulee laittaa toinen kenoviiva (\\n). Funktio palauttaa päivämäärätiedot paikallisen aikavyöhykkeen mukaan. Jos haluat muotoilla päivämäärän GMT:n mukaan, sinun tulee käyttää gmdate()-funktiota, joka toimii täysin samalla lailla. Aikaleiman luominen mktime()-funktiolla Osaat jo siepata nykyisen ajan, mutta et osaa vielä käsitellä erillisiä aikoja. Funktio mktime() palauttaa aikaleiman, jota voit käyttää date()- ja getdate()-funktioiden kanssa. Funktio ottaa argumenteikseen kuusi kokonaislukua, jotka annetaan seuraavassa järjestyksessä: tunti, minuutti, sekunti, kuukausi, kuukaudenpäivä, vuosi. Listaus 15.3 käyttää mktime()-funktiota aikaleiman saamiseen; aikaleimaa käytetään sitten date()-funktion toimesta. Listaus 15.3 Aikaleiman luominen mktime()-funktiolla 1: <html> 2: <head> 3: <title>listing 15.3 Creating a timestamp with mktime()</title> 4: </head> 5: <body> 6: <?php 7: // tee aikaleima ajalle "1/5/99 at 2.30 am" 8: $ts = mktime( 2, 30, 0, 5, 1, 1999 ); 9: print date("m/d/y G.i:s<br>", $ts); 10: // 05/01/ :00 11: print "The date is "; 12: print date("j of F Y, \a\\t g.i a", $ts ); 13: // Tulostaa: "The date is 1 of May 1999, at 2.30 am" 14:?> 15: </body> 16: </html>

6 Päivämäärien käsittely Voit halutessasi jättää pois jotkin tai vaikka kaikki argumentit mktime()-funktion yhteydessä; tällöin funktio käyttää nykyistä aikaa oletuksena. Funktio myös säätää arvot, jotka eivät satu sopivalle arvoalueelle, joten esimerkiksi tuntina annettu arvo 25 muunnetaan muotoon 1.00am eli funktio osaa siirtyä seuraavaan päivään. Päivämäärän testaaminen checkdate()-funktiolla Sinun on voitava myös ottaa vastaan käyttäjän syöttämä aikatieto. Ennen kuin alat käsitellä tuota päivämäärää tai tallennat sen tietokantaan, sinun kannattaa tarkistaa, että päivämäärä on sopiva. Funktio checkdate() ottaa kolme kokonaislukuargumenttia: kuukauden, päivän ja vuoden. Se palauttaa arvon true, jos kuukausi on väliltä 1-12, päivä on sopiva kyseisen kuukauden ja vuoden päiväksi (ottaen huomioon karkausvuodet) ja vuosi on väliltä Ole kuitenkin varovainen, sillä päivämäärä saattaa näyttää oikealta, mutta muut päivämääräfunktiot eivät hyväksy sitä. Esimerkiksi seuraava koodi palauttaa arvon true: checkdate( 4, 4, 1066 ) Jos yrittäisit muodostaa päivämäärän noilla arvoilla mktime()-funktion avulla, olisi tuloksena aikaleima -1. Peukalosääntönä voisi sanoa, että mktime()-funktiota ei pitäisi käyttää vuosiluvuille, jotka ovat pienempiä kuin1902; Esimerkki Tuokaamme nyt useimmat näistä funktioista yhteen ja muodostakaamme esimerkki. Aiomme nyt kehittää kalenterin, joka osaa esittää kaikkien kuukausien päivämäärät väliltä Käyttäjän tulee voida valita sekä kuukausi että vuosi alasvetovalikoista ja päivämäärien tulee olla järjestettyinä viikon päivien mukaan. Käytämme ohjelmassa apunamme kahta globaalia muuttujaa, $month ja $year, joihin käyttäjä saa antaa tietonsa. Muodostamme niillä aikaleiman, joka perustuu annetun kuukauden ensimmäiseen päivään. Jos syöttötieto on sopimaton tai sitä ei ole, laitetaan oletusajaksi nykyisen kuukauden ensimmäinen päivä. Käyttäjän syöttämän tiedon tarkistaminen Kun käyttäjä tulee sivullemme ensimmäistä kertaa, hän ei lähetä mitään tietoa. Siksi meidän tulee varmistaa, että skriptimme osaa käsitellä tilannetta, jossa muuttujia $month ja $year ei ole määritelty. Voisimme käyttää siihen isset()-funktiota. Funktio palauttaa arvon false, jos sille viety muuttuja on määritetty. Otamme kuitenkin käyttöön checkdate()-funktion. Listaus 15.4 sisältää koodin, joka tarkistaa $month- ja $yearmuuttujat ja muodostaa aikaleimat niiden perusteella. Listaus 15.4 Käyttäjän syöttämän tiedon tarkistaminen kalenteriskriptissämme 1: <?php 2: if (! checkdate( $month, 1, $year ) ) 3: { 4: $nowarray = getdate(); 5: $month = $nowarray[mon]; 6: $year = $nowarray[year];

7 15. Päivämäärien käsittely 275 7: } 8: $start = mktime ( 0, 0, 0, $month, 1, $year ); 9: $firstdayarray = getdate($start); 10:?> Listaus 15.4 on osa laajempaa skriptiä, joten se ei tuota mitään tulostusta. Koodin if-lauseessa oleva checkdate() palauttaa arvon false, koska nyt kuukautta ja vuotta ei ole määritetty, joten ei voida tuottaa mitään sopivaa päivämäärääkään. Tämä lähestymistapa on hyvä myös siinä mielessä, että se varmistaa, että käyttäjän lähettämät tiedot todellakin muodostavat sopivan päivämäärän. Jos päivämäärä ei ole sopiva, käytämme getdate()-funktiota luomaan assosiatiivisen taulukon nykyisen ajan perusteella. Asetamme sitten arvot $month ja $year itse käyttämällä taulukon mon- ja year-elementtejä. Nyt kun olemme varmoja siitä, että muuttujissa $month ja $year on sopivat päivämäärätiedot, voimme käyttää mktime()-funktiota luomaan aikaleima kuukauden ensimmäiselle päivälle. Tarvitsemme tätä informaatiota myöhemmin, joten luomme muuttujan nimeltä $firstdayarray, joka tallentaa getdate()- funktion palauttaman assosiatiivisen taulukon, joka perustuu tähän aikaleimaan. HTML-lomakkeen luominen Meidän on luotava käyttöliittymä, jota kautta käyttäjät voivat ottaa esille haluamansa kuukauden ja vuoden. Käytämme käyttöliittymässä SELECT-elementtejä. Vaikka käytämmekin raakaa HTML-koodia, meidän on varmistettava, että alasvetovalikkojen sisältönä on alustavasti juuri valittu kuukausi, joten luomme nuo alasvetovalikot dynaamisesti ja lisäämme SELECT-attribuutin OPTION-elementtiin aina tarvittaessa. Lomake generoidaan listauksessa Listaus 15.5 HTML-lomake kalenteriskriptiin 1: <?php 2: if (! checkdate( $month, 1, $year ) ) 3: { 4: $nowarray = getdate(); 5: $month = $nowarray[mon]; 6: $year = $nowarray[year]; 7: } 8: $start = mktime ( 0, 0, 0, $month, 1, $year ); 9: $firstdayarray = getdate($start); 10:?> 11: <html> 12: <head> 13: <title><?php print "Calendar: $firstdayarray[month] 14: $firstdayarray[year]"?></title>

8 Päivämäärien käsittely 15: <head> 16: <body> 17: <form method="post"> 18: <select name="month"> 19: <?php 20: $months = Array("January", "February", "March", "April", 21: "May", "June", "July", "August", "September", 22: "October", "November", "December"); 23: for ( $x=1; $x <= count( $months ); $x++ ) 24: { 25: print "\t<option value=\"$x\""; 26: print ($x == $month)?" SELECTED":""; 27: print ">".$months[$x-1]."\n"; 28: 29:?> 30: </select> 31: <select name="year"> 32: <?php 33: for ( $x=1980; $x<2010; $x++ ) 34: { 35: print "\t<option"; 36: print ($x == $year)?" SELECTED":""; 37: print ">$x\n"; 38: } 39:?> 40: </select> 41: <input type="submit" value="go!"> 42: </form> 43: </body> 44: </html> Kun olemme luoneet $start-aikaleiman ja $firstdayarray-päivämäärätaulukon, kirjoitamme HTML-koodia sivulle. Huomaa, että käytämme $firstdayarray-taulukkoa kuukauden ja vuoden lisäämiseksi TITLEelementtiin. Edellisissä esimerkeissämme olemme käyttäneet globaalia muuttujaa $PHP_SELF FORM-

9 15. Päivämäärien käsittely 277 elementissä sen varmistamiseksi, että lomake kutsuu itseään lähettämisen yhteydessä. Skriptissämme olemme käyttäneet hyödyksi sitä seikkaa, että ACTION-argumentin poisjättäminen FORM-tagista saa aikaan sen, että lomake lähetetään oletuksena sivulle, jossa lomake itse on. Alasvetovalikon SELECT-elementti luodaan taas PHP-moodissa, jossa yksittäiset OPTION-tagit kirjoitetaan. Ensin luomme taulukon nimeltä $months, joka sisältää 12 kuukauden nimeä. Sitten käymme taulukon läpi silmukassa ja luomme OPTIONtagin kullekin kuukaudelle. Menettelytapa saattaa näyttää turhan monimutkaiselta, mutta nyt koodi lisäksi tarkistaa, onko muuttujassa $x (for-silmukan laskuri) sama arvo kuin muuttujassa $month; jos näin on, lisätään merkkijono SELECTED OPTION-tagiin, jolloin varmistetaan, että kyseinen kuukausi on automaattisesti valittuna, kun sivu ladataan. Käytämme samanlaista tekniikkaa myös vuosia sisältävän luettelon kirjoittamiseksi. Lopuksi palaamme HTML-moodiin ja luomme submit-painikkeen. Meillä tulisi nyt olla lomake, joka osaa lähettää kuukauden ja vuoden itselleen ja laittaa oletukseksi joko nykyisen kuukauden ja vuoden tai aiemmin valitut arvot. Kuva 15.2 kertoo tilanteen. KUVA 15.2 Kalenterilomake. Kalenteritaulukon luominen Nyt meidän on luotava taulukko ja täytettävä se valitun kuukauden päivämäärillä. Teemme sen listauksessa 15.6, jossa on koko kalenterikoodi. Listaus 15.6 Kokonainen kalenteriskripti 1: <?php 2: define("aday", (60*60*24) ); 3: if (! checkdate( $month, 1, $year ) ) 4: { 5: $nowarray = getdate(); 6: $month = $nowarray[mon]; 7: $year = $nowarray[year]; 8: } 9: $start = mktime ( 0, 0, 0, $month, 1, $year ); 10: $firstdayarray = getdate($start); 11:?> 12: <html>

10 Päivämäärien käsittely 13: <head> 14: <title><?php print "Calendar: $firstdayarray[month] 15: $firstdayarray[year]"?></title> 16: <head> 17: <body> 18: <form action="<? print $PHP_SELF?>" method="post"> 19: <select name="month"> 20: <?php 21: $months = Array("January", "February", "March", "April", 22: "May", "June", "July", "August", "September", 23: "October", "November", "December"); 24: for ( $x=1; $x <= count( $months ); $x++ ) 25: { 26: print "\t<option value=\"$x\""; 27: print ($x == $month)?" SELECTED":""; 28: print ">".$months[$x-1]."\n"; 29: } 30:?> 31: </select> 32: <select name="year"> 33: <?php 34: for ( $x=1980; $x<2010; $x++ ) 35: { 36: print "\t<option"; 37: print ($x == $year)?" SELECTED":""; 38: print ">$x\n"; 39: } 40:?> 41: </select> 42: <input type="submit" value="go!"> 43: </form> 44: <p> 45: <?php

11 15. Päivämäärien käsittely : $days = Array("Sunday", "Monday", "Tuesday", "Wednesday", 47: "Thursday", "Friday", "Saturday"); 48: print "<TABLE BORDER = 1 CELLPADDING=5>\n"; 49: foreach ( $days as $day ) 50: print "\t<td><b>$day</b></td>\n"; 51: for ( $count=0; $count < (6*7); $count++ ) 52: { 53: $dayarray = getdate( $start ); 54: if ( (($count) % 7) == 0 ) 55: { 56: if ( $dayarray[mon]!= $month ) 57: break; 58: print "</tr><tr>\n"; 59: } 60: if ( $count < $firstdayarray[wday] $dayarray[mon]!= $month ) 61: { 62: print "\t<td><br></td>\n"; 63: } 64: else 65: { 66: print "\t<td>$dayarray[mday] $dayarray[month]</td>\n"; 67: $start += ADAY; 68: } 69: } 70: print "</tr></table>"; 71:?> 72: </body> 73: </html> 74:

12 Päivämäärien käsittely Koska taulukko on indeksoitu viikonpäivien mukaan, käymme silmukassa läpi päivien nimet sisältävän taulukon ja tulostamme nimet omiin soluihinsa. Skriptin todellinen jekku tapahtuu viimeisessä for-lauseessa. Alustamme muuttujan nimeltä $count ja varmistamme, että silmukka päättyy 42 kierroksen jälkeen. Näin voimme olla varmoja siitä, että luomme tarpeeksi soluja päivämäärätietoja varten. Tuon silmukan sisällä muunnamme $start-muuttujan päivämäärätaulukoksi getdate()-funktiolla. Tulos laitetaan $dayarraytaulukkoon. Vaikka $start onkin kuukauden ensimmäinen päivä silmukan ensimmäisellä kierroksella, kasvatamme aikaleimaa 24 tunnilla jokaisen kierroksen yhteydessä. Testaamme sitten muuttujan $count ja arvon 7 jakojäännöksen. Tähän if-lauseeseen kuuluva koodi ajetaan vain silloin, kun $count on joko 0 tai arvon 7 monikerta. Tällä tavoin saamme selville, onko meidän lopetettava koko silmukka vai aloitettava uusi rivi. Kun olemme saaneet selville, että olemme ensimmäisellä kierroksella tai rivin lopussa, voimme mennä tekemään seuraavan testin. Jos $dayarray-taulukon mon-elementin arvo ei ole enää sama kuin $monthmuuttujan arvo, olemme lopettaneet. Muista, että $dayarray sisältää tietoa $start-aikaleimasta, jossa vuorostaan on nykyinen esitettävä kuukausi. Kun $start on jokin muu kuin nykyinen kuukausi, $dayarray[mon] sisältää jonkin muun arvon kuin sen, jonka käyttäjä sijoitti muuttujaan $month. Jakojäännöstestimme kertoo, milloin olemme rivin lopussa, ja koska kyseessä on uusi kuukausi, tiedämme, että koko silmukka tulee lopettaa. Jos olemme kuitenkin edelleen samassa kuukaudessa, jota tulostetaan, lopetamme vain rivin ja aloitamme uuden rivin. Seuraavassa if-lauseessa päätämme, kirjoitetaanko päivämäärätietoa soluun. Jokainen kuukausi ei ala Sunday-päivällä, joten on todennäköistä, että alussa on pari tyhjää solua. Vain harvat kuukaudet päättyvät jonkin rivin loppuun, joten joudumme todennäköisesti kirjoittamaan muutaman tyhjän solun ennen taulukon lopettamista. Olemme tallentaneet kuukauden ensimmäisen päivän tiedot $firstdayarray-taulukkoon. Nyt voimme erityisesti ottaa esille viikonpäivän numeron, joka on kohdassa $firstdayarray[wday]. Jos $count on pienempi kuin tuo numero, tiedämme, että emme ole vielä kohdanneet oikeaa solua kirjoittamista varten. Samalla lailla, jos $month-muuttuja ei enää ole sama kuin $dayarray[mon], tiedämme, että olemme kohdanneet kuukauden lopun (mutta emme rivin loppua, kuten päättelimme aiemmassa jakojäännöstestissämme). Kummassakin tapauksessa kirjoitamme tyhjän solun selaimelle. Viimeisessä else-lauseessa voimme sitten nautiskella. Olemme jo varmistaneet, että olemme oikean kuukauden sisällä ja että nykyinen päiväsarake vastaa päivää, joka on tallennettu kohtaan $firstdayarray[wday]. Nyt meidän tulee käyttää assosiatiivista $dayarray-taulukkoamme, jota olemme käyttäneet aiemmin silmukassa kirjoittamaan päivä ja kuukauden nimi soluun. Lopuksi meidän tulee kasvattaa $start-muuttujaa, joka sisältää aikaleiman. Me vain lisäämme siihen päivässä olevien sekuntien määrän (olemme määrittäneet tuon arvon skriptin alussa) ja olemme valmiita aloittamaan silmukan uudelleen käyttämällä $start-muuttujassa olevaa uutta arvoa testissämme. Skriptin tuottama tulostus on kuvassa KUVA 15.3 Kalenteriskripti.

13 15. Päivämäärien käsittely 281 Yhteenveto Tällä tunnilla opetimme sinua käyttämään time()-funktiota nykyisen päivämäärän ja ajan sieppaamiseen. Opit myös käyttämään getdate()-funktiota päivämäärätiedon erottamiseen aikaleimasta sekä date()- funktiota muuntamaan aikaleima muotoilluksi merkkijonoksi. Opit myös luomaan aikaleiman mktime()- funktiolla. Lisäksi sait tietää, kuinka päivämäärä testataan checkdate()-funktiolla. Lopuksi kävit läpi esimerkkiskriptin, joka soveltaa joitakin niistä työkaluista, joita olet käyttänyt. K&V K Onko saatavilla funktioita, joilla voidaan muuntaa kalentereita? V Kyllä. PHP tarjoaa käyttöön koko joukon funktioita, jotka kattavat vaihtoehtoiset kalenterit. Voit tutkia niitä PHP:n virallisesta manuaalista, joka on osoitteessa ref.calendar.php. Työpaja Työpaja tarjoaa pikakysymyksiä, joiden avulla voit kerrata läpikäytyä materiaalia. Yritä ymmärtää vastaukset ennen kuin jatkat seuraavaan lukuun. Vastaukset annetaan liitteessä A. Kysymyksiä 1. Kuinka saat esille UNIX:in aikaleiman, joka edustaa nykyistä päivämäärää ja aikaa? 2. Mikä funktio hyväksyy aikaleiman ja palauttaa assosiatiivisen taulukon, joka edustaa annettua päivämäärää? 3. Millä funktiolla voit muotoilla aikatietoa? 4. Kuinka saat otettua minkä tahansa ajankohdan aikaleiman? 5. Millä funktiolla voit tarkistaa, että päivämäärä on kelvollinen? Toiminta 1. Luo syntymäpäivän laskentaskripti. Kun lomakkeen kautta annetaan kuukausi, päivä ja vuosi, ohjelma tulostaa viestin, jossa kerrotaan, kuinka paljon syntymäpäivään on aikaa; aika annetaan päivinä, tunteina, minuutteina ja sekunteina.

14 Päivämäärien käsittely

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

OPPITUNTI 3 Ensimmäinen skripti

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

Lisätiedot

OPPITUNTI 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

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

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot C! : Moniulotteiset taulukot & Bittioperaatiot 15.3.2016 Agenda Pieni kertausharjoitus Moniulotteiset taulukot Esimerkki taulukoista Tauko (bittitehtävä) Binäärioperaatioista Esimerkki (vilkaistaan IP

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

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

Rakenteiset tietotyypit Moniulotteiset taulukot

Rakenteiset tietotyypit Moniulotteiset taulukot C! Rakenteiset tietotyypit Moniulotteiset taulukot 22.2.2018 Agenda Rakenteiset tietotyypit Vilkaisu 6. kierroksen tehtäviin Moniulotteiset taulukot Esimerkki Seuraava luento to 8.3. Ilmoittautuminen ohjelmointikokeeseen

Lisätiedot

OPPITUNTI 20 Tilan tallentaminen istuntofunktioilla

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

Lisätiedot

OPPITUNTI 10 Tiedostojen käsittely

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

Lisätiedot

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

May 24 to May 30, 2010

May 24 to May 30, 2010 May 24 to May 30, 2010 Week 21 DIopeksi - May 2010 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 31 5 6 Monday 24 Tuesday 25 Wednesday 26 Thursday 27 Friday 28 Saturday 29 Sunday

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

OPPITUNTI 16 Tiedon käsittely

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

Lisätiedot

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

Week 36 31.8.2015-6.9.2015

Week 36 31.8.2015-6.9.2015 Week 36 31.8.2015-6.9.2015 Monday 31.8. Tuesday 1.9. Wednesday 2.9. Thursday 3.9. Friday 4.9. Saturday 5.9. Sunday 6.9. 10:15 - TS127 Seminar in Telecommunication and Radio Engineering, Seminaari 12:15

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

JavaScript alkeet Esimerkkikoodeja moniste 2 (05.10.11 Metropolia)

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

Lisätiedot

OPPITUNTI 24 Esimerkki (Osa 2)

OPPITUNTI 24 Esimerkki (Osa 2) 24. Esimerkki (Osa 2) 429 OPPITUNTI 24 Esimerkki (Osa 2) Luvussa 23, "Esimerkki (Osa 1)" rakensimme ympäristön, joka sallii käyttäjien kirjoittautua palveluun ja lisätä kerho- ja tapahtumatiedot järjestelmään.

Lisätiedot

Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36

Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36 !!!!! Relaatiotietokannat ovat vallanneet markkinat tietokantojen osalta. Flat file on jäänyt siinä kehityksessä jalkoihin. Mutta sillä on kuitenkin tiettyjä etuja, joten ei se ole täysin kuollut. Flat

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

Week 46 9.11.2015-15.11.2015

Week 46 9.11.2015-15.11.2015 Week 46 9.11.2015-15.11.2015 Monday 9.11. Tuesday 10.11. Wednesday 11.11. Thursday 12.11. Friday 13.11. Saturday 14.11. Sunday 15.11. TF105 Finnish 1 Finnish 2 SÄ124 1 Seminar in Telecommunication and

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 13.9.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 13.9.2017 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

Toiminnallinen määrittely versio 1.2

Toiminnallinen määrittely versio 1.2 Toiminnallinen määrittely versio 1.2 Ryhmä 2 Sami Luomansuu, 168128, sami.luomansuu@tut.fi Panu Sjövall, 205401, panu.sjovall@tut.fi VERSIOHISTORIA Versio Päiväys Tekijät Tehdyt muutokset 1.0 02.10.12

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 14.9.2016 CS-A1111 Ohjelmoinnin peruskurssi Y1 14.9.2016 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi.

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi. Tehtävä 24. Kallioparkki veloittaa 2 euroa kolmelta ensimmäiseltä pysäköintitunnilta. Yli kolmen tunnin pysäköinnistä veloitetaan lisäksi 0.5 euroa jokaiselta yli menevältä tunnilta. Kuitenkin maksimiveloitus

Lisätiedot

St. Teresa Benedicta of the Cross Schedule Basic Listing

St. Teresa Benedicta of the Cross Schedule Basic Listing Second Week in March 2019 From Mon 03/04/2019 To Sun 03/10/2019 Ash Wednesday on Wed 03/06/2019 Fuller,Sherry Merk,Beth Eckstein,Ursula Brater,Kathie A. Dorr,Samuel Huber,Gary Ash Wednesday on Wed 03/06/2019

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

January 31 to February 6, 2011

January 31 to February 6, 2011 January 31 to February 6, 2011 Week 5 January 2011 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 Monday 31 Tuesday 1 Wednesday 2 Thursday 3 Friday 4 Saturday 5 Sunday

Lisätiedot

Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje

Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje Sisällysluettelo VIP Laajennettu raportointi... 3 Luo raportti Laajennetun raportoinnin työkaluilla... 4 Avaa Laajennettu raportointi... 4 Valitse

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 19.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 19.1.2011 1 / 39 Haluatko antaa palautetta luennoista? Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

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

Cal. 6A32 KÄYTTÖOHJE

Cal. 6A32 KÄYTTÖOHJE SEIKO-kello PERPETUAL CALENDAR Cal. 6A32 KÄYTTÖOHJE SNQ 003 P Onnittelemme Sinua tämän analogisen SEIKO -kvartsikellon Cal. 6A32 hankkimisesta. Lue nämä ohjeet huolella ennen kellon käyttöönottoa voidaksesi

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

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja. laskutus_index http://media.stadia.fi/~0700527/laskutus/laskutus_index.html Sivu 1/1 13.12.2007 Laskutus -tietokanta Henkilöiden tiedot: Lisää uuden henkilön tiedot Muuta tai poista henkilön tiedot Selaa

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

MAINOSTILA MAINOSTILA MAINOSTILA. Maisema 2011. Luonto 2011 MAINOSTILA. Koko: 300 x 400 mm. + mainostila

MAINOSTILA MAINOSTILA MAINOSTILA. Maisema 2011. Luonto 2011 MAINOSTILA. Koko: 300 x 400 mm. + mainostila Kalenterit 2011 Maisema 2011 Koko: 300 x 400 mm 12 lehteä, kansi + pohjapahvi vaikuttavat maisemakuvat tilaa omille merkinnöille 1022 Luonto 2011 Koko: 232 x 330 mm 12 lehteä, kansi + pohjapahvi raikkaat

Lisätiedot

ICT1TN004. Lomakkeet. Heikki Hietala

ICT1TN004. Lomakkeet. Heikki Hietala Lomakkeet Heikki Hietala Lomakkeet Lomakkeita käytetään keräämään tietoa käyttäjältä ja siirtämään se palvelimelle Lomakkeen luominen ei yksin riitä, vaan pitää luoda myös lomakkeenkäsittelijä Lomakkeen

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

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

Lomake kannattaa asemoida taulukkoon: table. Silloin selitteet ja kentät saadaan sarakkeisiin. Kenttien ulkoasu voidaan määritellä tyyleillä.

Lomake kannattaa asemoida taulukkoon: table. Silloin selitteet ja kentät saadaan sarakkeisiin. Kenttien ulkoasu voidaan määritellä tyyleillä. Lomakkeet Lomake kannattaa asemoida taulukkoon: table. Silloin selitteet ja kentät saadaan sarakkeisiin. Kenttien ulkoasu voidaan määritellä tyyleillä. Lomakkeen tyylit kannattaa määritellä omaan, eriliseen,

Lisätiedot

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5) Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,

Lisätiedot

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

OPPITUNTI 12 MySQL-tietokannan käyttö

OPPITUNTI 12 MySQL-tietokannan käyttö 12. MySQL-tietokannankäyttö 211 OPPITUNTI 12 MySQL-tietokannan käyttö PHP-kieleen kuuluu olennaisesti tietokantojen käyttämisen helppous. Tällä tunnilla keskitymme MySQLtietokantaan, mutta samanlaisia

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

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 12.9.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 12.9.2018 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 11.9.2019 CS-A1111 Ohjelmoinnin peruskurssi Y1 11.9.2019 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

SELECT-lauseen perusmuoto

SELECT-lauseen perusmuoto SQL: Tiedonhaku SELECT-lauseen perusmuoto SELECT FROM WHERE ; määrittää ne sarakkeet, joiden halutaan näkyvän kyselyn vastauksessa sisältää

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

OPPITUNTI 17 Merkkijonoilla työskentely

OPPITUNTI 17 Merkkijonoilla työskentely 17. Merkkijonoilla työskentely 301 OPPITUNTI 17 Merkkijonoilla työskentely World Wide Web on paljolti pelkkä tekstiympäristö. Olipa sisältö kuinka monipuolista tahansa, kaiken takana on aina HTML-koodi.

Lisätiedot

VINKKEJÄ CV-NETIN KÄYTTÖÖN. www.te-palvelut.fi

VINKKEJÄ CV-NETIN KÄYTTÖÖN. www.te-palvelut.fi VINKKEJÄ CV-NETIN KÄYTTÖÖN www.te-palvelut.fi TE-toimiston verkkoasiointiin pääset kirjautumaan www.te-palvelut.fi Oma asiointi Henkilöasiakas Kirjaudu sisään verkkopankkitunnuksilla ja hyväksy käyttöehdot

Lisätiedot

Verkkojulkaiseminen Minna Väisänen. HTML5-tehtävä

Verkkojulkaiseminen Minna Väisänen. HTML5-tehtävä Verkkojulkaiseminen Minna Väisänen HTML5-tehtävä Kirjoita Dreamweaverissa oheisen nettisivun koodi. Lisää xx-kohtiin omat tietosi. Kuvan nimi on joki.jpg. Ensin tehdään sivusto ja sitten yksittäinen sivu.

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

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

JYVÄSKYLÄN SEUDUN. 1. Sisältö * * Tähdellä merkityt kohdat ovat pakollisia. Sivun oikeassa yläkulmasta löytyy Lisää oma tapahtumasi.

JYVÄSKYLÄN SEUDUN. 1. Sisältö * * Tähdellä merkityt kohdat ovat pakollisia. Sivun oikeassa yläkulmasta löytyy Lisää oma tapahtumasi. JYVÄSKYLÄN SEUDUN Sivun oikeassa yläkulmasta löytyy Lisää oma tapahtumasi. Lomakkeella voit lisätä tapahtuman tapahtumiin, harrasteisiin tai molempiin. 1. Sisältö * * Tähdellä merkityt kohdat ovat pakollisia.

Lisätiedot

OPPITUNTI 14 Dynaamisten kuvien käsittely

OPPITUNTI 14 Dynaamisten kuvien käsittely 14. Dynaamisten kuvien käsittely 249 OPPITUNTI 14 Dynaamisten kuvien käsittely Tässä luvussa käsiteltävät funktiot liittyvät avoimeen lähdekirjastoon nimeltä GD. GD-kirjasto on joukko työkaluja, joiden

Lisätiedot

Palvelinpuolen ohjelmointi

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

Lisätiedot

OSA III PHP:n käyttö. Oppitunti

OSA III PHP:n käyttö. Oppitunti OSA III PHP:n käyttö Oppitunti 9. Lomakkeiden käsittely 10. Tiedostojen käsittely 11. DBM-funktioiden käyttö 12. MySQL-tietokantojen integrointi 13. Pintaa syvemmältä 14. Dynaamisten kuvien käsittely 15.

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 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

Tee html-sivu, jossa on yllä olevat kaksi taulukkoa.

Tee html-sivu, jossa on yllä olevat kaksi taulukkoa. TAULUKKO 1 Taulukoiden avulla voidaan informaatio esittää havainnollisesti esimerkiksi palstoitettuna. Lisäksi voidaan sijoittaa eri elementit haluttuihin paikkoihin (taulukkotaitto). Taulukko luodaan

Lisätiedot

Google-dokumentit. Opetusteknologiakeskus Mediamylly

Google-dokumentit. Opetusteknologiakeskus Mediamylly Google-dokumentit 1 2 3 Yleistä 1.1 Tilin luominen 4 1.2 Docs-päävalikkoon siirtyminen 7 Dokumentit-päävalikko 2.1 Kirjaudu Dokumentteihin 9 2.2 Lähetä tiedosto Google-dokumentteihin 11 2.3 Uuden asiakirjan

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

2 Konekieli, aliohjelmat, keskeytykset

2 Konekieli, aliohjelmat, keskeytykset ITK145 Käyttöjärjestelmät, kesä 2005 Tenttitärppejä Tässä on lueteltu suurin piirtein kaikki vuosina 2003-2005 kurssin tenteissä kysytyt kysymykset, ja mukana on myös muutama uusi. Jokaisessa kysymyksessä

Lisätiedot

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 8 XX00AA79-3013 TU12S2 Pasi Ranne 25.9.2013 25/9/13 Helsinki Metropolia University of Applied Sciences 1 Harjoitustyö Harjoitustöiden tilanne

Lisätiedot

OPPITUNTI 21 Palvelinympäristö

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

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5. 1. Toteuta Pythonilla seuraava ohjelma:

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5. 1. Toteuta Pythonilla seuraava ohjelma: Kerta 2 Kerta 3 Kerta 4 Kerta 5 Kerta 2 1. Toteuta Pythonilla seuraava ohjelma: 2. Tulosta Pythonilla seuraavat luvut allekkain a. 0 10 (eli, näyttää tältä: 0 1 2 3 4 5 6 7 8 9 10 b. 0 100 c. 50 100 3.

Lisätiedot

Oppilaan opas. Visuaaliviestinnän Instituutti VVI Oy. Versio 0.2 (2008-01-21)

Oppilaan opas. Visuaaliviestinnän Instituutti VVI Oy. Versio 0.2 (2008-01-21) Oppilaan opas Visuaaliviestinnän Instituutti VVI Oy Versio 0.2 (2008-01-21) Versio Päivämäärä Kuvaus 0.1 2005-01-16 Ensimmäinen versio. 0.2 2008-01-21 Korjattu kuvatiedostojen maksimiresoluutio ja muutamia

Lisätiedot

Makrojen mystinen maailma lyhyt oppimäärä

Makrojen mystinen maailma lyhyt oppimäärä Makrojen mystinen maailma lyhyt oppimäärä Makrot osana SAS-teknologiaa Yleiskuva Jouni Javanainen Aureolis lyhyesti Aureolis on jatkuvia Business Intelligence -palveluita tuottava asiantuntijaorganisaatio

Lisätiedot

Algoritmit 1. Demot Timo Männikkö

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

Lisätiedot

Python-ohjelmointi Harjoitus 5

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

Lisätiedot

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

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

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

Steven juhlavuosi 2008

Steven juhlavuosi 2008 Steven juhlavuosi 2008 Monday Tuesday Wednesday Thursday Friday Saturday Sunday 31 1 2 3 4 5 6 New Year (Uudenvuodenpäivä) Pixar synttärit Paavobileet / Takkakabinetti Epiphany (Loppiainen) 7 8 9 itunes

Lisätiedot

Helsingin yliopisto WebOodi 1 Opiskelijarekisteri Versio 3.2. Tenttityökalu

Helsingin yliopisto WebOodi 1 Opiskelijarekisteri Versio 3.2. Tenttityökalu Helsingin yliopisto WebOodi 1 Tenttityökalu Tenttityökalu on oiva väline laitos- ja tiedekuntatenttien tekemiseen. Esimerkiksi tiedekuntatentissä voi tenttiä samana päivänä kymmeniä eri opintojaksoja.

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

VINKKEJÄ CV-NETIN KÄYTTÖÖN. www.te-palvelut.fi

VINKKEJÄ CV-NETIN KÄYTTÖÖN. www.te-palvelut.fi VINKKEJÄ CV-NETIN KÄYTTÖÖN www.te-palvelut.fi TE-toimiston verkkoasiointiin pääset kirjautumaan www.te-palvelut.fi Oma asiointi Henkilöasiakas Kirjaudu sisään verkkopankkitunnuksilla ja hyväksy käyttöehdot

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

TAULUKON TEKEMINEN. Sisällysluettelo

TAULUKON TEKEMINEN. Sisällysluettelo Excel 2013 Taulukon tekeminen Sisällysluettelo TAULUKON TEKEMINEN TAULUKON TEKEMINEN... 1 Tietotyypit... 1 Tiedon syöttäminen taulukkoon... 1 Kirjoitusvirheiden korjaaminen... 2 Alueen sisällön tyhjentäminen...

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

MAINOSTILA MAINOSTILA MAINOSTILA. Maisema Luonto 2012 MAINOSTILA. Koko: 290 x 400 mm + mainostila

MAINOSTILA MAINOSTILA MAINOSTILA. Maisema Luonto 2012 MAINOSTILA. Koko: 290 x 400 mm + mainostila Kalenterit 2012 Maisema 2012 Koko: 290 x 400 mm 12 lehteä, kansi + pohjapahvi vaikuttavat maisemakuvat tilaa omille merkinnöille 1022 Luonto 2012 Koko: 232 x 330 mm 12 lehteä, kansi + pohjapahvi raikkaat

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

Backup Premium Pikakäyttöopas

Backup Premium Pikakäyttöopas Tietoja Memeo Backup Premium on yksinkertainen varmuuskopiointiratkaisu monimutkaiseen digitaaliseen maailmaan. Automaattisesti varmuuskopioimalla Memeo Backup Premium pystyy palauttamaan arvokkaat ja

Lisätiedot

Sähköpostitilin käyttöönotto

Sähköpostitilin käyttöönotto Sähköpostitilin käyttöönotto Versio 1.0 Jarno Parkkinen jarno@atflow.fi Sivu 1 / 16 1 Johdanto... 2 2 Thunderbird ohjelman lataus ja asennus... 3 3 Sähköpostitilin lisääminen ja käyttöönotto... 4 3.2 Tietojen

Lisätiedot

Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016)

Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016) Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016) Tietokoneavusteinen opetus -kurssilla opetetaan Adobe Flash CS6:n käyttämistä neljänä kertana: 11.3.2016, 15.3.2016, 18.3.2016 ja 1.4.2016. Harjoituskerroilla

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

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

Kun valitset Raportit, Lisää uusi, voit ryhtyä rakentamaan uutta raporttia alusta alkaen itse.

Kun valitset Raportit, Lisää uusi, voit ryhtyä rakentamaan uutta raporttia alusta alkaen itse. Sivu 1 / 7 22 UUDEN RAPORTIN LUOMINEN Kun valitset Raportit, Lisää uusi, voit ryhtyä rakentamaan uutta raporttia alusta alkaen itse. Tässä ohjeessa on kuvattu uuden haun tekemisen yleisempiä ominaisuuksia.

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

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

Kun tulostuksessa ilmenee muotoiluvirheitä

Kun tulostuksessa ilmenee muotoiluvirheitä Kun työ lähetetään tulostimeen, tulostinajurilla voidaan määrittää, että työ säilytetään muistissa. Kun pidätetty työ halutaan tulostaa, se valitaan tulostettavaksi tulostimen käyttöpaneelista. Lisätietoja

Lisätiedot