Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Následující verze | Předchozí verze | ||
ccpp:cykluswhile [2019/10/10 16:04] – vytvořeno durdilova | ccpp:cykluswhile [2021/12/22 14:03] (aktuální) – bures | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
====== Cyklus while ====== | ====== Cyklus while ====== | ||
- | Cyklus while je cyklem s podmínkou na začátku. Nejprve se vyhodnotí podmínka | + | Cyklus while je cyklem s podmínkou na začátku. Nejprve se vyhodnotí podmínka |
Cyklus while se skládá ze dvou částí: | Cyklus while se skládá ze dvou částí: | ||
- | * hlavička | + | * Podmínka |
* klíčové slovo **while** | * klíčové slovo **while** | ||
* podmínka cyklu | * podmínka cyklu | ||
- | * tělo cyklu - vlastní příkaz, nebo blok kódu, který se bude vykonávat. Musí zde být příkaz, který má vliv na podmínku, aby nedošlo k zacyklení. | + | * Příkaz/blok příkazů které se budou vykonávat |
- | ===== Syntaxe cyklu for ===== | + | ===== Syntaxe cyklu while ===== |
<code c> | <code c> | ||
- | // S jedním příkazem | + | // S jedním příkazem |
- | for (inicializace; | + | while (podminka) |
prikaz; | prikaz; | ||
- | // S blokem příkazů | + | // S blokem příkazů |
- | for (inicializace; | + | while (podminka) |
{ | { | ||
prikaz1; | prikaz1; | ||
prikaz2; | prikaz2; | ||
- | //... | + | // ... |
+ | prikazN; | ||
} | } | ||
</ | </ | ||
==== Poznámky ==== | ==== Poznámky ==== | ||
- | * Při zachování středníků se dá libovolná část hlavičky vynechat - // | ||
* Podmínka cyklu nemusí být platná už před první iterací. Cyklus pak nevykoná ani jednu iteraci. | * Podmínka cyklu nemusí být platná už před první iterací. Cyklus pak nevykoná ani jednu iteraci. | ||
* Cykly while a for se dají mezi sebou navzájem transformovat. | * Cykly while a for se dají mezi sebou navzájem transformovat. | ||
- | * Při použití operátoru //čárka//, lze v libovolné části hlacičky vykonávat více operací. - // | + | * Pokud bude podmínka vždy pravdivá (tautologie), dojede k zacyklení programu |
- | ===== Průběh cyklu for ===== | + | ===== Průběh cyklu while ===== |
- | - **inicializační část** | + | |
- **ověření podmínky** | - **ověření podmínky** | ||
- podmínka platí | - podmínka platí | ||
- **vykonání těla cyklu** | - **vykonání těla cyklu** | ||
- | - **aktualizační část** | + | - **jdi zpět na ověření podmínky** |
- | - opakuj krok 2. | + | |
- podmínka neplatí | - podmínka neplatí | ||
- **konec cyklu** | - **konec cyklu** | ||
===== Ukázky ===== | ===== Ukázky ===== | ||
- | ==== Výpis čísel od 1 do 10 pomocí cyklu for ==== | + | ==== Výpis čísel od 1 do 10 pomocí cyklu while ==== |
<code c> | <code c> | ||
- | for (int cislo = 1; cislo <= 10; cislo++) | + | int cislo = 1; // Inicializujeme řídící proměnnou |
- | printf(" | + | |
- | </ | + | |
- | ==== Ekvivalentní výpis čísel od 1 do 10 pomocí cyklu while ==== | + | |
- | <code c> | + | |
- | int cislo = 1; // Inicializační část | + | |
while (cislo <= 10) // Podmínka cyklu | while (cislo <= 10) // Podmínka cyklu | ||
{ | { | ||
- | printf(" | + | printf(" |
- | cislo++; // Aktualizační | + | cislo++; // Zvětšení hodnoty o jedničku |
} | } | ||
</ | </ | ||
- | ==== Vypsání prvků pole o kapacitě 42 ==== | + | ==== Ekvivalentní výpis čísel od 1 do 10 pomocí cyklu for ==== |
<code c> | <code c> | ||
- | double pole[42] = {}; | + | for (int cislo = 1; cislo <= 10; cislo++; ) // Inicializační část; Podmínka cyklu; Aktualizační část |
- | // inicializace prvků pole | + | |
- | for (int i = 0; i < 42; i++) | + | |
{ | { | ||
- | printf(" | + | printf(" |
- | if (i != 41) | + | |
- | printf(", | + | |
} | } | ||
- | putchar(' | ||
</ | </ | ||
+ | |||
+ | ===== Příklady k procvičení ===== | ||
+ | * Výpis čísel od 10 do 1 | ||
+ | * Vypsat N-krát znak * (N je celé číslo ze vstupu) | ||
+ | * Výpis násobků zadaného čísla N (1 * N, 2 * N, ... 10 * N) | ||
+ | * Výpis celých čísel v zadaném intervalu <A, B>, (A, B>, nebo (A, B) |