www.amapro.cz & David Bazala [Programování]

Otevře webové stránky AmaPro


Otevře hlavní stránku společnosti AmaPro
Internetové stránky určené pro studenty středních a vysokých odborných škol.


amapro.cz/odkazy Projekt eliminuje vyhledávání klíčových slov na komerčních stránkách a v e-schopech.



Nový projekt AmaPro

if

 

if je standardní větvící příkaz Céčka, ale i mnoha jiných programovacích jazyků. Podstatou větvení je logický výsledek  podmínky, která musí být v Céčku celá uzavřená v kulatých závorkách. Podmíněné větvení nám umožní dvě možnosti jak podmínku opustit. Výsledek testu podmínky může nabývat PRAVDA/NEPRAVDA nebo-li true/false, nebo-li log1/log0, nebo-li zapnuto/vypnuto a často používané nenulové / NULL hodnoty.

 

Základní konstrukce if:

if(podmínka)příkaz;

if(podmínka) {přikaz1, příkaz2, …..příkaz N;}

if(podmínka) příkaz_A;

            else příkaz_N;

if(podmínka) {přikaz1, příkaz2, …..příkaz a;}

            else {přikaz1, příkaz2, …..příkaz a;}

 

 

Popis jednotlivých konstrukcí:

 

if(podmínka)příkaz;

 

Jedná se o nejjednodušší a nejrychlejší konstrukci příkazu if. Je-li podmínka splněná, je proveden jeden příkaz za if. Pro přehlednost vše píšeme na jeden řádek. Pozor na časté chyby : x=0, x==0, (c),(!c) apod.

 

Příklad 1:

int x=12;                                //deklarace a inicializace x jako int

if(x!=0)x=0;                         //"jestliže je x různé od nuly, tak ho vynuluj"

cout<<x;                                //výstupní proud pro x (obrazovka)

getchar();                              //čekání na entr

return 0;                                //opuštění konzolové aplikace

 

--------------------------------------

 

 

if(podmínka) {přikaz1, příkaz2, …..příkaz N;}

 

Tato konstrukce umožňuje provést více příkazů a funkcí , které se uzavřou do složených závorek. Vytvoří se tak nové programové tělo, které může mít v sobě dalších nespočet příkazů a to i větvících s novými těly. Dbáme pozornosti při větším počtu složených závorek na vlastníky else a na celkovou logickou funkčnost.

 

Příklad 2:

int x=2;                                                               //zde měníme hodnotu

if(x<3)                                                                //1 podmínka

   {                                                                                  //počátek těla podmínky 1

    cout<<"x je menší než 3"<<endl;

    if(x<2)                                                            //2 podmínka

       {                                                                              //počátek těla podmínky 2

        cout<<"x je menší než 2"<<endl;

           if(x<1)                                                     //3 podmínka

              {                                                                       //počátek těla podmínky 3

              cout<<"x je menší než 1"<<endl;

              }                                                                       //konec těla podmínky 3

        }                                                                             //konec těla podmínky 2

   }                                                                                  //konec těla podmínky 1

getchar();                                                             //čekání na entr

return 0;                                                              //výstup z konzolové aplikace

 

----------------------------------------------

 

 

if(podmínka) příkaz_A;

         else příkaz_N;

 

Konstrukce je doplněná o klíčové slovo else, kterým lze příslušnou podmínku JESTLI ŽE …..PAK, můžeme doplnit o slovo JINAK, tedy příkaz else. Opět jednodušší a rychlejší konstrukce s možným pouze jedním příkazem. Nesmíme zapomenout, že vliv else je pouze do prvního středníku, vše za tím je mimo vliv výsledku podmínky.

 

Příklad 3:

bool stav;                                                                     //deklarace bez inicializace (náhodný stav)

if(stav)cout<<"stav je true";                            //vypíše pokud je stav nenulový, pravdivý

   else cout<<"stav je false";                    //vypíše pokud je stav NULL, nepravdivý

cout<<endl<<(int)stav;                                     //vypíše int hodnotu proměnné bool

getchar();                                                                     //čekání na entr

return 0;                                                                      //výstup z konzolové aplikace

 

 

----------------------------------------------

 

 

if(podmínka) {přikaz1, příkaz2, …..příkaz a;}

         else {přikaz1, příkaz2, …..příkaz a;}

 

Konstrukce je doplněná o klíčové slovo else, kterým lze příslušnou podmínku JESTLI ŽE …..PAK, můžeme doplnit o slovo JINAK, tedy příkaz else. Tato konstrukce umožňuje provést více příkazů a funkcí , které se uzavřou do složených závorek. Vytvoří se tak nová programová těla, která můžou mít v sobě dalších nespočet příkazů a to i větvících s novými těly. Dbáme pozornosti při větším počtu složených závorek na vlastníky else a na celkovou logickou funkčnost.

 

Příklad 4:

bool stav=true;                                                      //deklarace bez inicializace (náhodný stav)

