OPPITUNTI 18 Säännöllisten lausekkeiden käyttäminen

Koko: px
Aloita esitys sivulta:

Download "OPPITUNTI 18 Säännöllisten lausekkeiden käyttäminen"

Transkriptio

1 18. Säännöllisten lausekkeiden käyttäminen 319 OPPITUNTI 18 Säännöllisten lausekkeiden käyttäminen Säännölliset lausekkeet ovat tehokas keino tutkia ja muokata tekstiä. Ne mahdollistavat kuvioiden etsimisen merkkijonosta ja osaavat erottaa vastaavat kohdat joustavasti ja tarkasti. Ole kuitenkin varovainen, koska tehokkuutensa vuoksi ne ovat samalla myös hitaampia kuin tavalliset merkkijonofunktiot, joita tutkimme luvussa 17, "Merkkijonojen käsittely". Käytä siksi merkkijonofunktioita aina, kun nopeus ja tehokkuus ovat elintärkeitä. PHP tukee kahta säännöllisten lausekkeiden joukkoa. Sillä on joukko funktioita, jotka emuloivat PERL-kielen säännöllisiä lausekkeita ja funktiojoukko, joka tukee rajallisemmin POSIX-järjestelmän mukaisia säännöllisiä lausekkeita. Tutkimme tässä luvussa molempia lausekkeita. Tämän tunnin aiheita ovat seuraavat: Kuinka hakea kuvioita merkkijonoista säännöllisten lausekkeiden avulla Säännöllisten lausekkeiden syntaksin perusteet Kuinka korvata merkkijonojen teksti säännöllisten lausekkeiden avulla Kuinka työskennellä tehokkaammilla, PERL-yhteensopivilla säännöllisillä lausekkeilla

2 Säännöllisten lausekkeiden käyttäminen POSIXin mukaiset säännölliset lausekkeet POSIXin säännöllisten lausekkeiden funktiot mahdollistavat monimutkaistenkin kuvioiden hakemisen merkkijonoista ja kuvioiden korvaamisen. Niitä kutsutaan yleisesti vain säännöllisten lausekkeiden funktioiksi, mutta kutsumme niitä tässä kirjassa POSIXin säännöllisiksi lausekkeiksi erottaaksemme ne samanlaisista, mutta tehokkaammista PERL-yhteensopivista säännöllisistä lausekkeista; lisäksi nämä säännölliset lausekkeet ovat POSIXin laajennettujen säännöllisten lausekkeiden määrittelyn mukaisia. Säännöllinen lauseke on joukko symboleja, jotka vastaavat tekstissä olevaa merkkikuviota. Näiden lausekkeiden käyttämisen oppiminen on paljon enemmän kuin PHP:n säännöllisten lausekkeiden funktioiden argumenttien ja palautustyyppien oppiminen. Aloitamme funktioilla ja käytämme niitä esitelläksemme säännöllisten lausekkeiden syntaksin. Kuvioiden vastineiden hakeminen ereg()-funktiolla Funktio ereg() ottaa argumentikseen merkkijonon, joka edustaa kuviota sekä merkkijonon, joka edustaa tutkittavaa tekstiä ja vielä taulukkomuuttujan, johon haun tulokset laitetaan. Funktio palauttaa kokonaisluvun, joka edustaa vastanneiden merkkien määrää, jos kuvio löytyi merkkijonosta, tai muutoin arvon epätosi. Kokeilkaamme nyt etsiä merkkijonosta "Aardvark advocacy" kirjainyhdistelmää "aa": print ereg("aa","aardvark advocacy",$array); print "<br>$array[0]<br>"; // tulostus: // 2 // aa Kirjaimet "aa" löytyivät merkkijonosta "aardvark", joten ereg() palauttaa arvon 2, joka on vastanneiden merkkien määrä. Myös taulukon $array ensimmäinen alkio täytetään vastanneella merkkijonolla, joka sitten tulostetaan selaimelle. Saattaa näyttää oudolta, että tiedämme jo, että hakemamme kuvio on "aa". Meidän ei kuitenkaan tarvitse hakea pelkästään ennalta määritettyjä merkkejä. Voisimme käyttää yksittäistä pistettä (.), joka vastaa mitä tahansa merkkiä: print ereg("d.","aardvark advocacy",$array); print "<br>$array[0]<br>"; // tulostus: // 2 // dv Nyt d. vastaa kirjainta "d", jonka jälkeen voi olla mikä tahansa merkki. Emme tiedä etukäteen, mikä tuo toinen merkki voi olla, joten nyt alkion $array[0] arvosta on hyötyä.

3 18. Säännöllisten lausekkeiden käyttäminen 321 Määrän ilmaiseminen Kun merkkiä haetaan merkkijonosta, voidaan käyttää apuna määrän ilmaisijaa, joka määrittää, kuinka monta kertaa kyseisen merkin tulee toistua, jotta merkkijoukko vastaa hakua. Esimerkiksi kuvio a+ vastaa vähintään yhtä "a"-kirjainta, jota seuraa nolla tai useampi "a". Kokeilkaamme tätä: if ( ereg("a+","aaaa", $array) ) print $array[0]; // tulostaa "aaaa"; Huomaa, että tämä säännöllinen lauseke vastaa mitä tahansa merkkimäärää. Taulukko 18.1 luettelee määrän ilmaisijat, joita voi siis käyttää toistuvien (peräkkäisten) merkkien hakemisessa. Taulukko 18.1 Määrän ilmaisija toistuvien merkkien haussa Symboli Kuvaus Esimerkki Vastaa Ei vastaa * Nolla tai useampi esiintymä a* xxxx Vastaa kaikkea + Yksi tai useampi esiintymä a+ xaax xxxx? Nolla tai useampi esiintymä a? xaxx xaax {n} n esiintymää a{3} xaaa aaaa {n,} Ainakin n esiintymää a{3,} aaaa aaxx {,n} Enintään n esiintymää a{,2} xaax aaax {n1,n2} Ainakin n1 esiintymää, mutta enintään n2 esiintymää a{1,2} xaax xaaa Taulukossa 18.1 olevien aaltosulkujen sisällä käytettyjä numeroita kutsutaan rajoiksi. Rajoilla voidaan määrittää tarkasti, kuinka monta kertaa merkin tulisi toistua, jotta se vastaisi hakua. Ylä- ja alarajat tulee asettaa aaltosulkuihin kohdemerkin jälkeen (esimerkiksi a{1,2}). Kokeilkaamme nyt esimerkkiä. Kerho on määrittänyt jäsenkoodit jäsenilleen. Sopiva koodi sisältää 1-4 "y"- kirjainta, jota seuraa jokin aakkosnumeerinen merkki ja sen jälkeen luku 99. Kerho on pyytänyt meitä jäsentelemään taustalokia ja ottamaan esille jäsenkoodit aina kun mahdollista. $test = "the code is yyxgdh99 -- have you received my sub?"; if ( ereg( "y{1,4}.*99 ", $test, $array ) ) print "Found membership: $array[0]"; // tulostaa "Found membership: yyxgdh99 " Nyt jäsenkoodi alkaa kahdella "y"-kirjaimella, joita seuraa neljä isoa kirjainta. Lopussa on luku 99. Lauseke y{1,4} vastaa kahta "y"-kirjainta ja lauseke.* vastaa isoja kirjaimia (vastaa mitä tahansa määrää mitä tahansa merkkejä). Olemmeko jo valmiita? No emme suinkaan. Taataksemme, että vastannut kuvio päättyy lukuun 99, olemme vaatineet välilyönnin viimeiseksi merkiksi. Se palautetaan, kun vastine löytyy. Entäpä, jos tutkittava merkkijono on seuraavanlainen?

