OPPITUNTI 10 Tiedostojen käsittely

Koko: px
Aloita esitys sivulta:

Download "OPPITUNTI 10 Tiedostojen käsittely"

Transkriptio

1 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 kaikissa todellisissa ohjelmointikielissä. PHP ei ole poikkeus vaan tarjoaa käyttöön useita funktioita, joilla tiedostoja voidaan käsitellä suoraviivaisesti. Tällä tunnilla opit seuraavia asioita: Kuinka tiedostoja sisällytetään asiakirjoihin Kuinka tiedostoja ja kansioita testataan Kuinka tiedosto avataan ennen käyttöä Kuinka tietoa luetaan tiedostoista Kuinka tiedostoon kirjoitetaan ja lisätään tietoa Kuinka tiedosto lukitaan Kuinka kansioilla työskennellään

2 Tiedostojen käsittely Tiedoston sisällyttäminen include()-funktiolla Tiedostoja voi liittää PHP-asiakirjoihin include()-funktiolla. Noissa tiedostoissa oleva PHP-koodi voidaan suorittaa aivan kuin se olisi osa pääasiakirjaa. Tämä voi olla hyödyllistä, kun samaa kirjastokoodia laitetaan useille sivuille. Jos olet luonut vaikkapa lopetusfunktion, voit tietenkin liittää sen jokaiseen asiakirjaan, jossa sitä tarvitaan. Tietenkin tuollainen funktio tulee testata perusteellisesti ennen liittämisiä. Muutoin työmäärä kasvaa suureksi, kun virhettä korjataan eri paikoissa. Kun teet saman include()-funktiolla, riittää, kun korjaat alkuperäisen funktion koodin. Oma funktio sijoitetaan yhdelle sivulle ja sisällytetään muille sivuille tarpeen mukaan. PHP:n include()-funktio ottaa yhden argumentin, joka on polku sijoitettavaan tiedostoon. Listaus 10.1 luo yksinkertaisen PHP-skriptin, joka käyttää include()-funktiota tulostamiskoodin sisällyttämiseen. Listaus 10.1 Tiedoston sijoittaminen include()-funktiolla 3: <title>listing 10.1 Using include()</title> 4: </head> 5: <body> 6: <?php 7: include("eg10.2.php"); 8:?> 9: </body> 10: </html> Listauksen 10.1 include()-funktio sijoittaa asiakirjaan tiedoston eg10.2.php, jonka sisältö on listauksessa Listauksemme tulostaa nyt tekstin I have been included!!, mikä voi tuntua kummalliselta, koska olemme sisällyttäneet pelkän tekstin PHP-koodilohkoon. Eikö siinä synny virhettä? Itse asiassa sisällytettävän tiedoston sisältö esitetään oletuksena HTML-koodattuna. Jos haluat suorittaa sisällytettävän tiedoston PHP-koodin, sinun on laitettava mukaan PHP-koodin alku- ja lopputagit. Listauksissa 10.3 ja 10.4 edellistä esimerkkiä muutetaan niin, että sisällytettävän tiedoston PHP-koodi suoritetaan. Listaus 10.2 Tiedosto, joka sisällytettiin listaukseen : I have been included!! Listaus 10.3 Toisessa tiedostossa olevan PHP-koodin suorittaminen include()- funktiolla 3: <title>listing 10.3 Using include to execute PHP in another file</title>

3 10. Tiedostojen käsittely 175 4: </head> 5: <body> 6: <?php 7: include("eg10.4.php"); 8:?> 9: </body> 10: </html> Listaus 10.4 Sisällytettävä tiedosto, jossa on PHP-koodi 1: <?php 2: print "I have been included!!<br>"; 3: print "But now I can add up =".(4 + 4); 4:?> PHP4:ssä voivat sisällytettävät tiedostot palauttaa arvon samalla lailla kuin funktiot. Palauttamiseen käytetään return-lausetta samalla lailla kuin funktioiden kohdalla. Mitään muuta HTML:ää ei enää sisällytetä. Listauksissa 10.5 ja 10.6 käytetään sisällyttämisessä tiedostoa, joka palauttaa arvon; tuo arvo sijoitetaan muuttujaan. Listaus 10.5 Sisällytettävä tiedosto palauttaa arvon, joka otetaan talteen 3: <title>listing 10.5 Using include() to execute PHP and assign the return Avalue</title> 4: </head> 5: <body> 6: <?php 7: $addresult = include("eg10.6.php"); 8: print "The include file returned $addresult"; 9:?> 10: </body> 11: </html>

