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;
}