Pipedija - tautosaka, gandai, kliedesiai ir jokios tiesos! Durniausia durnapedija! Nusišnekėjimų šventovė!

Dibilų kalba

Iš Pipedijos - durniausios enciklopedijos.
Peršokti į: navigaciją, paiešką
DABAR DARAI TAIP, PAS MANE YRA KANTUPERIS KURIS YRA DIBILAS...

Dibilų kalba, dibilkalbė arba dibilangas (iš santrumpos nuo dibil-language) - moderni ir puiki programavimo kalba, priskiriama prie ezoterinių, nes normaliems žmonėms nelabai suprantama. Pagal kilmę - lietuviška, siejama su dibilais, nes nuo šitų yra kilęs pats kalbos pavadinimas.

Išties gi dibilų kalba buvo sukurta kaip bandymas įrodyti, kad net visiški idiotai gali būti ne mažiau logiški, negu kompiuteriai, nes svarbu tiktai viską aiškiai jiems išaiškinti. Todėl dibilų kalba vienareikšmiai prieštarauja įvairių kalbainių aiškinimams, esą lietuvių kalba nelogiška ir niekaip netinkama griežtoms ir vienareikšmėms konstrukcijoms rašyti.

Dar pagal savo kilmę dibilų kalba siejama su tokia Lolcode - primityvia, bet pilnaverte programavimo kalba, imituojančia visokius lolketus, mat savo bukumu tie lolketai atitika tipiškus dibilus. Sintaksė tokia buka, kad šios kalbos tiesiog visiškai panašios, tik kad lolketų kalba yra angliška, o dibilų kalba yra lietuviška.

Atskirai išskirtinės nuorodos būdu duodame jums išsyk nuorodą bandymams: online dibilų kalbos interpretatorius.


Dibilų kalbos gramatika

Šiuo metu, versijoje 1.0 dibilų kalba palaiko tiktai didžiąsias raides. Naudojama prefiksinė notacija (t.y., vadinamoji lenkiškoji), kur argumentai yra užrašomi po to, kai yra užrašomas operatorius, abu argumentus naudojantis.

Savo esme kalba yra struktūrinė, savo pobūdžiu labiau primena Algol grupės kalbas. Reikalaujama kintamųjų deklaracijos ir tiesioginio priskyrimo. Tipizacijos griežtumas priklauso nuo transliatoriaus realizacijos.

Bendra sintaksė

Bet kuri programa pradedama raktiniu žodžiu LABAS, užbaigiama raktiniu žodžiu ATE. Komentarai toje pačioje eilutėje rašomi, pradedant raktiniu žodžiu TA PRASME. Daugiaeilučiai komentarai pradedami raktiniu žodžiu PEZALAI ir užbaigiami raktiniu žodžiu NESVARBU.

Sakiniai skiriami naujomis eilutėmis arba kableliais, jeigu prireikia kelis sakinius įrašyti vienoje eilutėje.

Papildomos bibliotekos, jei tokių prireikia, įtraukiamos, naudojant raktinį žodį MAN REIKE, pvz.:

  • MAN REIKE STDIO?

Šiuo metu papildomų bibliotekų įtraukimas nėra realizuotas, todėl ignoruojamas.

Duomenų įvedimas/išvedimas

Standartinis išvedimas realizuojamas per funkciją PARASAI. Pvz.:

  • PARASAI KINTAMASIS
  • PARASAI "tekstas"

Standartinis įvedimas realizuojamas per funkciją DUOK MAN, kuriai perduodamas kintamasis, į kurį perkeliama įvesta reikšmė. Pvz.:

  • DUOK MAN KINTAMASIS

Kintamųjų deklaravimas, operacijos ir priskyrimas

Deklaravimas vykdomas pagal raktinį žodį PAS MANE YRA, kuriam perduodamas deklariojamo kintamojo pavadinimas. Pvz.:

  • PAS MANE YRA KINTAMASIS

Reikšmės priskyrimas kintamąjam vykdomas pagal raktinį žodį DABAR YRA. Pvz.:

  • KINTAMASIS DABAR YRA 5

