Řídicí struktura: Porovnání verzí

Smazaný obsah Přidaný obsah
Vyprázdnění stránky
m Editace uživatele 88.103.53.2 (diskuse) vráceny do předchozího stavu, jehož autorem je JackieBot
Řádek 1:
'''Řídicí struktura''', někdy nazývaná '''strukturovaný příkaz''', je konstrukce [[počítačový program|programu počítače]] používaná ve vyšších [[programovací jazyk|programovacích]] a [[skriptovací jazyk|skriptovacích jazycích]], která rozhoduje o dalším provádění programu tzn., že samy o sobě nic nevykonávají, ale větví, cyklí nebo jinak mění běh [[počítačový program|programu]].
 
Zatímco [[příkaz (programování)|příkazy]] v programu se po kompilaci přeloží do sledu [[Strojová instrukce|strojových instrukcí]], které vykonávají nějaké matematicko-logické operace, přesuny v paměti, komunikují s periferiemi nebo volají podprogramy, nemají řídicí struktury v přeloženém programu svůj ekvivalent - jediné, co mohou ovlivňovat, je jakou následující instrukci procesor vykoná (tzv. instrukce skoků). U kompilovaných programů se každá řídicí struktura přeloží v alespoň jednu takovou instrukci.<!-- tohle je fakt divný a bude to jinak -->
 
Existují tři druhy řídicích struktur:
* posloupnost příkazů - všechny příkazy se postupně provedou jeden po druhém
* větvení (či podmíněný příkaz) - v závislosti na splnění podmínky se určitý příkaz buď provede nebo neprovede (viz [[skok (informatika)]])
* [[cyklus (informatika)|cyklus]] - v závislosti na splnění podmínky se část programu vykoná vícekrát
 
Tyto prvky tvoří základní stavební kameny [[strukturované programování|strukturovaného programování]].
 
Teorii těchto metodik zpracovali např. [[Donald Knuth]], [[Niklaus Wirth]], [[Edsger Dijkstra]] a Hoare.
 
== Cyklus ==
Cyklus nebo také smyčka (angl. loop) je řídicí struktura [[počítačový program|počítačového programu]], kde se opakovaně provádí posloupnost [[příkaz|příkazů]]. Opakování i ukončení cyklu je řízeno nějakou podmínku.
 
=== Konstrukce cyklu ===
Cyklus se skládá z posloupnosti příkazů a [[podmíněný skok|podmíněného skoku]], pomocí kterého se cyklus ukončuje při splnění podmínky.
 
Existují tyto druhy cyklů:
* [[Nekonečný cyklus]] – za normálních okolností není vůbec ukončen
* [[while-do cyklus]] – cyklus s podmínkou na začátku posloupnosti příkazů
* [[do-while cyklus]] – cyklus s podmínkou na konci posloupnosti příkazů. V jazyku [[Pascal (programovací jazyk)|Pascal]] je tento cyklus (<code>'''repeat''' příkaz; '''until''' podmínka;</code>) v případě splnění podmínky ukončen.
* cyklus s testem podmínky uprostřed posloupnosti příkazů – řídce užívaná varianta. Hodně jazyků umožňuje násilné přerušení cyklu (vyskočení ven z cyklu, v [[Pascal (programovací jazyk)|Pascalu]] a v [[C (programovací jazyk)|C]] to je <code>'''break'''</code>), je tedy možné vytvořit například [[nekonečný cyklus]], uvnitř tohoto cyklu testovat nějakou podmínku a ve vhodné situaci cyklus přerušit.
* [[for cyklus]] – speciální případ cyklu s podmínkou na začátku, obvykle užívaný pro výčet prvků z množiny prvků (např. interval celých čísel <1,10>). V některých jazycích je počet opakování vyhodnocen jednou na začátku a další změna této podmínky nemá na počet opakování vliv. V ostatních jazycích je [[for cyklus]] vlastně zvláštním případem [[while-do cyklus|while-do cyklu]]:
 
inicializátor;
'''while''' (podmínka) {
příkaz1; příkaz2; ... příkazN;
inkrement;
}
 
Ve vyšších [[programovací jazyk|programovacích jazycích]] existují pro cykly řídicí konstrukce pro tvorbu programových cyklů. Např. v [[C (programovací jazyk)|jazyce C]]:
 
'''while''' (podmínka) {
příkaz1; příkaz2; ... příkazN;
}
'''do''' {
příkaz1; příkaz2; ... příkazN;
} '''while''' (podmínka);
'''for''' (inicializátor; podmínka; inkrement) {
příkaz1; příkaz2; ... příkazN;
}
 
Analogicky k násilnému přerušení cyklu (''break'', ''exit''), některé programovací jazyky umožňují i [[Skok (informatika)|skok]] na další iteraci cyklu (obvykle ''continue'', ''loop'', ''next'').
 
== Související články ==
* [[vývojový diagram]]
 
{{Pahýl - počítače}}
 
[[Kategorie:Programovací konstrukce]]
 
[[de:Kontrollstruktur]]
[[en:Control flow]]
[[es:Estructuras de control]]
[[fr:Structure de contrôle]]
[[he:בקרת זרימה]]
[[it:Struttura di controllo]]
[[ja:制御構造]]
[[nl:Control flow]]
[[pl:Przepływ sterowania]]
[[pt:Estrutura de controle]]
[[ru:Управляющая конструкция]]
[[ta:கட்டுப்பாட்டு கட்டமைப்பு]]
[[uk:Потік керування]]