Michal Čižmár / 16. 03. 2004, 00:00
Často potrebujeme vyhodnotiť viacero podmienok za sebou a podľa toho určiť nasledujúcu činnosť programu.
Príklad 11.) – nefunkčný ale názorný
#include
#include
int main()
{
int volba;
char *meno="test.txt";
printf("----Menu---\n");
printf(" Uloz [1]\n");
printf(" Otvor [2]\n");
printf(" Nove [3]\n");
printf(" Koniec [4]\n");
printf(" Zadajte vasu volbu 1..4 : ");
scanf("%d",&volba);
if (volba==1) ulozit_subor(meno);
if (volba==2) otvorit_subor(meno);
if (volba==3) novy_subor();
if (volba==4) ukoncit();
/* tu by sme este osetrili chybu ak by sa nesplnila ani jedna podmienka */
}
A tých podmienok býva často oveľa viacej. Vtedy je prehľadnejšie použiť
PRÍKAZ SWITCH.
Takže IF-y v predchádzajúcom príklade nahradíme takto :
Príklad 12.)
switch(volba)
{
case 1 : ulozit_subor(meno);
case 2 : otvorit_subor(meno);
case 3 : novy_subor();
case 4 : ukoncit();
default : chyba() ;
}
To čo je za default sa vykoná automaticky ak nebola splnená žiadna podmienka alebo ak sme nepoužili PRÍKAZ BREAK.
V predchádzajúcom príklade, ak by premenná voľba bola rovná 1 , tak sa vykoná funkcia ulozit_subor() , ale potom by sa vykonávanie vrátilo do tela switch (ak by sa program neukončoval vo vnútri funkcii ) a testovali by sa všetky ďalšie možnosti, až nakoniec by sa spustila funkcia chyba() za možnosťou default.
Aby sme tomu zabránili , použijeme break .
Príklad 13.)
switch(volba)
{
case 1 : ulozit_subor(meno); break;
case 2 : otvorit_subor(meno); break;
case 3 : novy_subor(); break;
case 4 : ukoncit(); break;
default : chyba() break;
}
POZOR!!! Aj keď za sebou nasledujú dva príkazy : volanie funkcie a break , nemusíme ich v tomto jedinom prípade dávať do zložených zátvoriek, ale ak chceme tak môžeme.
Ak potrebujeme aby sa určitý, jeden príkaz vykonal po splnení viacerých podmienok, príkaz switch bude takýto :
Príklad 14.)
switch(volba)
{
case 1 :
case 2 :
case 3 : vyhodnot_volbu(volba); break ;
case 4 : ukoncit(); break;
default : chyba(); break ;
}
Tu sa funkcia vyhodnot_volbu() vykoná ak volba=1,2 alebo 3 .
Ak ste dobre pochopili príkaz switch , tak teraz určite namietate , že break nie je potrebný za časťou default a máte pravdu. Zvykne sa tam ale dávať kvôli prehľadnosti, ale to je otázka zvyku.
Copyright © 2002 - 2013 inet.sk, s. r. o. | Všetky práva vyhradené | Neprešlo jazykovou úpravou | ISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Inet.sk