4 Säännöllisten lausekkeiden käyttäminen "my code is yyxgdh99 did you get my 1999 sub?" Koodimme tuottaisi nyt seuraavan jäsenkoodin "y code is yyxgdh99 did you get my 1999" Mikä meni vikaan? Säännöllinen lausekkeemme vastasi "y"-kirjainta merkkijonossa "my" ja sen jälkeen mitä tahansa määrää merkkejä, kunnes kohdattiin luku 99, jota seurasi välilyönti. Säännölliset lausekkeet ovat ehdottomia. Ne vastaavat kaikkia mahdollisia merkkejä mitä vain voivat. Siitä syystä lausekkeemmekin vastaa kaikkia mahdollisia merkkejä, kunnes eteen tulee vuosiluvusta 1999 irrotettu 99, joka ei kuitenkaan ole osa jäsenkoodia. Voisimme yrittää parantaa tilannetta hieman määrittämällä, että merkkien "y" ja "99" välissä olevien merkkien tulee olla todella aakkosnumeerisia eivätkä ne sisällä välilyöntejä. Itse asiassa voimme toteuttaa sen merkkiluokan avulla. Merkkien määrittäminen merkkiluokilla Toistaiseksi olemme joko hakeneet tiettyjä merkkejä tai mitä tahansa merkkejä. Merkkiluokilla voidaan haku kohdentaa tiettyyn merkkiryhmään. Merkkiluokka määritetään laittamalla halutut vastemerkit hakasulkuihin. Merkintä [ab] vastaa joko merkkiä 'a' tai merkkiä 'b'. Kun olet luonut merkkiluokan, voit käsitellä sitä ikään kuin merkkinä. Niinpä [ab]+ vastaa merkkijonoja "aaa", "bbb" tai "ababab". Voit käyttää myös merkkien sarjaa merkkiluokassa: [a-b] vastaa kaikkia pikkukirjaimia, [A-Z] kaikkia isoja kirjaimia ja [0-9] kaikkia numeroita. Voit yhdistellä arvoalueita ja yksittäisiä merkkejä yhteen merkkiluokkaan, jolloin esimerkiksi [a-z5] vastaa merkkijonoja, jotka alkavat numerolla 5 ja joita seuraa pikkukirjain. Voit myös kääntää merkkiluokan laittamalla hattumerkin (^) heti vasemmanpuoleisen hakasulun jälkeen: [^A- Z] vastaa mitä tahansa muuta paitsi isoja kirjaimia. Katsokaamme nyt esimerkkiä edellisestä jaksosta. Meidän tulee löytää 1-4 kertaa esiintyvä 'y', mikä tahansa aakkosnumeerinen merkki, joka voi esiintyä kuinka monta kertaa tahansa, sekä merkit "99". $test = "my code is yyxgdh99 did you get my 1999 sub?"; if ( ereg( "y{1,4}[a-za-z0-9]*99 ", $test, $array ) ) print "Found membership: $array[0]"; // tulostaa "Found membership: yyxgdh99 " Lähestymme nyt ratkaisua. Merkkiluokka, jonka lisäsimme, ei enää vastaa välilyöntejä, joten jäsenkoodi palautetaan nyt. Jos kuitenkin lisäämme pilkun jäsenkoodin perään tekstiimme, säännöllinen lausekkeemme epäonnistuu jälleen: $test = "my code is yyxgdh99, did you get my 1999 sub?"; if ( ereg( "y{1,4}[a-za-z0-9]*99 ", $test, $array ) )

5 18. Säännöllisten lausekkeiden käyttäminen 323 print "Found membership: $array[0]"; // lauseke ei onnistu tehtävässään Tämä johtuu siitä, että olemme vaatineet välilyönnin kuvion perään varmistaaksemme, että olemme jäsenkoodin lopussa. Niinpä, jos tekstissä on hakasuluissa oleva jäsenkoodi tai koodi on ennen heittomerkkiä tai pilkkua, epäonnistumme jälleen. Voimme muokata lausekettamme, jotta se vastaa kaikkia muita merkkejä paitsi aakkosnumeerisia merkkejä, jolloin pääsemme lähemmäksi ratkaisua: $test = "my code is yyxgdh99, did you get my 1999 sub?"; if ( ereg( "y{1,4}[a-za-z0-9]*99[^a-za-z0-9]", $test, $array ) ) print "Found membership: $array[0]"; // tulostaa "Found membership: yyxgdh99," Olemme nyt lähempänä, mutta ongelmia ilmenee vieläkin. Ensiksikin, olemme lisänneet pilkun palautettuun vastineeseen ja toiseksi vasteen saaminen epäonnistuu, jos jäsenkoodi on testattavan merkkijonon lopussa, koska se vaatii, että jäsenkoodin perään on laitettu merkki. Toisin sanoen meidän on löydettävä luotettava keino testata sanan viereiset merkit. Palaamme tähän ongelmaan myöhemmin. Atomeilla työskentely Atomi on kuvio, joka laitetaan hakasulkuihin (sitä kutsutaan usein myös osakuvioksi). Kun olet määrittänyt atomin, voit käsitellä sitä ikään kuin se olisi merkki tai merkkiluokka. Toisin sanoen voit vastata samaa kuviota niin monta kertaa kuin haluat käyttämällä taulukossa 18.1 esitettyä syntaksia. Seuraava koodi määrittää kuvion, joka sijoitetaan hakasulkuihin ja lisäksi vaaditaan, että atomin tulee esiintyä kaksi kertaan, jotta se vastaisi lauseketta: $test = "abbaxabbaxabbax"; if ( ereg( "([ab]+x){2}", $test, $array ) ) sprint "$array[0]"; // tulostaa "abbaxabbax" Lauseke [ab]+x vastaisi merkkijonoa "abbax", mutta ([ab]+x)2 vastaa merkkijonoa "abbaxabbax". Taulukon, joka viedään ereg()-funktiolle, ensimmäinen alkio sisältää kokonaisen vastemerkkijonon. Peräkkäiset alkiot sisältävät kunkin yksittäisen vasteatomin. Tämä tarkoittaa sitä, että voit päästä käsiksi vastanneen kuvion komponentteihin sekä koko vasteeseen. Seuraavassa koodissa haemme IP-osoitetta ja tulostamme osoitteen eri osat: $test = " "; if ( ereg( "([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)", $test, $array ) )

6 Säännöllisten lausekkeiden käyttäminen { foreach ( $array as $val ) print "$val<br>"; } // Tulostus: // // 158 // 152 // 1 // 58 Huomaa, että olemme käyttäneet escape-merkkiä (kenoviivaa (\)) lausekkeissamme. Sillä tavoin määritämme, että haluamme ohittaa pisteen erikoismerkityksen ja kohdella sitä tavallisena merkkinä. Näin tulee tehdä kaikkien sellaisten merkkien kohdalla, joilla on erikoismerkitys säännöllisissä lausekkeissa, mikäli tuo erikoismerkitys halutaan kiertää. Haarautumat Voit yhdistää kuvioita putkella ( ) luodaksesi haarautumia säännöllisiin lausekkeisiisi. Säännöllinen lauseke, jossa on kaksi haaraa, vastaa joko ensimmäistä tai toista haaraa. Näin saat vielä lisää joustavuutta lausekkeisiisi. Seuraava koodi vastaa joko merkkijonoa ".com" tai merkkijonoa ".co.uk": $test = "www.adomain.com"; if ( ereg( "\.com \.co\.uk", $test, $array ) ) print "it is a $array[0] domain<br>"; // tulostaa "it is.com domain" Säännöllisen lausekkeen ankkurointi Sen lisäksi, että voit määrittää kuvion, jonka haluat löytää merkkijonosta, voit myös päättää, mistä kohtaa merkkijonoa haluat tuon kuvion löytää. Testataksesi, onko kuvio merkkijonon alussa, käytä lausekkeessasi hattumerkkiä (^). Kuvio ^a vastaa merkkijonoa "apple", mutta ei merkkijonoa "banana". Testataksesi, että kuvio on merkkijonon lopussa käytä taalamerkkiä ($) lausekkeesi lopussa. Tällöin kuvio a$ vastaa merkkijonoa "flea", mutta ei merkkijonoa "dear". Jäsenkoodiesimerkkimme uudelleen Meillä on nyt työkaluja jäsenkoodiesimerkkiemme täydentämiseen. Muista, että olemme jäsennelleet sähköposteja erottaaksemme jäsenkoodit, jotka koostuvat 1-4 'y'-kirjaimesta, joita seuraa vaihteleva määrä aakkosnumeerisia merkkejä ja sen jälkeen merkkijono "99". Nykyinen ongelmamme on siinä, kuinka määritämme, milloin vastannut kuvio on sanan alueella. Emme voi käyttää välilyöntiä, koska sanan molemmin puolin voi olla välimerkkejä. Emme voi vaatia, että jokin ei-aakkosnumeerinen merkki olisi sanan erottimena, koska kuviomme voi aloittaa tai päättää merkkijonon.

