Pipedija - tautosaka, gandai, kliedesiai ir jokios tiesos! Durniausia durnapedija! Nusišnekėjimų šventovė!
Subskraibink Pipediją ant FB: |
Dibilų kalba
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.
Turinys
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