if(stav)

   {                                                                                //pokračuje pokud je stav nenulový, pravdivý

   cout<<"stav je true"<<endl;

   cout<<"nenulová hodnota"<<endl;

   cout<<"pravda, zapnuto"<<endl;

   }

  else                                                                              //pokračuje pokud je stav NULL, nepravdivý

   {

   cout<<"stav je false"<<endl;

   cout<<"hodnota NULL"<<endl;

   cout<<"nepravda, vypnuto"<<endl;

   }

getchar();                                                                          //čekání na entr

return 0;                                                                           //výstup z konzolové aplikace

 

 

 

Vliv výsledků podmínek na větvení programu:

 

if (x==y) cout<<"jestliže je x==y";

  else cout<<"jestliže neni x==y";

 

-          jestliže je podmínka splněná provede se příkaz  za  if

 

PŘÍKLAD: if_1

int x;scanf("%d",&x);                                              //vstup x z klávesnice

int y;scanf("%d",&y);                                             //vstup y z klávesnice

if (x==y) cout<<"jestliže platí x==y";                 //podmínka porovnání

     else cout<<"jestliže neni x==y";                  //část podmínky "jinak"

while(getchar()!='e');                                          //smyčka na ukončení "e"

return 0;                                                                     //výstup z konzolové aplikace

 

Po spuštění program čeká na zadání x jako int z klávesnice pomocí funkce scanf(). Scanf() předá hodnotu z bufferu jako dekadické číslo (%d). Obdobně se čeká na zadání y jako int. Následně program prochází podmínkou if, která testuje x a y na rovnost. V případě rovnosti čísel x a y se provede tělo podmínky, tedy cout<<"jestliže platí x==y", část else se přeskočí a program pokračuje. Jsou-li x a y rozdílná, je provedena část za else. V každém případě dojde k provedení jedné z částí příkazů if. Následně program čaká na klávesu  „e“.

 

-------------------------------------------------------

 

if (x) cout<<"jestliže je výraz různy od 0";

  else cout<<"jestliže je výraz roven 0";

 

- jesltiže výraz není roven nule pak proveď příkaz.

 

PŘÍKLAD: if_2

int x;scanf("%d",&x);                              //vstup x jako int z klávesnice

if (x) cout<<"jestliže je výraz různy od 0";          //test na NULL

  else cout<<"jestliže je výraz roven 0";                     //část "jinak"

while(getchar()!='e');                                          //smyčka na ukončení "e"

return 0;                                                                   //výstup z konzolové aplikace

 

Po spuštění program čeká na zadání x jako int a to pomocí funkce scanf(). Scanf() předá hodnotu z bufferu jako dekadické číslo (%d). Následně program testuje x jako int na jeho nulovou hodnotu. Příkaz za podmínkou bude vykonán jen tehdy, bude-li x různé od nuly. Pokud x je již nulové, příkazy za if se neprovedou a běh programu pokračuje dál. Tak jako v našem případě, lze pomocí else (jinak) provést další příklady v případě x=0. Následně program čaká na klávesu  „e“.

 

---------------------------------------------------------

 

bool x;

if (x) cout<<"jestliže je x true";

  else cout<<"jestliže je x false";

 

- jestliže je podmínka pravdivá  provede se příkaz  za  if

 

PŘÍKLAD: if_3

bool stav=true;                                                      //nastav false nebo true

if(stav) cout<<"příkaz, je-li true";                 //příkaz podmínky pravdivý

    else cout<<"příkaz, je-li flase";                 //část podmínky "jinak"

getchar();                                                                          //čekání na entr

return 0;                                                                           //výstup z konzolové aplikace

 

Program testuje logický stav true/false proměnné stav, která je typu bool. Podmínka je složená pouze z názvu proměnné a rozhodnutí bude provedeno na základě: příkaz za if bude vykonán je-li stav=true, nebo-li stav různý od nuly. Pokud je stav již false (nulový, vypnutý), program pokračuje dál. Je-li příkaz else, je provedeno jeho tělo. Ukončení čeká na stisk klávesy entr.

 

------------------------------------------------------------------

 

int x=6;

if (x=5) cout<<"Podmínka je splněná, došlo ale i k přiřazení!";

  else cout<<"Nikdy neproběhne";

cout<<x;

 

Zvlážštní, ale povolená syntaxe, kde v podmínce je provedeno přiřazení. Pokud je přiřazení nenulové příkazy za if se vždy provedou !!. POZOR (x=0) opak (x==0).

 

PŘÍKLAD: if_3

int x=6;                                                                                                       //deklarace a inicializace x jako int

cout<<x<<endl;                                                                                  //hodnota x před podmínkou

if (x=5) cout<<"Podmínka je splněná, došlo ale i k přiřazení!"; //SPECIFICKÁ SYNTAXE

  else cout<<"Nikdy neproběhne";                                                //mtrvé místo programu

cout<<x<<endl;                                                                                  //hodnota x za podmínkou

getchar();                                                                                                     //čekání na entr

return 0;                                                                                                      //výstup z konzolové aplikace

 

