Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele For-silmukka | Silmukat
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Java Perusteet

bookFor-silmukka

Merkittävä haittapuoli while-silmukassa on, että siinä ei voi määrittää tarkkaa toistomäärää eikä hallita silmukan suoritusta täysin. Siksi on olemassa for-silmukka, joka tarjoaa kaikki tarvittavat työkalut silmukan hallintaan ja jota käytetään myös taulukoiden ja kokoelmien kanssa työskenneltäessä.

for-silmukka

for-silmukka on ohjausrakennelausunto, jonka avulla voidaan suorittaa koodilohko määritetyn määrän kertoja. Sitä käytetään yleisesti, kun toistojen määrä tiedetään etukäteen tai kun iteroidaan kokoelman tai taulukon läpi.

for-silmukan syntaksi Javassa on seuraava:

Main.java

Main.java

copy
123
for (initialization; condition; update) { // code to be executed }

Jos etenemme vaihe vaiheelta, aluksi alustamme muuttujan sille varatussa erityisosiossa (teimme saman myös while-silmukassa, mutta teimme sen silmukan ulkopuolella). Sen jälkeen asetamme ehdon, jonka perusteella silmukka suoritetaan (esimerkiksi niin kauan kuin muuttuja on pienempi kuin 10). Tämän jälkeen käytämme inkrementtiä tai dekrementtiä. Alla on vuokaavio ja selitys jokaisen silmukan osan toiminnasta:

Tässä on for-silmukan jokaisen osan erittely:

  • Alustus: tämä on alkuasetus, joka suoritetaan vain kerran silmukan alussa. Tyypillisesti tässä määritellään ja alustetaan silmukan ohjausmuuttuja. Esimerkiksi int i = 0;
  • Ehto: tämä on ehto, joka tarkistetaan ennen jokaista iteraatiota. Jos ehto on tosi, silmukan runko suoritetaan. Jos ehto on epätosi, silmukka päättyy. Esimerkiksi i < 10;
  • Inkrementti/dekrementti: tämä on koodi, joka suoritetaan jokaisen iteraation jälkeen. Tyypillisesti tässä päivitetään silmukan ohjausmuuttuja. Esimerkiksi i++ (joka on sama kuin i = i + 1);
  • Silmukan sisäinen koodi: tämä on koodilohko, joka suoritetaan jokaisella silmukan iteraatiolla. Silmukan runkoon voi sijoittaa mitä tahansa kelvollista Java-koodia.

Tässä on esimerkki, joka havainnollistaa for-silmukan käyttöä:

Main.java

Main.java

copy
123456789
package com.example; public class Main { public static void main(String[] args) { for (int i = 0; i < 10; i++) { System.out.println("Iteration: " + i); } } }

Tässä esimerkissä silmukka suoritetaan 10 kertaa. Se alkaa, kun i alustetaan arvoon 0, tarkistaa onko i pienempi kuin 10, suorittaa silmukan rungon ja päivittää sitten i lisäämällä siihen 1. Tämä prosessi toistuu, kunnes ehto ei enää täyty.

On hyvä huomata, että tässä silmukassa voimme käyttää luomaamme muuttujaa. Tässä tapauksessa tulostamme muuttujan i näyttääksemme iteraation numeron näytöllä.

Tämä on erittäin hyödyllistä, erityisesti silloin kun tarvitsemme muuttujaa i käytettäväksi koodissa.

Tarkastellaan seuraavaksi toista esimerkkiä, jossa meidän täytyy näyttää vain parilliset luvut välillä 1–30.

Jotta voimme määrittää, onko luku parillinen vai ei, käytämme % operaattoria. % operaattori Javassa palauttaa jakolaskun jakojäännöksen. Sen avulla voidaan tarkistaa, jakautuuko luku tasan toisella luvulla, mikä on hyödyllistä parillisuuden tarkistamisessa.

main.java

main.java

copy
1234567891011
package com.example; public class Main { public static void main(String[] args) { for (int i = 0; i < 30; i++) { if (i % 2 == 0) { // Check if `i` is even System.out.println(i); } } } }

Hienoa, yllä olevassa koodissa käytimme muuttujaa i ehdon tarkistamiseen. Toisin sanoen, i edustaa tarkasteltavia lukuja. Seuraavaksi tarkistamme, onko luku i parillinen käyttämällä jakojäännösoperaatiota (%). Jos jako kahdella antaa jakojäännökseksi nollan, luku on parillinen, eli se on jaollinen kahdella ilman jakojäännöstä.

Kuvitellaan, että jaetaan 3 luvulla 2. Jaon jakojäännös on 1. Käyttämällä %-operaattoria, 3 % 2 antaa jakojäännöksen, joka on 1. Siten lausekkeessa i % 2 == 0 tulos on epätosi, koska jakojäännös ei ole 0, mikä tarkoittaa, että 3 on pariton luku.

Kiinnitä myös huomiota siihen, miten asetamme ehdon muuttujalle i. Toimintojemme algoritmi pysyy samana kuin aiemmin, mutta silmukan ehtoon rajoitimme i:n arvon 30:een, kuten tehtävässä määriteltiin.

1. Kuinka monta iteraatiota suoritetaan?

2. Kuinka monta kertaa i tulostetaan

question mark

Kuinka monta iteraatiota suoritetaan?

Select the correct answer

question mark

Kuinka monta kertaa i tulostetaan

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 5

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

bookFor-silmukka

Pyyhkäise näyttääksesi valikon

Merkittävä haittapuoli while-silmukassa on, että siinä ei voi määrittää tarkkaa toistomäärää eikä hallita silmukan suoritusta täysin. Siksi on olemassa for-silmukka, joka tarjoaa kaikki tarvittavat työkalut silmukan hallintaan ja jota käytetään myös taulukoiden ja kokoelmien kanssa työskenneltäessä.

for-silmukka

for-silmukka on ohjausrakennelausunto, jonka avulla voidaan suorittaa koodilohko määritetyn määrän kertoja. Sitä käytetään yleisesti, kun toistojen määrä tiedetään etukäteen tai kun iteroidaan kokoelman tai taulukon läpi.

for-silmukan syntaksi Javassa on seuraava:

Main.java

Main.java

copy
123
for (initialization; condition; update) { // code to be executed }

Jos etenemme vaihe vaiheelta, aluksi alustamme muuttujan sille varatussa erityisosiossa (teimme saman myös while-silmukassa, mutta teimme sen silmukan ulkopuolella). Sen jälkeen asetamme ehdon, jonka perusteella silmukka suoritetaan (esimerkiksi niin kauan kuin muuttuja on pienempi kuin 10). Tämän jälkeen käytämme inkrementtiä tai dekrementtiä. Alla on vuokaavio ja selitys jokaisen silmukan osan toiminnasta:

Tässä on for-silmukan jokaisen osan erittely:

  • Alustus: tämä on alkuasetus, joka suoritetaan vain kerran silmukan alussa. Tyypillisesti tässä määritellään ja alustetaan silmukan ohjausmuuttuja. Esimerkiksi int i = 0;
  • Ehto: tämä on ehto, joka tarkistetaan ennen jokaista iteraatiota. Jos ehto on tosi, silmukan runko suoritetaan. Jos ehto on epätosi, silmukka päättyy. Esimerkiksi i < 10;
  • Inkrementti/dekrementti: tämä on koodi, joka suoritetaan jokaisen iteraation jälkeen. Tyypillisesti tässä päivitetään silmukan ohjausmuuttuja. Esimerkiksi i++ (joka on sama kuin i = i + 1);
  • Silmukan sisäinen koodi: tämä on koodilohko, joka suoritetaan jokaisella silmukan iteraatiolla. Silmukan runkoon voi sijoittaa mitä tahansa kelvollista Java-koodia.

Tässä on esimerkki, joka havainnollistaa for-silmukan käyttöä:

Main.java

Main.java

copy
123456789
package com.example; public class Main { public static void main(String[] args) { for (int i = 0; i < 10; i++) { System.out.println("Iteration: " + i); } } }

Tässä esimerkissä silmukka suoritetaan 10 kertaa. Se alkaa, kun i alustetaan arvoon 0, tarkistaa onko i pienempi kuin 10, suorittaa silmukan rungon ja päivittää sitten i lisäämällä siihen 1. Tämä prosessi toistuu, kunnes ehto ei enää täyty.

On hyvä huomata, että tässä silmukassa voimme käyttää luomaamme muuttujaa. Tässä tapauksessa tulostamme muuttujan i näyttääksemme iteraation numeron näytöllä.

Tämä on erittäin hyödyllistä, erityisesti silloin kun tarvitsemme muuttujaa i käytettäväksi koodissa.

Tarkastellaan seuraavaksi toista esimerkkiä, jossa meidän täytyy näyttää vain parilliset luvut välillä 1–30.

Jotta voimme määrittää, onko luku parillinen vai ei, käytämme % operaattoria. % operaattori Javassa palauttaa jakolaskun jakojäännöksen. Sen avulla voidaan tarkistaa, jakautuuko luku tasan toisella luvulla, mikä on hyödyllistä parillisuuden tarkistamisessa.

main.java

main.java

copy
1234567891011
package com.example; public class Main { public static void main(String[] args) { for (int i = 0; i < 30; i++) { if (i % 2 == 0) { // Check if `i` is even System.out.println(i); } } } }

Hienoa, yllä olevassa koodissa käytimme muuttujaa i ehdon tarkistamiseen. Toisin sanoen, i edustaa tarkasteltavia lukuja. Seuraavaksi tarkistamme, onko luku i parillinen käyttämällä jakojäännösoperaatiota (%). Jos jako kahdella antaa jakojäännökseksi nollan, luku on parillinen, eli se on jaollinen kahdella ilman jakojäännöstä.

Kuvitellaan, että jaetaan 3 luvulla 2. Jaon jakojäännös on 1. Käyttämällä %-operaattoria, 3 % 2 antaa jakojäännöksen, joka on 1. Siten lausekkeessa i % 2 == 0 tulos on epätosi, koska jakojäännös ei ole 0, mikä tarkoittaa, että 3 on pariton luku.

Kiinnitä myös huomiota siihen, miten asetamme ehdon muuttujalle i. Toimintojemme algoritmi pysyy samana kuin aiemmin, mutta silmukan ehtoon rajoitimme i:n arvon 30:een, kuten tehtävässä määriteltiin.

1. Kuinka monta iteraatiota suoritetaan?

2. Kuinka monta kertaa i tulostetaan

question mark

Kuinka monta iteraatiota suoritetaan?

Select the correct answer

question mark

Kuinka monta kertaa i tulostetaan

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 5
some-alt