290 likes | 417 Views
Verze 2009.01. ŘÃzenà bÄ›hu programu. 5. A1PRG - Programovánà – Seminář Ing. Michal Heczko heczko@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.
E N D
Verze 2009.01 Řízení běhu programu 5 A1PRG - Programování – Seminář Ing. Michal Heczko heczko@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
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
Opakování • Logické operátory: • Negace • Logický součin • AND – a zároveň • Logický součet • OR – a nebo
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 Příklad 5: Dle normy se else váže k vnitřní podmínce! 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 (<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