Premium

Získejte všechny články
jen za 89 Kč/měsíc

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

Spotem s Trojanem na horách operátor popudil Poláky. Nerozuměli nadsázce

21. dubna 2024  8:01

Po dvojici Vojtěch Kotek a Lukáš Pavlásek, k níž později přibyl Jakub Kohák, vsadil T-Mobile ve...

Je to už spíš foťák s mobilem a opravdu se povedl. Test Xiaomi 14 Ultra

21. dubna 2024

Prémiový smartphone Xiaomi 14 Ultra působí mezi současnou nabídkou mobilů jako unikát. Jaký jiný...

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

Toto zařízení mělo nahradit mobily. V recenzích se mu vysmáli

23. dubna 2024

Novinka s názvem Humane AI Pin se zdála být převratným zařízením. V mnoha ohledech měla nahradit...

Vodafone měl výpadek, někteří zákazníci se nemohli dovolat

25. dubna 2024  10:03,  aktualizováno  10:15

Síť mobilního operátora Vodafone postihl ráno výpadek. Týkal se části zákazníků, kteří se nemohli...

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

Operátoři zahušťují pokrytí Česka signálem 5G. Máte ho doma? Podívejte se

20. dubna 2024

Premium V červenci to budou již čtyři roky, co byla v Česku spuštěna první komerční 5G síť. Zatímco v...

Úřad chce zatočit se spoofingem. Podezřelé hovory operátoři nespojí

26. dubna 2024  16:02

Český telekomunikační úřad (ČTÚ) vydal novelu všeobecného opatření, která stanovuje nové podmínky,...

Hlasujte o nejlepší sportovní fotku. Vyberete tak vítěze smartphonu vivo

26. dubna 2024

Soutěž o úplnou novinku, smartphone vivo V40 SE s bohatou výbavou nebo podepsaný dres...

Xiaomi už se nebude držet zpátky. Pro řadu T chystá další prémiové funkce

26. dubna 2024

Smartphony řady T od Xiaomi mají vždy parádní výbavu, ale zároveň i pár kompromisů, aby trochu...

Vodafone měl výpadek, někteří zákazníci se nemohli dovolat

25. dubna 2024  10:03,  aktualizováno  10:15

Síť mobilního operátora Vodafone postihl ráno výpadek. Týkal se části zákazníků, kteří se nemohli...

Samoživitelka skončila v nemocnici a čtvrt roku nemohla pracovat
Samoživitelka skončila v nemocnici a čtvrt roku nemohla pracovat

Téměř deset miliard korun – tolik jen za loňský rok poslaly pojišťovny lidem za úrazy, závažná onemocnění či úmrtí. Životní pojištění pomohlo za...

Bývalý fitness trenér Kavalír zrušil asistovanou sebevraždu, manželka je těhotná

Bývalý fitness trenér Jan Kavalír (33) trpí osmým rokem amyotrofickou laterální sklerózou. 19. dubna tohoto roku měl ve...

Herečka Hunter Schaferová potvrdila románek se španělskou zpěvačkou

Americká herečka Hunter Schaferová potvrdila domněnky mnoha jejích fanoušků. A to sice, že před pěti lety opravdu...

Největší mýty o zubní hygieně, kvůli kterým si můžete zničit chrup

Možná si myslíte, že se v péči o zuby orientujete dost dobře, přesto v této oblasti stále ještě existuje spousta...

Tenistka Markéta Vondroušová se po necelých dvou letech manželství rozvádí

Sedmá hráčka světa a aktuální vítězka nejprestižnějšího turnaje světa Wimbledonu, tenistka Markéta Vondroušová (24), se...

Horňáci versus dolňáci. Víme, čemu muži dávají přednost, a je to překvapení

Ženské tělo je pro muže celkově velmi atraktivní a nabízí jejich očím mnoho zajímavých partií. Největší pozornosti se...