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.

  • 🔤 Příkaz If: Příkaz if spustí svůj blok pouze tehdy, když je podmínka nenulová hodnota true, zatímco nula znamená false.
  • 🔀 Pokud-jinak: Konstrukce if-else přidává větev typu false, která spustí jeden blok, když je podmínka pravdivá, a druhý, když je nepravdivá.
  • 🇧🇷 Relační operátory: Šest operátorů (<, <=, >, >=, ==, !=) vytváří booleovské výrazy, které každá podmínka testuje.
  • 🪜 Žebřík jinak-pokud: Vnořený žebřík else-if kontroluje několik výrazů odshora dolů a spustí první větev true nebo výchozí else.
  • Ternární operátor: Podmíněný výraz ?: zapíše kompaktní podmíněnou operaci if-else, která vrátí jednu ze dvou hodnot na jednom řádku.
  • 🤖 Asistence AI: GitHub Copilot navrhuje a kontroluje logiku if-else, označuje chybějící závorky a navrhuje čistší podmínky.

Podmíněný příkaz v jazyce C: IF, IF Else a vnořený IF Else

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í:

  1. Pokud prohlášení
  2. 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.

Vývojový diagram příkazu IF v jazyce C

  1. Ve výše uvedeném programu jsme inicializovali dvě proměnné s num1, num2 s hodnotou jako 1, 2 v tomto pořadí.
  2. 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.
  3. 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

Vývojový diagram příkazu If-Else v jazyce C

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

Příklad výstupu příkazu If-Else v jazyce C

  1. 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.
  2. Zde jsme poskytli podmínku num<10, protože musíme porovnat naši hodnotu s 10.
  3. 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.
  4. 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.

Vnořený příkaz If-else v jazyce C

  1. Nejprve jsme deklarovali proměnnou num s hodnotou 1. Poté jsme použili konstrukci if-else.
  2. 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.
  3. 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.
  4. 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 žebřík v jazyce C

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.

  1. Inicializovali jsme proměnnou se značkami. Ve struktuře else-if žebříčku jsme poskytli různé podmínky.
  2. 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.
  3. Pokud se první testovací podmínka ukáže jako nepravdivá, porovná se s druhou podmínkou.
  4. 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.

Nejčastější dotazy

Funkce if-else testuje libovolný booleovský výraz, včetně kontrol rozsahů a relačních hodnot. spínač…pouzdro porovnává jednu proměnnou s pevnými konstantními hodnotami a v mnoha případech se často kompiluje do rychlejší tabulky skoků.

Problém s visícím else spočívá v nejednoznačnosti ohledně toho, kam if patří příkaz else, když jsou příkazy if vnořeny bez závorek. V jazyce C se else vždy páruje s nejbližším neshodným if. Přidání složených závorek tento zmatek odstraňuje.

Ano. Logické operátory spojují podmínky: && vyžaduje, aby obě strany byly pravdivé, || vyžaduje, aby alespoň jedna strana byla pravdivá a ! obrací výsledek. Například pokud (věk > 18 && občan) testuje dvě podmínky společně v jednom if.

Složené závorky jsou volitelné, pokud je tělo příkazu jeden příkaz, takže C spustí pouze další řádek. Pro dva nebo více příkazů jsou složené závorky nutné k jejich seskupení. Používání složených závorek je bezpečný zvyk, který zabraňuje logickým chybám.

Vyhodnocení zkratu se zastaví, jakmile je znám výsledek. S && falešná levá strana přeskakuje pravou stranu. S || skutečná levá strana přeskakuje pravou stranu. Tím se zabrání zbytečné práci a nebezpečným operacím.

Ano. Žebřík else-if se vyhodnocuje odshora dolů a zastaví se na první pravdivé podmínce. Umístění širokých podmínek před úzké podmínky může skrýt úzké případy, proto seřaďte testy od nejspecifičtějších po nejobecnější.

Ano. Asistenti kódování s umělou inteligencí vytvářejí podmíněné bloky z komentáře, převádějí dlouhé řetězce if-else na čistší struktury a označují pravděpodobné chyby, jako je použití = místo ==. Vždy otestujte vygenerovanou logiku, než jí důvěřujete.

GitHub Copilot automaticky doplňuje podmínky if, else-if a vnořené podmínky z vašich komentářů nebo okolního kódu. Navrhuje relační a logické výrazy a může přidat chybějící závorky, i když byste si měli každý návrh projít.

Shrňte tento příspěvek takto: