Podmíněné příkazy v jazyce C: If, Else, vnořené If s příkladem
⚡ Chytré shrnutí
Podmíněné příkazy v jazyce C řídí tok programu spuštěním bloků kódu pouze tehdy, když je testovaná podmínka vyhodnocena jako pravdivá, což umožňuje rozhodování pomocí konstrukcí if, if-else, nested a else-if.
Co je podmíněný příkaz v C?
Podmíněné příkazy v programování v jazyce C se používají k rozhodování na základě podmínek. Podmíněné příkazy se provádějí sekvenčně, pokud kolem nich neexistuje žádná podmínka. Pokud pro blok příkazů zadáte nějakou podmínku, tok provádění se může změnit na základě výsledku vyhodnoceného podmínkou. Tento proces se v jazyce C nazývá rozhodování.
Na rozdíl od smyčky v jazyce C které opakují kód, podmíněné příkazy vybírají jednu cestu.
V programování 'C' jsou podmíněné příkazy možné pomocí následujících dvou konstrukcí:
- Pokud prohlášení
- Příkaz If-else
Říká se mu také větvení, protože program rozhoduje, který příkaz provede na základě výsledku vyhodnocené podmínky.
Pokud prohlášení
Je to jeden z mocných podmíněných příkazů. Příkaz If je zodpovědný za úpravu toku provádění programu. Příkaz if se vždy používá s podmínkou. Podmínka je vyhodnocena jako první před provedením jakéhokoli příkazu v těle If. Syntaxe příkazu if je následující:
if (condition)
instruction;
Podmínka se vyhodnotí jako pravdivá nebo nepravdivá. True je vždy nenulová hodnota a false je hodnota, která obsahuje nulu. Instrukce mohou být jednotlivé instrukce nebo blok kódu uzavřený složenými závorkami { }.
Následující program ilustruje použití if konstruktu v programování 'C':
#include<stdio.h> int main() { int num1=1; int num2=2; if(num1<num2) //test-condition { printf("num1 is smaller than num2"); } return 0; }
Výstup:
num1 is smaller than num2
Výše uvedený program ilustruje použití konstrukce if ke kontrole rovnosti dvou čísel.
- Ve výše uvedeném programu jsme inicializovali dvě proměnné s num1, num2 s hodnotou jako 1, 2 v tomto pořadí.
- Potom jsme použili if s testovacím výrazem ke kontrole, které číslo je nejmenší a které číslo je největší. V konstrukci if jsme použili relační výraz. Protože hodnota num1 je menší než num2, bude podmínka vyhodnocena jako true.
- Vypíše tedy příkaz uvnitř bloku If. Poté řízení přejde mimo blok a program bude ukončen s úspěšným výsledkem.
Relační Operatorů
Jazyk C má šest relačních operátorů, které lze použít k formulování booleovského výrazu pro rozhodování a testování podmínek, který vrací hodnotu true nebo false:
<— méně než<=— menší nebo rovno>— větší než>=— větší nebo rovno==— rovná se!=— nerovná se
Všimněte si, že stejný test (==) se liší od operátoru přiřazení (=), protože je to jeden z nejčastějších problémů, kterým programátor čelí, když je míchá.
Například:
int x = 41; x =x+ 1; if (x == 42) { printf("You succeed!");}
Výstup:
You succeed
Mějte na paměti, že podmínka, která se vyhodnotí jako nenulová hodnota, je považována za pravdivou.
Například:
int present = 1; if (present) printf("There is someone present in the classroom \n");
Výstup:
There is someone present in the classroom
Prohlášení If-Else
Příkaz if-else je rozšířenou verzí příkazu If. Obecný tvar příkazu if-else je následující:
if (test-expression)
{
True block of statements
}
Else
{
False block of statements
}
Statements;
V tomto typu konstrukce, pokud je hodnota testovacího výrazu true, pak se provede blok příkazů true. Pokud je hodnota testovacího výrazu false, pak se provede blok příkazů false. V každém případě se po provedení řízení automaticky přenese na příkazy, které se nacházejí mimo blok If.
Následující programy ilustrují použití konstrukce if-else:
Inicializujeme proměnnou s nějakou hodnotou a napíšeme program, který určí, zda je hodnota menší než deset nebo větší než deset.
Začněme.
#include<stdio.h> int main() { int num=19; if(num<10) { printf("The value is less than 10"); } else { printf("The value is greater than 10"); } return 0; }
Výstup:
The value is greater than 10
- Inicializovali jsme proměnnou s hodnotou 19. Zda je číslo větší nebo menší než 10, musíme zjistit pomocí programu 'C'. K tomu jsme použili konstrukci if-else.
- Zde jsme poskytli podmínku num<10, protože musíme porovnat naši hodnotu s 10.
- Jak můžete vidět, první blok je vždy pravdivý, což znamená, že pokud je hodnota testovacího výrazu pravdivá, bude proveden první blok, kterým je If.
- Druhý blok je jiný blok. Tento blok obsahuje příkazy, které budou provedeny, pokud se hodnota testovacího výrazu stane nepravdivou. V našem programu je hodnota num větší než deset, proto se testovací podmínka stane nepravdivou a jinak se provede blok. Náš výstup tedy bude z jiného bloku, který je „Hodnota je větší než 10“. Po if-else se program ukončí s úspěšným výsledkem.
V programování 'C' můžeme použít více konstrukcí if-else v sobě, které se označují jako vnoření příkazů if-else.
Podmíněné výrazy
Dalším způsobem, jak vyjádřit příkaz if-else, je zavedení operátoru ?:. V podmíněném výrazu má operátor ?: pouze jeden příkaz asociovaný s operátory if a else.
Například:
#include <stdio.h> int main() { int y; int x = 2; y = (x >= 6) ? 6 : x;/* This is equivalent to: if (x >= 5) y = 5; else y = x; */ printf("y =%d ",y); return 0;}
Výstup:
y =2
Vnořené příkazy If-else
Když je vyžadována série rozhodnutí, použije se vnořený if-else. Vnoření znamená použití jednoho if-else konstruktu v jiném.
Pojďme napsat program, který ilustruje použití vnořených if-else.
#include<stdio.h> int main() { int num=1; if(num<10) { if(num==1) { printf("The value is:%d\n",num); } else { printf("The value is greater than 1"); } } else { printf("The value is greater than 10"); } return 0; }
Výstup:
The value is:1
Výše uvedený program zkontroluje, zda je číslo menší nebo větší než 10 a vytiskne výsledek pomocí vnořené konstrukce if-else.
- Nejprve jsme deklarovali proměnnou num s hodnotou 1. Poté jsme použili konstrukci if-else.
- Ve vnějším if-else zadaná podmínka kontroluje, zda je číslo menší než 10. Pokud je podmínka pravdivá, pak a pouze tehdy se provede vnitřní blok. V tomto případě je podmínka pravdivá, a proto se zpracuje vnitřní blok.
- Ve vnitřním bloku máme opět podmínku, která kontroluje, zda naše proměnná obsahuje hodnotu 1, či nikoli. Pokud je podmínka pravdivá, zpracuje se blok If, jinak se zpracuje blok else. V tomto případě je podmínka pravdivá, proto se provede blok If a hodnota se vypíše na výstupní obrazovku.
- Výše uvedený program vypíše hodnotu proměnné a úspěšně ukončí práci.
Zkuste změnit hodnotu proměnlivý podívejte se, jak se program chová.
POZNÁMKA: U vnořených if-else konstrukcí musíme být opatrní s odsazením, protože v tomto procesu je zahrnuto více if-else konstrukcí, takže je obtížné rozlišit jednotlivé konstrukty. Správné odsazení usnadňuje čtení programu.
Vnořené příkazy Else-if
Vnořený else-if se používá, když jsou vyžadována vícecestná rozhodnutí.
Obecná syntaxe toho, jak jinak-jestli jsou žebříky konstruovány v programování „C“, je následující:
if (test - expression 1) { statement1; } else if (test - expression 2) { Statement2; } else if (test - expression 3) { Statement3; } else if (test - expression n) { Statement n; } else { default; } Statement x;
Tento typ struktury je známý jako else-if žebřík. Tento řetězec obecně vypadá jako žebřík, proto se mu také říká else-if žebřík. Testovací výrazy se vyhodnocují shora dolů. Kdykoli je nalezen testovací výraz pravdivý, provede se příkaz s ním spojený. Když se všech n testovacích výrazů stane nepravdivými, provede se výchozí příkaz else.
Podívejme se na samotnou práci s pomocí programu.
#include<stdio.h> int main() { int marks=83; if(marks>75){ printf("First class"); } else if(marks>65){ printf("Second class"); } else if(marks>55){ printf("Third class"); } else{ printf("Fourth class"); } return 0; }
Výstup:
First class
Výše uvedený program vytiskne známku podle známek dosažených v testu. Ve výše uvedeném programu jsme použili konstrukci žebříčku else-if.
- Inicializovali jsme proměnnou se značkami. Ve struktuře else-if žebříčku jsme poskytli různé podmínky.
- Hodnota ze značek proměnných bude porovnána s první podmínkou, protože je pravda, že výrok s ní spojený bude vytištěn na výstupní obrazovce.
- Pokud se první testovací podmínka ukáže jako nepravdivá, porovná se s druhou podmínkou.
- Tento proces bude pokračovat, dokud nebudou vyhodnoceny všechny výrazy, jinak řízení opustí žebříček else-if a bude vypsán výchozí příkaz.
Zkuste upravit hodnotu a všimněte si změny ve výstupu.






