Šaral – Šariš Algoritmik Lengvidž

Šaral – Šariš Algoritmik Lengvidž

Chceme Vás teraz zoznámiť so špicou pokroku a evolúcie v spracovaní informácií. S problémovo orientovamým vedecko-technickým programovacím jazykom Šaral. Už od prvých pokusov šarišsko-americkej firmy IBM tu bola potreba spraviť taký jazyk, ktorému by rozumel ako počítač tak človek.

Odporúčam vypočuť si celý zvukový záznam alebo prepis prezentácie od autora Šaralu.

Táto stránka sumarizuje všetky informácie ohľadom implementácie programovacieho jazyka Šaral pre Java Virtual Machine.

Nie sú ešte podporované všetky funkcie jazyka. Aktuálnu implementáciu si je možné pozrieť v Šaral repozitári na GitHub-e.

Kompilátor

Na spustenie Šaral kompilátora potrebujeme mať nainštalovaný maven

Šaral zdrojové súbory majú príponu srl a prostredníctvom kompilátora ich preložíme do bajtkódu JVM, kde nám vznikne .class súbor.

Potom stačí spustiť skompilovaný program.

Program

Programovancí jazyk je určený pre JVM, napriek tomu nepotrebuje žiadne triedy ako v Jave. Deklarujeme si pár premenných ako meňak a výpíšeme ich do konzoly pomocou ciskaj.

Druhou možnosťou výpisu do konzoly je prostredníctvom povidz, ktorý je ekvivalentný s ciskaj.

Komentáre

Začínajú vždy // a môžu sa objaviť na začiatku riadku a zaberú celý riadok, alebo za výrazom

Konštanty

Okrem meňakov, ktorých hodnotu vieme zmeniť, poznáme ešte furty, ktorým priradíme na začiatku vždy jedinú hodnotu. Pri jej zmene dostaneme chybu.

Dátové typy

Podporuje momentálne dátové typy – neskutočné numeralio, slovo, logický, písmeno, skutočné numeralio.

neskutočné numeralio predstavuje celé čísla. Ich podporovaný rozsah na platforme JVM je v intervale [-9223372036854775808; 9223372036854775807] alebo [-263; 263-1].

skutočné numeralio sú reálne čísla, vyjadrené desatinným číslom v rozsahu približne
2-1074 <= x <= (2-2-52) × 21023.

Typ písmeno je jeden znak, písmeno, číslo, písmeno s diakritikou, tabulátor, nový riadok, a pod. Vyjadrený je medzi apostrofmi.

slovo vyjadruje sekvenciu znakov (typu písmeno). slovo je ohraničené dvoma dvojitými úvodzovkami.

Typ logický predstavuje bool/kleene hodnoty – pravda, skoroošaľ, ošaľ.

Polia

Polia vytvoríme kľúčovým slovom funduš. Každé pole musí byť vytvorené s určením, koľko prvkov bude obsahovať. Vytváranie funguje pre všetky podporované dátové typy.

Prvky polí sú na začiatku inicializované na hodnoty, ktoré predpisuje aj JVM (neskutočné numeralio0, skutočné numeralio0.0, logickýošaľ, písmeno (prázdny znak/medzera), slovo – (java) null)

Prvky poľa

K prvkom poľa pristupujeme cez hranaté zátvory, v ktorých určíme index prvku. Prvky polí sú číslované od 0 po dĺžka poľa - 1

Pole znakov v type slovo