Operacijos vykdomos, naudojant lenkiškąją (prefiksinę) notaciją. Vietoje skirtuko tarp parametrų naudojamas raktinis žodis IR. Pvz.:

  • KINTAMASIS DABAR YRA SUMA IS 3 IR 4

Funkcijų deklaravimas

Funkcija deklaruojama, pradedant ją raktiniu žodžiu DABAR DARAI TAIP ir pabaigiant raktiniu žodžiu TAI VAT TAIP DARAI. Rezultatas grąžinamas per operatorių RADAU YRA:

DABAR DARAI TAIP PAVADINIMAS YRA PARAMETRAS
operacijos
RADAU YRA grazinamas rezultatas
TAI VAT TAIP DARAI

Ciklai

Standartinis ciklas deklaruojamas per raktinį žodį DABA GERAI PRASISUKSIM RATUKU. Išėjimas iš ciklo - per operatorių JEIGU sąlyga EIKNX (break), ciklo pabaiga - per raktinį žodį VISKAS:

DABA GERAI PRASISUKSIM RATUKU
operacijos
JEIGU sąlyga, EIKNX, VISKAS
VISKAS

Sąlyginiai sakiniai

Jeigu (If/Else) sakiniai

Standartinis sąlyginis sakinys vykdomas per operatorių AR TIKRAI?. Sąlyga tenkinanti vykdymo šaka vykdoma per TAIP TIKRAI (if), alternatyvinė sąlyga (else if) - per TADA JEIGU, bendra alternatyva per NU TADA (else). Užbaigiama raktiniu žodžiu BAIGES VARIANTAI:

ATRODO KAD sąlyga, AR TIKRAI?
TAIP TIKRAI
operacijos
TADA JEIGU ATRODO KAD sąlyga2
operacijos
NU TADA
operacijos
BAIGES VARIANTAI

Variantinis sakinys (case operatoriai)

Standartinis variantinis sakinys pradedamas per raktinį žodį VARIANTAI?, patys variantai nagrinėjami per raktinį žodį GAVOSI, kuris suveikia atitikties atveju. Išėjimas vykdomas per raktinį žodį EIKNX, alternatyvinis variantas, vykdomas nesuradus atitikties - NESIGAVO, užbaigiama raktiniu žodžiu VISKAS:

KINTAMASIS, VARIANTAI?
GAVOSI patikrinimas
operacijos
GAVOSI patikrinimas
operacijos
EIKNX
NESIGAVO
operacijos
VISKAS

Operatorių sąrašas

Aritmetiniai operatoriai

  • SUMA IS
  • SANDAUGA IS
  • DALYBA IS
  • SKIRTUMAS IS
  • LIEKANA IS

Loginiai operatoriai

Binariniai operatoriai, naudojami su dviem operandais:

  • ABUDU IS - loginis IR
  • VIENAS IS - loginis IRBA

Unariniai operatoriai, naudojami su vienu operandu:

  • NE - loginis NE, t.y., inversija

Daugiaparametriniai operatoriai

Šie operatoriai išsiskiria tuo, kad jiems galima nurodyti daugiau kaip vieną arba du kintamuosius:

  • BET KURIS IS - loginis IRBA
  • VISI IS - loginis IR
  • SUKISAM - konkatenacija, naudojama tekstui ir kintamiesiems apjungti į bendrą tekstinį kintamąjį

Kiti operatoriai

  • ATRODO KAD - lygybė
  • SKIRIASI - nelygybė
  • DIDESNIS IS - palyginimas
  • MAZESNIS IS - palyginimas

Dibilų kalbos pavyzdžiai

Žemiau pateikiame kažkiek programų pavyzdžių, parašytų šita dibilų kalba - visi tie pavyzdžiai puikiai dirba ant dibilų kalbos interpretatoriaus. Gal paskui ir patį interpretatorių kažkur paskelbsim, kad galėtumėte daugiau programų parašyt ir išbandyt.

Hello World dibilų kalba

LABAS
PARASAI "Labas dibile"
ATE

Paprasta aritmetika

LABAS
PEZALAI
cionai programa, kuri rodo paprasciausia aritmetika su kintamaisiais
ir paskui ta aritmetikos rezultata isveda i ekrana jums
NESVARBU

PAS MANE YRA X
PAS MANE YRA Y

X DABAR YRA 4
Y DABAR YRA 3

X DABAR YRA SUMA IS X IR Y
Y DABAR YRA SANDAUGA IS Y IR 2

X DABAR YRA SANDAUGA IS X IR 2
X DABAR YRA SUMA IS X IR Y

Y DABAR YRA SKIRTUMAS IS Y IR 1
X DABAR YRA DALYBA IS X IR Y

PARASAI "X yra :{X} o Y yra :{Y}"

ATE

IF/ELSE demonstracija

TA PRASME cionai yra pirma dibilu kalbos programa is viso
LABAS TA PRASME jau pati programa
PAS MANE YRA GYVULYS
DUOK MAN GYVULYS
ATRODO KAD GYVULYS YRA "kate", AR TIKRAI?
  TAIP TIKRAI
    PARASAI "pas tave yra kasaras"
  TADA JEIGU ATRODO KAD GYVULYS YRA "pele"
    PARASAI "kasaras suede ziurke"
  NU TADA
    PARASAI "byby dejau"
BAIGES VARIANTAI
ATE

Ciklo demonstracija

LABAS TA PRASME demonstruojam cikla
MAN REIKE STDIO?
PAS MANE YRA NUMERELIS
DABA GERAI PRASISUKSIM RATUKU
        DIDINAM NUMERELIS!!1
        PARASAI NUMERELIS
        JEIGU NUMERELIS DIDESNIS NEGU 9?, EIKNX, VISKAS
VISKAS
ATE

Funkcijų deklaravimas

LABAS
TA PRASME cionai pavyzdys kaip funkcijas aprasyti

TA PRASME pirma SUDEJIMAS:
DABAR DARAI TAIP SUDEJIMAS YRA SKAICIUX1 IR YRA SKAICIUX2
  SUMA IS SKAICIUX1 IR SKAICIUX2
TAI VAT TAIP DARAI

TA PRASME dabar SUDALINIMAS bet graziau
DABAR DARAI TAIP SUDALINIMAS YRA SKAICIUX1 IR YRA SKAICIUX2
  PAS MANE YRA PADALINIMAS KURIS YRA DALYBA IS SKAICIUX1 IR SKAICIUX2
  RADAU YRA PADALINIMAS
TAI VAT TAIP DARAI

TA PRASME dabar tas funkcijas panaudojam:
PAS MANE YRA NUMERELIS KURIS YRA SUDALINIMAS 20 10
PARASAI NUMERELIS
NUMERELIS DABAR YRA SUDEJIMAS 20 10
PARASAI NUMERELIS

ATE

Visokių operatorių naudojimas

LABAS
TA PRASME naudojam prefiksine (lenkiska) notacija, tai reik ziuret kaip skaicius delioji
TA PRASME nes pirma operacija o tada jau operandai eina, panasiai kaip exelio fromulese
TA PRASME (1*2) + (3/4) bus su tokia logika: suma(sandauga(1,2),dalyba(3,4))

PAS MANE YRA X
X DABAR YRA SUMA IS SANDAUGA IS 1 IR 2 IR DALYBA IS 3 IR 4
PARASAI "X yra :{X}"

TA PRASME yra dar operatoriai su neapibreztu kiekiu operandu, tai juos terminuojam su TAI TIEK:
TA PRASME cionai taip idedam neapibreztini BET KURIS IS i binarini ABUDU IS tai gaunasi jau idomiai

PARASAI ABUDU IS BET KURIS IS TEISYBE IR TEISYBE IR MELAS IR TEISYBE TAI TIEK IR TEISYBE

TA PRASME galime padaryti ir funkcijas kurios irgi bus kaip operatoriai
TA PRASME galesim funkcijas naudot vietoje operatoriu operandu:
TA PRASME cionai jum funkcija kuri vadinasi XORINAM tai reiskia XOR irba ekskliuzinanti ARBA

