Bloky a odsazení

Blok může obsahovat tolik příkazů, kolik potřebujete. Všechno mezi { a } patří do bloku, a když je podmínka pravdivá, provede se všechno, jeden příkaz po druhém:

int teplota = 32;

if (teplota > 30) {
    printf("Je velké horko\n");
    printf("Pijte hodně vody\n");
}
printf("Hezký den\n");

Tento kód vypíše:

Je velké horko
Pijte hodně vody
Hezký den

Blok končí uzavírací složenou závorkou }. Řádek, který vypisuje Hezký den, stojí až za ní, do bloku nepatří, a proto se provede vždy, ať je podmínka pravdivá, nebo ne.

Řádky bloku jsou odsazené: začínají 4 mezerami. Překladači je odsazení jedno. O tom, co patří do bloku, rozhodují jen složené závorky, a program by fungoval, i kdybyste ho napsali úplně bez odsazení. Odsazení je pro lidi: na první pohled ukazuje, které řádky do bloku patří, a proto ho programátoři píší vždy. Mezery počítat nemusíte. Když za { stisknete Enter, editor další řádek odsadí sám, a 4 mezery vloží i klávesa Tab.

Protože o bloku rozhodují závorky, a ne odsazení, může odsazení i klamat:

int teplota = 20;

if (teplota > 30) {
    printf("Je velké horko\n");
}
    printf("Pijte hodně vody\n");

Tento kód vypíše:

Pijte hodně vody

Poslední řádek kódu je sice odsazený, ale stojí za }, takže do bloku nepatří a provede se i při 20 stupních.

Stejně dopadnete, když složené závorky vynecháte. Jazyk C to dovoluje, ale k příkazu if pak patří jen jediný příkaz hned za podmínkou:

int teplota = 20;

if (teplota > 30)
    printf("Je velké horko\n");
    printf("Pijte hodně vody\n");

Tento kód vypíše:

Pijte hodně vody

Druhý printf k podmínce nepatří, ať je odsazený jakkoli. Takový kód bývá na začátku správně, s jediným příkazem bez závorek, a pokazí se až později, když do bloku někdo přidá druhý řádek a zapomene závorky doplnit. Proto v tomto kurzu píšeme složené závorky vždy, i kolem jediného příkazu.

Když zapomenete uzavírací závorku }, překladač ohlásí chybu error: expected '}' na posledním řádku programu, protože teprve tam zjistí, že mu závorka chybí. Hledejte ji ale výš: za posledním řádkem bloku, který jste neuzavřeli. Poznámka pod chybou, to match this '{', může ukazovat na { za int main(void). Překladač totiž páruje závorky popořadě, takže }, která měla patřit k main, uzavřela váš blok.

Pokyny

Program radí připojit nabíječku, i když je baterie nabitá na 80 %. Řádek s výpisem Připojte nabíječku je sice odsazený, ale stojí za }. Přesuňte } pod něj, aby patřil do bloku příkazu if. Program pak vypíše jen Baterie: 80 %.

Změňte baterie na 15 a spusťte program. Teď je podmínka pravdivá a program vypíše všechny tři řádky:

Slabá baterie
Připojte nabíječku
Baterie: 15 %

Začněte programovat zdarma

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

Nebo se registrujte pomocí:

2/12