Typ slovo má v jazyku Šaral špeciálne postavenie. Môžme ho tiež používať ako pole znakov (typ funduš písmeno). Tzn. že vieme pristúpiť k znaku na určitom indexe v reťazci a taktiež môžeme zameniť ľubovoľný znak v premennej typu slovo.
(Pristupovať a meniť jednotlivé prvky dokážeme meniť aj v konštante – `furt slovo. Princíp je rovnaký ako pri poliach. Meníme len znak nie celú hodnotu).

V prípade, že chceme vypísať prvok reťazca, ktorý je väčší ako dĺžka reťazca, v jazyku Šaral dostaneme prázdny znak (\0, \u0000)

Operácie

Aritmetické operácie

Podporované sú matematické operácie medzi celými, reálnymi číslami a znakmi (typ neskutočné numeralio, skutočné numeralio, písmeno). Je dodržaná matematická prednosť operácií a zátvoriek.

  • násobenie *
  • delenie / alebo :
  • ščítanie +
  • odčítanie -
  • zvyšok po delení (modulo) % (neplatí pre typ skutočné numeralio)
  • negácia - (unárna operácia, neplatí pre typ písmeno)

Spájanie reťazcov

Operácia + má v jazyku Šaral aj druhý význam – spájanie reťazcov (typ slovo).

Stačí, ak je aspoň jedna strana výrazu typu slovo.

Porovnávanie

Funguje porovnávanie výrazov, kde obidve strany výrazu sú rovnakého typu (typ neskutočné numeralio alebo skutočné numeralio)

  • rovnosť ==
  • nerovnosť <>
  • väčší >
  • väčší alebo rovný >=
  • menší <
  • menší alebo rovný <=

Výsledok bude hodnoty pravda, ak je podmienka pravdivá a ošaľ, ak je nepravdivá.

Logické operácie

V jazyku Šaral poznáme 3 logické hodnoty, ktoré zodpovedajú hodnotám Kleeneho logiky
pravda (true), ošaľ (false), skoroošaľ (undefined)

Tomu zodpovedajú aj podporované logické operácie:

  • ne – negácia
  • a – logická operácia and
  • abo – logická operácia or

Výsledky kombinácie logických operácii a hodnôt zobrazujú tabuľky

Operácia ne
a ne a
ošaľ pravda
skoroošaľ skoroošaľ
pravda ošaľ
Operácia abo
abo ošaľ skoroošaľ pravda
ošaľ ošaľ skoroošaľ pravda
skoroošaľ skoroošaľ skoroošaľ pravda
pravda pravda pravda pravda
Operácia a
a ošaľ skoroošaľ pravda
ošaľ ošaľ ošaľ ošaľ
skoroošaľ oošaľ skoroošaľ skoroošaľ
pravda ošaľ skoroošaľ pravda

Procedúry

Opakuje sa nám rovnaký kód? Nevadí, môžme si vytvoriť procedúru.

bar nám vraví, že máme procedúru, ktorá ma meno robim a nemá žiadne parametre.

Nie je problém pridať parametre podporovaných dátových typov a polí.

Vytvorenú procedúru zavoláme prostredníctvom paľ do baru.

Funkcie

Opakuje sa nám rovnaký kód a chceme vrátiť nejakú hodnotu výpočtu? Môžme si vytvoriť funkciu. Hodnotu funkcie vrátime prostredníctvom vrac, ktorý musí byť vždy na poslednom riadku funkcie.

Samozrejme aj s ľubovoľným počtom parametrov podporovaných dátových typov a polí.

Vytvorenú funkcie zavoláme prostredníctvom vrac mi z baru

Dajte si pozor, pretože každý argument volanej funkcie musí byť inicializovaný na nejakú hodnotu. Rovnaké pravidlo platí aj pre volanie procedúry

Podmienené vykonanie časti kódu

Ako všetky problémovo orientované jazyky aj jazyk Šaral podporuje podmienené vykonanie, tzv if-then-else. V terminológii Šaralu keď-potom-inak

Časť inak je nepovinná

Ohraničné opakovanie kódu

Ak chceme vykonať časť kódu istý počet krát, použijeme konštrukciu zrob s meňakom <meňak> od <hodnota/premenná> do <hodnota/premenná> (tzv. kolečko). Horné ohraničenie sa vždy ráta aj vrátanie.

alebo

Môžme definovať kolečko aj s klesajúcimi hranicami

Podmienené opakovanie kódu

Ak netušíme koľko krát, chceme vykonať určitú časť kódu, ale poznáme ohraničujúcu podmienku, použijeme while-loop. Cyklus sa vykonáva, kým je podmienka vyhodnotená na pravda.

Zložitejšie bloky kódu (cykly a podmienky) môžme ľubovoľne vnárať a kombinovať.

Čítanie zo štardarného vstupu (konzoly)

V prípade, že potrebujeme komunikovať s počítačom a načítať z vstupy napísané v konzole, využijeme ekvivalentné príkazy vežmi alebo sluchaj.

Tieto príkazy reagujú na typ premennej, do ktorej chceme čítať zo vstupu:

  • neskutočné numeralio, vstup nesmie obsahovať žiaden iný znak okrem čísel a tiež nesmie prekročiť hodnotu maximálneho povoleného čísla [-263; 263-1].
  • skutočné numeralio, číslo musí zodpovedať desatinnému formátu. Ak je vstup vo forme neskutočné numeralio, je automatický konvertovaný na skutočné numeralio.
  • logický, hodnota pravda alebo skoroošaľ je načítaná iba vtedy, ak je na vstupe "pravda" alebo "skoroošaľ", inak je vždy načítaná hodnota ošaľ.
  • písmeno, načítaná je hodnota 1. znaku, bezohľadu na dĺžku vstupu.
  • slovo, načítané bezo zmeny.

Podobne môžme získať hodnotu a priradiť ju do prvku definovaného poľa zodpovedajúceho typu

Falda

Preprocessor podporuje vkladanie skladov (pomocou kľúčového slova falda). Sklad si môžeme predstaviť .srl súbor a funkcie v ňom, ktoré referencujeme a voláme v inom .srl súbore. Nielen z aktuálneho adresára, ale aj z adresára, ktorý dostane ako parameter (štandardne je to adresár include)

Dozvedieť sa viac

Ako to začalo
Špecifikácia jazyka
Rekurzia v jazyku Šaral