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
5

V kulatých závorkách za for jsou tři části oddělené středníky (;):

  1. int i = 1 je začátek. Vytvoří proměnnou cyklu a provede se jen jednou, úplně na začátku.
  2. i <= 5 je podmínka. Kontroluje se před každým průchodem. Když neplatí, cyklus skončí.
  3. 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: 1024

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

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

3/11