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 (5)

aktualizováno 
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ší

Google posílá vzkaz Evropské komisi. Takhle se bude bránit

Protikartelová komisařka Margrethe Vestagerová.

Google se s obří pokutou od Evropské komise nehodlá smířit. Firma se proti ní odvolá a chce Komisi dokázat, že systém...

Rekordní pokuta pro Google, za dominanci Androidu zaplatí 112 miliard

Ilustrační snímek

Evropská komise uložila internetovému gigantu Google další pokutu. Firma by měla platit za to, že zneužívá dominantního...



Nový supersmartphone vysune kameru a nahrává uživatele bez jeho vědomí

Vivo NEX

V rámci právě skončeného mistrovství světa ve fotbalu byla hrací plocha obklopena panely s reklamami na nový čínský...

Jeden z nejočekávanějších mobilů roku. Nokia 8110 je chytrá jen trochu

Nokia 8110 4G

Retro model Nokia 8110 4G je možná jedním z nejočekávanějších mobilů letošního roku. V Česku se začal prodávat počátkem...

Ten určitě neznáte. Toto je úplně první dotykový mobil v Evropě

Alcatel One Touch Com a Sharp MC-G1

Před dvaceti lety se na trh dostal jedinečný mobilní telefon. Alcatel One Touch Com byl jedním z prvních přístrojů s...

Další z rubriky

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

Na dovolené se můžete seznámit i nespálit

Ilustrační snímek

Na dovolenou si bereme kde co, ovšem počítač/notebook často zůstává doma. Ten je na jedné straně prostředkem k...

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

Najdete na iDNES.cz