7 18. Säännöllisten lausekkeiden käyttäminen 325 Nyt kun voimme luoda haaroja ja ankkuroida kuvioita, voimme vaatia, että jäsenkoodin perässä voi olla joko ei-aakkosnumeerinen merkki tai merkkijonon loppu. Voimme käyttää samaa logiikkaa määrittämään sanan, joka esiintyy aluekoodin alussa. Voimme käyttää myös hakasulkuja havaitsemaan jäsenkoodin, jonka perässä on välilyöntejä tai välimerkkejä: $test = "my code is yyxgdh99, did you get my 1999 sub?"; if ( ereg( "(^ [^a-za-z0-9])(y{1,4}[a-za-z0-9]*99)([^a-za-z0-9] $)", $test, A $array ) ) print "Found membership: $array[2]"; // tulostaa "Found membership: yyxgdh99" Kuten voit nähdä, säännölliset lausekkeet ovat vaikeaselkoisia, ainakin ensi silmäyksellä. Kun jaat ne osiin, saat kuitenkin selville niiden salaisuudet. Olemme nyt varmistaneet, että kuviomme on sanan alueella. Tämä tarkoittaa sitä, että sen edellä tulee olla ei-aakkosnumeerinen merkki tai sen tulee olla merkkijonon alku. Sen perässä tulee myös olla aakkosnumeerinen merkki tai merkkijonon loppu. Emme halua tallentaa edellä tai perässä olevia merkkejä, joten laitamme kuviomme hakasulkuihin. Siten voimme olla varmoja siitä, että haluttu kohde on taulukkomme ($array) toisena alkiona. Ereg() erottelee isot ja pienet kirjaimet. Jos et halua niin tapahtuvan, käytä eregi()-funktiota. Se ei erottele isoja ja pieniä kirjaimia, mutta toimii muutoin täysin samalla lailla kuin ereg(). Merkkijonojen korvaaminen egrep_replace()-funktiolla Toistaiseksi olemme etsineet kuvioita merkkijonosta muuttamatta merkkijonoa. Uusi egrep_replace()- funktio mahdollistaa kuvion hakemisen ja korvaamisen uudella osamerkkijonolla. Funktio ottaa kolme argumenttia: säännöllisen ilmauksen, tekstin, joka korvaa löydetyn kuvion ja muunnettavan tekstin. Funktio palauttaa merkkijonon, jos muokkaus on onnistunut. Jos haku ja korvaus eivät onnistu, palautetaan alkuperäinen kohdemerkkijono. Seuraavassa koodissa etsimme kerhon sihteerin nimeä ja korvaamme sen seuraavana olevan jäsenen nimellä: $test = "Our Secretary, Sarah Williams is pleased to welcome you."; print ereg_replace("sarah Williams", "Rev. P.W. Goodchild", $test); // tulostaa "Our Secretary, Rev. P.W. Goodchild is pleased to welcome you." Huomaa, että vaikka ereg() vastaa vain ensimmäistä löytämäänsä kuviota, se korvaa kaikki vastaavat esiintymät.

8 Säännöllisten lausekkeiden käyttäminen Taaksepäin viittaaminen egrep_replace()-funktiolla Taaksepäin viittaaminen mahdollistaa vastatun kuvion osan käyttämisen merkkijonon muuttamiseen. Tätä ominaisuutta käytettäessä tulee käyttää sulkumerkkejä ottamaan esille kaikki ne säännöllisen ilmauksen alkiot, joita halutaan käyttää. Näiden osakuvioiden kautta löydetty teksti on korvaavan merkkijonon käytettävissä, jos viittaat niihin kahdella kenoviivalla ja atomin numerolla (esimerkiksi \\1). Atomit numeroidaan järjestyksessä, ulommista sisään päin, vasemmalta oikealle alkaen arvosta \\1. Merkintä \\0 tallentaa koko vastineen. Seuraava koodi muuntaa päivämäärät, jotka ovat muodossa pp/kk/vv muotoon kk/pp/vv: $test = "25/12/2000"; print ereg_replace("([0-9]+)/([0-9]+)/([0-9]+)", "\\2/\\1/\\3", $test); // tulostaa "12/25/2000" Ereg_replace() tunnistaa isot ja pienet kirjaimet. Jos et halua niin tapahtuvan, voit käyttää Eregi_replace()-funktiota, joka ei tunnista isoja ja pieniä kirjaimia, mutta on muutoin samanlainen kuin ereg_replace(). Merkkijonojen pilkkominen split()-funktiolla Luvussa 17 kerrottiin, kuinka merkkijono voitiin jakaa osiin, jotka laitettiin taulukkoon funktiolla explode(). Kyseessä on tehokas menettely, mutta siinä voidaan antaa vain yksi merkkijoukko erottimeksi. PHP4:n split()-funktio mahdollistaa säännöllisten lausekkeiden hyödyntämisen määrittämään joustava erotin. Funktio ottaa argumenteikseen merkkijonon, joka edustaa erotinkuviota, ja lähdemerkkijonon. Se hyväksyy myös valinnaisen kolmannen argumentin, joka edustaa palautettavien alkioiden lukumäärää. Funktio palauttaa taulukon. Seuraava koodi käyttää säännöllistä lauseketta, jossa on kaksi erotinta; erottimena voi olla pilkku tai sana "and", jonka molemmin puolin on välilyönti: $text = "apples, oranges, peaches and grapefruit"; $fruitarray = split( ", and ", $text ); foreach ( $fruitarray as $item ) print "$item<br>"; // tulostus: // apples // oranges // peaches // grapefruit

9 18. Säännöllisten lausekkeiden käyttäminen 327 Perl-yhteensopivat säännölliset lausekkeet Jos siirryt Perl-maailmasta PHP:n käyttämiseen, tuntuvat POSIX-yhteensopivat lausekkeet varmaankin oudoilta. Hyvä uutinen onkin nyt se, että PHP4 tukee Perl-yhteensopivia säännöllisiä ilmauksia. Ne ovat jopa tehokkaampia kuin aiemmin esitetyt menettelyt. Tutkimme nyt näitä eroja. Kuvioiden hakeminen preg_match()-funktiolla Funktio preg_match() ottaa kolme argumenttia: säännöllisen lausekkeen, lähdemerkkijonon ja taulukkomuuttujan, johon vastineet tallennetaan. Funktio palauttaa arvon tosi, jos vastine löytyy, mutta muutoin arvon epätosi. Tämän funktion ja ereg_match()-funktion ero on säännöllisessä lausekkeessa. Perl-yhteensopivat säännölliset lausekkeet tulee laittaa erottimien sisälle. Yleensä nuo erottimet ovat kauttaviivoja, vaikkakin niiden sijaan voidaan käyttää mitä tahansa merkkiä. Seuraava koodi käyttää tätä funktiota hakemaan merkkijonosta merkkiä p, jota voi seurata mikä tahansa merkki, jonka jälkeen seuraa kirjain t: $text = "pepperpot"; if ( preg_match( "/p.t/", $text, $array ) ) print $array[0]; // tulostaa "pot" Perl-lausekkeet käytössä Oletuksena säännölliset ilmaukset koettavat vastata niin montaa merkkiä kuin mahdollista. Niinpä lauseke "/p.*t/" hakee ensimmäistä 'p'-merkkiä merkkijonosta ja vastaa niin montaa merkkiä kuin mahdollista kunnes viimeinen 't'-merkki kohdataan. Niinpä tämä säännöllinen lauseke vastaa koko testimerkkijonoa seuraavassa koodissa: $text = "pot post pat patent"; if ( preg_match( "/p.*t/", $text, $array ) ) print $array[0]; // tulostaa "pot post pat patent" Sijoittamalla kysymysmerkin (?) määrän ilmaisijan jälkeen voidaan Perl-lauseke pakottaa toimimaan kontrolloidummin. Lauseke "p.*t"

10 Säännöllisten lausekkeiden käyttäminen tarkoittaa "p-kirjainta, jota seuraa niin monta merkkiä kuin mahdollista ja sen jälkeen tulee kirjain t". Lauseke "p.*?t" tarkoittaa "p-kirjainta, jota seuraa niin vähän kirjaimia kuin mahdollista ja sen jälkeen tulee kirjain t" Seuraava koodi käyttää tätä tekniikkaa vastaamaan pienintä kirjainmäärää, jossa ensimmäisenä kirjaimena on 'p' ja viimeisenä kirjaimena 't': $text = "pot post pat patent"; if ( preg_match( "/p.*?t/", $text, $array ) ) print $array[0]; // tulostaa "pot" Perl-lausekkeet ja kenoviivalla merkityt merkit Joitakin merkkejä voidaan ohittaa Perl-lausekkeissa samalla lailla kuin merkkijonoissa. Esimerkiksi merkintä \t tarkoittaa tabulaattorimerkkiä ja \n uutta riviä. Myös Perl-lausekkeissa voidaan käyttää escape-merkkiä; tällöin lauseke vastaa kokonaista merkkityyppiä. Taulukko 18.2 luettelee nämä kenoviivamerkit. Taulukko 18.2 Escape-merkit, jotka vastaava merkkityyppejä Merkki Vastaa \d Mikä tahansa numero \D Mikä tahansa muu kuin numero \s Mikä tahansa tyhjä merkki (white space) \S Mikä tahansa muu kuin tyhjä merkki \w Mikä tahansa kirjain (myös alaviiva mukana) \W Mikä tahansa muu kuin kirjain Nämä escape-merkit voivat yksinkertaistaa säännöllisiä lausekkeita suunnattomasti. Ilman niitä joutuisit kirjoittamaan merkkiluokan rajat. Vertaa ereg()- ja preg_match()-funktioiden käyttöä kirjainten hakemisessa: ereg( "p[a-za-z0-9_]+t", $text, $array ); preg_match( "/p\w+t/, $text, $array );

