Tehtävä 1 Kirjoita toistolause, joka näyttää numerot kymmenestä yhteen.
TOISTOLAUSEET (silmukat eli loopit)
PHP:ssä on käytössä seuraavat toistolauseet:
for
, foreach
, while
ja do...while
.
for - rakenne
for
-komentoa käytetään tilanteissa, joissa halutaan suorittaa jotakin tehtävää tietty kertamäärä.for
-komennon yleinen muoto:
Avainsananfor (alustus; ehto; päivitys) { lause; }
for
jälkeen tulevissa suluissa on kolme osaa:Alustus on toiminto jolla silmukkaa ohjaava muuttuja alustetaan, eli alustetaan laskuri jonka avulla toistojen määrää kontrolloidaan.
Ehto-osa on aina TOSI tai EPÄTOSI. Ehto-osan ollessa TOSI voidaan silmukan suoritusta jatkaa, ehto-osaa voidaan pitää myös lopetusehtona.
Päivitys-osassa suoritetaan uudet arvottamiset esim. lisätään silmukan laskuria.
Osista jokin tai kaikki voivat puuttua mutta puolipisteet on laitettava sulkujen sisälle.
for
on aloitusehtoinen komento, joka tarkoittaa, että ehto testataan ennen silmukkaan menoa. Alla oleva esimerkki näyttää numerot yhdestä kymmeneen.
/* for-esimerkki */ <!DOCTYPE HTML> <html lang="en"> <html> <head> <meta charset="UTF-8"> <title>TESTISIVU</title> </head> <body> <?php for ($kertaa = 0; $kertaa <= 10; $kertaa++) { echo "Numero on: $kertaa <br> "; } ?> </body> </html>
Numero on: 0
Numero on: 1
Numero on: 2
Numero on: 3
Numero on: 4
Numero on: 5
Numero on: 6
Numero on: 7
Numero on: 8
Numero on: 9
Numero on: 10
/* lasketaan sataan kymmenen välein */ <?php for ($luku = 0; $luku <= 100; $luku = $luku + 10) { echo "Luku on: $luku <br>"; } ?>
Luku on: 0
Luku on: 10
Luku on: 20
Luku on: 30
Luku on: 40
Luku on: 50
Luku on: 60
Luku on: 70
Luku on: 80
Luku on: 90
Luku on: 100
Tehtävä 2 Kirjoita toistolause, missä lasketaan tuhanteen sadan välein.
Alla, ohjelma jossa sijoitetaan yksiuloitteiseen taulukkoon 10 desimaalilukua ja tulostetaan annetut luvut taulukosta näytölle.
/* for-esimerkki, kymmenen lukua taulukkoon ja niiden tulostus */ <?php $luvut = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10"); $taulukoko = count($luvut); for($sarake = 0; $sarake < $taulukoko; $sarake++) { echo $luvut[$sarake]; echo ,"<br>"; } ?>
1
2
3
4
5
6
7
8
9
10
Tehtävä 3 Kirjoita taulukko-ohjelma, joka tulostaa suomenkielen aakkoset järjestyksessä.
Alla, sisäkkäisistä
for
-lauseista esimerkki. Sisäkkäisellä for
-lauseella voi käsitellä esim. kaksi-uloitteista taulukkoa.
Ulompi
for
-lause (punainen) hoitaa rivin vaihtamisen ja sisempi for
-lause (sininen) tulostuksen riville, taulukon ollessa kyseessä
tulostaisi sarakkeissa olevan tiedon./* sisäkkäiset for-lauseet */ <?php for ($rivi = 1; $rivi <= 10; $rivi++){ for ($sarake = 1; $sarake <= 10; $sarake++){ echo " _ "; } echo "<br>"; } ?>
_ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _
Suuren taulukoiden sisällön esittämiseen www-sivuille on lyhin koodi saadaan käyttämällä
for
-lauseita.
Alla, tulostetaan taulukon sisältö sisäkkäisten for
-lauseiden avulla./* sisäkkäiset for-lauseet */ <?php $taulu = array ( array("1.rivi:","A","B","C","D","E"), array("2.rivi:","F","G","H","I","J"), array("3.rivi:","K","L","M","N","O"), array("4.rivi:","P","Q","R","S","T"), array("5.rivi:","U","V","W","Y","Y") ); for ($rivi = 0; $rivi <= count($taulu); $rivi++) { for ($sarake = 0; $sarake <= 6; $sarake++){ echo " ". $taulu[$rivi][$sarake] ." "; } echo "<br>"; } ?>
1.rivi: A B C D E
2.rivi: F G H I J
3.rivi: K L M N O
4.rivi: P Q R S T
5.rivi: U V W Y Y
Tehtävä 4 Muokkaa yllä olevasta esimerkistä 4 * 7 taulukko. (4 riviä, 7 saraketta) Sijoita taulukkoon seuraavat: Nimi Koe 1 Koe 2 Koe 3 Koe 4 Yht. Arvosana Ykkönen Alli 30 40 50 60 0 0 Kakkonen Bertta 40 50 60 70 0 0 Kolmonen Carita 50 60 70 80 0 0 Näytä taulukon sisältö for-lauseiden avulla.
foreach - rakenne
foreach
-rakenne tarjoaa helpon tavan toistaa taulukot. Ainoastaan taulukot ja objektit toimivat
foreach
-rakenteen kanssa; yrittäessä käyttää sitä muun datan kanssa ohjelma antaa error-koodin.
Alla,
foreach
-komentosta esimerkki./* Taulukon sisällön näyttäminen foreach-rakenteella */ <?php $värit = array("Punainen", "Vihreä", "Sininen", "Keltainen"); foreach ($värit as $kaikki) { echo "$kaikki <br>"; } ?>
Punainen
Vihreä
Sininen
Keltainen
Seuraavassa esimerkissä on taulukossa solujen niminä kolmen henkilön etunimet ja varsinaisena sisältönä henkilöiden iät.
Taulukon sisältö näytetään ikäjärjestyksessä nuorimmasta vanhimpaan järjestyksessä nimi ja ikä. Huomaa kuinka taulukon sisällön järjestys muuttui.
<?php $ika = array("Arto"=>"24", "Esko"=>"21", "Heikki"=>"22"); asort($ika); foreach($ika as $sarake => $sarake_alue) { echo "Nimi - " . $sarake . ", Ikä - " . $sarake_alue; echo "<br>"; } ?>
Nimi - Esko, Ikä - 21
Nimi - Heikki, Ikä - 22
Nimi - Arto, Ikä - 24
Kysymys: Mikä tieto on muuttujissa
sarake
ja sarake_alue
?while - rakenne
PHP-kielen kolmas silmukkarakenne onwhile
-rakenne. while
-silmukassa silmukan runko suoritetaan niin kauan kuin ehto on tosi. Kun ehto tulee
epätodeksi, ohjelman suoritus siirtyy silmukkaa seuraavaan lauseeseen. while
on alku-ehtoinen toistolause, eli ensin tutkitaan toteutuuko ehto ennenkuin rakenteen sisään mennään.while
-komennon yleinen muoto:
while (ehto on totta) { ohjelmalause; }
Alla,
while
-komentoa käytetään toistolauseena./* Teksti ja numero 1:stä 5:teen while-lauseella */ <?php $numero = 1; while($numero <= 5) { echo "Numero on: $numero <br>"; $numero++; } ?>
Numero on: 1
Numero on: 2
Numero on: 3
Numero on: 4
Numero on: 5
Tehtävä 5 Muuta esimerkin while-silmukkarakenne, näyttämään numerot kymmenestä yhteen.
do ... while - rakenne
do...while
-silmukan rakenne on samantyyppinen kuin while
-silmukan. do...while
-rakenteen ero while
ja for
rakenteeseen on, että se on lopetusehtoinen. do...while
-silmukka suoritetaan aina vähintään yhden kerran, koska ehto testataan silmukan lopussa eikä sen alussa.do...while
-silmukan yleinen muoto:
do { ohjelmalause; } while (lopetus-ehto);
/* Kymmenen naulaa do...while lauseella */ <?php $naula = 1; do { echo "Lyö $naula. naula, lyöty. <br>"; $naula++; } while ($naula <= 10); ?>
Lyö 1. naula, lyöty.
Lyö 2. naula, lyöty.
Lyö 3. naula, lyöty.
Lyö 4. naula, lyöty.
Lyö 5. naula, lyöty.
Lyö 6. naula, lyöty.
Lyö 7. naula, lyöty.
Lyö 8. naula, lyöty.
Lyö 9. naula, lyöty.
Lyö 10. naula, lyöty.
do...while
-silmukka on yleisin rakenne toteutettaessa koodin lopetus-ehto.
/* do...while käyttö taulukon tulostamiseen */ <?php $sarake = 0; $valmistaja = array("Sony","Apple","Samsung","Huawei","Panasonic"); do { echo $valmistaja[$sarake] . "<br>"; $sarake++; } while ($sarake < 5); ?>
Sony
Apple
Samsung
Huawei
Panasonic
Tehtävä 6 Kokeile pystyykö sisäkkäisillä do...while:lla tulostamaan kaksiulotteisen taulukon.
goto - komento
PHP-kieli sisältää myösgoto
-komennon, tosin sen käyttöä ei suositella koska se johtaa usein sekaviin kooditoteutuksiin.
break - KOMENTO
break
-komennon ensisijainen käyttö on keskeyttää silmukan suoritus. Kun kääntäjä havaitsee
break
-komennon silmukan sisäpuolella, silmukan ajo keskeytetään kokonaan. break
-komennolla voidaan esimerkiksi
keskeyttää ohjelmarakenteen suorittaminen liian suuren numero-arvon syntyessä suorituksen aikanaAlla esimerkki
break
-komennon käytöstä. Jos numero
-muuttuja on suurempi kuin 5, silmukka lopetetaan kesken./* break komento keskeyttää ohjelmarakenteen */ <?php for ($numero = 1; $numero <= 10; $numero++) { if ($numero > 5) break; echo "Numero on $numero. <br>"; } ?>
Numero on 1.
Numero on 2.
Numero on 3.
Numero on 4.
Numero on 5.
continue - komento
continue
-komentoa käytetään ohittamaan silmukan loppuosa. Komentoa käytetään kuten break
komentoa, mutta komennon käyttö ei johda silmukan keskeyttämiseen
vaan silmukan suoritusta jatketaan silmukan alusta./* estetään continue:n alla olevantekstin näyttäminen */ <?php for ($numero = 0; $numero <= 10; $numero++) { echo "Näytetään numero $numero. <br>"; continue; echo "Tätä ei näytetä koskaan. <br>"; } ?>
Näytetään numero 0.
Näytetään numero 1.
Näytetään numero 2.
Näytetään numero 3.
Näytetään numero 4.
Näytetään numero 5.
Näytetään numero 6.
Näytetään numero 7.
Näytetään numero 8.
Näytetään numero 9.
Näytetään numero 10.
Tehtävä 7 Muokkaa ylläoleva koodi siten, että - teksti "Tämä näkyy" tulostuu tekstin "Näytetään numero X" alle kun numero on 0 - 4 sekä kun numero on 8 - 10