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ší

Nový „levný“ iPhone má být hit. Prodat se ho má 100 milionů

Trojice iPhonů pro rok 2018

Apple chystá na letošní rok tři nové iPhony. Jedním z nich má být levnější model, který nebude mít OLED displej. A...

Nepoužívejte smartphony Huawei a ZTE, varují Američany FBI, CIA i NSA

Huawei Mate 10 Pro bude v USA k dostání u BestBuy

Huawei chtěl letos vzít útokem Spojené státy, a to s pomocí tamních klíčových operátorů. Z možné dohody však nakonec...



Vodafone extrémně vylepšuje rodinné tarify. Zadarmo přidává 8 GB a VDSL

Vodafone (ilustrační fotografie)

Není obvyklé, aby operátor výrazně vylepšil tarif a nesáhl na cenu. V případě inovovaných rodinných tarifů Red+ tomu...

Teď přijde řada na naše peníze. V Číně totiž končí zlaté časy

Xiaomi Mi 6

Čínský trh s chytrými telefony je největší na světě, ale loni se podle všeho dostal do potíží. Po letech růstu přišel...

Lidé si stěžovali na špatný signál. Rušil ho těžař bitcoinů

(Ilustrační snímek)

Newyorští zákazníci amerického operátora T-Mobile si stěžovali na znatelný šum během telefonních hovorů. Ukázalo se, že...

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...

Aplikace ukazovala otravující čísla. Data kradl antivir přímo z mobilů

Škodlivý kód Cooligan napadá zařízení s Androidem 4 a 5

Zajímavý model vymyslelo studio DU. Jedna jejich android aplikace ukazovala, kdo volá, včetně obtěžujících čísel...

Záchranku volejte přes aplikaci. Pomoc je rychlejší než při volání na 155

Simulovaná dopravní nehoda jako praktická ukázka fungování mobilní aplikace...

„Záchranná služba, tísňová linka, dobrý den,“ ohlašuje se operátorka volajícímu, který se stal svědkem dopravní nehody....



Najdete na iDNES.cz