11 18. Säännöllisten lausekkeiden käyttäminen 329 Perl-lausekkeet tukevat myös monia escape-merkkejä, jotka toimivat ankkureina. Ankkurit vastaavat sijainteja merkkijonossa vastaamatta mitään merkkejä. Nämä ankkurit luetellaan taulukossa Taulukko 18.3 Escape-merkit, jotka toimivat ankkureina Merkki Vastaa \A Merkkijonon alku \b Sanan rajat \B Ei sanan rajat \Z Merkkijonon loppu (ennen viimeistä rivinvaihtoa tai loppumerkkiä) \z Merkkijonon loppu (vain merkkijonon lopussa) Muista ongelmat, joita meillä oli sanarajojen hakemisessa jäsenkoodiesimerkissämme. Perlin mukaiset lausekkeet helpottavat tätä työtä. Vertaa ereg()- ja preg_match()-syntakseja, kun haetaan sanan merkkejä ja rajoja: ereg( "(^ [^a-za-z0-9_])(p[a-za-z0-9_]+t)([^a-za-z0-9_] $)", $text, $array ); preg_match( "\bp\w+t\b", $text, $array ); Esimerkkikoodissamme preg_match() vastaa merkkiä "p", mutta vain jos se on sanan rajana, jolloin sitä seuraa merkkejä ja lopuksi kirjain "t", mutta vain silloin, kun "t" on sanan rajamerkkinä. Sanan rajana oleva escape-merkki ei todellisuudessa vastaa kirjainta; se pelkästään vahvistaa, että raja esiintyy. Jos käyttäisit ereg_match()-funktiota, sinun tulisi muodostaa kuvio muille merkeille ja vastattava joko sitä tai merkkijonorajoja. Voit myös ohittaa kirjaimia muuttaaksesi niiden merkityksiä. Vastataksesi esimerkiksi kirjainta "." sinun tulisi lisätä kenoviiva sen eteen. Vasteiden etsiminen globaalisti preg_match_all()-funktiolla Eräs POSIX-mukaisten säännöllisten lausekkeiden ongelma on se, että on vaikeaa vastata jokaista kuvion esiintymää merkkijonossa. Niinpä käytettäessä ereg()-funktiota hakemaan sanoja, jotka alkavat kirjaimella "p" ja päättyvät kirjaimeen "s", löydetään vain ensimmäinen tapaus. Kokeilkaamme: $text = "I sell pots, plants, pistachios, pianos and parrots"; if ( ereg( "(^ [^a-za-z0-9_])(p[a-za-z0-9_]+s)([^a-za-z0-9_] $)", $text, $array ) ) { for ( $x=0; is_string( $array[$x] ); $x++ ) print "\$array[$x]: $array[$x]<br>\n"; } // tulostus:

12 Säännöllisten lausekkeiden käyttäminen // $array[0]: pots, // $array[1]: // $array[2]: pots // $array[3]:, Kuten odotimme, ensimmäinen löytömme "pots" tallennetaan $array-taulukon kolmanteen alkioon. Ensimmäinen alkio sisältää täydellisen vastineen, toinen taas välilyönnin ja neljäs pilkun. Saadaksesi jokaisen kuvion esille, meidän tulisi käyttää ereg_replace()-funktiota silmukassa poistamaan jokainen löydetty vaste ennen seuraavaa hakua. Voimme käyttää preg_match_all()-funktiota jokaisen vastineen löytämiseksi samalla kertaa kohdemerkkijonosta. Funktio ottaa argumenteikseen säännöllisen ilmauksen, lähdemerkkijonon, taulukkomuuttujan ja palauttaa arvon tosi, jos vaste löytyy. Taulukkomuuttuja täytetään moniulotteiseilla taulukolla, jonka ensimmäinen alkio sisältää jokaisen vasteen. Listaus 18.1 testaa merkkijonon käyttämällä preg_match_all()-funktiota; koodissa on kaksi for-silmukkaa, jotka tulostavat tuloksena olevan moniulotteisen taulukon. Listaus 18.1 Kuviovasteen hakeminen globaalisti preg_match_all()-funktiolla 1: <html> 2: <head> 3: <title>using preg_match_all() to match a pattern globally</title> 4: </head> 5: <body> 6: <?php 7: $text = "I sell pots, plants, pistachios, pianos and parrots"; 8: if ( preg_match_all( "/\bp\w+s\b/", $text, $array ) ) 9: { 10: for ( $x=0; $x< count( $array ); $x++ ) 11: { 12: for ( $y=0; $y< count( $array[$x] ); $y++ ) 13: print "\$array[$x][$y]: ".$array[$x][$y]."<br>\n"; 14: } 15: } 16: // Tulostus: 17: // $array[0][0]: pots 18: // $array[0][1]: plants 19: // $array[0][2]: pistachios 20: // $array[0][3]: pianos

13 18. Säännöllisten lausekkeiden käyttäminen : // $array[0][4]: parrots 22:?> 23: </body> 24: </html> Funktiolle preg_match_all() viedään $array-taulukko; siinä on vain yksi alkio, merkkijonotaulukko. Tämä taulukko sisältää testimerkkijonon kaikki sanat, jotka alkavat kirjaimella "p" ja päättyvät kirjaimeen "s". Funktio preg_match_all() täyttää moniulotteisen taulukon osakuvioiden vasteilla. Ensimmäinen alkio sisältää koko säännöllisen lausekkeen jokaisen vasteen. Kukin lisäalkio sisältää osamerkkijonojen vasteet. Niinpä seuraavassa kutsussa preg_match_all() $text = " , , "; preg_match_all( "/(\d+)-(\d+)-(\d+)/", $text, $array ); $array[0] tallentaa täysien vasteiden taulukon: $array[0][0]: $array[0][1]: $array[0][2]: $array[1] tallentaa ensimmäisen osamerkkijonon vastetaulukon: $array[1][0]: 01 $array[1][1]: 01 $array[1][2]: 01 $array[2] tallentaa toisen osamerkkijonon vastetaulukon: $array[2][0]: 05 $array[2][1]: 10 $array[2][2]: 03 ja niin edelleen.

14 Säännöllisten lausekkeiden käyttäminen Kuvioiden korvaaminen preg_replace()-funktiolla Tämä preg_replace()-funktio käyttäytyy täysin samalla tavalla kuin ereg_replace(), paitsi että sen kautta päästään käsiksi Perl-yhteensopivien säännöllisten lausekkeiden lisätoiminnallisuuteen. Funktio ottaa argumenteikseen säännöllisen ilmauksen, korvaavan merkkijonon ja lähdemerkkijonon. Jos vaste löytyy, se palauttaa muunnetun merkkijonon; muutoin se palauttaa lähdemerkkijonon kopion. Seuraava koodi muuntaa merkkijonon päivämäärät muodosta pp/mm/vv muotoon kk/pp/vv: $t = "25/12/99, 14/5/00"; $t = preg_replace( " \b(\d+)/(\d+)/(\d+)\b ", "\\2/\\1/\\3", $t ); print "$t<br>"; // tulostaa "12/25/99, 5/14/00" Huomaa, että käytimme edellä putkisymbolia ( ) erottimena. Sen ansiosta meidän ei tarvitse ohittaa kauttaviivan merkitystä kuviossamme. Funktio tukee viittauksia taaksepäin ssamalla lailla kuin ereg_replace()-funktio. Lähdemerkkijonon sijaan preg_match-funktiolle voidaan viedä merkkijonotaulukko ja se osaa muuntaa taulukon jokaisen merkkijonon. Tässä tapauksessa palautusarvo on muunnetut merkkijonot sisältävä taulukko. Voit viedä preg_match()-funktiolle myös taulukoita, joissa on säännöllisiä lausekkeita ja korvaavia merkkijonoja. Kutakin säännöllistä lauseketta käytetään lähdemerkkijonoon ja suoritetaan sitten vastaava korvaaminen. Seuraava koodi muuntaa päivämäärämuodot samalla lailla kuin ennenkin, mutta muuttaa myös kopio-oikeus-informaation lähdemerkkijonossa: $text = "25/12/99, 14/5/00. Copyright 1999"; $regs = array( " \b(\d+)/(\d+)/(\d+)\b ", "/([Cc]opyright) 1999/" ); $reps = array( "\\2/\\1/\\3", "\\1 2000" ); $text = preg_replace( $regs, $reps, $text ); print "$text<br>"; // tulostaa "12/25/99, 5/14/00. Copyright 2000" Luomme kaksi taulukkoa. Ensimmäinen, $regs, sisältää kaksi säännöllistä lauseketta ja toinen, $reps, sisältää korvaavat merkkijonot. Ensimmäinen $reps-taulukon alkio vastaa ensimmäistä $regs-taulukon alkiota jne. Jos korvaavien merkkijonojen taulukko sisältää vähemmän alkioita kuin säännöllisten lausekkeiden taulukko, tapahtuu vasteiden korvaaminen tyhjillä merkkijonoilla. Jos preg_replace()-funktiolle viedään säännöllisten lausekkeiden taulukko, mutta vain yksi korvaava merkkijono, käytetään tuota yhtä merkkijonoa kaikissa korvaamisissa. Muuntimet Perl-yhteensopivat säännölliset lausekkeet ovat joustavia; kuvioiden käyttötapa on muunneltavissa.

15 18. Säännöllisten lausekkeiden käyttäminen 333 Kuvion muuntaja on kirjain, joka sijoitetaan lopullisen erottimen jälkeen Perl-yhteensopivissa säännöllisissä lausekkeissa. Tuo muunnin muuttaa lausekkeen käyttäytymistä. Taulukko 18.4 luettelee Perl-lausekkeiden kuviomuuntimet. Taulukko 18.4 Perl-yhteensopivien säännöllisten lausekkeiden muuntimet Kuvio Kuvaus /i Isoja ja pieniä kirjaimia ei erotella /e Käsittelee preg_replace()-funktion korvaavaa merkkijonoa PHPkoodina /m Ankkurit $ ja ^vastaavat nykyisen rivin alkua ja loppua /s Vastaa rivinvaihtoja (piste ei normaalisti vastaa rivinvaihtoa) /x Merkkiluokkien ulkopuolella olevaa välilyöntiä ei vastata luettavuuden takia. Jos 'white space'-alueita halutaan vastata, tulee käyttää menettelyjä \s, \t tai \. /A Vastaa kuviota vain merkkijonon alussa (ei mukana Perlissä) /E Vastaa kuviota vain merkkijonon lopussa (ei mukana Perlissä) /U Tarkennus, jossa minimimäärä sallittuja vasteita löydetään (ei mukana Perlissä) Kuviomuuntimia voidaan myös yhdistellä. Saatat esimerkiksi haluta käyttää x-muunninta tekemään lausekkeista helppolukuisempia ja lisätä mukaan i-muuntimen, jolloin haussa ei erotella isoja ja pieniä kirjaimia. Esimerkiksi kuvio / b \S* t /ix vastaa merkkijonoja "bat" ja "BAT", mutta ei merkkijonoa "B AT". Huomaa, että itse kuviossa voi olla luettavuuden takia välilyöntejä; niitä ei oteta haussa huomioon. Muunninta m voidaan käyttää silloin, kun halutaan vastata ankkuroitua kuviota useilla tekstiriveillä. Ankkurikuviot ^ja $ vastaavat oletuksena koko merkkijonon alkua ja loppua. Seuraava koodi käyttää m- muunninta $-ankkurin käyttäytymisen muuttamiseen: $text = "name: matt\noccupation: coder\neyes: blue\n"; preg_match_all( "/^\w+:\s+(.*)$/m", $text, $array ); foreach ( $array[1] as $val ) print "$val<br>"; // tulostus: // matt // coder // blue Luomme säännöllisen lausekkeen, joka vastaa mitä tahansa sanaa, jota seuraa kaksoispiste ja mikä tahansa määrä välilyöntejä. Muunnin s on hyödyllinen, jos halutaan käyttää pistettä (.) vastaamaan merkkejä useilla riveillä. Seuraava koodi koettaa päästä käsiksi merkkijonon ensimmäiseen ja viimeiseen sanaan:

16 Säännöllisten lausekkeiden käyttäminen $text = "start with this line\nand you will reach\na conclusion in the end\n"; preg_match( "/^(\w+).*?(\w+)$/", $text, $array ); print "$array[1] $array[2]<br>"; Tämä koodi ei tulosta mitään. Vaikka säännöllinen lauseke löytää merkit merkkijonon alusta, ei piste (.) kuitenkaan vastaa rivinvaihtomerkkejä, jotka on upotettu tekstiin. Seuraavassa parannamme tilanteen s- muuntimen avulla: $text = "start with this line\nand you will reach\na conclusion in the end\n"; preg_match( "/^(\w+).*?(\w+)$/s", $text, $array ); print "$array[1] $array[2]<br>"; // tulostaa "start end" Muunnin e on erityisen tehokas. Se mahdollistaa preg_replace()-funktiossa olevan korvaavan merkkijonon käsittelyn ikäänkuin se olisi PHP-koodia. Voit viedä funktioille esimerkiksi taaksepäin viittauksia argumentteina tai käsitellä numeroluetteloita. Seuraavassa esimerkissä käytämme e-muunninta viemään päivämääränumerot funktiolle, joka palauttaa päivämäärän uudelleen muotoiltuna. <?php function convdate( $month, $day, $year ) { $year = ($year < 70 )?$year+2000:$year; $time = ( mktime( 0,0,0,$month,$day,$year) ); return date("l F Y", $time); } $dates = "3/18/99<br>\n7/22/00"; $dates = preg_replace( "/([0-9]+)\/([0-9]+)\/([0-9]+)/e", "convdate(\\1,\\2,\\3)", $dates); print $dates; // tulostaa: // Thursday 18 March 1999 // Saturday 22 July 2000?>