Program demonstruje povolenou syntaxi, která se občas stává kamenem úrazu při nepozornosti. Záměna (x==5) a (x=5) nezpůsobí chybu syntaktickou ale logickou. (x=5) je v podstatě přiřazení, a to vždy způsobí provedení příkazu cout za podmínkou. Tím pádem else nikdy neproběhne.

 

-----------------------------------------------------------------

 

int x=6;

if (x=0) cout<<"Nikdy neproběhne";

  else cout<<"Podmínka je splněná, došlo ale i k přiřazení!";

cout<<x;

 

Zvlážštní, ale povolená syntaxe, kde v podmínce je provedeno přiřazení hodnoty na nulu (NULL). Této syntaxe lze využít například, voláme-li teprve hodnotu, kterou budeme testovat.

 

PŘÍKLAD: if_5

int x=6;                                                                                               //deklarace a inicializace x jako int

cout<<x<<endl;                                                                                         //hodnota x před podmínkou

if (x=0)                                                                                               //SPECIFICKÁ SYNTAXE

  cout<<"Nikdy neproběhne";                                                            //mtrvé místo programu

  else cout<<"Podmínka je splněná, došlo ale i k přiřazení!";

cout<<endl<<x;                                                                                         //hodnota x za podmínkou

getchar();                                                                                             //čekání na entr

return 0;                                                                                              //výstup z konzolové aplikace

 

Program demonstruje povolenou syntaxi, která se občas stává kamenem úrazu při nepozornosti. Záměna (x=0) a (x) nezpůsobí chybu syntaktickou ale logickou. (x=0) je v podstatě false, a to vždy způsobí neprovedení příkazu za podmínkou. Tím pádem else bude vykonáno pokaždé.

 

------------------------------------------------------------------------

 

int x=0;

if (x==0) cout<<"Podmínka je splněná, proběhne.";

cout<<"Bude již také vykonáno, není součástí podmínky";

 

POZOR: Podmínka je splněná a příkazy proběhnou za if, ale není zde část else a následné příkazy za ukončovacím středníkem if budou také provedeny bez závislosti na podmínce.

 

PŘÍKLAD: if_6

int x=0;                                                                                 //deklarace a inicializace x jako int

if (x==0) cout<<"Podmínka je splněná, proběhne."<<endl;

                                                                                              //není příkaz else

cout<<"Bude již také vykonáno, není součástí podmínky";

getchar();                                                                             //čekání na entr

return 0;                                                              //výstup z konzolové aplikace

 

Tento program obsahuje jednu podmínku, která testuje int x na nulovou hodnotu. Podmínka je splněná a je vypsáno hlášení cout. Dále ovšem se nevyskytuje příkaz else a to znamená, že tělo podmínky platí jen k prvnímu středníku. Pro využití více funkcí a příkazů v těle podmínky je zapotřebí složených závorek {}.

 



Abecední seznam všech článků Vyhledání pojmů ve článcích




Popis HTML formátu
Velikost textu, barva textu, rozvržení stránky, obrázky, barva pozadí se zapisuje pomocí HTML příkazů.
stranky/html_tag
Programování PHP
Články o programování webových stránek pomocí PHP.
internet/katalog_programovani_php
JavaScript - ukázky
Příklady užití některých často používaných efektů na stránky.
katalogy/javascript
Objektové programování c++
Jazyk C, Objektové programování c++
internet/katalog_programovani_c
Hybridní počítače
Počítače, jejichž základem je standardní analogová počítací síť.
knihy/hybridni_pocitace
Popis jazaka C
Průvodce příkazy programovacího jazyka C.
programovani/jazyk_c
OnLine televize
Seznam světových on line televizních vysílání
internet/katalog_internetove_televize
Databáze ikon
Ikony a malé obrázky pro tlačítka či jiné použití
datove_zdroje/icony/icony.php
CSS html vlasnosti
Přehled CSS vlastností pro tvorbu webu
datove_zdroje/stranky/css
Otevře stránky Fulltextové vyhledávání na celém serveru
Digitalizované odborné knihy
Velká encyklopedie pojmů a zkratek
Česko - anglicko - německý technický slovník
Klasický katalog firem, služeb a stránek
OnLine překladač  vět a textů (nepoužívá Google)
Stránky pro chvíle oddechu od studia, relaxace
Katalog českých firem dle technologií
Internetový odkazník
Otevře hlavní stranu pro oddíl programování




 Wikipedie   Seznam stránek   Kapitoly témat   Významné servery   Klíčová slova 








Otevře hlavní stranu společnosti AmaPro

Všechna práva vyhrazena. Určeno jen pro osobní využití. Bez předchozího písemného souhlasu správce www.amapro.cz je zakázána jakákoli další publikace, přetištění nebo distribuce jakéhokoli materiálu nebo části materiálu zveřejněného na www.amapro.cz a to včetně šíření prostřednictvím elektronické pošty. Články, jejichž přímým autorem není amapro.cz lze publikovat pouze se souhlasem jejich majitelů či administrátoru příslušného webu.