Selles artiklis õpime lisateavet silmuse jaoks C # -s ja erinevatest viisidest nende kasutamiseks programmis.
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 vaatleme silmus C #.
C # silmuse jaoks
Jaoks märksõna on kasutatud luua silmus C #. Silmuse süntaks on:
for (initsialiseerimine; tingimus; iteraator) (// silmu keha)
Kuidas silmus töötab?
- C # jaoks silmus on kolm avaldust:
initialization
,condition
jaiterator
. initialization
Avaldus täidetakse esimesel ja ainult üks kord. Siin deklareeritakse ja initsialiseeritakse tavaliselt muutuja.- Seejärel
condition
hinnatakse. Seecondition
on boolean avaldis, st see tagastab kastrue
võifalse
. - Kui
condition
hinnataksetrue
:- Aasal olevad laused täidetakse.
- Seejärel
iterator
käivitatakse lause, mis tavaliselt muudab initsialiseeritud muutuja väärtust. - Jällegi
condition
hinnatakse. - Protsess jätkub seni, kuni
condition
hinnataksefalse
.
- Kui väärtuseks
condition
hinnataksefalse
, lõpetatakse for-silmus.
Loop vooskeemi jaoks
Näide 1: Loopi jaoks C #
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); ) ) ) )
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
Selles programmis
initialization
avaldus onint i=1
condition
avaldus oni<=5
iterator
avaldus oni++
Kui programm töötab,
- Esiteks deklareeritakse muutuja i ja lähtestatakse väärtuseks 1.
- Seejärel hinnatakse seisundit (
i<=5
). - Kuna tingimus naaseb
true
, käivitab programm for loopi keha. See trükib etteantud rea Iteratsiooniga 1 (Iteratsioon tähendab lihtsalt kordamist). - Nüüd hinnatakse iteraatorit (
i++
). See suurendab i väärtust 2-le. - Tingimust (
i<=5
) hinnatakse uuesti ja lõpus suurendatakse i väärtust 1-ga. Tingimust hinnataksetrue
esimese viie korra jooksul. - Kui i väärtus on 6 ja tingimus on
false
, siis lõpeb silmus.
Näide 2: silmuse jaoks esimese n loodusliku arvu summa arvutamiseks
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); ) ) )
Programmi käivitamisel on väljund:
Esimese 5 loodusarvu summa = 15
Siin lähtestatakse summa ja n väärtus vastavalt 0 ja 5. Iteratsioonimuutuja i lähtestatakse väärtusele 1 ja suurendatakse igal iteratsioonil.
For-silmuse sees suurendatakse summa väärtust i st sum = sum + i
. For silmus jätkub, kuni i on väiksem või võrdne n (kasutaja sisend).
Vaatame, mis juhtub antud programmis igas iteratsioonis.
Esialgu i = 1, summa = 0 ja n = 3
Silmade täitmise sammude jaoksKordus | 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, kui n = 5.
Mitu avaldist silmuse jaoks for for loopi jaoks
Samuti võime a loopi sees kasutada mitmeid väljendeid. See tähendab, et for loopi sees võib olla rohkem kui üks initsialiseerimise ja / või iteraatori lause. Vaatame allpool toodud näidet.
Näide 3: mitmekordse initsialiseerimise ja iteraatori avaldistega silmuse jaoks
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); ) ) ) )
Programmi käivitamisel on väljund:
i = 0 ja j = 0, i = 1 ja j = 1, i = 2 ja j = 2
Selles programmis oleme deklareerinud ja initsialiseerinud initsialiseerimislause kaks muutujat: i ja j.
Samuti on meil iteraatori osas kaks väljendit. See tähendab, et nii i kui ka j suurendatakse igal kordusel 1-ga.
Initsialiseerimise ja iteraatori lauseteta tsükli jaoks
Initsialiseerimine, tingimus ja iteraatori lause on for silmus valikulised. See tähendab, et me saame käivitada for for loopi ka nende lauseteta.
Sellistel juhtudel toimib silmus silmuse ajal. Vaatame allpool toodud näidet.
Näide 4: tsükli jaoks ilma initsialiseerimise ja iteraatori avalduseta
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++; ) ) ) )
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
Selles näites pole me kasutanud initsialiseerimist ja iteraatori lauset.
Muutuja i initsialiseeritakse for-silmusest kõrgemale ja selle väärtust suurendatakse silmuse kehas. See programm on sama, mis näites 1.
Samamoodi on tingimus ka valikuline lause. Kuid kui me ei kasuta testväljendit, ei testi for loop ühtegi tingimust ja töötab igavesti (lõpmatu silmus).
Lõputu silmuse jaoks
Kui tingimus for silmus on alati tõene, kestab silmus igavesti. Seda nimetatakse silmuse jaoks lõpmatuks.
Näide 5: lõpmatu silmuseks
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); ) ) ) )
Siin initsialiseeritakse i väärtuseks 1 ja tingimus on i>0
. Igal iteratsioonil suurendame i väärtust 1 võrra, nii et tingimus ei saa kunagi olema false
. See põhjustab tsükli lõpmatu täitmise.
Saame luua ka lõpmatu tsükli, asendades tingimuse toorikuga. Näiteks,
for (;;) (// silmusekeha)
või
for (initsialiseerimine;; iterator) (// silmusekeha)