Alqor documentation
Official documentation — from zero to your first web and desktop program.
1What is Alqor?
Alqor is a programming language written entirely in Azerbaijani. Keywords, error messages and documentation are all in the native language.
There is not a single English word in the code below — əgər instead of if, yaz instead of print. And the letters ə, ı, ş work fully.
yaz("Adınızı daxil edin:")
dəyişən ad = oxu()
yaz("Yaşınızı daxil edin:")
dəyişən yaş = oxuTam()
əgər yaş >= 18 onda
yaz("{ad}, siz yetkinsiniz.")
yoxsa
yaz("{ad}, siz hələ yetkin deyilsiniz.")
son
With Alqor you can write console programs, websites and APIs, desktop apps and libraries — all in one language, one syntax.
2Your first program
Create a file named salam.alq and write:
yaz("Salam, dünya!")
Then run it:
alqor işlət salam.alq
Salam, dünya!
To try without creating a file there is an interactive mode (REPL):
alqor söhbət
eger and it becomes əgər. Or use the ;e → ə, ;s → ş compose keys.3Variables and types
dəyişən ad = "Aysel" // mətn
dəyişən yaş = 24 // tam ədəd
dəyişən boy = 1.68 // onluq ədəd
dəyişən tələbədir = doğru // məntiqi
dəyişən heçnə = boş // dəyər yoxdur
sabit Pİ = 3.14159 // dəyişməz
If you want to declare the type explicitly:
dəyişən say: tam = 0
dəyişən qiymət: onluq = 9.99
dəyişən adlar: siyahı[mətn] = []
| Type | Example |
|---|---|
tam | 42, -7, 1000000 |
onluq | 3.14, -0.5 |
mətn | "Salam" |
məntiq | doğru, yanlış |
siyahı[T] | [1, 2, 3] |
lüğət[A,D] | {"ad": "Aysel"} |
4Conditions and selection
əgər yaş >= 18 onda
yaz("Yetkin")
yoxsa əgər yaş >= 13 onda
yaz("Yeniyetmə")
yoxsa
yaz("Uşaq")
son
For many options, use seç (select):
seç gün
hal "B.e", "Ç.a" → yaz("İş günü")
hal "Ş", "B" → yaz("İstirahət")
hal 1..5 → yaz("Rəqəm")
digər hallarda → yaz("Naməlum")
son
5Loops
// 1-dən 5-ə qədər
hər i üçün 1..5 içində
yaz("Rəqəm: {i}")
son
// Siyahı üzərində
dəyişən meyvələr = ["alma", "armud", "üzüm"]
hər m üçün meyvələr içində
yaz(m)
son
// Şərtli dövr
dəyişən i = 0
nə qədər ki i < 5
yaz(i)
i += 1
son
// Sayla təkrar
təkrarla 3 dəfə
yaz("Salam")
son
6Functions
funksiya salamla(ad: mətn)
yaz("Salam, {ad}!")
son
funksiya topla(a: tam, b: tam) -> tam
qaytar a + b
son
salamla("Aysel")
yaz(topla(3, 4)) // 7
// Qısa (lambda) funksiya
dəyişən ikiqat = (x) => x * 2
yaz(ikiqat(21)) // 42
7Lists and dictionaries
dəyişən s = [3, 1, 4, 1, 5]
s.əlavə(9) // sona əlavə
yaz(s[0]) // 3
yaz(uzunluq(s)) // 6
yaz(s.sıralanmış()) // [1, 1, 3, 4, 5, 9]
yaz(s.cəm()) // 23
yaz(s.filtr((x) => x > 3)) // [4, 5, 9]
yaz(s.çevir((x) => x * 10)) // [30, 10, 40, 10, 50]
A dictionary for key–value pairs:
dəyişən yaşlar = {"Aysel": 24, "Rəşad": 31}
yaz(yaşlar["Aysel"]) // 24
yaşlar["Nigar"] = 28
hər ad, yaş üçün yaşlar içində
yaz("{ad}: {yaş}")
son
8Classes
sinif İnsan
xassə ad: mətn
xassə yaş: tam
qurucu(ad: mətn, yaş: tam)
özü.ad = ad
özü.yaş = yaş
son
metod təqdim()
yaz("Mən {özü.ad}, {özü.yaş} yaşım var.")
son
son
dəyişən a = yeni İnsan("Aysel", 24)
a.təqdim()
Inheritance and method overriding:
sinif Tələbə miras İnsan
xassə universitet: mətn
qurucu(ad: mətn, yaş: tam, universitet: mətn)
üst(ad, yaş)
özü.universitet = universitet
son
əvəz et metod təqdim()
yaz("Mən {özü.ad}, {özü.universitet} tələbəsiyəm.")
son
son
9Error handling
cəhd et
dəyişən n = tamƏt(oxu("Ədəd: "))
yaz("İki qatı: {n * 2}")
tut (x: ÇevrilməXətası)
yaz("Bu ədəd deyil!")
son
Raising your own error and checking a condition:
funksiya böl(a: onluq, b: onluq) -> onluq
təmin b != 0 yoxsa
at BölməXətası("Sıfıra bölmək olmaz")
son
qaytar a / b
son
10Web server
A web server that works in just five lines:
gətir veb
dəyişən s = yeni veb.Server()
s.al("/", (sorğu) => veb.mətn("Salam, dünya!"))
s.dinlə(8080)
Route parameters and a JSON response:
s.al("/salam/:ad", (q) =>
veb.html(<h1>Salam, {q.parametr("ad")}!</h1>))
s.al("/api/vaxt", (q) => veb.json({
"saat": vaxt.indi().saat,
"dəqiqə": vaxt.indi().dəqiqə
}))
11Desktop app
gətir pəncərə
dəyişən p = yeni pəncərə.Pəncərə("Mənim Proqramım", 800, 600)
p.məzmun(<h1>Salam, dünya!</h1>)
p.göstər()
pəncərə.işlət()
A stateful component — the same code also runs on the web:
gətir vidjet
komponent Sayğac
vəziyyət say: tam = 0
göstər()
qaytar <button klik={() => özü.say += 1}>
Basıldı: {özü.say}</button>
son
son
12Tools and commands
| Command | What it does |
|---|---|
alqor işlət [fayl] | Runs the program |
alqor söhbət | Interactive mode (REPL) |
alqor yeni <ad> | Creates a new project |
alqor sına | Runs the tests |
alqor yoxla | Finds errors (without running) |
alqor format . | Formats the code |
alqor studio | Alqor Studio IDE |
alqor kömək | All commands |
New project templates:
alqor yeni mənim-saytım --şablon veb
alqor yeni mənim-tətbiqim --şablon desktop
alqor yeni mənim-kitabxanam --şablon kitabxana