4 Tiedostojen käsittely Listaus 10.6 Sisällytettävä tiedosto 1: <?php 2: $retval = ( 4 +4 ); 3: return $retval; 4:?> 5: Tätä HTML:ää ei esitetä, koska se on return-lauseen jälkeen. PHP3:ssa return-lause toimii vain ollessaan funktiossa. Listauksen 10.6 koodi aiheuttaisi virheen PHP3-ympäristössä. Voit käyttää include()-lausetta ehdollisessa lauseessa ja viitattua tiedostoa voi lukea vain, jos ehto on täytetty. Esimerkiksi seuraavan koodin include()-funktiota ei koskaan kutsuta: $test = false; if ( $test ) { include( "a_file.txt" ); // ei sisällytetä } Jos käytät include()-lausetta silmukassa, se korvataan viitatun tiedoston sisällöllä joka kerta, kun include()-lause suoritetaan. Tuo sisältö suoritetaan jokaisen kutsun yhteydessä. Listaus 10.7 havainnollistaa edellä kerrottua. Nyt include() viittaa jokaisella kierroksella eri tiedostoon. Listaus 10.7 Include() silmukan sisällä 3: <title>listing 10.7 Using include() within a loop</title> 4: </head> 5: <body> 6: <?php 7: for ( $x = 1; $x<=3; $x++ ) 8: { 9: $incfile = "incfile$x".".txt";

5 10. Tiedostojen käsittely : print "Attempting include $incfile<br>"; 11: include( "$incfile" ); 12: print "<p>"; 13: } 14:?> 15: </body> 16: </html>.black plate (183,1) Kun listaus 10.7 ajetaan, se sisällyttää kolmen eri tiedoston sisällön itseensä. Noiden tiedostojen nimet ovat "incfile1.txt", "incfile2.txt" ja "incfile3.txt". Olettaen, että kukin näistä tiedostoista sisältää pelkästään oman nimensä tulostamisen, tulostus näyttää seuraavalta: This is incfile1.txt Attempting to include incfile2.txt This is incfile2.txt Attempting to include incfile3.txt PHP sisältää myös require()-lauseen, joka suorittaa samanlaisen toiminnon. Voit sijoittaa require()-lauseen silmukkaan kuten include()- lauseenkin. Tuloksena oleva tiedosto ei kuitenkaan voi palauttaa arvoa. Tiedostojen testaaminen Ennen kuin aloitamme tiedostojen ja hakemistojen käsittelyn, on hyvä opiskella aihetta enemmän. PHP4 tarjoaa käyttöön useita funktioita, joilla voidaan saada selville tiedostoja koskevaa tietoa. Tässä osassa käsittelemme tärkeimpiä noista funktioista. Tiedoston olemassaolon testaaminen file_exists()-funktiolla Funktiolla file_exists() voidaan tarkistaa, onko jokin tiedosto olemassa. Se vaatii merkkijonon, joka edustaa kohteena olevan tiedoston tiedostopolkua. Jos tiedosto löytyy, funktio palauttaa arvon true; muutoin funktio palauttaa arvon false. if ( file_exists("test.txt") ) print "The file exists!";

