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

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

V květnu se zřejmě vrátí ikonická Nokia 3210, kdysi to byl přelomový model

24. března 2024  8:01

Současný vlastník značky Nokia na poli mobilních telefonů, firma HMD (Human Mobile Devices –...

Banka spustila mobilní datové balíčky. Funguje to i zákazníkům z Česka

26. března 2024  12:06

Virtuální banka Revolut spouští virtuálního celosvětového operátora. Zákazníci si mohou kupovat...

{NADPIS reklamního článku dlouhý přes dva řádky}

{POPISEK reklamního článku, také dlouhý přes dva a možná dokonce až tři řádky, končící na tři tečky...}

Z bídného začátku roku se radují. Vypadá to na velký návrat

21. března 2024  7:02

Zřejmě to vypadá na velký návrat. Huawei začíná drtit své domácí konkurenty, přitom jeho produkty...

Trvalo to. Nový nejlepší fotomobil světa konečně koupíte i v Česku

26. března 2024  7:02

Konečně nastává situace, že nejlepší fotomobil v žebříčku DxO Mark je dostupný i na našem trhu....

{NADPIS reklamního článku dlouhý přes dva řádky}

{POPISEK reklamního článku, také dlouhý přes dva a možná dokonce až tři řádky, končící na tři tečky...}

Pochlubili se, že se pochlubí. Značky ze sebe dělají slibotechny

25. března 2024  7:02

Jedním z trochu nečekaných trendů veletrhu MWC v Barceloně se stala oznámení o tom, že firmy nějaké...

Toho telefonu je pouze pro Čínu škoda. Udělal by parádu i u nás

28. března 2024  12:06

Xiaomi má nový trhák. Model Civi 4 Pro trhá předprodejní rekordy, ale jen na domácím čínském trhu....

U foťáků se blýská na lepší časy, naznačuje výsledek testu nového xiaomi

28. března 2024  7:02

Čínská značka Xiaomi trochu na poli fotomobilů v uplynulých letech tápala. Ukazuje to mimo jiné...

Kartónek Steva Jobse se vydražil za neuvěřitelnou sumu

28. března 2024

Vizitku slavného ředitele společnosti Apple si někdo pořídil za pořádný balík peněz. Přidanou...

Smartphonům od Googlu raketově rostou prodeje tam, kde kraluje Apple

27. března 2024  7:02

Prodeje smartphonů Pixel od Googlu se mohou pochlubit neskutečným nárůstem prodejů. Tedy prozatím...

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

Prohlédněte si akční letáky všech obchodů hezky na jednom místě!

Rána pro britskou monarchii. Princezna Kate má rakovinu, chodí na chemoterapii

Britská princezna z Walesu Kate (42) se léčí s rakovinou. Oznámila to sama ve videu na sociálních sítích poté, co se...

Smoljak nechtěl Sobotu v Jáchymovi. Zničil jsi nám film, řekl mu

Příběh naivního vesnického mladíka Františka, který získá v Praze díky kondiciogramu nejen pracovní místo, ale i...

Rejžo, jdu do naha! Balzerová vzpomínala na nahou scénu v Zlatých úhořích

Eliška Balzerová (74) v 7 pádech Honzy Dědka přiznala, že dodnes neví, ve který den se narodila. Kromě toho, že...

Pliveme vám do piva. Centrum Málagy zaplavily nenávistné vzkazy turistům

Mezi turisticky oblíbené destinace se dlouhá léta řadí i španělská Málaga. Přístavní město na jihu země láká na...

Kam pro filmy bez Ulož.to? Přinášíme další várku streamovacích služeb do TV

S vhodnou aplikací na vás mohou v televizoru na stisk tlačítka čekat tisíce filmů, seriálů nebo divadelních...