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

 

while

 

Tento iterakční příkaz testuje podmínku před průchodem cyklem. To znamená, že cyklus nemusí proběhnout ani jednou. Za podmínku while lze zadat jeden příkaz, který je platný pro tělo cyklu až po středník, nebo lze více příkazů umístit do složených závorek. Je nutné si uvědomit, že pokud se v těle cyklu změní proměnná, která je testovaná, k opuštění cyklu dojde až v případě testu podmínky while. Znamená to, že vždy dojde k provedení těla cyklu až do konce.

 

While (podmínka) {tělo cyklu}

 

 

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 a na prvním příkazu za tělem cyklu 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í cyklu, ale program se vrací k testu podmínky. Dle vyhodnocení program pokračuje opět příkazy v cyklu nebo dalším následujícím příkazem za while.

 

Základní konstrukce while:

 

int x=0;

while (x<10)

     {

     x++;

     cout<<"Cyklus probíhá 10 krát "<<endl;

     }

cout<<"Pokračuje až je x rovno 10";

 

Tělo cyklu, které musí být pro více příkazů v těle uzavřeno v závorkách se provádí tak dlouho, pokud je splněná podmínka while. Potom se cyklus opouští. POZOR: na nekonečný cyklus. Cyklus nemusí prověhnout ani jednou, bude-li již x větší jak 10.

 

PŘÍKLAD: while_1

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

while (x<10)          //testovací podmínka pro while

        {                                     //počátek bloku příkazů pro tělo cyklu

        cout<<x<<endl;           //výstup aktuální hodnoty na obrazovku

        x++;                               //změna proměnné, která je v testu while

        }                                     //počátek bloku příkazů pro tělo cyklu

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

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

 

Tento program deklaruje a inicializuje proměnnou x jako int, která je součástí testu podmínky pro vykonávání těla cyklu. Tělo bude probíhat tak dlouho, pokud x bude menší než 10. V těle cyklu je cout, který vypisuje aktuální hodnotu x na obrazovku. V těle cyklu je i příkaz x++, který zvyšuje int x o jedna. Modifikace x je velmi důležitá, neboť to je jediná možnost, jak tento cyklus ukončit. Narazí-li program na koncovou složenou závorku těla cyklu, provede se test podmínky while. Pokud již x bude větší než 10, neproběhne tělo podmínky, ale dojde k pokračování běhu programu na dalším příkaze, tedy getchar().

 

 

 

 

 

while (getchar()!='e')

       putchar('*');           // vypisuje hvězdičku

cout<<"Pokračuje až se objeví pismeno e ";

 

Tato konstrukce obsahuje v podmínce test na hodnotu, která teprve vrátí funkce getchar (vstup klavesnice). V těle příkazů while je pouze jeden příkaz, nemusí být v závorce. Platnost ukončuje středník. Cyklus vypisuje vložené znaky na obrazovku a to do té doby, než se objeví klávesa e. Pak se cyklus opouští.

 

PŘÍKLAD: while_2

cout<<"pro konec stiskni 'e'"<<endl;

while(getchar()!='e');                                          //test na vstup z klávesnice

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

 

V programu je použitá vizuálně trochu zvláštní konstrukce pro cyklus while. Zvláštnost spočívá v tom, že neexistuje tělo cyklu, ba ani dokonce příkaz cyklu. Tělo je prostě prázdné, čímž říkáme, že program nemá dělat nic. Také jsme použili volání funkce přímo v podmínce while, což je povolené. Výstupem z funkce je posloupnost char. Pokud v této posloupnosti znaků se nebude vyskytovat „e“, nedojde k opuštění těla cyklu (resp. testu podmínky). Objeví-li se „e“, je tělo cyklu (resp. test podmínky) ukončen a program pokračuje další instrukcí, což je return, který ukončí naší konzolovou aplikaci.

 

 

 

 

Časté chyby a problematické konstrukce:

 

 

PŘÍKLAD: while_3

int x;                                      //deklarace bez inicializace x jako int

while(x<10)           //test podmínky pro x

       {                                      //začátek těla cyklu

       cout<<x<<endl;            //výpis

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

       }                                      //konec těla cyklu

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

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

 

POZOR: Zde je velmi častá chyba. Konstrukce je správná, ale chybí inicializace hodnoty pro proměnnou x jako int. Program deklaruje proměnnou x a alokuje 4 Byte v paměti. Ty zpravidla mají nenulovou hodnotu, kterou program přepočítá na nějakých 5215412 pro x. Program se nám kousne. Musíme tedy dopsat int x=0.

-------

 

 

PŘÍKLAD: while_4

int x=1;

while (x)

        putchar('*'); // vypisuje hvězdičku v nekonečné smyčce

cout<<"Nikdy se sem běh progamu nedostane ";

 

POZOR: Tato konstrukce vyvolá nekonečnou smyčku. V těle příkazu není modifikované proměnná x a proto nelze nikdy splnit podmínku while. Opakem je v tomhle případě pro x hodnota NULL, která nevyvolá ani jeden průchod cyklem a program by pokračoval dál.

-------

 

 

 

 



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




Weby o programování
Odkazy na velké servery o programování a vývoji SW
odkazy/programovani
Mikroprocesory IV.
Varianty návrhu číslicových řídících systémů realizovaných jako sekvenční obvody.
programovani/procesory_4
Databáze obrázků
Malé a velké obrázky, podlkady, tlačítka, okrasné čáry a pod.
datove_zdroje/obrazky
CSS html vlasnosti
Přehled CSS vlastností pro tvorbu webu
datove_zdroje/stranky/css
Animované obrázky
Animované gify a malé obrázky pro všeobecné využití.
datove_zdroje/animace
Hybridní počítače
Počítače, jejichž základem je standardní analogová počítací síť.
knihy/hybridni_pocitace
Odkazník o programování
Rejstřík klíčových slov pro programování ve vyhledávačích.
programovani/programovani.php
JavaScript - ukázky
Příklady užití některých často používaných efektů na stránky.
katalogy/javascript
Řetězce PHP
Informace o chování řetězců v programování PHP.
php/obsah_php_string.php
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.