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ý denBlok 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ě vodyPoslední řá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ě vodyDruhý 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.
Jak psát:
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
2/12