Tässä artikkelissa opitaan silmukasta C #: ssä ja erilaisista tavoista käyttää niitä ohjelmassa.
Ohjelmoinnissa halutaan usein suorittaa tietty lausejoukko tietyn määrän kertoja. Mahdollinen ratkaisu on kirjoittaa nämä lauseet tarvittavaan määrään kertoja. Toistojen lukumäärä ei kuitenkaan välttämättä ole tiedossa etukäteen (kokoamisajan aikana) tai ehkä riittävän suuri (esimerkiksi 10000).
Paras ratkaisu tällaiseen ongelmaan on silmukka. Silmukoita käytetään ohjelmoinnissa toistamaan tietty lause lause, kunnes jokin ehto täyttyy.
Tässä artikkelissa tarkastellaan silmukkaa C #: ssä.
C # silmukalle
Varten avainsanaa käytetään luomaan silmukka C #. Silmukan syntaksi on:
for (alustus; ehto; iteraattori) (// silmukan runko)
Kuinka silmukka toimii?
- C # silmukka on kolme lausumaa:
initialization
,condition
jaiterator
. initialization
Lauseke suoritetaan ensin ja vain kerran. Tässä muuttuja ilmoitetaan ja alustetaan yleensä.- Sitten
condition
arvioidaan. Secondition
on looginen lauseke, eli se palauttaa jokotrue
taifalse
. - Jos
condition
arvioidaantrue
:- For-silmukan sisällä olevat lauseet suoritetaan.
- Sitten suoritetaan
iterator
käsky, joka yleensä muuttaa alustetun muuttujan arvon. - Jälleen
condition
arvioidaan. - Prosessi jatkuu, kunnes
condition
arvioidaanfalse
.
- Jos arvo
condition
arvioidaanfalse
, for-silmukka päättyy.
joukkueelle Loop Flowchart
Esimerkki 1: C # -silmukalle
using System; namespace Loop ( class ForLoop ( public static void Main(string() args) ( for (int i=1; i<=5; i++) ( Console.WriteLine("C# For Loop: Iteration (0)", i); ) ) ) )
Kun suoritamme ohjelmaa, tulos on:
C # Silmukka: Iteraatio 1 C # Silmukka: Iteraatio 2 C # Silmukka: Iteraatio 3 C # Silmukka: Iteraatio 4 C # Silmukka: Iteraatio 5
Tässä ohjelmassa
initialization
lausunto onint i=1
condition
lausunto oni<=5
iterator
lausunto oni++
Kun ohjelma on käynnissä,
- Ensin muuttuja i ilmoitetaan ja alustetaan arvoon 1.
- Sitten ehto (
i<=5
) arvioidaan. - Koska ehto palaa
true
, ohjelma suorittaa sitten for-silmukan rungon. Se tulostaa annetun rivin iteraatiolla 1 (iteraatio tarkoittaa yksinkertaisesti toistoa). - Nyt iteraattori (
i++
) arvioidaan. Tämä lisää arvon i arvoon 2. - Ehto (
i<=5
) arvioidaan uudelleen ja lopuksi i: n arvoa korotetaan arvolla 1. Ehto arvioidaantrue
ensimmäisten 5 kertaa. - Kun i: n arvo on 6 ja ehto on
false
, silmukka päättyy.
Esimerkki 2: silmukalle ensimmäisen n luonnollisen luvun summan laskemiseksi
using System; namespace Loop ( class ForLoop ( public static void Main(string() args) ( int n = 5,sum = 0; for (int i=1; i<=n; i++) ( // sum = sum + i; sum += i; ) Console.WriteLine("Sum of first (0) natural numbers = (1)", n, sum); ) ) )
Kun suoritamme ohjelmaa, tulos on:
Viiden ensimmäisen luonnollisen luvun summa = 15
Tässä summan ja n arvo alustetaan 0: ksi ja 5: ksi. Iteraatiomuuttuja i alustetaan arvoon 1 ja sitä lisätään jokaisella iteraatiolla.
For-silmukan sisällä summan arvoa lisätään i eli sum = sum + i
. For-silmukka jatkuu, kunnes i on pienempi tai yhtä suuri kuin n (käyttäjän panos).
Katsotaanpa, mitä tietyssä ohjelmassa tapahtuu jokaisella iteraatiolla.
Aluksi i = 1, summa = 0 ja n = 3
Silmukan suoritusvaiheita vartenToisto | I: n arvo | i <= 5 | Summan arvo |
---|---|---|---|
1 | 1 | totta | 0 + 1 = 1 |
2 | 2 | totta | 1 + 2 = 3 |
3 | 3 | totta | 3 + 3 = 6 |
4 | 4 | totta | 6 + 4 = 10 |
5 | 5 | totta | 10 + 5 = 15 |
6 | 6 | väärä | Silmukka päättyy |
Joten summan lopullinen arvo on 15, kun n = 5.
Useita lausekkeita for for -silmukan sisällä
Voimme myös käyttää useita lausekkeita for for -silmukan sisällä. Se tarkoittaa, että for-silmukassa voi olla useampi kuin yksi alustus- ja / tai iteraattorilause. Katsotaanpa alla oleva esimerkki.
Esimerkki 3: silmukalle, jossa on useita alustus- ja iteraattorilausekkeita
using System; namespace Loop ( class ForLoop ( public static void Main(string() args) ( for (int i=0, j=0; i+j<=5; i++, j++) ( Console.WriteLine("i = (0) and j = (1)", i,j); ) ) ) )
Kun suoritamme ohjelmaa, tulos on:
i = 0 ja j = 0 i = 1 ja j = 1 i = 2 ja j = 2
Tässä ohjelmassa olemme ilmoittaneet ja alustaneet kaksi muuttujaa: i ja j alustamislausekkeessa.
Lisäksi iteraattoriosassa on kaksi lauseketta. Tämä tarkoittaa, että sekä i: tä että j: tä lisätään yhdellä kullakin iteraatiolla.
Silmukalle ilman alustusta ja iteraattorilauseita
Alustus, ehto ja iteraattorilauseke ovat valinnaisia for-silmukassa. Se tarkoittaa, että voimme suorittaa for for -silmukan myös ilman näitä lausekkeita.
Tällaisissa tapauksissa silmukka toimii hetkellisenä silmukana. Katsotaanpa alla oleva esimerkki.
Esimerkki 4: silmukalle ilman alustusta ja iteraattorilausetta
using System; namespace Loop ( class ForLoop ( public static void Main(string() args) ( int i = 1; for ( ; i<=5; ) ( Console.WriteLine("C# For Loop: Iteration (0)", i); i++; ) ) ) )
Kun suoritamme ohjelmaa, tulos on:
C # Silmukka: Iteraatio 1 C # Silmukka: Iteraatio 2 C # Silmukka: Iteraatio 3 C # Silmukka: Iteraatio 4 C # Silmukka: Iteraatio 5
Tässä esimerkissä emme ole käyttäneet alustus- ja iteraattorilauseketta.
Muuttuja i alustetaan for-silmukan yläpuolelle ja sen arvoa kasvatetaan silmukan rungon sisällä. Tämä ohjelma on sama kuin esimerkissä 1.
Vastaavasti ehto on myös valinnainen lause. Jos emme kuitenkaan käytä testilauseketta, for-silmukka ei testaa mitään ehtoja ja toimii ikuisesti (ääretön silmukka).
Ääretön silmukalle
Jos for-silmukan ehto on aina totta, silmukka toimii ikuisesti. Tätä kutsutaan loputtomaksi silmukalle.
Esimerkki 5: Ääretön silmukalle
using System; namespace Loop ( class ForLoop ( public static void Main(string() args) ( for (int i=1 ; i>0; i++) ( Console.WriteLine("C# For Loop: Iteration (0)", i); ) ) ) )
Tässä i alustetaan arvoon 1 ja ehto on i>0
. Jokaisella iteraatiolla kasvatamme i: n arvoa yhdellä, joten ehtoa ei koskaan tule false
. Tämä saa silmukan suorittamaan loputtomasti.
Voimme myös luoda äärettömän silmukan korvaamalla ehdon tyhjällä. Esimerkiksi,
for (;;) (// silmukan runko)
tai
for (alustus;; iteraattori) (// silmukan runko)