Jdi na obsah Jdi na menu
 


Řízení toku programu

8. 10. 2008
Řízení toku programu

Který příkaz zajistí větvení programu do dvou směrů?

if ( podmínka ) {příkazy1};else {příkazy2};

příkazy1  jsou provedeny, pokud je zadaná podmínka splněna,
v případe nesplnění podmínky jsou provedeny příkazy2.

Jaké operátory lze použít v podmínkách?

Všechny, ale využívají se hlavně relační a logické.

Jak se zapisuje podmíněný výraz?

promenna=(podminka)?vyraz1: vyraz2;

Vyhodnotí se podminka v kulatých závorkách a jesliže platí, do promenne se dá hodnota vyrazu1.
Jestliže neplatí, do promenne se dá hodnota vyrazu2.

 

float a,b,c;

printf("Zadej dve cisla: ");

scanf("%f %f",&a,&b);

c=(a>b)?a:b;

printf("Vetsi je %f\n",c);

 

Podmíněný výraz lze nahradit podmíněným příkazem:

if(a>b)c=a;else c=b;

 

Proměnnou c můžeme ušetřit a podmíněný výraz přímo zapsat do funkce printf:

 

float a,b;

printf("Zadej dve cisla: ");

scanf("%f %f",&a,&b);

printf("Vetsi je %.2f\n",(a>b)?a:b);

 

Používá se místo příkazu if, např. za příkazem return ve funkci.

float maximum(float a,float b){

return (a>b)?a:b;

}

Funkce vrátí větší hodnotu z obou parametrů.

Jak se zapisuje zkrácený (neúplný) a úplný podmíněný příkaz?

if ( podmínka ) {příkazy1};  //neúplný

Jestliže podmínka neplatí, pokračuje se za příkazem if.

if ( podmínka ) {příkazy1};else {příkazy2}; // úplný

Jestliže podmínka neplatí, provedou se příkazy za else.

Jaké znáte příkazy cyklu?

S pevným počtem opakování (for)

S podmínkou na začátku (while)

S podmínkopu na konci (do-while)

Uveďte zápis příkazu for!

for(inicializace;test podmínky;změna hodnoty řídící proměnné cyklu) { příkazy; }

inicializace – zadání počáteční hodnoty proměnné

test podmínky - testuje řídící proměnnou na koncovou hodnotu

změna hodnoty řídící proměnné cyklu – mění hodnotu řídící proměnné s požadovaným krokem

Tento příkaz je vhodný pro zadaný počet opakování příkazu nebo příkazů.

// Vypisuje hodnoty i

#include <stdio.h>

main() {

int i;

for(i=10;i<20;i+=2){

     printf("%d ",i);

}

}

Co je to řídicí proměnná cyklu?

Je to proměnná, uvedená v hlavičce cyklu, která řídí průběh cyklu.
Může být typu int, float, char, double.

K čemu slouží inicializace?

K nastavení počáteční hodnoty řídící proměnné.

 K čemu slouží test podmínky?

K určení, zda se příkazy cyklu budou opakovat, nebo zda se vykonávání cyklu ukončí.

K čemu slouží změna řídicí proměnné cyklu a jak ji lze provést?

Změna řídící proměnné je nutná, aby jednou podmínka přestala platit.

Doporučuje se provádět ji pouze v hlavičce cyklu.

Jaké hodnoty může nabýt řídicí proměnná cyklu?

Může nabýt hodnoty typu int, float, char, double

K čemu slouží příkazy break a continue?

break – strukturovaný skok, zajistí vyskočení z cyklu a pokračování za cyklem

continue – zajišťuje přechod na další iteraci. Přeskočí následující příkazy v těle cyklu, ale cyklus neopouští

Co se stane, je-li některá část hlavičky cyklu for vynechána?

Použije se hodnota, která je do proměnné uložená.

i=10;

for(;i<20;i+=2)printf("%d ",i);

for(i=10;;i+=2){

if(i>=20) break;

printf("%d ",i);

}

for(i=10;i<20;){

printf("%d ",i);

i+=2;

}

i=10;

for(;;){

if(i>=20) break;

i+=2;

printf("%d ",i);

}

Jaký je rozsah platnosti proměnné, deklarované v hlavičce cyklu?

Definice v místě použití (v C++)

V jazyce C platí, že definice proměnných musí být uvedené na začátku bloku, tedy bezprostředně za levou složenou závorkou. Jazyk C++ toto omezení ruší a proměnnou můžeme definovat kdekoliv. Následující ukázka by byla chybně v jazyce C, ale správně v C++:

void main()
{
  printf("ahoj");
  int x = 10;  // definice proměnné
  printf("x=%d", x);
}

for(int i=10;i<20;i+=2)printf("%d ",i);

Proměnnou můžeme deklarovat i v hlavičce cyklu, a potom je lokální v rámci cyklu.

Uveďte zápis příkazu while!

while (podmínka){prikazy;}

Nejdříve se vyhodnotí podmínka

Pokud je splněna, provedou se příkazy a podmínka se vyhodnocuje znovu.

Cyklus končí v okamžiku, kdy podmínka není splněna.

Příkazy  nemusí být provedeny ani jednou.

Často používaná je i varianta s obráceně postavenou podmínkou.

Uveďte zápis příkazu do-while!

do{prikazy;}while(podminka);

U tohoto typu cyklu se nejprve provedou příkazy  a teprve poté se vyhodnotí podmínka

Je-li podmínka splněna, provádí se znovu příkazy

Cyklus končí v případe, že podmínka není splněna.

Příkazy se v každém případe provedou vždy alespoň jednou.

Často používaná je i varianta s obráceně postavenou podmínkou.

Tento cyklus je vhodný, když rozhodujeme o jeho ukončení podle hodnoty, načtené od uživatele.

K čemu slouží příkaz switch a uveďte jeho zápis!

Přepínač (switch)

Přepínač slouží k rozdělení posloupnosti příkazů na části, následné vybrání a provedení některé, či  některých   z nich.

Přepínač slouží k větvení výpočtů podle hodnoty celočíselného výrazu.

switch ( <výraz> ) {

case <konstanta 1> : <příkaz1>

case <konstanta 2> : <příkaz2>

default : <příkaz>

}

Příklad

scanf("%f %f",&a,&b);

scanf("%c",&c);

switch(c){

case '+':printf("%f",a+b);break;

case '-':printf("%f",a-b);break;

case '*':printf("%f",a*b);break;

case '/':printf("%f",a/b);break;

default: printf("špatný operátor");

}

Je-li proměnná, podle které provádíme výběr (selektor) typu char, konstantu za case uvádíme v apostrofech.

Je-li typu int, neuvádí se v apostrofech.

Jak lze využít příkaz goto ?

Příkaz goto lze ve spojení s tzv. návěštím využít k vytvoření cyklu.
Je to ale nestrukturovaný a nedoporučovaný příkaz.

int i=0;

cyk: if(i>10)goto ven; 

     printf("%d ",i);

     i++;

     goto cyk;

ven:getch();

 

Komentáře

Přidat komentář

Přehled komentářů

Zatím nebyl vložen žádný komentář