Řízení běhu programu

Preview:

DESCRIPTION

Verze 2009.01. Řízení běhu programu. 5. A1PRG - Programování – Seminář Ing. Michal Heczkoheczko@fai.utb.cz. 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 Presentation

Citation preview

A1PRG - Programování – Seminář

Ing. Michal Heczko heczko@fai.utb.cz

Řízení běhu programu5

Verze 2009.01

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

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

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ž

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

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

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.

Podmínka

Příklad 1:

if (a > b) x = a;

Příklad 2:

if (a > b) x = a;

else x = b;

Podmínka

Příklad 3:if (a > b)

{

y++;

x = a;

}

else

{

y--;

x = b;

}

Podmínka

Příklad 5:Pozor na nejednoznačnost!!!

if (n > 0)

if (a > b)

z = a;else

z = b;

Podmínka

Podmínka

if (n > 0)

{

if (a > b)

{

z = a;

}

else

{

z = b;

}

}

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>

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”);

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.

Přepínač

obecná syntaxe:

switch (<výraz>)

{

case <konstantnívýraz>: <příkazy>

case <konstantnívýraz>: <příkazy>

default: <příkazy>

}

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

Cyklus for

Označovaný také jako cyklus se známým počtem průchodů.

Obecná syntaxe:

for (<počátek>; <konec>; <iterace>)

<příkazy>

Cyklus for

Příklad 1:

int i;

for (i = 1; i <= 5; i++)

{

printf(“%d. pruchod cyklu\n”,i);

}

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

}

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");

}

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>

Cyklus while

Příklad:

int i = 1;

while(i <= 5)

{

printf(“%d. pruchod cyklu\n”,i);

i++;

}

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

Cyklus do

Příklad:

int i = 1;

do

{

printf(“%d. pruchod cyklu\n”,i);

i++;

}

while(i <= 5);

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,

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

Příkaz goto

Příklad:int i = 1;

zacatek_cyklu:

printf("%d\n", i);

i++;

if (i <= 10) goto zacatek_cyklu;

A1PRG-s 05. Řízení běhu …

Děkuji za pozornost

Ing. Michal Heczko

heczko@fai.utb.cz

218/U3

Prezentace k dispozici na http://vyuka.fai.utb.cz

Recommended