Podmíněný příkaz
Podmíněný příkaz slouží k větvení programu. Umožňuje vykonávat příkazy jen když platí určitá podmínka.
Obecný popis (syntaxe) příkazu if:
if (log_vyraz) prikaz1 else prikaz2
V závorce za klíčovým slovem je logický výraz. Jde často o běžnou podmínku, kde výsledek je platí/neplatí nebo pravda/nepravda. Celá část příkazu od klíčového slova else je nepovinná, nemusí být tedy uvedena.
Poznámky ke zpracování příkazu if:
- nejdříve se vyhodnotí logický výraz
- když je výsledek "pravda", vykoná se prikaz1
- když je výsledek "nepravda", vykoná se příkaz2, uvedený za else (pokud je v příkazu použito)
- místo jednoduchých příkazů prikaz1 a prikaz2 můžeme použít blok příkazů (posloupnost příkazů uzavřena ve složených závorkách)
- na místě příkazů prikaz1, prikaz2 může být uveden jakýkoliv příkaz, tedy i příkaz if. Příkazy if můžeme do sebe vnořovat
- při sestavování podmínky je potřebné seznámit se s logickými operátory. Je vhodné znát pravidla pro vyhodnocování logických výrazů v jazyce C.
/* * Program urci, zda zadane cislo je sude nebo liche * */ #include <stdio.h> #include <stdlib.h> int main() { int cislo; printf("Zadejte cislo : "); scanf("%d", &cislo); if (cislo%2 == 0) //kdyz zbytek po deleni 2 je 0 { printf("\nCislo %d je sude\n",cislo); } else { printf("\nCislo %d je liche\n",cislo); } system("pause"); return 0; }
Dále uvedeme příklad pro řešení kvadratické rovnice ve tvaru ax + bx + c = 0, kde a,b,c jsou reálná čísla, číslo a nesmí být nulové. Postup řešení znáte z matematiky. V programu je použitý příkaz if bez části else.
#include <stdio.h> #include <math.h> #include <stdlib.h> int main() { float a,b,c,D,x1,x2; printf("\nZadejte koeficienty kvadraticke rovnice\n "); printf("\ta : "); scanf("%f",&a); printf("\tb : "); scanf("%f",&b); printf("\tc : "); scanf("%f",&c); getchar(); if (a == 0) { printf("Nejedna se o kvadratickou rovnici"); system("pause"); return 0; } D = b*b-4*a*c; if (D == 0) printf("\nRovnice ma jeden koren x = %.2f", -b/(2*a)); if (D > 0) { x1 = (-b+sqrt(D))/(2*a); x2 = (-b-sqrt(D))/(2*a); printf("\nRovnice ma dva koreny : x1 = %.2f, x2 = %.2f", x1, x2); } if (D < 0) { printf("\nRovnici nelze resit v oboru realnych cisel"); } system("pause"); return 0; }