17 18. Säännöllisten lausekkeiden käyttäminen 335 Koodi löytää minkä tahansa kolmen numeron joukon, joiden erottimina on kauttaviivat, käyttämällä sulkumerkkejä sieppaamaan vastanneet numerot. Koska käytämme e-muunninta, voimme kutsua käyttäjän määrittelemää convdate()-funktiota korvaavan merkkijonon kautta ja viedä funktiolle kolme taaksepäin viittausta. Tuo convdate() yksinkertaisesti muokkaa numeroarvot luettavampaan päivämäärämuotoon. Yhteenveto Säännölliset lausekkeet ovat hyvin laaja aihe ja olemme todellakin nähneet vain osan niiden tehosta tällä tunnilla. Siitä huolimatta sinun tulisi nyt osata käyttää säännöllisiä lausekkeita hakemaan ja korvaamaan monimutkaisia kuvioita tekstistä. Sinun tulisi osata käyttää ereg()-funktiota hakemaan kuvioita merkkijonoista ja ereg_replace()-funktiota korvaamaan kaikki kuvioesiintymät merkkijonosta. Olemme myös opastaneet sinua hakemaan merkkialueita merkkiluokkien avulla, useita kuvioita määräilmaisimien avulla ja vaihtoehtoisia kuvioita haarautumien avulla. Sinun tulisi nyt osata myös erottaa osamerkkijonot ja viitata niihin taaksepäin viittauksilla. Perlyhteensopivien säännöllisten lausekkeiden avulla sinun tulisi osata käyttää escape-merkkejä ankkuroimaan kuvioita tai vastaamaan merkkityyppejä. Sinun tulisi osata myös käyttää muuntimia muuttamaan tapaa, jolla Perl-yhteensopivat lausekkeet toimivat. K&V K Perl-yhteensopivat säännölliset lausekkeet näyttävät hyvin tehokkailta. Mistä voin saada niistä lisätietoa? V PHP-manuaalista (http://www.php.net) saat lisätietoa. Hyödyllisiä paikkoja voivat olla myös erityisesti ja Tom Christiansenin artikkeli osoitteessa perlfaq6.html. 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. Mitä POSIX-funktiota käyttäisit vastaamaan kuviota merkkijonossa? 2. Millä säännöllisellä lausekkeella voisit hakea merkkijonosta kirjainta "b", kun kirjain voi esiintyä 1-6 kertaa? 3. Kuinka määrittäisit merkkialueen, joka on väliltä "d" ja "f"? 4. Kuinka tekisit kysymyksen 3 merkkialueesta käänteisen? 5. Millä syntaksilla voisit vastata joko mitä tahansa numeroa tai sanaa "tree"? 6. Mitä POSIX-lauseketta käyttäisit korvaamaan vastanneen kuvion? 7. Säännöllinen lauseke.*bc vastaa pikemminkin merkkijonoa "abc000000bc" kuin merkkijonoa "abc". Kuinka muuttaisit lauseketta niin, että se vastaisi vain ensimmäistä löydettyä esiintymää?

18 Säännöllisten lausekkeiden käyttäminen 8. Millaisella Perl-yhteensopivalla lausekkeella voisit vastata 'white space'.-merkkiä? 9. Millaisella Perl-yhteensopivalla funktiolla voisit vastata kuvion jokaista esiintymää? 10. Mitä muunninta käyttäisit Perl-yhteensopivassa funktiossa voidaksesi ohittaa haussa isojen ja pienten kirjainten erottelun? Toiminta 1. Käytä säännöllisiä lausekkeita erottamaan -osoitteita tiedostosta. Lisää ne taulukkoon ja tulosta selaimelle.

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Johdatus Ohjelmointiin

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

Lisätiedot

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

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

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Luento 5. Timo Savola. 28. huhtikuuta 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke

Lisätiedot

KESKI-SUOMEN MAAKUNNAN JA LÄHIKUNTIEN LUKIOIDEN TIETOTEKNIIKAN II KILPAILU

KESKI-SUOMEN MAAKUNNAN JA LÄHIKUNTIEN LUKIOIDEN TIETOTEKNIIKAN II KILPAILU KESKI-SUOMEN MAAKUNNAN JA LÄHIKUNTIEN LUKIOIDEN TIETOTEKNIIKAN II KILPAILU KESKI-SUOMEN MAAKUNNAN JA LÄHIKUNTIEN LUKIOIDEN FYSIIKAN, KEMIAN JA MATEMATIIKAN XXIII KILPAILUN OSANA 23.1.2014 Huom: Tehtävä

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

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille: Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

MITÄ JAVASCRIPT ON?...3

MITÄ JAVASCRIPT ON?...3 JavaScript MITÄ JAVASCRIPT ON?...3 YLEISTÄ JAVASCRIPTIN SYNTAKSISTA...3 KÄSKYSANAT JA MUUT VARATUT SANAT...3 MUUTTUJIEN, FUNKTIOIDEN JA LUOKKIEN NIMISSÄ...3 HTML-TAGEIHIN VIITTAAVISSA METODINIMISSÄ...3

Lisätiedot

Luonnolliset vs. muodolliset kielet

Luonnolliset vs. muodolliset kielet Luonnolliset vs. muodolliset kielet Luonnollisia kieliä ovat esim. 1. englanti, 2. suomi, 3. ranska. Muodollisia kieliä ovat esim. 1. lauselogiikan kieli (ilmaisut p, p q jne.), 2. C++, FORTRAN, 3. bittijonokokoelma

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

Merkkijonon tutkiminen matches-metodilla

Merkkijonon tutkiminen matches-metodilla Merkkijonon tutkiminen matches-metodilla String-luokkaan on määritelty seuraava metodi: public boolean matches(string regular_expression) Mihin käytetään String-luokan metodia public boolean matches(string

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

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b Pythonin Kertaus Cse-a1130 Tietotekniikka Sovelluksissa Versio 0.01b Listat 1/2 esimerkkejä listan peruskäytöstä. > lista=['kala','kukko','kissa','koira'] ['kala','kukko','kissa','koira'] >lista.append('kana')

Lisätiedot

VeRan laboratoriotietojen siirtoformaatti

VeRan laboratoriotietojen siirtoformaatti FCG Finnish Consulting Group Oy VERA TOIMINTAOHJEET Rev./pvm 1.03 Hyväksytty 30.4.2010 Sisältö Käyttö Vastuuhenkilö VeRan tiedonsiirtoformaatti Laboratoriot, jotka toimittavat tulokset suoraan VeRaan.

Lisätiedot

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

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

Lisätiedot

Hyvän salasanan tunnusmerkit Hyökkääjästä salasanan pitää näyttää satunnaiselta merkkijonolta. Hyvän salasanan luominen: Luo mahdollisimman pitkä

Hyvän salasanan tunnusmerkit Hyökkääjästä salasanan pitää näyttää satunnaiselta merkkijonolta. Hyvän salasanan luominen: Luo mahdollisimman pitkä Hyvä Salis Hyvän salasanan tunnusmerkit Hyökkääjästä salasanan pitää näyttää satunnaiselta merkkijonolta. Hyvän salasanan luominen: Luo mahdollisimman pitkä salasana. Jokainen salasanaan lisäämäsi kirjain

Lisätiedot

815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset

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

Lisätiedot

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

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

Lisätiedot

VERKKOSOVELLUSTEN OHJELMOINTI, JOHDATUS PHP:HEN

VERKKOSOVELLUSTEN OHJELMOINTI, JOHDATUS PHP:HEN VERKKOSOVELLUSTEN OHJELMOINTI, JOHDATUS PHP:HEN Tämän tehtävän tarkoitus on tutustuttaa ympäristöön sekä tutustuttaa wwwdokumenttien tekoon php:llä. Alkutoimet Varmistetaan, että verkkolevyllä on kansio

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

Osoitin ja viittaus C++:ssa

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

Lisätiedot

Zeon PDF Driver Trial

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

Lisätiedot

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

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

Lisätiedot

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

Vektorit. Vektorin luominen... 192 Vektorin tuominen näyttöön... 195 Vektorin koon ja alkioiden muokkaaminen... 195 Vektorin poistaminen...

Vektorit. Vektorin luominen... 192 Vektorin tuominen näyttöön... 195 Vektorin koon ja alkioiden muokkaaminen... 195 Vektorin poistaminen... 12 Vektorit Vektorin luominen... 192 Vektorin tuominen näyttöön... 195 Vektorin koon ja alkioiden muokkaaminen... 195 Vektorin poistaminen... 196 TI -86 M1 M2 M3 M4 M5 F1 F2 F3 F4 F5 192 Luku 12: Vektorit

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

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

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

Lisätiedot

KAAVAT. Sisällysluettelo

KAAVAT. Sisällysluettelo Excel 2013 Kaavat Sisällysluettelo KAAVAT KAAVAT... 1 Kaavan tekeminen... 2 Kaavan tekeminen osoittamalla... 2 Kaavan kopioiminen... 3 Kaavan kirjoittaminen... 3 Summa-funktion lisääminen... 4 Suorat eli

Lisätiedot

Muuttujien määrittely

Muuttujien määrittely Tarja Heikkilä Muuttujien määrittely Määrittele muuttujat SPSS-ohjelmaan lomakkeen kysymyksistä. Harjoitusta varten lomakkeeseen on muokattu kysymyksiä kahdesta opiskelijoiden tekemästä Joupiskan rinneravintolaa

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

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

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

Lisätiedot

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

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

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

Lisätiedot

Ongelma(t): Miten merkkijonoja voidaan hakea tehokkaasti? Millaisia hakuongelmia liittyy bioinformatiikkaan?

Ongelma(t): Miten merkkijonoja voidaan hakea tehokkaasti? Millaisia hakuongelmia liittyy bioinformatiikkaan? Ongelma(t): Miten merkkijonoja voidaan hakea tehokkaasti? Millaisia hakuongelmia liittyy bioinformatiikkaan? 2012-2013 Lasse Lensu 2 Ihmisen, eläinten ja kasvien hyvinvoinnin kannalta nykyaikaiset mittaus-,

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

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

Lisätiedot

PHP tehtävä 3 Atte Pekarinen TIKT13A 4.12.2014

PHP tehtävä 3 Atte Pekarinen TIKT13A 4.12.2014 PHP-kielen perusteet 3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä. Heredoc on ominaisuus PHP-koodaamisessa, jolla voidaan kirjoittaa pitkiä tekstejä

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

Automaatit. Muodolliset kielet

Automaatit. Muodolliset kielet Automaatit Automaatit ovat teoreettisia koneita, jotka käsittelevät muodollisia sanoja. Automaatti lukee muodollisen sanan kirjain kerrallaan, vasemmalta oikealle, ja joko hyväksyy tai hylkää sanan. Täten

Lisätiedot

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään Ohjelmointi Ohjelmoinnissa koneelle annetaan tarkkoja käskyjä siitä, mitä koneen tulisi tehdä. Ohjelmointikieliä on olemassa useita satoja. Ohjelmoinnissa on oleellista asioiden hyvä suunnittelu etukäteen.

Lisätiedot

Jukka Larja, Kim Nylund. 15. maaliskuuta 2005

Jukka Larja, Kim Nylund. 15. maaliskuuta 2005 Hirviön käyttöohje Jukka Larja, Kim Nylund 15. maaliskuuta 2005 1 Sisältö 1 Johdanto 3 1.1 Käsitteet...................................... 3 1.1.1 Muistiinpanot................................ 3 1.1.2

Lisätiedot

Talousmatematiikan perusteet, L3 Prosentti, yhtälöt Aiheet

Talousmatematiikan perusteet, L3 Prosentti, yhtälöt Aiheet Talousmatematiikan perusteet, L3 Prosentti, t Toisen Prosentti 1 Jos b on p% luvusta a, eli niin b = p 100 a a = perusarvo (Mihin verrataan?) (Minkä sadasosista on kysymys.) p = prosenttiluku (Miten monta

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

ICT1TN004. Skriptikielet. Heikki Hietala

ICT1TN004. Skriptikielet. Heikki Hietala Skriptikielet Heikki Hietala Skriptikielet Skriptikielet eli komentosarjakielet ovat ohjelmointikieliä, joilla automatisoidaan tehtäviä Toisaalta niitä käytetään käyttöjärjestelmälle ominaisia tehtäviä

Lisätiedot

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu Taulukot Taulukon määrittely ja käyttö Taulukko metodin parametrina Taulukon sisällön kopiointi toiseen taulukkoon Taulukon lajittelu esimerkki 2-ulottoisesta taulukosta 1 Mikä on taulukko? Taulukko on

Lisätiedot

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Hahmon etsiminen syotteesta (johdatteleva esimerkki) Hahmon etsiminen syotteesta (johdatteleva esimerkki) Unix-komennolla grep hahmo [ tiedosto ] voidaan etsia hahmon esiintymia tiedostosta (tai syotevirrasta): $ grep Kisaveikot SM-tulokset.txt $ ps aux

Lisätiedot

S-114.2720 Havaitseminen ja toiminta

S-114.2720 Havaitseminen ja toiminta S-114.2720 Havaitseminen ja toiminta Heikki Hyyti 60451P Harjoitustyö 2 visuaalinen prosessointi Treismanin FIT Kuva 1. Kuvassa on Treismanin kokeen ensimmäinen osio, jossa piti etsiä vihreätä T kirjainta.

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

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: Tietorakenteet, laskuharjoitus 10, ratkaisuja 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: SamaLuku(T ) 2 for i = 1 to T.length 1 3 if T [i] == T [i + 1] 4 return True 5 return

Lisätiedot

KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN

KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN -Mene osoitteeseen keskustanuoret.fi/user - Kirjoita saamasi käyttäjätunnus ja salasana - Klikkaa yllä olevaa piirisi logoa niin

Lisätiedot

Excel 2010 -funktiot. Sisällys

Excel 2010 -funktiot. Sisällys Excel 2010 -funktiot 5.11.2015 Markku Könkkölä J Y / Tietohallintokeskus Soluihin viittaaminen Sisällys Laskentakaavojen kirjoittaminen, kopiointi ja arvojen vakiointi Funktioiden käyttö: Laskenta Merkkijonot

Lisätiedot

5.2 Ensimmäisen asteen yhtälö

5.2 Ensimmäisen asteen yhtälö 5. Ensimmäisen asteen ytälö 5. Ensimmäisen asteen yhtälö Aloitetaan antamalla nimi yhtälön osille. Nyt annettavat nimet eivät riipu yhtälön tyypistä tai asteesta. Tarkastellaan seuraavaa yhtälöä. Emme

Lisätiedot

Harjoitus 1 -- Ratkaisut

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

Lisätiedot

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys Loogisia operaatioita - esimerkkejä Tänään on lämmin päivä ja perjantai Eilen satoi ja oli keskiviikko tai tänään on tiistai. On perjantai ja kello on yli 13 Ei ole tiistai tai ei sada. Ei pidä paikkaansa,

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python 31. tammikuuta 2009 Ohjelmointi Perusteet Pythonin alkeet Esittely Esimerkkejä Muuttujat Peruskäsitteitä Käsittely

Lisätiedot

Tietueet. Tietueiden määrittely

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

Lisätiedot

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Ohjelmiston testaus ja laatu. Testausmenetelmiä Ohjelmiston testaus ja laatu Testausmenetelmiä Testausmenetelmiä - 1 Testauksen menetelmien päälähestymistapoina ovat black-box testi testaaja ei voi tutkia lähdekoodia testaus perustuu sovellukselle suunnitteluvaiheessa

Lisätiedot

Outlook Web App ver 1.2

Outlook Web App ver 1.2 Outlook Web App ver 1.2 Kirjautuminen Kirjoita selaimen osoiteriville: o365.edu.hel.fi Kirjoita opetuksen verkon tunnuksesi ja salasanasi avautuvalla kirjautumissivulla. Hetken odottelun jälkeen esiin

Lisätiedot

Sen jälkeen Microsoft Office ja sen alta löytyy ohjelmat. Ensin käynnistä-valikosta kaikki ohjelmat

Sen jälkeen Microsoft Office ja sen alta löytyy ohjelmat. Ensin käynnistä-valikosta kaikki ohjelmat Microsoft Office 2010 löytyy tietokoneen käynnistävalikosta aivan kuin kaikki muutkin tietokoneelle asennetut ohjelmat. Microsoft kansion sisältä löytyy toimisto-ohjelmistopakettiin kuuluvat eri ohjelmat,

Lisätiedot

11.4. Context-free kielet 1 / 17

11.4. Context-free kielet 1 / 17 11.4. Context-free kielet 1 / 17 Määritelmä Tyypin 2 kielioppi (lauseyhteysvapaa, context free): jos jokainenp :n sääntö on muotoa A w, missäa V \V T jaw V. Context-free kielet ja kieliopit ovat tärkeitä

Lisätiedot

Sisällysluettelo 1 Johdanto Root, koko Opalan pääkäyttäjä

Sisällysluettelo 1 Johdanto Root, koko Opalan pääkäyttäjä OPALA Käyttöohje Sisällysluettelo 1 Johdanto 4 2 Root, koko Opalan pääkäyttäjä...5 2.1 Sisäänkirjautuminen.5 2.2 Käyttäjätunnukset 6 2.2.1 Pääkäyttäjätunnukset.6 2.2.1.1 Luo. 7 2.2.1.2 Muokka/poista 8

Lisätiedot

ASCII-taidetta. Intro: Python

ASCII-taidetta. Intro: Python Python 1 ASCII-taidetta All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/18cplpy to find out what to do.

Lisätiedot

Tietotyypit ja operaattorit

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

Lisätiedot

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin Raimo Nikkilä Aalto-yliopiston sähkötekniikan korkeakoulu - Automaation tietotekniikan tutkimusryhmä 17. tammikuuta 2013

Lisätiedot

kertaa samat järjestykseen lukkarissa.

kertaa samat järjestykseen lukkarissa. Opetuksen toistuva varaus ryhmällee TY10S11 - Tästä tulee pitkä esimerkki, sillä pyrin nyt melko yksityiskohtaisesti kuvaamaan sen osion mikä syntyy tiedon hakemisesta vuosisuunnittelusta, sen tiedon kirjaamiseen

Lisätiedot

Oma kartta Google Maps -palveluun

Oma kartta Google Maps -palveluun TAMPERE 1 (6) Oma kartta Google Maps -palveluun Google Maps palveluun on mahdollista luoda karttoja omilla paikkamerkeillä. Tilin luonti Google-palveluihin Tehdäksesi karttoja omilla paikkamerkinnöillä,

Lisätiedot

Tietorakenteet ja algoritmit - syksy 2015 1

Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä

Lisätiedot

Hieman linkkejä: http://cs.stadia.fi/~kuivanen/linux/kom.php, lyhyt ohje komentoriviohjelmointiin.

Hieman linkkejä: http://cs.stadia.fi/~kuivanen/linux/kom.php, lyhyt ohje komentoriviohjelmointiin. Linux-harjoitus 9 Linuxin mukana tulevat komentotulkit (mm. bash, tcsh, ksh, jne ) sisältävät ohjelmointikielen, joka on varsin tehokas ja ilmaisuvoimainen. Tähän yhdistettynä unix-maailmasta tutut tehokkaat

Lisätiedot

JavaScript alkeet Esimerkkikoodeja moniste 2

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

Lisätiedot

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

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

Lisätiedot

Aktivoi dokumentin rakenteen tarkistamiseksi piilomerkkien näyttäminen valitsemalla valintanauhasta Kappale-kohdasta painike Näytä kaikki.

Aktivoi dokumentin rakenteen tarkistamiseksi piilomerkkien näyttäminen valitsemalla valintanauhasta Kappale-kohdasta painike Näytä kaikki. Asiakirjan valmistelu Aktivoi dokumentin rakenteen tarkistamiseksi piilomerkkien näyttäminen valitsemalla valintanauhasta Kappale-kohdasta painike Näytä kaikki. Tarkista, ettei dokumentissa ole peräkkäisiä

Lisätiedot

OPPITUNTI 19 Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla

OPPITUNTI 19 Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla 19. Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla 337 OPPITUNTI 19 Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla HTTP on tilaton protokolla. Se merkitsee sitä, että jokainen

Lisätiedot

Paikka-aikakaavio PlanMan Project

Paikka-aikakaavio PlanMan Project Paikka-aikakaavio PlanMan Project 30.4.2014 Sisältö 1. Paikka-elementin käyttöönotto... 2 2. Tehtävien lisääminen paikka-aikakaavioon... 4 3. Tehtävien ulkoasun muokkaus paikka-aikakaaviossa... 5 4. Tehtävien

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

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011 TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 31. maaliskuuta 2011 Sisällys Sisällys Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti

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

1 PHP-sovelluksen toiminta

1 PHP-sovelluksen toiminta AMVA48-49 HTML ja PHP-ohjelmointi, 2 ov Yleistä kurssista HTMLperusteita PHP-kielen perusrakenteet HTMLlomakkeen käsittely Tiedoston käsittely Evästeiden käyttö Istunnon hallinta Oppimistehtävät PHP-KIELEN

Lisätiedot

ADMIN. Käyttöopas 08Q4

ADMIN. Käyttöopas 08Q4 ADMIN Käyttöopas 08Q4 Sisällysluettelo Uuden käyttäjän lisääminen...3 Käyttäjän poistaminen...3 Oikeudet...4 Käyttäjäasetukset...6 Aktiviteetin määritys...8 Aktiviteetin määrittely...8 Kenttämäärittelyt...9

Lisätiedot

811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu

811312A Tietorakenteet ja algoritmit, 2014-2015, Harjoitus 7, ratkaisu 832A Tietorakenteet ja algoritmit, 204-205, Harjoitus 7, ratkaisu Hajota ja hallitse-menetelmä: Tehtävä 7.. Muodosta hajota ja hallitse-menetelmää käyttäen algoritmi TULOSTA_PUU_LASKEVA, joka tulostaa

Lisätiedot

Webforum. Version 15.1 uudet ominaisuudet. Päivitetty: 2015-03-28

Webforum. Version 15.1 uudet ominaisuudet. Päivitetty: 2015-03-28 Webforum Version 15.1 uudet ominaisuudet Päivitetty: 2015-03-28 Sisältö Tietoja tästä dokumentista... 3 Yleistä... 4 Dokumentit... 5 Uudet versiot dokumenttien katseluohjelmista ipadille... 5 Dokumenttien

Lisätiedot

Kielioppia: toisin kuin Javassa

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

Lisätiedot

SeaMonkey pikaopas - 1

SeaMonkey pikaopas - 1 SeaMonkey pikaopas SeaMonkey on ilmainen ja yksinkertainen www-sivujen teko-ohjelma. Sillä on kätevää koostaa yksinkertaisia sivuja ilman, että täytyy tietää jotain HTML-koodista. Tämä opas esittelee sivuston

Lisätiedot

SQL Buddy JAMK Labranet Wiki

SQL Buddy JAMK Labranet Wiki Page 1 of 9 SQL Buddy JAMK Labranet Wiki Sisällysluettelo Yleistä SQL Buddy:sta kotisivu :http://sqlbuddy.com/ SQL Buddy on kevyt hallintatyökalu MySQL-tietokannalle. Järjestelmävaatimukset Serverin vaatimukset

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

Wordpress- ohje nettisivujen laadintaan

Wordpress- ohje nettisivujen laadintaan Wordpress- ohje nettisivujen laadintaan Leo Suomela 2 / 13 Sisältö 1 Johdanto... 3 2 Aloitusnäkymä... 3 3 Ohjausnäkymä... 4 4 Sivujen lisäys... 6 5 Etusivun määritys... 9 6 Teeman muokkaus... 13 3 / 13

Lisätiedot

Uuden Peda.netin käyttöönotto

Uuden Peda.netin käyttöönotto Sisällysluettelo Uuden Peda.netin käyttöönotto...2 Sisään- ja uloskirjautuminen...2 OmaTila...3 Peda.netin yleisrakenne...4 Työvälineet - Sivut...5 Sivun lisääminen omaan profiiliin:...5 Sivun poistaminen

Lisätiedot

Määrittelydokumentti

Määrittelydokumentti Määrittelydokumentti Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (alkukesä) Sami Korhonen 014021868 sami.korhonen@helsinki. Tietojenkäsittelytieteen laitos Helsingin yliopisto 23. kesäkuuta

Lisätiedot

Työvälineohjelmistot KSAO Liiketalous 1

Työvälineohjelmistot KSAO Liiketalous 1 KSAO Liiketalous 1 Osat Tiedosto voidaan jakaa osiin ja jokainen osa muotoilla erikseen. Osa voi olla miten pitkä tahansa, yhdestä kappaleesta kokonaiseen tiedostoon. Osanvaihto näkyy näytöllä vaakasuorana

Lisätiedot

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

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

Lisätiedot

Numeropelissä 3x3-ruudukko sisältää luvut 1, 2,, 9. Tehtäväsi on järjestää ruudukko näin:

Numeropelissä 3x3-ruudukko sisältää luvut 1, 2,, 9. Tehtäväsi on järjestää ruudukko näin: A Numeropeli Numeropelissä 3x3-ruudukko sisältää luvut 1, 2,, 9. Tehtäväsi on järjestää ruudukko näin: 1 2 3 4 5 6 7 8 9 Voit jokaisella siirrolla vaihtaa keskenään kaksi vierekkäistä lukua vaaka- tai

Lisätiedot

FrontPage 2000 - Näkymät

FrontPage 2000 - Näkymät FrontPage 2000 - Näkymät FrontPagessa on kuusi erilaista näkymää sivustoon. Sivunäkymä Tässä näkymässä luodaan sivut eli näkymä vastaa paljolti Wordin tekstinkäsittelyohjelman näkymää. Tässä on myös muokattava

Lisätiedot

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD)

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) Ohjelmointikäytännöt 21/3/11 Mikko Vuorinen Metropolia Ammattikorkeakoulu 1 Sisältö 1) Mitä on hyvä koodi? 2) Ohjelmointikäytäntöjen merkitys? 3) Koodin asettelu

