Klávesové zkratky na tomto webu - základní
Přeskočit hlavičku portálu

Programujeme pro Psiony aneb OPL pro začátečníky (4)

aktualizováno 
Čtvrté pokračování našeho prázdninového rychlokurzu programování v jazyce OPL.

Návěští a skoky

Uváděné klasické řídící struktury nám budou zcela stačit pro většinu programů. I v jazyce OPL je však možné používat návěští (značky v kódu programu) a skoky na ně příkazem GOTO. Používání příkazu GOTO je pohodlné, může ale výrazně snížit srozumitelnost programu. Návěští jsou ukončena dvěma dvojtečkami; za příkazem GOTO můžeme uvést jméno návěští i bez ukončujících dvojteček. V následujícím příkladu jsou návěští vytištěna tučně:

PROC skoky:
  GOTO skok::
zpatky::
  PRINT "Druhy"
  GOTO konec::
skok::
  PRINT "Prvni"
  GOTO zpatky::
konec::
  PRINT "Treti"
  GET
ENDP

Příkaz GOTO je možné použít k opuštění všech úrovní vnořených cyklů. Návěští, na které pomocí GOTO skáčeme, musí být však umístěno v té samé proceduře jako příkaz GOTO.

Poslední řídící strukturou, kterou si popíšeme, je tabulka odskoků, která slouží k větvení programu podle hodnoty řídící proměnné (podobně jako příkaz switch v jazyce C). Tabulka odskoků je uvozena klíčovým slovem VECTOR, za kterým následuje řídící proměnná. Mezi klíčovými slovy VECTOR a ENDV je seznam návěští oddělených čárkami nebo odřádkováním. Podobně jako za GOTO mohou, ale nemusí být návěští v seznamu zakončena dvojtečkami.

Podle hodnoty řídící proměnné pak příkaz VECTOR skočí na příslušné návěští. Bude-li mít řídící proměnná hodnotu jedna, skočí na první návěští; bude-li mít hodnotu dva, skočí na druhé návěští a tak dále. Pokud bude mít řídící proměnná hodnotu menší než jedna nebo větší, než je počet návěští v seznamu mezi VECTOR a ENDV, tak se v provádění programu pokračuje prvním příkazem za ENDV. Všechna návěští musí být (podobně jako u příkazu GOTO) v té samé proceduře, jako je příkaz VECTOR.

PROC vektor:
  LOCAL i%
  INPUT i%
  VECTOR i%
    jedna, dva, tri
  ENDV
  PRINT "Mensi nez jedna nebo vetsi nez tri" : GOTO dale
jedna::
  PRINT "Jedna" : GOTO dale
dva::
  PRINT "Dva" : GOTO dale
tri::
  PRINT "Tri"
  REM -- tady program pokračuje --
dale:
  PRINT "Konec."
  GET
ENDP

Posledním klíčovým slovem, které řídí běh programu, je příkaz STOP. Můžeme jej uvést kdekoliv v programu, chceme-li okamžitě ukončit běžící program a vrátit se zpět do operačního systému.

Volání procedur

Zatím jsme si ukazovali jen programy, ve kterých jsme používali jednu proceduru. Většinou je ale výhodné rozčlenit provádění programu do více procedur. Důvody pro toto rozdělění jsou dva: pokud některé příkazy voláme opakovaně a nechce se nám je psát pokaždé zvlášť, je výhodné je umístit do procedury a opakovaně volat tuto proceduru; druhým důvodem pro použití procedur je zvýšení čitelnosti programu.

Už jsme si uvedli, že procedury jsou uvozené klíčovým slovem PROC a ukončené klíčovým slovem ENDP. Při spuštění programu se vykoná pouze první procedura, která je v něm definovaná. Definice procedur nemohou být vnořené. Voláme-li proceduru, uvedeme její jméno s dvojtečkou na konci.

PROC hlavni:
  prvni:
  treti:
  GET : REM -- počká na klávesu --
ENDP

PROC prvni:
  PRINT "Toto je ";
  ctvrta:
ENDP

PROC druha:
  PRINT "zbytečný ";
  REM -- tato procedura ale nebude nikdy spuštěna --
ENDP

