This article has been localized into Hungarian by the community.
Ciklusok
A ciklusok (loopok) szintén fontos részei a szoftverfejlesztésnek - velük lehetséges, hogy egy kódblokkot több alkalommal is megismételjünk. C#-ban négy különböző ciklus létezik, ezeket vesszük alább szemügyre.
A while ciklus
A while ciklus talán a legegyszerűbb az összes közül, kezdjünk is hát azzal. Egy while ciklus folyamatosan végrehajt egy kódblokkot, amíg a megadott feltétel igazra értékelhető. Íme egy apró példa:
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int number = 0;
while(number < 5)
{
Console.WriteLine(number);
number = number + 1;
}
Console.ReadLine();
}
}
}
Próbáld meg futtatni a kódot: egy számlistát fogsz kapni, nullától négyig. A number változót ugyanis nullára definiáljuk, majd minden alkalommal, amikor a ciklusban lévő kód végrehajtódik, a változót kiíratjuk, majd eggyel megnöveljük. De akkor miért megy a lista négyig, ha a kódban ötöt írtunk? Azért, mert a feltétel akkor értékelődik igazra, ha a number változó kevesebb mint öt. Amint a változó értéke öt lesz, a feltétel hamisra értékelődik, így a ciklus nem kerül újbóli végrehajtásra. Ez azért van, mert while ciklusnál a feltétel mindig a kódblokk végrehajtása előtt van ellenőrizve.
A do ciklus
Ennek ellenkezője a do ciklus, ami egyéb tekintetben úgy működik, mint egy while ciklus. A do ciklus esetén tehát a feltétel kiértékelése minden végrehajtás után történik. Ez azt jelenti, hogy a ciklus legalább egyszer mindenképpen végre lesz hajtva.
int number = 0;
do
{
Console.WriteLine(number);
number = number + 1;
} while(number < 5);
Az eredmény minden esetre itt is ugyanaz - amint a szám több vagy egyenlő öttel, a ciklus véget ér.
A for ciklus
A for ciklus már különbözik az eddigiektől. Akkor érdemes használni, amikor tudni, hogy a ciklus mennyi iterációjára, végrehajtására van szükség. Ilyen eset például ha tudod pontosan, hogy hányszor szeretnéd végrehajtani a ciklust, vagy ha van egy változó, ami tartalmazza a szükséges iterációk számát. Itt egy példa for loopra:
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int number = 5;
for(int i = 0; i < number; i++)
Console.WriteLine(i);
Console.ReadLine();
}
}
}
Ez ugyanazt az eredményt produkálja, mint ez eddigi ciklusok, de ahogy azt látni, a for loop kissé rövidebben írható. Három részből áll: deklarálunk egy változót, amivel számolunk; felállítunk egy feltételt, ami minden iterációnál kiértékelődik; végül egy utasítás ami növeli a számoló változó értékét (a ++ ugyanazt jelenti, mint "változó = változó + 1").
Az első rész, ahol az i változót definiáljuk és nullára állítjuk, csak egyszer van végrehajtva, mielőtt a ciklus elkezdődik. A másik két rész minden iterációnál végrehajtódik. Minden alkalommal, i összehasonlításra kerül a number változóval - ha i kisebb mint number, akkor a ciklus fut még egy iterációt. Ezután i értéke eggyel növekszik a harmadik rész alapján.
Próbáld meg futtatni a programot, utána próbáld meg megváltoztatni a number változó értékét és újra futtatni. A ciklus reagálni fog a változásra.
A foreach ciklus
Az utolsó ciklus, amiről szót ejtünk, a foreach ciklus. Gyűjteményekkel dolgozik, mint tömbökkel vagy más beépített gyűjteménytípusokkal. A mi példánkban az egyik egyszerű listatípust használjuk, ami az ArrayList. Hasonlóan működik, mint egy tömb (array), de egyelőre ne foglalkozz a részleteivel, egy későbbi fejezetben majd alaposabban szemügyre vesszük.
using System;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ArrayList list = new ArrayList();
list.Add("John Doe");
list.Add("Jane Doe");
list.Add("Someone Else");
foreach(string name in list)
Console.WriteLine(name);
Console.ReadLine();
}
}
}
Először csinálunk egy ArrayList példányt, majd pár string elemet adunk hozzá. A foreach loopot használva minden iterációval veszünk egy elemet, majd a name változóhoz rendeljük. Ezáltal van egy változónk, amit a kimenetnél használunk is. Ahogy azt láthatod, a name változót stringként deklaráljuk. A foreach ciklusnak ugyanis tudnia kell, milyen adattípust fog kezelni egy adatgyűjteményben. Ha egy különböző típusokból álló gyűjteményről van szó, az object típus is használható egy konkrét típus helyett. Ez esetben a gyűjtemény elemei objectként lesznek kezelve a ciklus alatt.
A gyűjteményekkel való munkánál alighanem gyakran foreach ciklust fogsz majd használni, mivel az a többi ciklusnál sokkal egyszerűbben használható ilyen feladatokra.