Selles artiklis õpime tundma, kuidas ja millal teha … samas kui silmus on C #, kuidas neid kasutada ja nende vahelist erinevust.
Programmeerimisel soovitakse sageli käivitada teatud lauseplokk kindlaksmääratud arv kordi. Võimalik lahendus on nende lausete sisestamine vajalik arv kordi. Kuid korduste arv ei pruugi olla ette teada (kompileerimise ajal) või võib-olla piisavalt suur (ütleme 10000).
Parim lahendus sellisele probleemile on loop. Loope kasutatakse programmeerimisel teatud lauseploki korduvaks täitmiseks, kuni mõni tingimus on täidetud.
Selles artiklis õpime C # -s kasutama silmuseid.
C # samas silmus
Samas märksõna on kasutatud luua samas loop C #. Loopi süntaks on:
while (test-avaldis) (// while-keha)
Kuidas silmus töötab?
- C # samas kui silmus koosneb a-st
test-expression
. - Kui
test-expression
hinnatakse, ettrue
,- käske while-tsükli sees täidetakse.
- pärast täitmist
test-expression
hinnatakse uuesti.
- Kui väärtuseks
test-expression
hinnataksefalse
, lõpeb while-silmus.
samas loop vooskeem
Näide 1: samal ajal kui aas
using System; namespace Loop ( class WhileLoop ( public static void Main(string() args) ( int i=1; while (i<=5) ( Console.WriteLine("C# For Loop: Iteration (0)", i); i++; ) ) ) )
Programmi käivitamisel on väljund:
C # Loop: Iteratsioon 1 C # Loop: Iteratsioon 2 C # Loop: Iteratsioon 3 C # Loop: Iteratsioon 4 C # Loop: Iteratsioon 5
Esialgu on i väärtus 1.
Kui programm jõuab while-silmuse lauseni,
- hinnatakse testi väljendust
i <=5
. Kuna i on 1 ja1 <= 5
ontrue
, käivitab ta while-silmuse keha. Siin trükitakse joon ekraanile Iteratsiooniga 1 ja i väärtust suurendatakse 1 võrra, et saada 2. - Nüüd hinnatakse testi väljendit (
i <=5
) uuesti. Ka seekord naaseb avaldistrue
(2 <= 5), nii et joon prinditakse ekraanile ja i väärtust suurendatakse nüüd 3-ni … - Nii läheb ja while-tsükkel käivitub seni, kuni i saab väärtuseks 6. Sel hetkel hindab test-avaldis
false
tsüklit ja seega lõpeb silmus.
Näide 2: while loop esimese 5 loodusarvu summa arvutamiseks
using System; namespace Loop ( class WhileLoop ( public static void Main(string() args) ( int i=1, sum=0; while (i<=5) ( sum += i; i++; ) Console.WriteLine("Sum = (0)", sum); ) ) )
Programmi käivitamisel on väljund:
Summa = 15
See programm arvutab esimese 5 loodusarvu summa.
- Esialgu lähtestatakse summa väärtus 0-ni.
- Igal iteratsioonil värskendatakse summa
sum+i
väärtuseks ja i väärtust suurendatakse 1-ga. - Kui i väärtus jõuab 6-ni,
i<=5
tagastab testväljend vale ja silmus lõpeb.
Vaatame, mis juhtub antud programmis igas iteratsioonis.
Esialgu i = 1, summa = 0
Samal ajal kui silmuse täitmine toimubKordus | I väärtus | i <= 5 | Summa väärtus |
---|---|---|---|
1 | 1 | tõsi | 0 + 1 = 1 |
2 | 2 | tõsi | 1 + 2 = 3 |
3 | 3 | tõsi | 3 + 3 = 6 |
4 | 4 | tõsi | 6 + 4 = 10 |
5 | 5 | tõsi | 10 + 5 = 15 |
6 | 6 | vale | Silmus lõpeb |
Seega on summa lõplik väärtus 15.
C # teha … silmuse ajal
Teha ja samas märksõna on kasutatud luua do … samas loop. See sarnaneb mingi aja silmusega, kuid nende vahel on suur erinevus.
In while loop kontrollitakse enne keha käivitamist seisundit. See on risti vastupidine, kui teha … kui silmus, st seisundit kontrollitakse pärast keha käivitamist.
Sellepärast teostab keha do … samas kui tsükkel teostatakse vähemalt üks kord, olenemata testväljendist.
Rakenduse do … while tsükli süntaks on:
do (// body of do while loop) while (test-avaldis);
Kuidas … kui silmus töötab?
- Keha teha … kui silmus käivitatakse alguses.
- Siis
test-expression
hinnatakse. - Kui see
test-expression
ontrue
, käivitatakse silmuse keha. - Kui
test-expression
onfalse
, siis tehke …, kuni silmus lõpeb.
tee … samas vooskeemina
Näide 3: tee … loopi ajal
using System; namespace Loop ( class DoWhileLoop ( public static void Main(string() args) ( int i = 1, n = 5, product; do ( product = n * i; Console.WriteLine("(0) * (1) = (2)", n, i, product); i++; ) while (i <= 10); ) ) )
Programmi käivitamisel on väljund:
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25 5 * 6 = 30 5 * 7 = 35 5 * 8 = 40 5 * 9 = 45 5 * 10 = 50
As we can see, the above program prints the multiplication table of a number (5).
- Initially, the value of i is 1. The program, then enters the body of do… while loop without checking any condition (as opposed to while loop).
- Inside the body, product is calculated and printed on the screen. The value of i is then incremented to 2.
- After the execution of the loop’s body, the test expression
i <= 10
is evaluated. In total, the do… while loop will run for 10 times. - Finally, when the value of i is 11, the test-expression evaluates to
false
and hence terminates the loop.
Infinite while and do… while loop
If the test expression in the while and do… while loop never evaluates to false
, the body of loop will run forever. Such loops are called infinite loop.
For example:
Infinite while loop
while (tõene) (// ajas oleva loopi keha)
Infinite do … while loop
do (// keha silmusest) while (tõene);
Lõpmatu silmus on kasulik, kui vajame tsüklit, kuni see töötab, kuni meie programm töötab.
Näiteks kui teie programm on animatsioon, peate seda pidevalt peatama, kuni see peatatakse. Sellistel juhtudel on animatsiooni korduva käitamise jaoks vajalik lõpmatu silmus.