While, Do-While
Kuvittele tilanne, jossa täytyy toistaa tiettyjä tehtäviä, kuten lukea tietoja sensorista, yrittää salasanaa useita kertoja tai laskea sanoja lauseessa. Näissä tilanteissa silmukat ovat hyödyllisiä.
Silmukoiden avulla voit suorittaa tiettyjä koodilohkoja useita kertoja, olipa kyseessä kymmenet, sadat tai jopa tuhannet toistot. Silmukoiden käsitteen ymmärtäminen on keskeistä ohjelmoinnissa. Tämä kurssi käsittelee perustavanlaatuisia silmukoita: while-silmukka, do-while-silmukka ja for-silmukka.
While-silmukka
Tämä silmukka jatkaa suorittamista niin kauan kuin tietty ehto täyttyy. Kun ehto ei enää täyty, silmukka päättyy.
main.c
123while (condition) { // Loop body }
Silmukan peruskäyttö on toistojen määrän näyttäminen:
Main.c
1234567891011121314#include <stdio.h> int main() { int iterations = 1; while (iterations <= 10) { printf("%d\n", iterations); iterations++; // `iterations = iterations + 1;` } return 0; }
Silmukan pysäyttämiseksi tarvitaan lopetusehto. Yksinkertainen tapa on käyttää laskuria seuraamaan, kuinka monta kertaa silmukka suoritetaan.
Iteraatio tarkoittaa yhtä kierrosta silmukassa. Jos silmukka suorittaa koodilohkon 10 kertaa, se on tehnyt 10 iteraatiota.
Rivi iterations++; on olennainen, sillä se kasvattaa laskuria (int iterations) jokaisella kierroksella. Laskuri määrittää ehdot silmukan lopettamiselle.
On välttämätöntä asettaa ehdot silmukasta poistumiselle. Jos näin ei tehdä, seurauksena on loputon silmukka.
Main.c
12345678910111213141516#include <stdio.h> int main() { int array[] = { 3, 6, 2, 134, 45, 2, 564, 8, 3, 531 }; int i = 0; // Index of array while (i < 10 ) { printf("Index of element: %d\tValue of element: %d\n", i, array[i]); i++; // `i = i + 1` } return 0; }
Kiinnitä huomiota lausekkeeseen array[i].
Tässä muuttuja i ilmaisee array[]-alkioiden indeksin.
Jokaisella kierroksella muuttuja i kasvaa 1. Tämä tarkoittaa, että jokaisella kierroksella lauseke array[i] viittaa seuraavaan taulukon alkioon:
Keskeinen ero do-while- ja while-silmukoiden välillä on, että ensimmäinen takaa vähintään yhden suorituskerran, vaikka ehto olisi aluksi epätosi.
main.c
123do { // Do something } while (condition);
Tämä silmukkamuoto on hyödyllinen yksinkertaisten käyttöliittymien rakentamiseen. Esimerkiksi salasanaa kysyttäessä, koska sen avulla voit jatkaa kysymistä, kunnes syöte on kelvollinen. do-while-tyyppinen silmukka sopii tähän hyvin, koska kehotteen on näytettävä vähintään kerran, kun taas while-silmukka toimii, kun sisään mennään vain, jos esiehto täyttyy.
Main.c
123456789101112#include <stdio.h> int main() { int i = 0; do { printf("Condition `i == 1` is false, because i = 0, but loop is working...\n"); } while (i == 1); printf("Loop is over\n"); return 0; }
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Can you explain the difference between a while loop and a do-while loop with examples?
How does the counter help in terminating a loop?
Can you show how to use a loop to read data from a sensor?
Awesome!
Completion rate improved to 2.63
While, Do-While
Pyyhkäise näyttääksesi valikon
Kuvittele tilanne, jossa täytyy toistaa tiettyjä tehtäviä, kuten lukea tietoja sensorista, yrittää salasanaa useita kertoja tai laskea sanoja lauseessa. Näissä tilanteissa silmukat ovat hyödyllisiä.
Silmukoiden avulla voit suorittaa tiettyjä koodilohkoja useita kertoja, olipa kyseessä kymmenet, sadat tai jopa tuhannet toistot. Silmukoiden käsitteen ymmärtäminen on keskeistä ohjelmoinnissa. Tämä kurssi käsittelee perustavanlaatuisia silmukoita: while-silmukka, do-while-silmukka ja for-silmukka.
While-silmukka
Tämä silmukka jatkaa suorittamista niin kauan kuin tietty ehto täyttyy. Kun ehto ei enää täyty, silmukka päättyy.
main.c
123while (condition) { // Loop body }
Silmukan peruskäyttö on toistojen määrän näyttäminen:
Main.c
1234567891011121314#include <stdio.h> int main() { int iterations = 1; while (iterations <= 10) { printf("%d\n", iterations); iterations++; // `iterations = iterations + 1;` } return 0; }
Silmukan pysäyttämiseksi tarvitaan lopetusehto. Yksinkertainen tapa on käyttää laskuria seuraamaan, kuinka monta kertaa silmukka suoritetaan.
Iteraatio tarkoittaa yhtä kierrosta silmukassa. Jos silmukka suorittaa koodilohkon 10 kertaa, se on tehnyt 10 iteraatiota.
Rivi iterations++; on olennainen, sillä se kasvattaa laskuria (int iterations) jokaisella kierroksella. Laskuri määrittää ehdot silmukan lopettamiselle.
On välttämätöntä asettaa ehdot silmukasta poistumiselle. Jos näin ei tehdä, seurauksena on loputon silmukka.
Main.c
12345678910111213141516#include <stdio.h> int main() { int array[] = { 3, 6, 2, 134, 45, 2, 564, 8, 3, 531 }; int i = 0; // Index of array while (i < 10 ) { printf("Index of element: %d\tValue of element: %d\n", i, array[i]); i++; // `i = i + 1` } return 0; }
Kiinnitä huomiota lausekkeeseen array[i].
Tässä muuttuja i ilmaisee array[]-alkioiden indeksin.
Jokaisella kierroksella muuttuja i kasvaa 1. Tämä tarkoittaa, että jokaisella kierroksella lauseke array[i] viittaa seuraavaan taulukon alkioon:
Keskeinen ero do-while- ja while-silmukoiden välillä on, että ensimmäinen takaa vähintään yhden suorituskerran, vaikka ehto olisi aluksi epätosi.
main.c
123do { // Do something } while (condition);
Tämä silmukkamuoto on hyödyllinen yksinkertaisten käyttöliittymien rakentamiseen. Esimerkiksi salasanaa kysyttäessä, koska sen avulla voit jatkaa kysymistä, kunnes syöte on kelvollinen. do-while-tyyppinen silmukka sopii tähän hyvin, koska kehotteen on näytettävä vähintään kerran, kun taas while-silmukka toimii, kun sisään mennään vain, jos esiehto täyttyy.
Main.c
123456789101112#include <stdio.h> int main() { int i = 0; do { printf("Condition `i == 1` is false, because i = 0, but loop is working...\n"); } while (i == 1); printf("Loop is over\n"); return 0; }
Kiitos palautteestasi!