PROC treti:
  PRINT "text."
ENDP

PROC ctvrta:
  PRINT "vnořený "
ENDP

V každé proceduře mohou být deklarovány lokální (příkazem LOCAL) i globální (příkazem GLOBAL) proměnné. Lokální proměnné platí pouze v té proceduře, ve které byly definovány; globální proměnné je možné používat ve kterékoliv proceduře nezávisle na místu deklarace. Deklarace proměnných musí následovat hned za klíčovým slovem PROC.

Pomocí spodního tlačítka na nástrojové liště vpravo (označeného Go to) můžeme rychle vyhledat kteroukoliv proceduru v programu a přesunout se na začátek jejího zdrojového kódu.

Procedury s parametry

Aby byla lépe zajištěna vzájemná komunikace procedur, je možné předávat procedurám parametry. Parametry uvádíme v závorce za dvojtečkou ukončující jméno procedury. Tímto zápisem je již určen typ parametrů (p& je 32bitové celé číslo, p% je 16bitové celé číslo, p$ je řetězec a p je reálné číslo). Při volání procedury musíme uvést stejné parametry jako při její deklaraci, jinak překladač ohlásí chybu.

PROC vypocet:
  LOCAL cena
  PRINT "Zadej cenu ";
  INPUT cena
  vypis_splatky:(cena, 6)
  vypis_splatky:(cena, 12)
  GET
ENDP

PROC vypis_splatky:(cena, pocet%)
  PRINT "Cena "; cena; " rozdelena do "; 
  PRINT pocet%; " splatek bude splacena ";
  PRINT "jako "; pocet%; " x "; INT(cena/pocet%+0.5)
ENDP

Ve výše uvedeném příkladu vidíme opakované použití procedury, které předáváme dva parametry: cenu, která může být reálné číslo, a počet splátek (celé číslo). Proceduru voláme opakovaně s odlišnými parametry.



Nejčtenější

Tak bude vypadat letošní nejlevnější iPhone, zepředu připomíná desítku

Render chystaného LCD iPhonu s 6,1palcovým panelem ve společnosti menšího...

Uvedení nových iPhonů se blíží, jejich oficiální odhalení proběhne už za dva měsíce. Víme, že budou tři a alespoň z...

Blesková krádež. Zloději za 30 sekund vybílili obchod Applu

Blesková krádež v kalifornském Apple Storu

Skupina mužů za méně než minutu vykradla před očima zákazníků i personálu obchod Apple Store v kalifornském Fresnu....



Tomuto mobilu energie jen tak nedojde. Utrhne vám ovšem kapsu

Ulefone Power 5

Do redakce nám zavítal neobvykle vybavený smartphone značky Ulefone. Velké a těžké monstrum s názvem Power 5 má baterii...

Xiaomi pokračuje v dumpingových akcích. Redmi S2 bude za 300 korun

Nová prodejna mobilů v Olomouci přilákala stovky lidí

Agresivní marketing čínské značky v Česku pokračuje. Xiaomi otevírá třetí obchod a tradičně první den nabízí produkty s...

Recenze: Nokia 8 Sirocco je skutečně luxusní a má skvěle odladěný Android

Nokia 8 Sirocco

Firma HMD Global postupně rozšiřuje svou nabídku smartphonů Nokia i do vyšších pater. Prozatím tou nejlepší nokií,...

Další z rubriky

Sem chodí smartphony umřít. Aplikaci lze použít jen s vybitou baterií

Die With Me

Aplikace s názvem Umři se mnou má velmi neobvyklé omezení. Nemůžete ji zapnout, pokud máte telefon nabitý víc než na...

Na aplikace alternativních taxi útočí virus. Pase po údajích ke kartám

Virus pro Android

Uživatelé mobilních aplikací alternativních taxi včetně aplikace Uber by měli být obezřetní. Ohrožuje je totiž nový...

Google loni zlikvidoval 700 tisíc aplikací

Mobilní aplikace

Z aplikačního obchodu Google Play bylo loni odstraněno 700 tisíc aplikací, většina zmizela prakticky ihned po umístění...

Akční letáky
Akční letáky

Všechny akční letáky na jednom místě!

Najdete na iDNES.cz