6 Tiedostojen käsittely Tiedosto vai hakemisto? Voit varmistaa, että testattava kohde on tiedosto eikä hakemisto käyttämällä is_file()-funktiota. Tuo funktio vaatii argumentikseen tiedostopolun ja palauttaa totuusarvon: if ( is_file( "test.txt" ) ) print "test.txt is a file!"; Joskus on hyvä testata, onko kohde hakemisto. Se tehdään is_dir()-funktiolla, joka ottaa argumentikseen hakemistopolun ja palauttaa totuusarvon: if ( is_dir( "/tmp" ) ) print "/tmp is a directory"; Tiedoston tilan tarkistaminen Kun tiedät, että tiedosto on olemassa, voit ottaa selville enemmänkin tiedostoa koskevaa tietoa. Yleensä tiedostoa luetaan, se ajetaan tai siihen kirjoitetaan. PHP voi auttaa kaikissa noissa toiminnoissa. Se, onko tiedosto luettavissa, selvitetään is_readable()-funktiolla. UNIX-järjestelmissä voit ehkä nähdä tiedoston, mutta et silti pääse lukemaan sitä, koska oikeutesi eivät riitä sen lukemiseen. Funktio is_readable() ottaa argumentikseen tiedostopolun ja palauttaa totuusarvon: if ( is_readable( "test.txt" ) ) print "test.txt is readable"; Funktiolla is_writable() voidaan tarkistaa, voiko tiedostoon kirjoittaa. Se ottaa argumentikseen tiedostopolun ja palauttaa totuusarvon: if ( is_writable( "test.txt" ) ) print "test.txt is writable"; Funktio is_executable() kertoo, voiko tiedoston suorittaa. Tiedoston suorittaminen voi riippua käyttöoikeuksista tai tiedostotunnuksesta. Tämäkin funktio ottaa argumentikseen tiedostopolun ja palauttaa totuusarvon: if ( is_executable( "test.txt" ) print "test.txt is executable";

7 10. Tiedostojen käsittely 179 Tiedoston koon määrittäminen filesize()-funktiolla Funktio nimeltä filesize() kertoo argumenttina olevan tiedoston koon tavuina. Se palauttaa arvon false, jos ongelmia ilmenee. print "The size of test.txt is.. "; print filesize( "test.txt" ); Tiedostoa koskevan päivämäärätiedon selvittäminen Joskus ohjelmissa halutaan tietää, milloin tiedostoon on viimeksi kirjoitettu tai milloin sitä on viimeksi käsitelty. PHP tarjoaa käyttöön useita funktioita, jotka antavat noita tietoja. Se, milloin tiedostoa tutkittiin viimeksi, saadaan selville fileatime()-funktiolla. Se ottaa argumentikseen tiedostopolun ja palauttaa päivämäärän, jolloin tiedostoa viimeksi käsiteltiin. Tiedoston käsitteleminen tarkoittaa joko tiedoston lukemista tai tiedostoon kirjoittamista. Näiden funktioiden palauttamat päivämäärät ovat UNIX-muodossa: päivämäärää kuvaava luku on sekuntimäärä, joka on kulunut päivämäärästä Esimerkeissämme käytämme date()-funktiota kääntämään tuon sekuntiluvun sopivampaan muotoon. Saat lisätietoa päivämääräfunktioista luvusta 15, Päivämäärien käsittely. $atime = fileatime( "test.txt" ); print "test.txt was last accessed on "; print date("d d M Y g:i A", $atime); // Tulostusnäyte: Thu 13 Jan :26 PM Voit ottaa selville tiedoston muutospäivämäärän filemtime()-funktiolla, joka ottaa argumentikseen tiedostopolun ja palauttaa päivämäärän. Tiedoston muuttaminen tarkoittaa tiedoston sisällön muokkaamista jollakin tavalla. $mtime = filemtime( "test.txt" ); print "test.txt was last modified on "; print date("d d M Y g:i A", $mtime); // Tulostusnäyte: Thu 13 Jan :26 PM] PHP mahdollistaa myös asiakirjan muutosajan tarkistamisen filectime()-funktiolla. UNIX-järjestelmissä tiedoston muutosaika asetetaan, kun tiedoston sisältöä muokataan tai kun tehdään muutoksia tiedoston oikeuksiin tai omistajuuteen. Toisilla alustoilla filectime() palauttaa luomispäivämäärän. $ctime = filectime( "test.txt" ); print "test.txt was last changed on "; print date("d d M Y g:i A", $ctime);

8 Tiedostojen käsittely // Tulostusnäyte: Thu 13 Jan :26 PM] Funktio, joka suorittaa useita tiedostotestejä Listaus 10.8 luo funktion, joka käyttää kaikkia edellä kuvattuja testausfunktioita. Listaus 10.8 Funktio tulostaa useiden tiedostotestien tulokset 3: <title>listing 10.8 A function to output the results of multiple file tests</ title> 4: </head> 5: <body> 6: <?php 7: $file = "test.txt"; 8: outputfiletestinfo( $file ); 9: function outputfiletestinfo( $f ) 10: { 11: if (! file_exists( $f ) ) 12: { 13: print "$f does not exist<br>"; 14: return; 15: } 16: print "$f is ".(is_file( $f )?"":"not ")."a file<br>"; 17: print "$f is ".(is_dir( $f )?"":"not ")."a directory<br>"; 18: print "$f is ".(is_readable( $f )?"":"not ")."readable<br>"; 19: print "$f is ".(is_writable( $f )?"":"not ")."writable<br>"; 20: print "$f is ".(is_executable( $f )?"":"not ")."executable<br>"; 21: print "$f is ".(filesize($f))." bytes<br>"; 22: print "$f was accessed on ".date( "D d M Y g:i A", fileatime( $f ) )."<br>"; 23: print "$f was modified on ".date( "D d M Y g:i A", filemtime( $f ) )."<br>";

9 10. Tiedostojen käsittely : print "$f was changed on ".date( "D d M Y g:i A", filectime( $f ) )."<br>"; 25: } 26: 27:?> 28: </body> 29: </html> Huomaa, että käytimme ehto-operaattoria tiivistämään koodia. Katsokaamme yhtä tuollaista lausetta hieman tarkemmin: print "$f is ".(is_file( $f )?"":"not ")."a file<br>"; Käytämme nyt is_file()-funktiota ehto-operaattorin ehtolausekkeessa. Jos se palauttaa arvon true, palautetaan tyhjä merkkijono. Muutoin palautetaan merkkijono Not. Ehto-operaattorin palauttama merkkijono lisätään tulostettavaan tekstiin. Seuraavat lauseet olisivat kuvanneet asiaa selvemmin, mutta koodi ei olisi ollut yhtä tiivistä: $is_it = is_file( $f )?"":"not "; print "$f is $isit"."a file"; Voisimme tietenkin käyttää selvempiä if-lauseita, mutta kuvittele, kuinka suureksi funktion koodi olisi kasvanut, jos olisimme käyttäneet seuraavanlaista koodia: if ( is_file( $f ) ) print "$fi is a file<br>"; else print "$f is not a file<br>"; Koska kaikkien näiden lähestymistapojen tulos on aivan sama, on kyseessä pitkälti makuasia. Tiedostojen luominen ja tuhoaminen Jos tiedosto ei ole vielä olemassa, voit luoda sen touch()-funktiolla. Funktio ottaa argumentikseen tiedostopolun ja luo tiedoston, jos sellaista ei ole olemassa. Jos tiedosto on jo olemassa, sisältöä ei tuhota, mutta muutospäivämäärä päivitetään ajan tasalle.

