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

 

for

 

Jedná se o velmi často používaný příkaz pro vytváření cyklů. Jeho použití je především tam, kde známe výsledný počet cyklů. Základním principem konstrukce cyklu for je znalost počáteční a koncové hodnoty zpracovávané proměnné. První část příkazu for definuje tzv. řídící proměnnou cyklu, u které je potřeba zadat počáteční hodnotu (např. x=0). Druhou část příkazu for tvoří podmínka, kterou se ukončuje cyklus (např. x<10). Třetí část  příkazu for tvoří výraz, který modifikuje proměnnou (např. x++). Jak je patrné, vše se vztahuje k jedné proměnné x, proto řídící proměnná.

 

for (proměnná=hodnota;podmínka;výraz) {tělo cyklu}

 

Proměnná je v cyklu for velmi důležitá a proto se jí říká řídící proměnná cyklu. Zpravidla je za příkazem for vytvořeno tělo cyklu pomocí složených závorek, ale může následovat pouze jeden příkaz zakončený středníkem. Příkaz for lze poměrně dost syntaxně modifikovat, ale vždy je potřeba dodržet základní zápis, který vyžaduje tři středníky, a to i když nemusí být parametry zadány.

 

Další používané konstrukce for:

 

For(pro;pod;vyr)

                prikaz;

 

 

 

 

for(int x=0;x<10;x++)

         cout<<x;

 

Konstrukce vytváří cyklus pouze pro jeden příkaz. Není nutno použít složených závorek. Cyklus se vztahuje bezprostředně za příkaz for po první středník.

 

PŘÍKLAD: for_1

for(int x=0;x<10;x++)                          //od x=0 do x=9 při zvyšování x o jedna

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

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

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

 

Program vytváří konstrukci cyklu for s jedním příkazem pro výstup na obrazovku. Jako řídící proměnnou deklaruje x jako int a inicializuje ho na 0. Podmíněný cyklus je prováděn s omezením na x<10. A výraz pro modifikaci řídící proměnné x je inckrementace x, tedy x++. V době cyklu se provádí pouze jeden příkaz, což je cout. Po dobu čítání x++, je vždy testovaná podmínka x<10. Je-li výsledek testu false (nula), pak  běh programu pokračuje na prvním příkazu za příkazem cout<<x; což je getchar().

 

 

for(int x=0;x<10;x++)

         {

cout<<x+x<<endl;

cout<<x*x<<endl;

}

 

Konstrukce vytváří cyklus  pro více příkazů. Je nutno použít složených závorek a vytváříme tak tělo cyklu. Cyklus se vztahuje bezprostředně za první složenou závorku. Řídící proměnná x je přístupná v celém příkazovém bloku těla cyklu for a to i v nově vytvořených vnořených příkazových bloků.

 

PŘÍKLAD: for_2

for(int x=0;x<10;x++)                          //od x=0 do x=9 při zvyšování x o jedna

        {                                     //počátek těla cyklu

        cout<<x+x<<endl;                       //výpis součtu

        cout<<x*x<<endl;                       //výpis součinu

        }                                     //konec těla cyklu

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

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

 

Program vytváří konstrukci cyklu for s více příkazy pro výstup na obrazovku. Jako řídící proměnnou deklaruje x jako int a inicializuje ho na 0. Podmíněný cyklus je prováděn s omezením na x<10. A výraz pro modifikaci řídící proměnné x je inckrementace x, tedy x++. V době cyklu se provádí tělo cyklu, kde jsou uzavřeny výstupní proudy cout na obrazovku, do kterých vstupuje součet a součin řídící proměnné x. Po dobu čítání x++, je vždy testovaná podmínka x<10. Je-li výsledek testu false (nula), pak  běh programu pokračuje na prvním příkazu za příkazem cout<<x; což je getchar().

 

 

 

for(int x=0;x<10;x++)

         {

 for(int y=0;y<10;y++)

{cout<<x<<y;}

}

 

