Premium

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

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

Dokončení našeho prázdninového rychlokurzu programování v jazyce OPL.

Úvod do jazyka OPL 5/5


Procedury s návratem hodnot

Podobně jako funkce v jazyce C nebo v Pascalu mohou i procedury jazyka OPL vracet číselné nebo řetězcové hodnoty. Aby mohla procedura vracet hodnotu, musíme udělat dvě změny: ke jménu procedury - ale před dvojtečku - doplnit znak označující typ vrácené hodnoty (podobně jako u proměnných). Neuvedeme-li žádný znak označující typ výsledku, může procedura vracet reálné číslo. Ve zdrojovém textu procedury pak použijeme klíčové slovo RETURN, za kterým uvedeme hodnotu, která bude při skončení procedury vrácena.

PROC hlavni:
  LOCAL cislo$(20), upravene$(20)
  WHILE 1
    PRINT "Zadejte telefonní číslo:";
    INPUT cislo$
    IF LEN(cislo$) = 0
      BREAK
    ENDIF
    upravene$ = UpravCislo$:(cislo$, "605")
    PRINT "Číslo v mezinárodním formátu je "; upravene$
  ENDWH
ENDP

PROC UpravCislo$:(cislo$, prefix$)
  IF MID$(cislo$, 1, 1) = "+"
    RETURN cislo$
  ELSEIF MID$(cislo$, 1, 1) = "0"
    RETURN "+420" + RIGHT$(cislo$, LEN(cislo$)-1)
  ELSE
    RETURN "+420" + prefix$ + cislo$
  ENDIF
ENDP

Parametry ani návratové hodnoty nemohou být pole. Pokud nepoužijeme příkaz RETURN, budou procedury vracející numerické hodnoty vracet číslo 0 a procedury vracející řetězcové hodnoty budou vracet prázdný řetězec "".

Ke komunikaci s procedurami, které voláme, můžeme použít i globální proměnné (definované pomocí GLOBAL) - hodnoty uložíme do vhodných globálních proměnných a vrátíme příznak úspěchu:

PROC hlavni:
  GLOBAL gVysledek%(100), gVysledekDelka%
  IF NastavVysledek%: > 0
    REM -- použij pole gVysledek%(1..gVysledekDelka%)
  ENDIF
ENDP

PROC NastavVysledek%:
  gVysledekDelka% = 0
  REM -- naplň pole gVysledek%() ... --
  RETURN gVysledekDelka%
ENDP

Základní uživatelské rozhraní - vstup a výstup

Již jsme uvedli příkaz INPUT, který slouží ke vstupu textové nebo numerické proměnné, a příkaz GET, který čeká na stisk klávesy a použijeme-li přiřazení a%=GET, vrátí její hodnotu jako číslo. Podobně funguje i GET$, který se odlišuje jen tím, že jako výslednou hodnotu vrací jednoznakový řetězec. Podobně jako dvojice GET a GET$ funguje i dvojice příkazů KEY a KEY$ s jedinou výjimkou - tyto příkazy nečekají na stisk kávesy. Pokud žádná klávesa nebyla stisknuta, tak tyto příkazy vrací nulu, respektive prázdný řetězec.

Příkaz EDIT, za kterým následuje řetězcová proměnná, dovoluje editovat (měnit) text v této proměnné jako v následujícím příkladu, ve kterém také vyzkoušíme použití klíčového slova KEY:

PROC edit:
  LOCAL t$(30), i%, ii%, j$(4)
  t$="Toto je tekzt"
  PRINT "Opravte text: ";
  EDIT t$
  PRINT "Opravený text je ", t$
  i%=1
  j$="\|/—"
  DO
    AT 1,3 : PRINT MID$(j$, i%, 1);
    ii%=ii%+1
    IF ii%=50 : i%=i%+1 : ii% = 0 : ENDIF
    IF i% > 4 : i% = 1 : ENDIF
  UNTIL KEY <> 0
ENDP

Pro výstup textu slouží příkaz PRINT, za kterým následuje seznam proměnných, čísel a řetězců, které budou zobrazeny, oddělených středníky nebo čárkami. Podobně jako v jazyce BASIC ukončíme-li příkaz PRINT středníkem, tak na konci tisku neprovede přesun na nový řádek a další text je zobrazen na tom samém řádku. Příkazem AT můžeme zadat číslo řádku a sloupce, na kterém bude následující příkaz PRINT zobrazovat text. Příkaz CLS smaže obsah displeje.

Další zajímavé příkazy

Popis základů jazyka OPL si doplníme o několik zajímavých příkazů, které je možné použít. Příkaz OFF vypne Psion na stanovený počet vteřin, příkaz PAUSE pozastaví program na dobu udanou ve dvacetinách vteřiny a příkaz BEEP delka%, vyska% slouží ke generování tónu stanovené délky ve 1/32 vteřiny a výšky v Hz.

K nastavení generátoru pseudonáhodných čísel na počáteční hodnotu slouží příkaz RANDOMIZE. Často jsou v této hodnotě použity rychle se měnící časové proměnné (MINUTE, SECOND). Pseudonáhodná čísla (v rozsahu <0-1)) jsou vyzvedávána funkcí RND, výraz INT(RND*p%+1) generuje náhodné číslo od 1 do p%.


Nyní již máte určitý přehled o základech použití jazyka OPL. Tento stručný článek nemohl suplovat referenční příručku jazyka, která je zdarma dostupná na internetu na adrese www.symbian.com v sekci věnované vývojářům software. V příští sérii článků, která vyjde po prázdninách, budeme již psát o komplikovanějších tématech - o grafice a o uživatelském rozhraní.

Témata: software, Symbian
  • 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...

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

Toto mohl být nevídaný smartphone. Myšlenku však nakonec poslali k vodě

25. dubna 2024

S takovým smartphonem bychom už nikdy nemuseli řešit, že se zpomaluje, nemá dostatek paměti či je...

Samsung má povedenou stylovku. Zkusí to s ní na trhu, kde se mu nedaří

24. dubna 2024

Samsung po velmi dlouhé době oprášil modelovou řadu Galaxy C a představil stylový smartphone se...

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

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

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

Za vytlačení z linky do Brna musí Student Agency zaplatit náhradu 21 milionů

Společnost Student Agency provozující autobusy a vlaky pod označením RegioJet musí zaplatit bývalému konkurentovi 21...