A1PRG - Programování – Seminář Ing. Michal Řízení běhu programu 5 Verze
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átorPopis ==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 xyx || y xyx && y
Podmínka základní příkaz sloužící k větvení toku programu obecná syntaxe: if ( ) ; else ;
Podmínka if ( ) ; else ; 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
if (n > 0) { if (a > b) { z = a; } else { z = b; }
Použití podmínky pro mnohonásobné větvení Konstrukce: if ( ) else if ( ) else if ( ) … else
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 ( ) { case : … default: }
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 ( ; ; )
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 ( )
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 while ( );
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 ; Definice 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 218/U3 Prezentace k dispozici na