Řídící struktura
Z Wikipedie, otevřené encyklopedie
Řídící struktura, někdy nazývaná strukturovaný příkaz, je konstrukce programu počítače používaná ve vyšších programovacích a 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 programu.
Zatímco příkazy v programu se po kompilaci přeloží v instrukce, které vykonávají nějaké matematicko-logické operace s paměťovými místy, pracují se soubory, periferiemi, volají např. funkce API nebo softwarová přerušení, řídicí struktury nemají 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.
Existují tři druhy řídící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 - v závislosti na splnění podmínky se část programu vykoná vícekrát
Tyto prvky tvoří základní stavební kameny strukturovaného programování.
Teorii těchto metodik zpracovali např. Donald Knuth, Niklaus Wirth, Edsger Dijkstra a Hoare.
[editovat] Cyklus
Cyklus nebo také smyčka (angl. loop) je řídící struktura počítačového programu, kde se opakovaně provádí posloupnost příkazů. Opakování i ukončení cyklu je řízeno nějakou podmínku.
[editovat] Konstrukce cyklu
Cyklus se skládá z posloupnosti příkazů a 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 je tento cyklus (
repeat příkaz; until podmínka;
) 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 Pascalu a v C to je
break
), 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 cyklu:
inicializátor; while (podmínka) { příkaz1; příkaz2; ... příkazN; inkrement; }
Ve vyšších programovacích jazycích existují pro cykly řídící konstrukce pro tvorbu programových cyklů. Např. v 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 na další iteraci cyklu (obvykle continue, loop, next).