DABAR DARAI TAIP XORINAM YRA SKAICIUX1 IR SKAICIUX2
  PAS MANE YRA X KURIS YRA NE ABUDU IS SKAICIUX1 IR SKAICIUX2
  X DABAR YRA ABUDU IS X IR VIENAS IS SKAICIUX1 IR SKAICIUX2
  RADAU YRA X
TAI VAT TAIP DARAI

TA PRASME komanda SUKISAM leidzia viska konkatenuoti i kruva, bet ka padaro tekstu
PARASAI SUKISAM "XORINAM 1 IR 0 = " YRA XORINAM 1 IR 0 TAI TIEK

TA PRASME cionai jau parasom sudetingai viska su funkcija ir operatoriais iskart
TA PRASME cia taip suprast: suma(xorinam(suma(0,1), 0), 2) = 3
PARASAI SUMA IS XORINAM SUMA IS 0 IR 1 IR 0 IR 2

ATE

Case variantai

LABAS
TA PRASME cionai case panaudojimas paprastas bet interaktyvus

PAS MANE YRA ALUS
PARASAI "kox pas mane alus???"
DUOK MAN ALUS
ALUS, VARIANTAI?
  GAVOSI "Carlsberg"
  GAVOSI "carlsberg"
    PARASAI "zalia bonke - skonis kaip zoles"
  GAVOSI "Utenos"
  GAVOSI "utenos"
  GAVOSI "Svyturys"
  GAVOSI "svyturys"
  GAVOSI "Svyturio"
  GAVOSI "svyturio"
    PARASAI "pirk preke lietuviska"
  GAVOSI "sviesus"
    PARASAI "sviesus alus - kaip vanduo"
    EIKNX
  GAVOSI "Ginesas"
  GAVOSI "Guiness"
  GAVOSI "Guines"
    PARASAI "geras alus kaip sriuba"
  GAVOSI "grimbergen"
  GAVOSI "Grimbergen"
    PARASAI "nu tu cionai pasikeles kazkox"
  GAVOSI "Baltijos"
  GAVOSI "baltijos"
  GAVOSI "tamsus"
    PARASAI "tamsus alus - greit kepenis pragersi"
    EIKNX
  GAVOSI "zaibo"
  GAVOSI "kobra"
  GAVOSI "kobros"
    PARASAI "chroniau eik bonkiu rinkt"
  GAVOSI "degtine"
    PARASAI "tu alchasas tau jau niex nepades"
    EIKNX
  GAVOSI "vynas"
    PARASAI "tu gal kox UZKALNIS pasikeles labai"
    EIKNX
  NESIGAVO
    PARASAI "isvis tu ce geri kazkoki bruda"
VISKAS

PARASAI "alkoholi geri busi alchasas o paskui bomzas"

ATE

Rekursija visame gražume

LABAS
TA PRASME tai yra klasikine programa rekursijai demonstruoti
TA PRASME ji skaiciuja faktoriala kuris is saves paties tai gerai rodo navarotus

TA PRASME pirma parasom rekursine funkcija:
DABAR DARAI TAIP FAKTORIJOLAS SKAICIUX
ATRODO KAD 0 YRA DIDESNIS IS SKAICIUX IR 0, AR TIKRAI?
  TAIP TIKRAI
    RADAU YRA 1
  NU TADA
    RADAU YRA SANDAUGA IS SKAICIUX IR FAKTORIJOLAS SKIRTUMAS IS SKAICIUX IR 1
VISKAS
TAI VAT TAIP DARAI

PAS MANE YRA NUMERELIS
DUOK MAN NUMERELIS
TA PRASME reikia dar paverst i skaiciu nes bbz ka mum irase cionai tai konvertuojam tipus:
NUMERELIS PAVERCIAM I NUMERIS
TA PRASME dar reik patikrint ar neparase minusino skaiciaus nes nesamone bus jei maziau uz nuli
ATRODO KAD 0 YRA DIDESNIS IS NUMERELIS IR 0, AR TIKRAI?
  TAIP TIKRAI
    NUMERELIS DABAR YRA 0
VISKAS

NUMERELIS DABAR YRA FAKTORIJOLAS NUMERELIS
PARASAI SUKISAM "Surastas faktorijolas jis yra " NUMERELIS 

ATE