Cykly
V programu často potřebujeme opakovat určitou část kódu. Potřebujeme tedy kontrukci která nám to umožní a to jsou cykly.
// Cyklus while
// Telo cyklu se opakuje pokud plati podminka.
while (podminka) {
// telo cyklu
}
// Cyklus do-while
// Je analogicky k cyklu while s tim rozdilem ze se podminka testuje az po provedeni tela.
// To znamena ze telo cyklu se provede alespon 1.
do {
// telo cyklu
} while (podminka)
// Cyklus for
// Prikazy init se provedou pred zapocetim cyklu
// Prikazy iter se provedou po dokonceni tea cyklu
// Podminka ma stejnou funkci jako u cyklu while.
for (init; podminka; iter) {
// telo cyklu
}
// PRIKLADY
// Vypiseme cisla 0 az 9
for(int j = 0; j < 10; j = j + 1) {
printf("%i ", j);
}
int j = 0;
while(j < 10) {
printf("%i ", j);
j = j + 1;
}
// V cyklech je mozne pouzit prikazy break a continue.
// Break ukonci vykonavani cyklu
// Continue pokracuje ve vykonavani dalsi iterace (kolo)
// Vypiseme cisla 0 az 9 ale vynechame nasobky 3
for (int j = 0; j < 10; j = j + 1) {
if (j % 3 == 0) {
continue;
}
printf("%i ", j);
}
// Pokud bychom pouzili break misto continue tak by program nevypsal zadnou hodnotu. Zkuste se zamyslet proc.
Dodatek k aritmetickým operacím
Pokud chceme v cyklu (nebo kdekoliv jinde) inkremetovat, nebo-li přičíst 1, můžeme k tomu použít několik konstrukcí:
int j = 0;
// Jiz zname
j = j + 1;
// Inkementace
j++;
++j;
// Dekrementace
j--;
--j;
// Dalsi moznost, kde muzeme pricitat libovolnou hodnotu
j += 1;
j += 10; // Ekvivaletni s j = j + 10
// Vyse uvedenou konstrukci pouzit i s artimetickymi operacemi *, -, /,
j *= 10; // j = j * 10
// Cyklus vyse muzeme upravit nasledovne
for (int j = 0; j < 10; j += 1) {
if (j % 3 == 0) {
continue;
}
printf("%i ", j);
}
// nebo
for (int j = 0; j < 10; j++) {
if (j % 3 == 0) {
continue;
}
printf("%i ", j);
}
Úkoly
Napište v jazyku C program, který pro zadané číslo vypíše na obrazovku všechny jeho násobky menší nebo rovny číslu 100.
Zadejte cislo: 7
Nasobky zadaneho cisla:
7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98
Napište v jazyku C program, který vykreslí pomocí znaku "*" na obrazovku čtverec zadané velikosti.
Zadejte velikost ctverce: 5
*****
* *
* *
* *
*****
Napište program, který pro přirozená čísla a a b:
- Vypíše prvních a násobků čísla b.
- Vypočítá a-tou mocninu čísla b.
- Vypočítá a-té Fibonacciho číslo.
- Určí, kolik číslic má číslo a.
- Sečte všechna celá čísla větší než a a menší než b.