Konstrukce ukazuje, že je možné do vytvořeného těla cyklu libovolně vkládat a vnořovat nespočet dalších příkazových bloků či cyklů.  Podstatné je to, že vznikající strom noření se dotýká také životnosti proměnných. Zde jsou uvedeny dva cykly for x a for y. V těle for y je proměnná x viditelná a správná. Po opuštění for y nám proměnná zaniká ale opět když se program dostane na for y, tak vzniká.

 

PŘÍKLAD: for_3

for(int x=0;x<10;x++)          //od x=0 do x=9 při zvyšování x o jedna

    {                                                         //počátek těla cyklu

    cout<<endl;                                     //další řádek

    for(char y=65;y<85;y++)               //vnoření dalšího cyklu

        {cout<<x<<y;}                            //vnořené tělo cyklu

    }                                                         //konet těla cyklu

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

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

 

Program vytváří konstrukci cyklu for s vnořeným jiným for cyklem. Jako řídící proměnnou deklaruje x jako int a inicializuje ho na 0. Podmíněný cyklus je prováděn s omezením na x<10. A výraz pro modifikaci řídící proměnné x je inckrementace x, tedy x++. V době cyklu se program dostane na další příkaz for, který vytváří řídící proměnnou y a vytváří tak vnořené tělo cyklu, kde je funkcí cout vypisována hodnota x a y, neboť obě dvě jsou v této části programu vidět. Při každém průběhu těla x vzniká proměnná y, která nabývá hodnot 85-65 znaků, které vykreslí na obrazovku. Při každém novém průchodu x je posun na další řádek a cyklus y se opakuje.

 

 

for(int x=0,y=0;x<10,y>-7;x++,y--)

         {

cout<<x<<y;

}

 

Konstrukce příkazu for dovolují použít více než jednu řídící proměnnou. Zde jsou použity dvě x a y. Obě jsou deklarovány jako int, omezeny podmínkou a výraz je zvolen jako x++ a y--. Obě proměnné jsou vidět v těle cyklu a v dalších vnořených příkazových blocích. POZOR: Co ale ukončí cyklus? Proměnná x nebo y. Zde platí podmínka: je zcela jedno která proměnná v testu dá false. Libovolný výsledek testu false ukončí cyklus.

 

PŘÍKLAD: for_4

for(int x=0,y=0;x<10,y>-7;x++,y--)    //vytvoření for cyklu s více řídícími proměnnými

      {                                                                      //počátek těla cyklu

      cout<<x<<", "<<y<<endl;                           //výstup na obrazovku

      }                                                                      //konec těla cyklu

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

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

 

Program vytváří konstrukci for cyklu se dvěmi řídicími proměnnými x a y. Obě jsou inicializovány na 0 a funkční modifikace jsou x++ a z--. V těle cyklu je použitý výstupní proud cout pro výstup aktuální hodnoty x a y na obrazovku. Cyklus je omezen podmínkami x<10 a y>-7. Obě proměnné jsou ovšem co se týče počtu cyklů odlišné. V našem případě ukončí cyklus podmínka pro proměnnou y a to při –6. Za ukončeným for příkazem následuje getchar().

 

 

int x=0;

for( ; x<10 ; x++)

         cout<<x;

 

Konstrukce příkazu for umožňuje také vynechat první parametr. Je ovšem nutné aby použitá proměnná v podmínce byla již dříve deklarovaná a hlavně dobře inicializovaná.

 

PŘÍKLAD: for_5

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

for( ;x<10;x++)                     //formulace for bez uvedené proměnné

    cout<<x<<endl;               //výstup x na obrazovku

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

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

 

Program deklaruje a inicializuje proměnnou x jako int. Tato proměnná je řídicí pro for, i když není uvedená. Podmínka for je ukončena testem na false pro x<10, výrazem pro modifikaci řídící proměnné je x++. Cyklus for má pouze jeden příkaz, který posílá x do výstupního proudu cout. Po dobu čítání x++, je vždy testovaná podmínka x<10. Je-li výsledek testu false (nula), pak  běh programu pokračuje na prvním příkazu za příkazem cout<<x<<endl; což je getchar().

 

 

