Úvod do jazyka OPL 2/5
Druhy programů v OPL
Z hlediska jejich spouštění můžeme přeložené programy v OPL rozdělit na dva druhy: prvním z nich jsou samostatné přeložené programy, které spouštíme poklepáním na jejich ikonu v adresáři. Programy v OPL můžeme však také doplnit o ikonu a systémové informace a vytvořit tak aplikaci OPL, která se umístí do nabídky Extras.
Z hlediska komunikace s uživatelem (a rostoucí náročnosti na programátora) je možné programy v OPL rozdělit na tři skupiny:
První skupinou jsou jednoduché programy podobné jazyku BASIC používající jednoduchý vstup (příkazy INPUT, EDIT a GET) a výstup (příkazy PRINT, AT, CLS a BEEP). Tyto programy je velmi jednoduché vytvářet, a přesto mohou být velmi užitečné pro různé jednoduché i složitější úlohy.
Druhou skupinou jsou programy používající ke komunikaci s uživatelem základní uživatelské rozhraní EPOC - výzvy (příkaz ALERT), dialogy (definované mezi příkazy dINIT a DIALOG) a uživatelské nabídky - menu (definice pomocí mINIT, použití příkazem MENU). Výhodou oproti první skupině programů je ovládání programu jednotným uživatelským rozhraním, na které je uživatel zvyklý z jiných aplikací.
A konečně skupinu třetí tvoří plnohodnotné událostmi řízené aplikace pro EPOC. Tyto aplikace mohou kromě základního uživatelského rozhraní využívat i ovládání perem, panel nástrojů a podobně. Programování těchto aplikací však vyžaduje detailní znalost některých mechanizmů operačního systému EPOC. Popis těchto mechanizmů a tvorba vlastní aplikace bude součástí jedné z příštích sérií článků.
Proměnné a výrazy
Proměnné v programech v jazyce OPL musíme před použitím deklarovat. Deklarace může být buď lokální (uvozená klíčovým slovem LOCAL) nebo globální (uvozená GLOBAL). Lokální proměnné je možné používat jen v proceduře, ve které jsou definované. Oproti tomu proměnné globální můžeme používat v celém programu nezávisle na procedurách, ve kterých byly definovány.
Jména proměnných mohou být, podobně jako jména procedur, dlouhá nejvýše 32 znaků. Při jejich zápisu nezáleží na tom, zda jejich jména píšeme velkými nebo malými písmeny (kx%, Kx% a KX% onačuje stejnou proměnnou). Proměnná končí znakem, který udává její typ. Proměnné končící znakem '$' obsahují řetězce, proměnné končící znakem '%' obsahují celá 16bitová čísla a proměnné končící znakem '&' obsahují čísla 32bitová.
Pokud jméno proměnné nekončí žádným z těchto speciálních znaků, jedná se o proměnnou obsahující reálné číslo s plovoucí desetinnou čárkou. Proměnné musí být vždy deklarovány (pomocí GLOBAL nebo LOCAL) na začátku procedury před ostatními příkazy.
Použití proměných ukazuje následující jednoduchý program. Dvojtečka od sebe odděluje příkazy, které si přejeme uvést na jednom řádku. Středník na konci příkazu PRINT má stejnou funkci jako v jazyce Basic - potlačí odřádkování. Řetězcová proměnná h$ je deklarována s maximální délkou 100 znaků. Příkaz INPUT (další z dědictví jazyka BASIC) čeká na zadání proměnné z klávesnice.
PROC druha: LOCAL a, b LOCAL h$(100) PRINT "První číslo "; : INPUT a PRINT "Druhé číslo "; : INPUT b PRINT "Podíl čísel "; a; " a "; b; " je "; a / b PRINT "Zadejte text "; INPUT h$ h$ = "Text je """ + h$ + """." PRINT h$ GET ENDP
Konstantní hodnoty mohou být řetězce v uvozovkách (přejeme-li si uvést uvozovky v řetězci, tak je zdvojíme), celá čísla i čísla s desetinnou čárkou. Příkaz a% = $1A3F přiřadí proměnné a% hodnotu v šestnáctkové soustavě a příkaz a% = %a uloží do proměnné a% hodnotu 97 (ASCII hodnota znaku 'a'). Zatímco konstanta uvozená znakem '$' obsahuje 16bitové číslo v šestnáctkové soustavě, použijeme-li ve výrazu konstantu uvozenou znakem '&' (například příkaz a& = &1234FAB0), uložíme do proměnné 32bitovou šestnáctkovou hodnotu.
V aritmetických výrazech můžeme používat základní operátory (+-*/), kulaté závorky pro vynucení přednosti vyhodnocení výrazů a operátor ** (dvě hvězdičky) pro mocninu. Řetězce můžeme pouze spojovat operátorem '+'. Pro kompletní seznam aritmetických a řetězcových funkcí, které můžete ve svých programech používat, se podívejte do manuálu - některé z nich uvedeme v pokračování.
Po deklaraci mají všecny numerické proměnné hodnotu 0 a řetězcové proměnné obsahují prázdný řetězec (délky 0 znaků). Nejrychlejší jsou výpočty s 16bitovými čísly (označenými znakem '%') a nejpomalejší jsou naopak operace s čísly reálnými a s řetězci.