Warning: Declaration of action_plugin_subjectindex_indexer::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php on line 15
Warning: Declaration of action_plugin_mathjax_enable::register(Doku_Event_Handler &$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/mathjax/action/enable.php on line 62
Warning: Declaration of action_plugin_googleanalytics::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/googleanalytics/action.php on line 40
Warning: Declaration of action_plugin_folded::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/folded/action.php on line 40
Warning: Declaration of action_plugin_hidden::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/hidden/action.php on line 28
Warning: Declaration of action_plugin_include::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/include/action.php on line 354
Warning: Declaration of action_plugin_tag::register(&$contr) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/tag/action.php on line 175
Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/auth.php on line 532
Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/auth.php on line 818
Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/actions.php on line 656
Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/actions.php on line 656
Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/actions.php on line 656
====== Cykly ======
* [[dox>cykly/nasobilka.c|Násobilka]]
* [[dox>cykly/prvocisla.c|Prvočísla]]
* [[dox>cykly/ctverec.c|Čtverec]]
Cykly jsou jedním ze základních stavebních kamenů programu, umožňují totiž
opakování některých instrukcí (příkazů) při výpočtu. Všechy 3 níže uvedené typy
cyklů jsou navzájem nahraditelné, rozhodnutí, který typ cyklu v dané situaci
použít,je tedy spíše otázkou stylu a větší či menší přehlednosti zdrojového
kódu. Cykly je také možné do sebe libovolně vnořovat.
======Cyklus while======
Konstrukce cyklu s podmínkou testovanou na začátku. Díky tomu nemusí vůbec
dojít k provádění příkazů těla cyklu, pokud bude podmínka cyklu před prvním
průchodem nesplněna.
Syntaxe:
while (podmínka) příkaz
Příklad (Euklidův algoritmus):
int a = 96;
int b = 84;
while (b != 0){
int r;
r = a % b;
a = b;
b = r;
}
======Cyklus do-while======
Cyklus s podmínkou testovanou na svém konci. Tento typ cyklu vždy alespoň
jednou proběhne (až po prvním průběhu je testovaná podmínka).
Syntaxe:
do příkaz while (podmínka);
Příklad (Euklidův algoritmus):
int a = 96;
int b = 84;
do {
int r;
r = a % b;
a = b;
b = r;
} while (b != 0);
======Cyklus for======
Složitější konstrukce cyklu, která se typicky používá pro cykly s pevným počtem
opakování.
Syntaxe:
for (start; podmínka; iterace) příkaz
kde
* start je výraz, který se vyhodnotí před prvním průchodem cyklu (typicky inicializace proměnných),
* podmínka je logický výraz vyhodnocovaný před každým průchodem cyklu, pokud je splněn pokračuje se další iterací, pokud není pokračuje se příkazy za cyklem,
* a iterace je výraz vyhodnocovaný na konci každého průchodu (typicky inkrementace proměnných).
Příklad:
int i;
for (i = 10; i < 100; i++){
switch (i % 2){
case 0: printf("%d je sude\n", i);
break;
case 1: printf("%d je liche\n", i);
break;
}
}
======Přerušení cyklu======
Příkaz continue; slouží pro přeskočení zbývajících příkazů těla nejvnitřnějšího
cyklu, výpočet pokračuje další iterací cyklu (včetně testu případné podmínky).
Příkaz break; naopak okamžitě opouští nejvnitřnějšího cyklus, pokračuje se
příkazy za tímto cyklem.
Příklady cyklů
/* "nekonečný" cyklus, musí obsahovat větev s příkazem break; */
while (1) {...}
/* "nekonečný" cyklus, musí obsahovat větev s příkazem break; */
for (;;) {...}
/* cyklus for s více výrazy v řídícím řádku */
for (i = 1,s = 0; i < 100; s += i, i++) { ... }
/* cyklus se všemi příkazy v řídícím řádku a prázdným tělem; nepřehledný -
nepoužívá se */
for (i = 0; i < 10; printf("%i\n", i), i++);
/* cyklus pro i od -10 do 10 s krokem +2 */
for (i = -10; i <= 10; i += 2) {...}
----
cc, upol