10 Tiedostojen käsittely touch("myfile.txt"); Voit tuhota olemassa olevan tiedoston unlink()-funktiolla. Sekin ottaa argumentikseen tiedostopolun: unlink("myfile.txt"); Kaikki funktiot, jotka luovat, tuhoavat, lukevat tai muokkaavat tiedostoja tai kirjoittavat niihin, vaativat UNIXjärjestelmissä, että tiedostoihin ja hakemistoihin on oikeat oikeudet. Tiedoston avaaminen kirjoittamista, lukemista tai lisäämistä varten Ennen kuin alat käyttää tiedostoa, sinun on avattava se. Avaaminen tapahtuu tiettyä toimintoa varten. Toiminto voi olla lukeminen, kirjoittaminen tai molemmat. PHP tarjoaa fopen()-funktion tiedoston avaamiseen; se ottaa argumenteikseen tiedostopolun ja avausmoodin. Yleisimmät avausmoodit ovat lukeminen ( r ), kirjoittaminen ( w ) ja lisääminen ( a ). Funktio palauttaa kokonaisluvun, jota voidaan käyttää myöhemmin tiedoston käsittelyyn. Tuo kokonaisluku tunnetaan tiedosto-osoittimena ja se tulisi sijoittaa muuttujaan. Tiedoston avaaminen lukemista varten tapahtuu seuraavalla koodilla: $fp = fopen( "test.txt", 'r' ); Voisit käyttää seuraavaa koodia avataksesi tiedoston kirjoittamista varten: $fp = fopen( "test.txt", 'w' ); Tiedosto avataan lisäämistä varten (tällöin uutta tietoa lisätään tiedoston loppuun) seuraavalla koodilla: $fp = fopen( "test.txt", 'a' ); Funktiot palauttavat arvon false, jos tiedostoa ei voitu avata. On aina hyvä testata tuo palautusarvo, joka kertoo, onko avaaminen onnistunut. Seuraavassa on testikoodi: if ( $fp = fopen( "test.txt", "w" ) ) { // tee jotain $fp-muuttujalla }

11 10. Tiedostojen käsittely 183 Tai voit käyttää loogista operaattoria lopettamaan suoritus, jos kohdetiedostoa ei voitu avata: ( $fp = fopen( "test.txt", "w" ) ) or die ("Couldn't open file, sorry"); Jos fopen() palauttaa arvon true, lausekkeen loppuosaa ei jäsennellä eikä die()-funktiota (joka palauttaa viestin selaimelle ja lopettaa skriptin) koskaan suoriteta. Muutoin or-operaattorin oikealla puolella oleva lauseke jäsennellään ja die()-funktio suoritetaan. Olettaen, että kaikki on hyvin ja siirryt työskentelemään avatulla tiedostollasi, sinun tulisi muistaa sulkea se, kun tiedoston käsittely päättyy. Sulkeminen voidaan tehdä kutsumalla fclose()-funktiota, joka vaatii argumentikseen tiedosto-osoittimen, joka on saatu työssään onnistuneelta fopen()-funktiolta: fclose( $fp ); Tiedostojen lukeminen PHP tarjoaa käyttöön useita funktioita, joilla luetaan tietoa tiedostoista. Ne mahdollistavat lukemisen tavuittain, riveittäin tai jopa merkeittäin. Rivien lukeminen fgets()- ja feof()-funktioilla Kun olet avannut tiedoston lukemista varten, haluat yleensä lukea sitä rivi riviltä. Tiedostosta luetaan sisältö rivi kerrallaan fgets()-funktiolla, joka ottaa argumentikseen fopen()-funktion palauttaman tiedostoosoittimen. Toinen argumentti on kokonaisluku, joka määrittää luettavien tavujen määrän, jos rivin tai tiedoston loppua ei kohdata ennen sitä. Funktio lukee tiedostoa, kunnes se kohtaa rivinvaihtomerkin ( \n ), argumenttina oleva tavujen määrä täyttyy tai tiedoston loppu saavutetaan. $line = fgets( $fp, 1024 ); // $fp on fopen()-funkt. palautt. tiedosto-osoitin Vaikka voitkin lukea rivejä fgets()-funktiolla, sinun on kerrottava sille, milloin tiedosto loppuu. Tiedoston loppu saadaan selville feof()-funktiolla, joka palauttaa arvon true, kun tiedoston loppu saavutetaan. Tämäkin funktio ottaa argumentikseen tiedosto-osoittimen: feof( $fp ); // $fp on fopen()-funkt. palautt. tiedosto-osoitin Nyt sinulla on tarpeeksi tietoa lukeaksesi tiedostoa rivi kerrallaan, kuten listauksessa 10.9 tehdäänkin.

12 Tiedostojen käsittely Listaus 10.9 Tiedoston avaaminen ja lukeminen rivi riviltä 3: <title>listing 10.9 Opening and reading a file line by line</title> 4: </head> 5: <body> 6: <?php 7: $filename = "test.txt"; 8: $fp = fopen( $filename, "r" ) or die("couldn't open $filename"); 9: while (! feof( $fp ) ) 10: { 11: $line = fgets( $fp, 1024 ); 12: print "$line<br>"; 13: } 14:?> 15: </body> 16: </html> Kutsumme fopen()-funktiota ja käytämme or-operaattoria varmistamaan, että skripti lopetetaan, jos tiedostoa ei voi lukea. Avaaminen lukemistarkoituksessa yleensä epäonnistuu, jos tiedostoa ei ole olemassa tai tiedoston oikeudet (UNIX-järjestelmissä) eivät salli lukemista. Lukeminen tapahtuu while-lauseessa; siinä testiehtona on feof()-funktion kutsu. Kun tiedosto on loppunut, feof() palauttaa arvon true. Itse silmukassa fgets() erottaa rivin tiedostosta (tai 1024 tavua). Tulos sijoitetaan $line-muuttujaan ja tulostetaan selaimelle; tulostuksessa lisätään <BR>-tagi mukaan parantamaan luettavuutta. Vaihtelevan tietomäärän lukeminen tiedostosta fread()-funktiolla Tiedostoa joudutaan joskus lukemaan muullakin tavalla kuin rivi kerrallaan. Joskus tavujen määrä olisi hyvä antaa heti ja siihen sopii fread()-funktio hyvin: se ottaa argumenteikseen tiedosto-osoittimen ja luettavien tavujen määrän. Se palauttaa tietoa joko tarvittavan määrän tai tiedoston loppuun saakka. $chunk = fread( $fp, 16 ); Listaus on aikaisempi esimerkkimme muutettuna siten, että se lukee rivien sijaan 16 tavun lohkoja.

13 10. Tiedostojen käsittely 185 Listaus Tiedoston lukeminen fread()-funktiolla 3: <title>listing Reading a file with fread()</title> 4: </head> 5: <body> 6: <?php 7: $filename = "test.txt"; 8: $fp = fopen( $filename, "r" ) or die("couldn't open $filename"); 9: while (! feof( $fp ) ) 10: { 11: $chunk = fread( $fp, 16 ); 12: print "$chunk<br>"; 13: } 14:?> 15: </body> 16: </html> Vaikka fread() antaakin sinun määritellä tiedon määrän, se ei salli alkuosoitteen määrittämistä. Sen voit asettaa manuaalisesti fseek()-funktiolla, joka mahdollistaa nykyisen aloituspisteen määrittämisen. Se ottaa argumentikseen tiedosto-osoittimen ja siirtymän tiedoston alusta (tavuina): fseek( $fp, 64 ); Listaus käyttää fseek()- ja fread()-funktiota ja lukee puoli tiedostoa kerrallaan. Listaus Tiedostossa liikkuminen fseek()-funktiolla 3: <title>listing Moving around a file with fseek()</title> 4: </head> 5: <body> 6: <?php 7: $filename = "test.txt";

14 Tiedostojen käsittely 8: $fp = fopen( $filename, "r" ) or die("couldn't open $filename"); 9: $fsize = filesize($filename); 10: $halfway = (int)( $fsize / 2 ); 11: print "Halfway point: $halfway <BR>\n"; 12: fseek( $fp, $halfway ); 13: $chunk = fread( $fp, ($fsize - $halfway) ); 14: print $chunk; 15:?> 16: </body> 17: </html>.black plate (191,1) Listauksessa puolitettiin ensin tiedoston koko, joka saatiin filesize()-funktiolla. Saatua arvoa käytettiin fseek()-funktion toisena argumenttina; nyt funktio siirsi lähtöpisteeksi tiedoston puolivälin. Esimerkin lopussa fread() lukee tiedoston toisen puoliskon ja tiedot tulostetaan selaimelle. Merkkien lukeminen tiedostosta fgetc()-funktiolla Fgetc()-funktio on samanlainen kuin fgets(),paitsi että se palauttaa yksittäisen merkin jokaisen kutsun yhteydessä. Koska merkin koko on yksi tavu, fgetc() ei vaadi pituusargumenttia. Sille viedään pelkästään tiedosto-osoitin: $char = fgetc( $fp ); Listaus luo silmukan, joka lukee tiedoston test.txt merkin kerrallaan ja tulostaa kunkin merkin omalle rivilleen. Listaus Tiedoston lukeminen merkki kerrallaan fgetc()-funktiolla 3: <title>listing 10.12: fgetc()</title> 4: </head> 5: <body> 6: <?php 7: $filename = "test.txt"; 8: $fp = fopen( $filename, "r" ) or die("couldn't open $filename"); 9: while (! feof( $fp ) )

15 10. Tiedostojen käsittely : { 11: $char = fgetc( $fp ); 12: print "$char<br>"; 13: } 14:?> 15: </body> 16: </html> Tiedostoon kirjoittaminen ja lisääminen Tiedostoon kirjoittaminen ja siihen lisääminen ovat samantapaisia toimintoja. Ero on vain fopen()-funktion kutsussa. Kun tiedosto avataan kirjoittamista varten, annetaan avaamismoodiksi w, kun kutsutaan fopen()-funktiota: $fp = fopen( "test.txt", "w" ); Kirjoittaminen tapahtuu tiedoston alkuun. Jos tiedostoa ei ole olemassa, se luodaan. Jos tiedosto on jo olemassa, sen mahdollinen sisältö tuhotaan ja sisältö korvataan uudella tiedolla. Kun tiedostoon lisätään, se avataan moodilla a : $fp = fopen( "test.txt", "a" ); Kirjoittaminen tapahtuu tiedoston loppuun, aiemman sisällön perään. Tiedostoon kirjoittaminen fwrite()- tai fputs()-funktiolla Funktio fwrite() ottaa argumenteikseen tiedosto-osoittimen ja merkkijonon, jonka se kirjoittaa tiedostoon. Samalla lailla toimii myös fputs(). fwrite( $fp, "hello world" ); fputs( $fp, "hello world" ); Tiedostoihin kirjoittaminen on noin suoraviivaista. Listaus käyttää fwrite()-funktiota tiedostoon kirjoittamiseen. Sitten sama tehdään fputs()-funktiolla.

16 Tiedostojen käsittely Listaus Tiedostoon kirjoittaminen ja lisääminen 3: <title>listing Writing and appending to a file</title> 4: </head> 5: <body> 6: <?php 7: $filename = "test.txt"; 8: print "Writing to $filename<br>"; 9: $fp = fopen( $filename, "w" ) or die("couldn't open $filename"); 10: fwrite( $fp, "Hello world\n" ); 11: fclose( $fp ); 12: print "Appending to $filename<br>"; 13: $fp = fopen( $filename, "a" ) or die("couldn't open $filename"); 14: fputs( $fp, "And another thing\n" ); 15: fclose( $fp ); 16:?> 17: </body> 18: </html>.black plate (193,1) Tiedostojen lukitseminen flock()-funktiolla Edellä esitetyt tekniikat, joilla tiedostoja luettiin tai muutettiin, toimivat hyvin yksittäisen käyttäjän kohdalla. Todellisuudessa käyttäjiä saattaa kuitenkin olla useitakin samalla kertaa. Kuvittele, mitä tapahtuu, jos kaksi käyttäjää suorittaa skriptin, joka kirjoittaa tiettyyn tiedostoon juuri samalla hetkellä. Tiedosto saattaa vahingoittua. PHP4 tarjoaa käyttöön flock()-funktion, joka ehkäisee edellä kerrotun uhan toteutumisen. Funktio lukitsee tiedoston varoittaen näin muita prosesseja kirjoittamasta tiedostoon tai lukemasta tiedostoa niin kauan kuin toinen prosessi käsittelee tiedostoa. Funktio ottaa argumentikseen tiedosto-osoittimen ja kokonaisluvun, joka edustaa lukitsemistyyppiä. Taulukko 10.1 luettelee kolme eri lukitustapaa, joita voidaan kohdistaa tiedostoon. Taulukko 10.1 flock()-funktion kokonaislukuargumentit Kokonaisluku Lukitustyyppi Kuvaus 1 Jaettu Sallii muiden prosessien lukea tiedostoa, mutta ei kirjoittaa tiedostoon (käytetään luettaessa tiedostoa) 2 Laajennettu Estää muita prosesseja lukemasta tiedostoa tai kirjoittamasta tiedostoon (käytetään kirjoitettaessa tiedostoon) 3 Vapautus Vapauttaa jaetun tai laajennetun lukon

17 10. Tiedostojen käsittely 189 flock()-funktiota tulisi käyttää heti fopen()-funktion jälkeen. Lukitus tulee sitten myös vapauttaa tiedoston käsittelyn jälkeen. $fp = fopen( "text.txt", "a" ); flock( $fp, 2 ); // ulkoinen lukko // write to the file flock( $fp, 1 ); // vapauta lukko fclose( $fp ); Lukitseminen flock()-funktiolla on suositeltavaa. Vain toiset flock()- funktiota käyttävät skriptit hyväksyvät asettamasi lukituksen. Hakemistojen käsittely Nyt kun osaat testata tiedostoja, lukea niitä ja kirjoittaa niihin, voimmekin kiinnittää huomiomme kansioihin. PHP sisältää useita funktioita, jotka käsittelevät hakemistoja. Katsomme nyt hakemistojen luomista, tuhoamista ja lukemista. Hakemistojen luominen mkdir()-funktiolla Funktiolla mkdir() luodaan hakemisto. Funktio ottaa argumenteikseen merkkijonon, joka kuvaa luotavan hakemiston polkua sekä oktaalinumeron, joka edustaa hakemistolle asetettavaa moodia. Oktaaliluvussa käytetään aina etunollaa. Tuo moodiargumentti toimii vain Unix-järjestelmissä. Moodi koostuu kolmesta numerosta, joista kukin on väliltä 0-7. Nuo moodinumerot kuvaavat hakemiston käyttöoikeuksia, joita annetaan omistajalle, ryhmälle ja muille käyttäjille. Nämä käyttöoikeudet ovat lukuoikeus, kirjoitusoikeus ja suoritusoikeus. Funktio palauttaa arvon true, jos luominen onnistuu. Yleensä mkdir() epäonnistuu siksi, että isäntäkansion käyttöoikeudet eivät salli alikansion luomista. mkdir( "testdir", 0777 ); // kaikki oikeudet annetaan uuteen kansioon Hakemiston poistaminen rmdir()-funktiolla Rmdir() mahdollistaa hakemiston poistamisen tiedostojärjestelmästä, jos prosessilla, joka ajaa skriptiäsi, on oikeus tehdä niin ja hakemisto on tyhjä. Funktio ottaa argumentikseen polkua edustavan merkkijonon. rmdir( "testdir" ); Hakemiston avaaminen lukemista varten opendir()-funktiolla Ennen kuin voit lukea hakemiston sisältöä, on sinun saatava käyttöösi hakemisto-osoitin funktiolla opendir(). Funktio ottaa argumentikseen polkua edustavan merkkijonon ja palauttaa onnistuessaan hakemisto-osoittimen. Jos avaaminen ei onnistu, funktio palauttaa arvon false.

18 Tiedostojen käsittely $dh = opendir( "testdir" ); Hakemiston sisällön lukeminen readdir()-funktiolla Funktio readdir() lukee tiedoston tai hakemiston nimen hakemistosta (vrt. fgets(), joka lukee rivin kerrallaan tiedostosta). Funktio ottaa argumentikseen hakemisto-osoittimen ja palauttaa merkkijonon, jossa on kohteen sisältö. Jos hakemiston loppu on kohdattu, readdir() palauttaa arvon false. Huomaa, että readdir() palauttaa vain kohteiden nimet, ei täydellisiä polkuja. Listaus näyttää hakemiston sisällön. Listaus Hakemiston sisällön lukeminen readdir()-funktiolla 3: <title>listing Listing the contents 4: of a directory with readdir()</title> 5: </head> 6: <body> 7: <?php 8: $dirname = "testdir"; 9: $dh = opendir( $dirname ); 10: while ( gettype( $file = readdir( $dh ))!= boolean ) 11: { 12: if ( is_dir( "$dirname/$file" ) ) 13: print "(D)"; 14: print "$file<br>"; 15: } 16: closedir( $dh ); 17:?> 18: </body> 19: </html> Listauksessa avataan ensin hakemisto lukemista varten opendir()-funktiolla. Sisältöä luetaan whilesilmukan sisällä kohde kerrallaan: readdir()-kutsu on osana while-silmukan ehtoa; funktion palautusarvo sijoitetaan muuttujaan $file. While-silmukan rungossa käytetään $dirname-muuttujaa yhdessä $file-

19 10. Tiedostojen käsittely 191 muuttujan kanssa luomaan täysi tiedostopolku, jota voidaan sitten testata. Jos polku johtaa hakemistoon, tulostetaan (D) selaimelle. Lopuksi tulostetaan tiedostonimi. Olemme käyttäneet nyt turhankin monimutkaista rakennetta while-silmukan ehto-osassa. Useimmat PHPohjelmoijat (mukaan lukien minä itse) käyttäisivät jokseenkin seuraavanlaista rakennetta: while ( $file = readdir( $dh ) ) { print "$file<br>\n"; } Koodi testaa readdir()-funktion palauttaman arvon. Koska mikä tahansa muu merkkijono kuin 0 vastaa arvoa tosi (true), ei ongelmia ilmene. Kuvittele kuitenkin, että hakemisto sisältää neljä tiedostoa, joiden nimet ovat 0, 1, 2 ja 3. Koodimme tulostaisikin nyt tyhjää! Kun silmukka kohtaa tiedoston nimeltä 0, readdir() palauttaa siten arvon, joka on sama kuin false, jolloin silmukka päättyy. Listauksessa otetaan tuokin seikka huomioon ja ehdossa testataan, että palautusarvon tyyppi on todellinen totuusarvo. Yhteenveto Tällä oppitunnilla opit käyttämään include()-funktiota, jonka avulla voidaan skriptiin sisällyttää tiedostoja. Luvussa tutkittiin myös tiedostojen testaamisfunktioita. Opit myös lukemaan tiedostoja rivi riviltä, merkki kerrallaan ja vaihtelevissa lohkoissa. Opit myös kirjoittamaan ja lisäämään tietoa tiedostoihin. Kirjoittamismoodissa mahdollinen vanha tieto korvataan uudella tiedolla ja lisäämismoodissa taas uusi tieto kirjoitetaan vanhan tiedon perään. Luvun lopussa opit luomaan, tuhoamaan ja lukemaan hakemistoja. K&V K Hidastaako include() skriptejäni? V Koska sisällytettävä tiedosto on avattavat ja jäsenneltävä tulkin toimesta, teho heikkenee hieman. Kuitenkin haitta on vähäinen etuihin verrattuna. K Tulisiko minun aina lopettaa skriptin suoritus, jos tiedostoa ei voida avata kirjoittamista tai lukemista varten? V Sinun tulisi aina sallia tämä mahdollisuus. Jos skriptisi riippuu ehdottomasti tiedostosta, jolla haluat työskennellä, saatat haluta käyttää die()-funktiota, joka kirjoittaa virheilmoituksen selaimelle. Vähemmän kriittisissä tilanteissa sinun tulisi silti sallia virhe ja ehkäpä kirjoittaa tiedot virheestä lokitiedostoon. Saat lisätietoa aiheesta luvusta 22, Vianhaku.

20 Tiedostojen käsittely Työpaja Työpaja tarjoaa pikakysymyksiä, joiden avulla voit kerrata läpikäytyä materiaalia. Yritä ymmärtää vastaukset ennen kuin jatkat seuraavaan lukuun. Vastaukset annetaan liitteessä A. Kysymyksiä 1. Millä funktiolla voisit lisätä kirjastokoodin skriptiisi? 2. Millä funktiolla voisit selvittää, onko tietty tiedosto olemassa järjestelmässäsi? 3. Kuinka voisit määrittää tiedoston koon? 4. Millä funktiolla voisit avata tiedoston lukemista tai kirjoittamista varten? 5. Millä funktiolla voit lukea rivillisen tietoa tiedostosta? 6. Mistä saadaan selville, onko tiedoston loppu saavutettu? 7. Millä funktiolla voisit kirjoittaa rivin tietoa tiedostoon? 8. Kuinka voisit avata hakemiston lukemista varten? 9. Millä funktiolla voisit lukea hakemiston sisällä olevan kohteen nimen, kun hakemisto on ensin avattu lukemista varten? Toiminta 1. Luo lomake, johon voi kirjoittaa käyttäjän etunimen ja sukunimen. Luo sitten skripti, joka tallentaa tiedot tiedostoon. 2. Luo skripti, joka lukee tietoa tiedostosta, jonka loit edellä. Käytä rivinvaihtotageja tulostuksessa ja tulosta myös tiedostossa olevien rivien määrä sekä tiedoston koko.

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

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot Tiedosto yhteenkuuluvien tietojen joukko, joka on tavallisesti talletettu pysyväismuistiin muodostuu tietueista, jotka voivat olla keskenään samanlaisia tai vaihdella tyypiltään tiedostot ovat joko tekstitiedostoja

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 3.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.3.2010 1 / 44 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 4.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 4.3.2009 1 / 35 Tiedostot Tiedostojen käsittelyä tarvitaan esimerkiksi seuraavissa tilanteissa: Ohjelman käsittelemiä

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

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin. 2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 1.3.2010 1 / 36 Monikko Monikko (engl. tuple) muistuttaa listaa, mutta monikon sisältöä ei voi muuttaa sen jälkeen,

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

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

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

Lisätiedot

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

OPPITUNTI15 Päivämäärien käsittely 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

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

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

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

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

Moduli 5: Kehittyneitä piirteitä

Moduli 5: Kehittyneitä piirteitä C! : Kehittyneitä piirteitä 19.4.2016 Aikataulusta 5. harjoituskierroksen määräaika: pe 22.4. Maari-C keskiviikkoisin ja torstaisin (12-14) Ti 26.4. Harjoitustentti (eli kertausluento) Normaalin luennon

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

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

Lisätiedot

Binäärioperaatiot Tiedostot ja I/O

Binäärioperaatiot Tiedostot ja I/O C! Binäärioperaatiot Tiedostot ja I/O 16.3.2017 Tiedotteita Määräaikoja pidennetty Myös 7. kierros uudestaan auki perjantaihin asti Seuraava ja viimeinen luento 30.3. Makrot, funktio-osoittimet Kokeen

Lisätiedot

Binäärioperaatiot Tiedostot ja I/O

Binäärioperaatiot Tiedostot ja I/O C! Binäärioperaatiot Tiedostot ja I/O 8.3.2018 Tiedotteita Viimeinen luento to 29.3. Ohjelmointitehtävä, ohjelmointikoe ja niiden järjestelyt Ohjelmointikokeeseen ilmoittautuminen auki 2 .c tiedostot ja.h

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

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

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

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

HAKEMISTO. Hakemisto 491

HAKEMISTO. Hakemisto 491 Hakemisto 491 HAKEMISTO - (vähennyslasku); 56 $HTTP_COOKIE_VARS; 378 $HTTP_GET_VARS; 348, 378 $HTTP_GET_VARS-taulukko; 157 $HTTP_POST_FILES-taulukko; 168 $HTTP_POST_VARS; 378 $HTTP_REFERER; 235 $HTTP_USER_AGENT;

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

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 6: Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 6: Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 6: Python 15. helmikuuta 2009 Merkkijonot Yleistä Käsittely Muotoiltu tulostus Tiedostot Käsittely Lukeminen Kirjoittaminen Modulit Käyttö Seuraava luento

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

Tutoriaaliläsnäoloista

Tutoriaaliläsnäoloista Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus

Lisätiedot

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) Toistaiseksi helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Vaikeaa eroavuudet Pythonin ja C:n

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

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

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