for(int x=0; x<10 ; )

         x+=2;

 

Další z možností konstrukce příkazu for umožňuje vynechat výraz pro modifikaci řídící proměnné. Modifikovat řídící proměnnou lze přímo v těle cyklu. Důležité je, aby proměnné mohla dosáhnout stavu pro opuštění cyklu při testu podmínky.

 

PŘÍKLAD: for_6

for(int x=0; x<10; )                               //formulace for bez uvedeného výrazu modifikace

    {                                                         //počátek těla cyklu

    cout<<x<<endl;                               //výstup x na obrazovku

    x+=2;                                 //modifikace řídící proměnné (x=x+2)

    }                                                         //konec těla cyklu

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

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

 

Příkaz for vytváří cyklus, kde je řídící proměnnou x. Formulace for vynechává výraz pro modifikaci x. Ten je umístěn v těle programu. V těle programu je výstupní proud, který posílá x na obrazovku. Modifikace řídící proměnné je provedena jako x=x+2, což je zkráceně x+=2. Pokud se objeví false při testu podmínky, je cyklus ukončen přechodem na getchar(). V našem případě proběhne cyklus jen pět krát.

 

 

for(int x=0;x<10;cout<<x++)

         ;  //středník

 

 

U příkazu for je povolená i takováto konstrukce. Ta umožňuje vložení jednoho příkazu do formulace for. Jedná se o velmi úspornou formu psaní zdrojových textů, ale může působit dosti nepřehledně. Především je velmi důležitý středník, který je vhodné pro přehlednost psát na nový řádek.

 

PŘÍKLAD: for_7

for(int x=0;x<10;cout<<x++)                             //příkaz cout použit přímo ve for

        ;                                                     //středník pro prázdný příkaz či tělo

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

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

 

Příkaz for v programu vytváří tzv. prázdný příkaz. Tělo nebo příkaz za for by mohlo existovat, ale v našem případě nemáme do něj co dát. Středník není symbolický, je povinný. My chceme vypsat na obrazovku x hodnoty. Spojili jsme proto příkaz cout<< x a x++ v jeden a to cout<<x++. POZOR: Důležité je si také uvědomit priority vykonání takového složeného příkazu. Vzhledem k tomu, že máme x++ (což není ++x), dojde prvně k výstupu na obrazovku a pak k čítání. Cyklování prochází programově oblastí bez příkazů, tedy k našemu důležitému středníku. Každý cyklus je prováděn test podmínky. Je-li výsledek testu false (nula), pak  běh programu pokračuje za středníkem, což je getchar().

 

 



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




Databáze obrázků
Malé a velké obrázky, podlkady, tlačítka, okrasné čáry a pod.
datove_zdroje/obrazky
Procesory a mikroprocesory
Obecný úvod do základů mikroprocesorové techniky, architektury počítačů
knihy/mikroprocesory/obsah_mikro2.php
Číslicové počítače
Základní aritmetické operace, logické operace a vztahy mezi nimi.
programovani/cislicove_pocitace
Popis jazaka C
Průvodce příkazy programovacího jazyka C.
programovani/jazyk_c
Mikroprocesory IV.
Varianty návrhu číslicových řídících systémů realizovaných jako sekvenční obvody.
programovani/procesory_4
Databáze ikon
Ikony a malé obrázky pro tlačítka či jiné použití
datove_zdroje/icony/icony.php
Objektové programování c++
Jazyk C, Objektové programování c++
internet/katalog_programovani_c
Mikropočítače
Seznámení s obecnou problematikou počítačů a mikropočítačů.
programovani/mikropocitace
Mikropočítače a jejich programování
Nízká forma programování, assembler a struktura procesorů.
knihy/mikropocitace/obsah_mikro1.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.