Cyklus for
Většina cyklů, které počítají, má stejné tři části: proměnnou vytvořenou před cyklem, podmínku a změnu na konci bloku:
int cislo = 1; // začátek
while (cislo <= 5) { // podmínka
printf("%d\n", cislo);
cislo++; // krok
}Takové počítání je tak časté, že má jazyk C cyklus, který všechny tři části spojí do jednoho řádku. Je to cyklus for (pro):
for (int i = 1; i <= 5; i++) {
printf("%d\n", i);
}Oba cykly vypíšou totéž:
1
2
3
4
5V kulatých závorkách za for jsou tři části oddělené středníky (;):
int i = 1je začátek. Vytvoří proměnnou cyklu a provede se jen jednou, úplně na začátku.i <= 5je podmínka. Kontroluje se před každým průchodem. Když neplatí, cyklus skončí.i++je krok. Provede se po každém průchodu, když blok doběhne.
Pořadí je tedy: začátek, podmínka, blok, krok, podmínka, blok, krok a tak dále. V našem cyklu má i hodnotu 1, 1 <= 5 platí, blok vypíše 1, krok zvýší i na 2, 2 <= 5 platí, blok vypíše 2… Po výpisu pětky zvýší krok i na 6, 6 <= 5 neplatí a cyklus skončí.
Proměnná cyklu se často jmenuje i, ale může mít jakýkoli název. Existuje jen uvnitř cyklu. Když i použijete za cyklem, překladač ji nezná:
#include <stdio.h>
int main(void) {
for (int i = 1; i <= 3; i++) {
printf("%d\n", i);
}
printf("%d\n", i);
return 0;
}main.c:7:20: error: use of undeclared identifier 'i'
7 | printf("%d\n", i);
| ^
1 error generated.Undeclared identifier (nedeklarovaný identifikátor) je název, který překladač na tomto místě nezná. Když hodnotu potřebujete i za cyklem, použijte cyklus while s proměnnou vytvořenou před ním, jako v předchozích cvičeních. Na druhou stranu může mít každý cyklus své vlastní i, protože každé i zmizí, jakmile jeho cyklus skončí.
Tři části oddělujte středníky, ne čárkami. S čárkami, for (int i = 1, i <= 3, i++), se překladač zmate a ohlásí hned několik chyb. První z nich, error: invalid '<=' at end of declaration; did you mean '='?, vám moc nepomůže. Když chybová hláška ukazuje na řádek s for, zkontrolujte nejdřív středníky.
for, nebo while? for použijte, když víte, kolikrát se cyklus provede: od 1 do 10 nebo sedmkrát pro dny v týdnu. while použijte, když to předem nevíte, například když chcete číslo zdvojnásobovat, dokud nebude větší než 1000:
int cislo = 1;
int zdvojnasobeni = 0;
while (cislo <= 1000) {
cislo = cislo * 2;
zdvojnasobeni++;
}
printf("Zdvojnásobení: %d\n", zdvojnasobeni);
printf("Číslo: %d\n", cislo);Zdvojnásobení: 10
Číslo: 1024Jak psát:
Pokyny
Přepište cyklus while z editoru na cyklus for s proměnnou i. Cyklus while a řádek, který vytváří proměnnou cislo, smažte. Program bude dál vypisovat čísla od 1 do 5.
Změňte svůj cyklus tak, aby vypsal čísla od 1 do 10, včetně desítky.
Pod něj napište druhý cyklus for, opět s proměnnou i, který vypíše druhé mocniny čísel od 1 do 5: 1 x 1 = 1, 2 x 2 = 4 a tak dále až po 5 x 5 = 25, každou na samostatný řádek. Druhou mocninu můžete spočítat přímo v printf: i * i.
Začněte programovat zdarma
3/11