Ctl160 Tekstikorpusten tietojenkäsittely Kolmas luento,

Ctl160 Tekstikorpusten tietojenkäsittely Kolmas luento, Ctl160 490160-0 Kolmas luento, 10.2.2003 Nicholas Volk Yleisen kielitieteen laitos, Helsingin yliopisto Ctl160 490160-0Kolmas luento, 10.2.2003 p.1/28 Unohtui viime kerralla... Skriptin ajaminen edellyttää

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

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

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

Tiedosto on yhteenkuuluvien tietojen joukko, joka tavallisimmin sijaitsee kiintolevyllä, muistitikulla tai jollakin muulla fyysisellä tietovälineellä.

Tiedosto on yhteenkuuluvien tietojen joukko, joka tavallisimmin sijaitsee kiintolevyllä, muistitikulla tai jollakin muulla fyysisellä tietovälineellä. Tiedostot Tiedosto on yhteenkuuluvien tietojen joukko, joka tavallisimmin sijaitsee kiintolevyllä, muistitikulla tai jollakin muulla fyysisellä tietovälineellä. C-kielessä syöttö ja tulostus kuvataan laiteriippumattomasti

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 14.10.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 14.10.2015 1 / 32 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta

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

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

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla:

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla: KERTAUSTEHTÄVIÄ Tietue Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla: struct henkilotiedot char nimi [20]; int ika; char puh [10]; ; Edellä esitetty kuvaus määrittelee

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

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