Lisätiedot

OFFICE 365 PIKAOHJE 14.01.2014

OFFICE 365 PIKAOHJE 14.01.2014 OFFICE 365 PIKAOHJE 14.01.2014 SISÄLTÖ 1. O365 AVAAMINEN 3 2. KIRJAUTUMINEN 3 3. SALASANAN VAIHTAMINEN 5 4. SÄHKÖPOSTIN KANSIO RAKENNE 6 5. POISSAOLOVIESTI 7 6. SÄHKÖPOSTIN ALLEKIRJOITUS 8 7. YHTEYSTIEDOT

Lisätiedot

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:

Lisätiedot

1 Kannat ja kannanvaihto

1 Kannat ja kannanvaihto 1 Kannat ja kannanvaihto 1.1 Koordinaattivektori Oletetaan, että V on K-vektoriavaruus, jolla on kanta S = (v 1, v 2,..., v n ). Avaruuden V vektori v voidaan kirjoittaa kannan vektorien lineaarikombinaationa:

Lisätiedot

Äärettömät sanat. Aleksi Saarela. Matematiikan ja tilastotieteen laitos ja FUNDIM-keskus, Turun yliopisto. A. Saarela (TY) Äärettömät sanat 1 / 28

Äärettömät sanat. Aleksi Saarela. Matematiikan ja tilastotieteen laitos ja FUNDIM-keskus, Turun yliopisto. A. Saarela (TY) Äärettömät sanat 1 / 28 Äärettömät sanat Aleksi Saarela Matematiikan ja tilastotieteen laitos ja FUNDIM-keskus, Turun yliopisto A. Saarela (TY) Äärettömät sanat 1 / 28 1 Sanojen kombinatoriikan taustaa 2 Esimerkkejä äärettömistä

Lisätiedot