Řízení běhu programu
DESCRIPTION
Verze 2009.01. Řízení běhu programu. 5. A1PRG - Programování – Seminář Ing. Michal [email protected]. Agenda. Opakování – logické a relační operátory Podmínka if Větvení if – else if Přepínač switch Cykly for , while a do-while Příkazy break a continue Příkaz goto. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/1.jpg)
A1PRG - Programování – Seminář
Ing. Michal Heczko [email protected]
Řízení běhu programu5
Verze 2009.01
![Page 2: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/2.jpg)
Agenda
Opakování – logické a relační operátory Podmínka if Větvení if – else if Přepínač switch Cykly for, while a do-while Příkazy break a continue Příkaz goto
![Page 3: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/3.jpg)
Opakování
LOGICKÉ HODNOTY v jazyku C není definován logický datový
typ používá se datový typ int
0 … znamená NE 1 … znamená ANO
![Page 4: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/4.jpg)
Opakování
Relační operátory slouží pro
porovnání dvou hodnot
výsledek: logická hodnota
Operátor
Popis
== rovnost
!= nerovnost
<= menší nebo rovno
>= větší nebo rovno
< menší než
> větší než
![Page 5: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/5.jpg)
Opakování
Logické operátory: Negace
Logický součin AND – a zároveň
Logický součet OR – a nebo
x !x
0 1
1 0
x y x || y
0 0 0
0 1 1
1 0 1
1 1 1
x y x && y
0 0 0
0 1 0
1 0 0
1 1 1
![Page 6: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/6.jpg)
Podmínka
základní příkaz sloužící k větvení toku programu
obecná syntaxe:
if (<podmínka>) <příkaz>;
if (<podmínka>) <příkaz>;
else <příkaz>;
![Page 7: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/7.jpg)
Podmínka
if (<log_výraz>) <příkaz>;
if (<log_výraz>) <příkaz>;
else <příkaz>;
Logický výraz, dle kterého se rozhoduje je umístěn v závorkách za příkazem if.
Následuje příkaz, který se provede, pokud je výsledek logického výrazu 1.
Nepovinná část za příkazem else obsahuje příkazy, které se provedou, pokud je výsledek logického výrazu 0.
![Page 8: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/8.jpg)
Podmínka
Příklad 1:
if (a > b) x = a;
Příklad 2:
if (a > b) x = a;
else x = b;
![Page 9: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/9.jpg)
Podmínka
Příklad 3:if (a > b)
{
y++;
x = a;
}
else
{
y--;
x = b;
}
![Page 10: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/10.jpg)
Podmínka
Příklad 5:Pozor na nejednoznačnost!!!
if (n > 0)
if (a > b)
z = a;else
z = b;
![Page 11: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/11.jpg)
Podmínka
![Page 12: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/12.jpg)
Podmínka
if (n > 0)
{
if (a > b)
{
z = a;
}
else
{
z = b;
}
}
![Page 13: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/13.jpg)
Použití podmínky pro mnohonásobné větvení Konstrukce:if (<výraz>)
<příkaz>
else if (<výraz>)
<příkaz>
else if (<výraz>)
<příkaz>
…
else
<příkaz>
![Page 14: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/14.jpg)
Použití podmínky pro vícecestné větvení Příklad:if (počet_bodu >= 90)
printf(“Vase znamka je A”);
else if (počet_bodu >= 80)
printf(“Vase znamka je B”);
else if (počet_bodu >= 70)
printf(“Vase znamka je C”);
else if (počet_bodu >= 60)
printf(“Vase znamka je D”);
else if (počet_bodu >= 50)
printf(“Vase znamka je E”);
else
printf(“Vase znamka je F”);
![Page 15: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/15.jpg)
Přepínač
Příkaz pro vícecestné větvení programu. Testuje, zda výraz odpovídá jedné z
několika konstantních celočíselných hodnot.
![Page 16: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/16.jpg)
Přepínač
obecná syntaxe:
switch (<výraz>)
{
case <konstantnívýraz>: <příkazy>
case <konstantnívýraz>: <příkazy>
…
default: <příkazy>
}
![Page 17: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/17.jpg)
Přepínač
Příkaz break Tento příkaz slouží pro okamžité vyskočení
s příkazu switch. Alternativy příkazu switch slouží pouze jako
návěstí. Pokud je splněna podmínka u daného návěstí a za jeho příkazy není uveden break, jsou provedeny příkazy u všech následujících návěstí.
![Page 18: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/18.jpg)
Cyklus for
Označovaný také jako cyklus se známým počtem průchodů.
Obecná syntaxe:
for (<počátek>; <konec>; <iterace>)
<příkazy>
![Page 19: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/19.jpg)
Cyklus for
Příklad 1:
int i;
for (i = 1; i <= 5; i++)
{
printf(“%d. pruchod cyklu\n”,i);
}
![Page 20: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/20.jpg)
Cyklus for
Poznámka: Dle normy C99 je možné deklarovat proměnnou i v rámci cyklu for
Příklad 2:
for (int i = 1; i <= 5; i++)
{
printf(“%d. pruchod cyklu\n”,i);
}
![Page 21: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/21.jpg)
Cyklus for
Vnořené cykly – příklad: int i,j;
for (i = 1; i <= 5; i++)
{
for (j = 1; j <= 5; j++)
{
printf("%02d\t",i*j);
}
printf("\n");
}
![Page 22: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/22.jpg)
Cyklus while
Tzv. cyklus s podmínkou na začátku. Použití tam, kde neznáme počet iterací Provádí se, dokud je výraz pravdivý (pokud
je nepravdivý, neprovede se ani jednou).
Obecná syntaxe:
while (<výraz>)
<příkazy>
![Page 23: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/23.jpg)
Cyklus while
Příklad:
int i = 1;
while(i <= 5)
{
printf(“%d. pruchod cyklu\n”,i);
i++;
}
![Page 24: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/24.jpg)
Cyklus do
Tzv. cyklus s podmínkou na konci. Použití tam, kde je potřeba alespoň jeden
průběh. Provádí se, dokud je výraz pravdivý (pokud je
nepravdivý, neprovede se pouze jednou). Obecná syntaxe:
do
<příkazy>
while (<výraz>);
![Page 25: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/25.jpg)
Cyklus do
Příklad:
int i = 1;
do
{
printf(“%d. pruchod cyklu\n”,i);
i++;
}
while(i <= 5);
![Page 26: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/26.jpg)
Příkaz break a continue
break Okamžité vyskočené z příkazu switch nebo
z cyklu.
continue Použití u cyklů. Ukončí aktuální iteraci, ale
následující iterace proběhnou,
![Page 27: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/27.jpg)
Příkaz goto
Skok na určité místo v programu. Skok lze provést téměř libovolně (nelze
však provést skok z funkce do funkce). Není vhodné používat skoky! Provedení skoku:goto <návěstí>; Definice návěstí:<návěstí>:
![Page 28: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/28.jpg)
Příkaz goto
Příklad:int i = 1;
zacatek_cyklu:
printf("%d\n", i);
i++;
if (i <= 10) goto zacatek_cyklu;
![Page 29: Řízení běhu programu](https://reader036.vdocuments.mx/reader036/viewer/2022062309/56814f32550346895dbcc5a0/html5/thumbnails/29.jpg)
A1PRG-s 05. Řízení běhu …
Děkuji za pozornost
Ing. Michal Heczko
218/U3
Prezentace k dispozici na http://vyuka.fai.utb.cz