Muuttujat ja kontrolli. Ville Sundberg

Muuttujat ja kontrolli. Ville Sundberg Muuttujat ja kontrolli Ville Sundberg 14.9.2007 Alkeistyyppi Alin abstraktiotaso josta tarvitsee välittää Yksittäinen, jakamaton tiedonjyvä Tavallaan kaikki alkeistyypit ovat lukuja arvojoukko vaihtelee

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 3.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 1 / 36 Esimerkki: asunnon välityspalkkio Kirjoitetaan ohjelma, joka laskee kiinteistönvälittäjän asunnon

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

OPPITUNTI 20 Tilan tallentaminen istuntofunktioilla

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

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

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

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

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin

Lisätiedot

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmointiharjoituksia Arduino-ympäristössä Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet

Lisätiedot

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

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

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

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

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

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

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

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

Lisätiedot

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

14. Hyvä ohjelmointitapa 14.1

14. Hyvä ohjelmointitapa 14.1 14. Hyvä ohjelmointitapa 14.1 Yleistä Ohjelman elinkaari ei tyypillisesti pääty sen toteuttamiseen; ohjelmaa voidaan käyttää ja ylläpitää jopa vuosikymmeniä. Jotta koodin muuttaminen on mahdollista, sen

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

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

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

Lisätiedot

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

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

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

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

