TOC

This article has been localized into Czech by the community.

Řídicí struktury:

Cykly

Další základní technikou při psaní softwaru je cyklus (loop), který má schopnost opakovat blok kódu X krát. V C# se provádí ve 4 různých variantách a my se na ně podíváme.

Cyklus while

Cyklus while je pravděpodobně nejjednodušší, a tak začneme s tím. Cyklus while jednoduše provede blok kódu, pokud je podmínka, kterou dáte, pravdivá. Malý příklad a pak další vysvětlení:

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();
}
    }
}

Zkuste spustit kód. Získáte pěkný seznam čísel od 0 do 4. Číslo je nejprve definováno jako 0 a pokaždé, když je kód v cyklu spuštěn, je o 1 hodnotu vyšší. Ale proč se dostává jen na 4, když kód říká 5? Aby podmínka vrátila hodnotu true, musí být číslo menší než 5, což v tomto případě znamená, že kód, který zobrazí číslo není dosažen, jakmile se číslo rovná 5. To je proto, že je vyhodnocena podmínka cyklu while dříve než vstoupí do bloku kódů.

Cyklus do

Opačné platí pro cyklus do, který se ovšem v ostatních aspektech chová jako cyklus while. Cyklus do vyhodnocuje podmínku až po provedení cyklu, což zajišťuje, že je kódový blok vždy proveden alespoň jednou.

int number = 0;
do  
{  
    Console.WriteLine(number);  
    number = number + 1;  
} while(number < 5);

Výsledek je ovšem stejný - jakmile je číslo větší než 5, cyklus je ukončen.

Cyklus for

Pro smyčku je trochu jiná. Je výhodné, když víte, kolik iterací chcete, buď proto, že znáte přesné množství iterací, nebo proto, že máte proměnnou obsahující tuto částku. Zde je příklad smyčky for.

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();
}
    }
}

To vede k naprosto stejnému vstupu, ale jak vidíte, cyklus for je o něco kompaktnější. Sestává ze 3 částí - inicializujeme proměnnou pro počítání, nastavíme podmíněný příkaz pro její otestování a inkrementujeme čítač (++ znamená totéž co "proměnná = proměnná + 1").

První část, kde definujeme proměnnou i a nastavíme ji na 0, je vykonaná pouze jednou před tím, než cyklus začne. Poslední 2 části jsou vykonány při každé iteraci cyklu. Při každém cyklu je i porovnán s naší proměnnou number - pokud je i menší než number, cyklus se zopakuje ještě jednou. Po tom je i zvětšeno o jedničku.

Vyzkoušejte spuštění programu a poté zkuste změnit proměnnou number na větší nebo menší hodnotu než 5. Uvidíte, že cyklus na tuto změnu zareaguje.

Cyklus foreach

Poslední smyčka, na kterou se podíváme, je smyčka foreach. Funguje na kolekcí položek, například polí nebo jiných vestavěných typů seznamů. V našem příkladu použijeme jeden z jednoduchých seznamů nazvaných ArrayList. Funguje to podobně jako pole, ale nebojte se, podíváme se do něj v pozdější kapitole.

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();
}
    }
}

Dobře, takže vytvoříme instanci ArrayListu a přidáme do ní nějaké strunné položky. Pro každou položku používáme smyčku foreach a nastavíme proměnnou name na položku, kterou jsme dosáhli pokaždé. Tímto způsobem máme k dispozici pojmenovanou proměnnou. Jak vidíte, deklarujeme proměnnou name, která má být typu string - vždy musíte říci foreach smyčce, kterou datový typ očekáváte, že se z kolekce vytáhne. V případě, že máte seznam různých typů, můžete namísto určité třídy použít třídu objektu, abyste každou položku vytáhli jako objekt.

Při práci s kolekcemi budete s velkou pravděpodobností používat hlavně smyčku foreach, hlavně proto, že je pro tyto operace jednodušší než jakákoli jiná smyčka.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!