Zpět na seznam článků     Číst komentáře (10)     Verze pro tisk

C# - 7.díl - Cykly

Autor: sukovanej   
13.2.2013

Předmětem dnešního dílu o jazyce C# jsou cykly. Článek ukazuje, jaké cykly jazyk C# poskytuje, jak je definovat a použit.


Co jsou to cykly

Cykly jsou takové programové struktury, které podle určitého pravidla opakují kus definovaného kódu. Jsou to struktury while, do while, for a foreach. Každá má nějaké specifikum, ale na jednu věc můžeme použít všechny, přičemž výsledek bude stejný, jen postup se bude lišit.

For

V případě tohoto cyklu předem známe počet opakování (resp. podmínku, která musí platit, aby se cyklus opakoval), počáteční hodnotu proměnné, s kterou pracujeme a způsob, jakým se bude proměnná v průběhu cyklu měnit. Definice cyklu vypadá následovně.

  1. for (vstupní proměnná; podmínka; příkaz)
  2.    příkaz;

Vstupní proměnná je proměnná, se kterou budeme v průběhu cyklu pracovat. Podmínkou stanovujeme mez, pro kterou bude cyklus probíhat. Pokud například řekneme, že vstupní proměnná je x = 2 a my budeme opakovat do té doby, než bude x rovno 12, podmínka bude x <= 12. První příkaz je většinou buď inkrementace, nebo dekrementace vstupní proměnné. Pokud by se s proměnnou během cyklu nic nedělo, běžel by cyklus do nekonečna, takže výsledku bychom se asi nedočkali.

Mějme nyní příklad, kdy potřebujeme desetkrát vypsat nějaký text.

  1. Console.Write("Ahoj");          
  2. Console.Write("Ahoj");          
  3. Console.Write("Ahoj");          
  4. Console.Write("Ahoj");          
  5. Console.Write("Ahoj");          
  6. Console.Write("Ahoj");            
  7. Console.Write("Ahoj");        
  8. Console.Write("Ahoj");        
  9. Console.Write("Ahoj");        
  10. Console.Write("Ahoj");

To je dost neefektivní a při změně textu bychom ho museli desetkrát přepisovat. Sestavíme si cyklus, který bude mít vstupní proměnnou rovnu jedničce, a budeme tuto hodnotu inkrementovat, dokud nebude rovna desítce.

  1. for (int i = 1; i <= 10; i++)
  2.    Console.WriteLine("Ahoj");

Oba dva zdrojové kódy po zkompilování vyhodí stejný výsledek, ovšem použít první způsob je čirý nerozum.

Cyklus While a Do while

Tyto cykly jsou si velice podobné. Jsou velice jednoduché, protože jim pouze zadáte podmínku, která musí platit, aby se cyklus opakoval, a nic dalšího nepotřebují. Cykly si liší v tom, že když použijeme cyklus while, nejdříve se kontroluje podmínka a až potom se provádí zdrojový kód. Může tedy nastat případ, kdy se cyklus nezopakuje ani jednou. Cyklus do while se na rozdíl od toho provede vždy alespoň jednou, teprve potom se kontroluje podmínka. Definice cyklu while vypadá následovně

  1. while (podmínka)          
  2. {              
  3.    příkaz;      
  4. }
A definice cyklu do while takto
  1. do
  2. {
  3.    příkaz;
  4. } while (podmínka);

Všimněte si, že u cyklu do while je na konci středník, což je neobvyklé vzhledem k tomu, že je to struktura. Tento cyklus nalezne uplatnění například, u životního cyklu programu. Po provedení určité činnosti programu se můžeme uživatele zeptat, jestli chce činnost provést znovu a podle získané hodnoty (string) potom budeme opakovat cyklus, nebo ne.

  1. string odpoved = null;
  2.  
  3. do
  4. {
  5.    // Nějaký zdrojový kód
  6.    Console.WriteLine("Chcete aplikaci provést znovu? (Ano - Ne)");
  7.    odpoved = Console.ReadLine();
  8. } while (odpoved == "Ano");

Foreach

Tento cyklus dokáže procházet prvky určeného pole dat (kolekce,…). Při každém průchodu cyklem je prvku z pole přiřazena proměnná (název a typ této proměnné si musíme definovat), která tuto hodnotu reprezentuje, a mi s ní můžeme pracovat. Užívá se např. v situaci, kdy procházíme celým polem, nebo kolekcí.

Definice:

  1. foreach (var proměnná in data)
  2. {
  3.    příkaz;
  4. }

Příklad – mocniny

Cyklus je ideální prostředek pro výpočet mocnin, takže si ukážeme příklad, jak vypočítat obecně n-tou mocninu čísla. Od uživatele získáme hodnotu exponentu a základu mocniny. Tyto hodnoty si uložíme do nějaké proměnné. Budeme procházet cyklem od čísla 1 do čísla n (exponent) a při každém průchodu cyklem roznásobíme nějakou pomocnou proměnnou (označíme si ji jako vysledek) základem mocniny.

  1. Console.Write("Zadejte základ mocniny : ");
  2. int a = Convert.ToInt32(Console.ReadLine());
  3. Console.Write("Zadejte exponent : ");
  4. int n = Convert.ToInt32(Console.ReadLine());
  5.  
  6. int vysledek = 1;
  7. for (int i = 1; i <= n; i++)
  8.    vysledek *= a;
  9.  
  10. Console.WriteLine(vysledek);
  11. Console.ReadKey();

Po vyzkoušení byste skutečně měli dostávat hledané mocniny.

Závěr

To je všechnu k tomuto „rychlokurzu“ cyklů. Předmětem dalšího dílu bude pole a práce s ním.


Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 2.55/11

1  2  3  4  5    
(známkování jako ve škole)