Lisätiedot

Harjoitus 3 (viikko 39)

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

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

ATK tähtitieteessä. Osa 4 - IDL input/output. 19. syyskuuta 2014

ATK tähtitieteessä. Osa 4 - IDL input/output. 19. syyskuuta 2014 19. syyskuuta 2014 IDL - INPUT/OUTPUT-rutiinit IDL pystyy lukemaan ja kirjoittamaan monentyyppisiä tiedostoja, esim. FORTRAN ja C-kielten ohjelmien tulostusta. Käytössä on myös monipuoliset tulostuksen

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2 26. Tiedostot 26.1 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2 Johdanto Tiedostoja on käsitelty uudelleenohjattujen standardisyöte- ja tulostusvirtojen avulla. Tiedostoja

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

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

Lisätiedot

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,

Lisätiedot

[Jnix näyttökoe. o ei ole sallittua käyttää mitään verkkolevyjakoa tai mitään siihen rinnastettavaa järjestelmdä.

[Jnix näyttökoe. o ei ole sallittua käyttää mitään verkkolevyjakoa tai mitään siihen rinnastettavaa järjestelmdä. v1 081213 DTEK 1043 Opiskelun ja työelämän tietotekniikka [Jnix näyttökoe Tärkeää Naytt«ikokee(ssa/n) o saa hakea ohjeita Internetistä. o ei saa käyttää kurssimateriaaleja. o ei saa käyttää kirjallisia

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

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

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

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

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

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

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

System.out.printf(%d / %d = %.2f%n, ekaluku, tokaluku, osamaara); Kysy Karilta tai Kimmolta, jos tehtävissä on jotain epäselvää. Kerro WETOon liittyvät ongelmat suoraan Jormalle sähköpostitse (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja

Lisätiedot

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

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

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat Sisällys 12. Javan toistorakenteet Ylstä toistorakentsta. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirhtä. Silmukan rajat asetettu kierroksen

Lisätiedot

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

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

Lisätiedot