Skok (informatika)

Vývojový diagram podmíněného větvení (realizovaného podmíněným skokem)

Skok (anglicky jump nebo branch odkazující na to, že se pomocí podmíněných skoků provádí větvení programu[pozn. 1]) je instrukce, která narušuje obvyklý způsob provádění počítačového programu po instrukcích v tom pořadí, v jakém jsou zapsány (sekvenčně). Zatímco po provedení jakékoli jiné instrukce se pokračuje prováděním instrukce následující, po provedení skoku se pokračuje instrukcí na jiné určené adrese. Skokem lze realizovat buď přeskočení nebo opakování části programu.

Skoky jsou základní prostředek k větvení programu – rozhodnutí, která část programu se má provádět, na základě výsledku předcházejícího výpočtu. Aby větvení mohlo být ovlivňováno i jinak než nastavením různých cílových adres skoku, používají se podmíněné skoky:

  • nepodmíněný skok (anglicky unconditional jump) – skok se provede vždy při vykonávání instrukce skoku
  • podmíněný skok (anglicky conditional jump) – při vykonávání instrukce skoku se buď provede skok nebo se bude pokračovat následující instrukcí v závislosti na výsledku předcházejícího výpočtu nebo vyhodnocení zadané podmínky

Pomocí kombinace jednoho podmíněného a jednoho nepodmíněného skoku lze vytvořit dvoucestné větvení programu (jestliže je splněna podmínka, proveď první větev, jinak druhou větev – konstrukce if podmínka then první větev else druhá větev), nebo cyklus, jehož provádění je řízeno zadanou podmínkou (pokud je splněna podmínka, proveď tělo cyklu a jdi znovu na vyhodnocení podmínky – konstrukce while podmínka do tělo cyklu).

Nedisciplinovaným používáním instrukcí skoku lze vytvořit programy, jejichž chování je velmi obtížné zkontrolovat (u vlastních programů) nebo zjistit (u cizích programů). Vyšší programovací jazyky se proto snaží používání libovolných skoků omezit nebo zcela znemožnit zaváděním programových konstrukcí (strukturované programování).

  1. 6502 Instruction Set [online]. [cit. 2024-04-01]. Dostupné online. (anglicky) 


Chybná citace: Nalezena značka <ref> pro skupinu „pozn.“, ale neexistuje příslušná značka <references group="pozn."/>


Developed by StudentB