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

 

do - while

 

Jedná se o příkaz, který doplňuje větvící příkaz while. Umožňuje tak vytvořit konstrukci, která testuje podmínku až po průběhu tělem cyklu. Touto konstrukcí je zajištěno to, že cyklus musí proběhnout vždy minimálně jednou. Což je rozdíl od použití jen while. Za instrukcí do může následovat jeden příkaz, který musí být ukončený středníkem. Zpravidla je nutno použít více příkazů, které je potom nutné uzavřít do složených závorek. Tělo cyklu se bude provádět tak dlouho, pokud bude podmínka while true (pravdivá, nenulová). V případě, že výsledek podmínky while false (nepravda, NULL) pokračuje běh programu na dalším příkazu za while.

 

do

{ příkazy;}

while(podmínka);

 

Pomocí příkazů break a continue lze v těle cyklu provést rychlé ukončení cyklu. Příkaz break provede okamžitý výskok z těla cyklu a program pokračuje na prvním příkazu za podmínkou  while. Výskok z těla cyklu je proveden bez ohledu na hodnotu podmínky.

Příkaz continue, který se objeví v těle cyklu způsobí ukončení provádění těla cyklu, ale program přechází až k testu podmínky. Dle vyhodnocení se program vrací do cyklu nebo a program pokračuje na prvním příkazu za podmínkou  while.

 

Základní konstrukce do-while:

 

int x=0;

do      // vstup do smyčky před testem podmínky

 {

 cout<<"cyklus proběhne 10 krát";

 x++ ;

 }

while(x<10);

cout<<"x je rovno 10 po ukončení cyklu";

 

Tato konstrukce provádí tělo ještě před průchodem testovací podmínky while. Tím je zaručené (o proti while) průchod cyklu alespoň jednou.

 

PŘÍLKAD: do_1

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

do                                          //návěstí pro první while o těle cyklu

 {                                            //začátek těla cyklu

 cout<<x<<endl;                  //výpis aktuální hodnoty int x

 x++ ;                                     //přičítání int x

 }                                            //konec těla cyklu

while(x<10);                          //testovací podmínka pro tělo cyklu

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

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

 

Program deklaruje a inicializuje proměnnou x jako int. Příkaz do říká, že bude následovat příkaz nebo tělo vnořeného bloku příkazů, které se bude vztahovat k prvnímu while (pokud se neobjeví další do). Složená závorka za do říká, že se jedná tedy o blok příkazů (tělo cyklu). V cyklu je cout pro výpis x a x++ pro čítání. Běh programu projde cyklem a zastaví se na podmínce while (x<10). Výsledkem je pravda (true) a běh programu se vrací k do a tělo cyklu se opakuje. Po deseti cyklech bude x>10 a výsledkem podmínky while je false a běh programu pokračuje na prvním příkazu za podmínkou  while, což je getchar().

 

Časté chyby a problematické konstrukce:

 

 

do

        {

        x++ ;    // vzdy je provedená operace těla

        cout<<x<<endl;

        }

while (0);

cout<<" vždy konec cyklu po prvním testu podmínky" ;

       

Jeli v podmínce NULL, je cyklus vždy ukončen, bez pokračování cyklu. Ovšem cyklus proběhne minimálně jednou.

 

PŘÍKLAD: do_2

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

do                                          //návěstí pro while o těle cyklu

  {                                           //začátek těla cyklu

  cout<<x<<endl;                 //výpis aktuální hodnoty int x

  x++ ;                                    //přičítání int x

  }                                           //konec těla cyklu

while (0);                               //testovací podmínka - NULL (ukončení cyklu)

cout<<x;                               //výpis aktuální hodnoty x

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

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

 

Program deklaruje a inicializuje proměnnou x jako int. Příkaz do říká, že bude následovat příkaz nebo tělo vnořeného bloku příkazů, které se bude vztahovat k prvnímu while (pokud se neobjeví další do). Složená závorka za do říká, že se jedná tedy o blok příkazů (tělo cyklu). V cyklu je cout pro výpis x a x++ pro čítání. Běh programu projde cyklem a zastaví se na podmínce while (0). Po vyhodnocení podmínky jako false (nulová hodnota) se již žádný další cyklus provádět nebude a běh programu pokračuje na prvním příkazu za podmínkou  while, což je cout a následně getchar().

 

 

 

 

do

        {

        x++;    // dojde k nekonečnému zacyklení

        cout<<x<<endl;

        }

while (1);

cout<<" Nikdy neproběhne" ;

 

Je-li v podmínce nenulová hodnota, dojde k nekonečnému zacyklení. Už není podstatné, že cyklus proběhne minimálně jednou.

 

PŘÍKLAD: do_3

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

do                                          //návěstí pro while o těle cyklu

  {                                           //začátek těla cyklu

  cout<<x<<endl;                 //výpis aktuální hodnoty int x

  x++ ;                                    //přičítání int x

  }                                           //konec těla cyklu

while (1);                              //testovací podmínka - true (nekonečná smyčka)

cout<<x;                               //NIKDY NEPROBĚHNE

getchar();                              //NIKDY NEPROBĚHNE

return 0;                                /NIKDY NEPROBĚHNE (lze jen tvrdě ukončit)

 

Program deklaruje a inicializuje proměnnou x jako int. Příkaz do říká, že bude následovat příkaz nebo tělo vnořeného bloku příkazů, které se bude vztahovat k prvnímu while (pokud se neobjeví další do). Složená závorka za do říká, že se jedná tedy o blok příkazů (tělo cyklu). V cyklu je cout pro výpis x a x++ pro čítání. Běh programu projde cyklem a zastaví se na podmínce while (1). Po vyhodnocení podmínky jako true (nenulová hodnota) se běh programu vrátí k do a začne se provádět další cyklus. To se bude vykonávat neustále dokola, neboť podmínka i tělo cyklu jsou nemodifikovatelné a výsledek testu while je jednoznačný. Další část programového kódu bude již nepoužitá. Konec aplikace lze jen restartem či tvrdým ukončením (MS Dos aplikace).

 

 

 

 



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




Databáze ikon
Ikony a malé obrázky pro tlačítka či jiné použití
datove_zdroje/icony/icony.php
Mikropočítače a jejich programování
Nízká forma programování, assembler a struktura procesorů.
knihy/mikropocitace/obsah_mikro1.php
Mikropočítače
Seznámení s obecnou problematikou počítačů a mikropočítačů.
programovani/mikropocitace
PHP práce s poli
Práce s poli a položkamy v PHP.
stranky/php_array
Hybridní počítače
Počítače, jejichž základem je standardní analogová počítací síť.
knihy/hybridni_pocitace
OnLine televize
Seznam světových on line televizních vysílání
internet/katalog_internetove_televize
JavaScript - ukázky
Příklady užití některých často používaných efektů na stránky.
katalogy/javascript
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
Databáze obrázků
Malé a velké obrázky, podlkady, tlačítka, okrasné čáry a pod.
datove_zdroje/obrazky
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.