Skip to content

Commit 5f00768

Browse files
committed
chore: add examples
1 parent be51c39 commit 5f00768

8 files changed

Lines changed: 1290 additions & 0 deletions

examples/26-switch-case.som

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
// Switch/Case (интихоб/ҳолат) Example
2+
чоп.сабт("=== Switch/Case Намуна ===");
3+
4+
// Basic switch/case example
5+
тағйирёбанда рӯз = 3;
6+
7+
интихоб (рӯз) {
8+
ҳолат 1:
9+
чоп.сабт("Душанбе");
10+
шикастан;
11+
ҳолат 2:
12+
чоп.сабт("Сешанбе");
13+
шикастан;
14+
ҳолат 3:
15+
чоп.сабт("Чоршанбе");
16+
шикастан;
17+
ҳолат 4:
18+
чоп.сабт("Панҷшанбе");
19+
шикастан;
20+
ҳолат 5:
21+
чоп.сабт("Ҷумъа");
22+
шикастан;
23+
ҳолат 6:
24+
чоп.сабт("Шанбе");
25+
шикастан;
26+
ҳолат 7:
27+
чоп.сабт("Якшанбе");
28+
шикастан;
29+
пешфарз:
30+
чоп.сабт("Рӯзи номаълум");
31+
}
32+
33+
// Switch with string values
34+
тағйирёбанда амал = "илова";
35+
36+
интихоб (амал) {
37+
ҳолат "илова":
38+
чоп.сабт("Иловакунии элементҳо");
39+
шикастан;
40+
ҳолат "тарҳ":
41+
чоп.сабт("Тарҳкунии элементҳо");
42+
шикастан;
43+
ҳолат "зарб":
44+
чоп.сабт("Зарбкунии элементҳо");
45+
шикастан;
46+
ҳолат "тақсим":
47+
чоп.сабт("Тақсимкунии элементҳо");
48+
шикастан;
49+
пешфарз:
50+
чоп.сабт("Амали номаълум");
51+
}
52+
53+
// Switch with multiple cases
54+
тағйирёбанда моҳ = "Январ";
55+
56+
интихоб (моҳ) {
57+
ҳолат "Декабр":
58+
ҳолат "Январ":
59+
ҳолат "Феврал":
60+
чоп.сабт("Зимистон");
61+
шикастан;
62+
ҳолат "Март":
63+
ҳолат "Апрел":
64+
ҳолат "Май":
65+
чоп.сабт("Баҳор");
66+
шикастан;
67+
ҳолат "Июн":
68+
ҳолат "Июл":
69+
ҳолат "Август":
70+
чоп.сабт("Тобистон");
71+
шикастан;
72+
ҳолат "Сентябр":
73+
ҳолат "Октябр":
74+
ҳолат "Ноябр":
75+
чоп.сабт("Тирамоҳ");
76+
шикастан;
77+
пешфарз:
78+
чоп.сабт("Моҳи номаълум");
79+
}
80+
81+
// Switch in a function
82+
функсия гирифтани_баҳо(хол: рақам): сатр {
83+
интихоб (дуруст) {
84+
ҳолат хол >= 90:
85+
бозгашт "A - Аъло";
86+
ҳолат хол >= 80:
87+
бозгашт "B - Хуб";
88+
ҳолат хол >= 70:
89+
бозгашт "C - Қаноатбахш";
90+
ҳолат хол >= 60:
91+
бозгашт "D - Паст";
92+
пешфарз:
93+
бозгашт "F - Ғайриқаноатбахш";
94+
}
95+
}
96+
97+
чоп.сабт("Баҳо барои 85 хол: " + гирифтани_баҳо(85));
98+
чоп.сабт("Баҳо барои 72 хол: " + гирифтани_баҳо(72));
99+
чоп.сабт("Баҳо барои 55 хол: " + гирифтани_баҳо(55));

examples/27-abstract-classes.som

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
// Abstract Classes (Синфҳои мавҳум) Example
2+
чоп.сабт("=== Синфҳои Мавҳум ===");
3+
4+
// Abstract shape class
5+
мавҳум синф Шакл {
6+
муҳофизатшуда ранг: сатр;
7+
8+
конструктор(ранг: сатр) {
9+
ин.ранг = ранг;
10+
}
11+
12+
// Abstract methods that must be implemented by subclasses
13+
мавҳум функсия ҳисоби_масоҳат(): рақам;
14+
мавҳум функсия ҳисоби_периметр(): рақам;
15+
16+
// Concrete method that can be used by all subclasses
17+
функсия тавсифи_пурра(): сатр {
18+
бозгашт "Шакли " + ин.ранг + " бо масоҳати " + ин.ҳисоби_масоҳат() + " ва периметри " + ин.ҳисоби_периметр();
19+
}
20+
}
21+
22+
// Concrete class implementing abstract class
23+
синф Мураббаъ мерос Шакл {
24+
хосусӣ тараф: рақам;
25+
26+
конструктор(ранг: сатр, тараф: рақам) {
27+
супер(ранг);
28+
ин.тараф = тараф;
29+
}
30+
31+
функсия ҳисоби_масоҳат(): рақам {
32+
бозгашт ин.тараф * ин.тараф;
33+
}
34+
35+
функсия ҳисоби_периметр(): рақам {
36+
бозгашт 4 * ин.тараф;
37+
}
38+
}
39+
40+
// Another concrete class
41+
синф Давра мерос Шакл {
42+
хосусӣ радиус: рақам;
43+
44+
конструктор(ранг: сатр, радиус: рақам) {
45+
супер(ранг);
46+
ин.радиус = радиус;
47+
}
48+
49+
функсия ҳисоби_масоҳат(): рақам {
50+
бозгашт 3.14159 * ин.радиус * ин.радиус;
51+
}
52+
53+
функсия ҳисоби_периметр(): рақам {
54+
бозгашт 2 * 3.14159 * ин.радиус;
55+
}
56+
}
57+
58+
// Rectangle class
59+
синф Росткунҷа мерос Шакл {
60+
хосусӣ дарозӣ: рақам;
61+
хосусӣ паҳноӣ: рақам;
62+
63+
конструктор(ранг: сатр, дарозӣ: рақам, паҳноӣ: рақам) {
64+
супер(ранг);
65+
ин.дарозӣ = дарозӣ;
66+
ин.паҳноӣ = паҳноӣ;
67+
}
68+
69+
функсия ҳисоби_масоҳат(): рақам {
70+
бозгашт ин.дарозӣ * ин.паҳноӣ;
71+
}
72+
73+
функсия ҳисоби_периметр(): рақам {
74+
бозгашт 2 * (ин.дарозӣ + ин.паҳноӣ);
75+
}
76+
}
77+
78+
// Abstract class for animals
79+
мавҳум синф Ҳайвон {
80+
муҳофизатшуда ном: сатр;
81+
муҳофизатшуда синни_сол: рақам;
82+
83+
конструктор(ном: сатр, синни_сол: рақам) {
84+
ин.ном = ном;
85+
ин.синни_сол = синни_сол;
86+
}
87+
88+
мавҳум функсия садо_баровардан(): сатр;
89+
мавҳум функсия ҳаракат_кардан(): сатр;
90+
91+
функсия маълумот(): сатр {
92+
бозгашт ин.ном + " (" + ин.синни_сол + " сола): " + ин.садо_баровардан() + ", " + ин.ҳаракат_кардан();
93+
}
94+
}
95+
96+
// Concrete animal classes
97+
синф Саг мерос Ҳайвон {
98+
функсия садо_баровардан(): сатр {
99+
бозгашт "Вов-вов!";
100+
}
101+
102+
функсия ҳаракат_кардан(): сатр {
103+
бозгашт "давидан бо 4 пой";
104+
}
105+
}
106+
107+
синф Гурба мерос Ҳайвон {
108+
функсия садо_баровардан(): сатр {
109+
бозгашт "Мяу-мяу!";
110+
}
111+
112+
функсия ҳаракат_кардан(): сатр {
113+
бозгашт "гаштан бо нозукӣ";
114+
}
115+
}
116+
117+
// Usage examples
118+
чоп.сабт("=== Истифодаи Шаклҳо ===");
119+
120+
тағйирёбанда мураббаъ = нав Мураббаъ("сурх", 5);
121+
чоп.сабт(мураббаъ.тавсифи_пурра());
122+
123+
тағйирёбанда давра = нав Давра("кабуд", 3);
124+
чоп.сабт(давра.тавсифи_пурра());
125+
126+
тағйирёбанда росткунҷа = нав Росткунҷа("сабз", 10, 5);
127+
чоп.сабт(росткунҷа.тавсифи_пурра());
128+
129+
чоп.сабт("\n=== Истифодаи Ҳайвонҳо ===");
130+
131+
тағйирёбанда саг = нав Саг("Бобик", 3);
132+
чоп.сабт(саг.маълумот());
133+
134+
тағйирёбанда гурба = нав Гурба("Мурка", 2);
135+
чоп.сабт(гурба.маълумот());
136+
137+
// Polymorphism with abstract classes
138+
чоп.сабт("\n=== Полиморфизм ===");
139+
140+
тағйирёбанда шаклҳо: Шакл[] = [
141+
нав Мураббаъ("зард", 4),
142+
нав Давра("сафед", 6),
143+
нав Росткунҷа("сиёҳ", 8, 3)
144+
];
145+
146+
барои (тағйирёбанда шакл аз шаклҳо) {
147+
чоп.сабт("Масоҳат: " + шакл.ҳисоби_масоҳат() + ", Периметр: " + шакл.ҳисоби_периметр());
148+
}

examples/28-namespaces.som

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
// Namespaces (Фазои номҳо) Example
2+
чоп.сабт("=== Фазои Номҳо (Namespaces) ===");
3+
4+
// Define a namespace for utility functions
5+
номфазо Утилитҳо {
6+
содир функсия ҳисоби_фоиз(асл: рақам, фоиз: рақам): рақам {
7+
бозгашт (асл * фоиз) / 100;
8+
}
9+
10+
содир функсия ҳисоби_тахфиф(нарх: рақам, тахфиф: рақам): рақам {
11+
бозгашт нарх - ҳисоби_фоиз(нарх, тахфиф);
12+
}
13+
14+
содир функсия форматкунии_пул(маблағ: рақам): сатр {
15+
бозгашт маблағ.toFixed(2) + " сомонӣ";
16+
}
17+
}
18+
19+
// Define a namespace for math operations
20+
номфазо МатематикаиПешрафта {
21+
содир собит ПИ = 3.14159265359;
22+
содир собит E = 2.71828182846;
23+
24+
содир функсия дараҷа(асос: рақам, намуд: рақам): рақам {
25+
тағйирёбанда натиҷа = 1;
26+
барои (тағйирёбанда и = 0; и < намуд; и++) {
27+
натиҷа *= асос;
28+
}
29+
бозгашт натиҷа;
30+
}
31+
32+
содир функсия решаи_квадратӣ(рақам: рақам): рақам {
33+
бозгашт Math.sqrt(рақам);
34+
}
35+
36+
содир функсия масоҳати_давра(радиус: рақам): рақам {
37+
бозгашт ПИ * радиус * радиус;
38+
}
39+
40+
содир функсия ҳаҷми_кура(радиус: рақам): рақам {
41+
бозгашт (4 / 3) * ПИ * дараҷа(радиус, 3);
42+
}
43+
}
44+
45+
// Nested namespaces
46+
номфазо Барномаи_Мағоза {
47+
содир номфазо Маҳсулот {
48+
содир интерфейс Маҳсулот {
49+
ном: сатр;
50+
нарх: рақам;
51+
миқдор: рақам;
52+
}
53+
54+
содир функсия сохтани_маҳсулот(ном: сатр, нарх: рақам, миқдор: рақам): Маҳсулот {
55+
бозгашт {
56+
ном: ном,
57+
нарх: нарх,
58+
миқдор: миқдор
59+
};
60+
}
61+
62+
содир функсия нархи_умумӣ(маҳсулот: Маҳсулот): рақам {
63+
бозгашт маҳсулот.нарх * маҳсулот.миқдор;
64+
}
65+
}
66+
67+
содир номфазо Харидор {
68+
содир интерфейс Харидор {
69+
ном: сатр;
70+
почта: сатр;
71+
телефон: сатр;
72+
}
73+
74+
содир функсия сохтани_харидор(ном: сатр, почта: сатр, телефон: сатр): Харидор {
75+
бозгашт {
76+
ном: ном,
77+
почта: почта,
78+
телефон: телефон
79+
};
80+
}
81+
}
82+
83+
содир номфазо Фармоиш {
84+
содир интерфейс Фармоиш {
85+
рақами_фармоиш: рақам;
86+
харидор: Харидор.Харидор;
87+
маҳсулотҳо: Маҳсулот.Маҳсулот[];
88+
сана: сатр;
89+
}
90+
91+
содир функсия ҳисоби_ҷамъи_фармоиш(фармоиш: Фармоиш): рақам {
92+
тағйирёбанда ҷамъ = 0;
93+
барои (тағйирёбанда маҳсулот аз фармоиш.маҳсулотҳо) {
94+
ҷамъ += Маҳсулот.нархи_умумӣ(маҳсулот);
95+
}
96+
бозгашт ҷамъ;
97+
}
98+
}
99+
}
100+
101+
// Using namespace members
102+
чоп.сабт("\n=== Истифодаи Утилитҳо ===");
103+
тағйирёбанда нархи_аслӣ = 1000;
104+
тағйирёбанда фоизи_тахфиф = 15;
105+
тағйирёбанда нархи_ниҳоӣ = Утилитҳо.ҳисоби_тахфиф(нархи_аслӣ, фоизи_тахфиф);
106+
107+
чоп.сабт("Нархи аслӣ: " + Утилитҳо.форматкунии_пул(нархи_аслӣ));
108+
чоп.сабт("Тахфиф: " + фоизи_тахфиф + "%");
109+
чоп.сабт("Нархи ниҳоӣ: " + Утилитҳо.форматкунии_пул(нархи_ниҳоӣ));
110+
111+
чоп.сабт("\n=== Математикаи Пешрафта ===");
112+
чоп.сабт("2^10 = " + МатематикаиПешрафта.дараҷа(2, 10));
113+
чоп.сабт("Решаи квадратии 144 = " + МатематикаиПешрафта.решаи_квадратӣ(144));
114+
чоп.сабт("Масоҳати давра (r=5): " + МатематикаиПешрафта.масоҳати_давра(5));
115+
чоп.сабт("Ҳаҷми кура (r=3): " + МатематикаиПешрафта.ҳаҷми_кура(3));
116+
117+
чоп.сабт("\n=== Системаи Мағоза ===");
118+
119+
// Create products using nested namespace
120+
тағйирёбанда маҳсулот1 = Барномаи_Мағоза.Маҳсулот.сохтани_маҳсулот("Китоб", 50, 2);
121+
тағйирёбанда маҳсулот2 = Барномаи_Мағоза.Маҳсулот.сохтани_маҳсулот("Қалам", 10, 5);
122+
тағйирёбанда маҳсулот3 = Барномаи_Мағоза.Маҳсулот.сохтани_маҳсулот("Дафтар", 25, 3);
123+
124+
// Create customer
125+
тағйирёбанда харидор = Барномаи_Мағоза.Харидор.сохтани_харидор(
126+
"Алӣ Раҳмонов",
127+
"ali@example.com",
128+
"+992 900 123456"
129+
);
130+
131+
// Create order
132+
тағйирёбанда фармоиш: Барномаи_Мағоза.Фармоиш.Фармоиш = {
133+
рақами_фармоиш: 1001,
134+
харидор: харидор,
135+
маҳсулотҳо: [маҳсулот1, маҳсулот2, маҳсулот3],
136+
сана: "2024-01-15"
137+
};
138+
139+
// Calculate total
140+
тағйирёбанда маблағи_умумӣ = Барномаи_Мағоза.Фармоиш.ҳисоби_ҷамъи_фармоиш(фармоиш);
141+
142+
чоп.сабт("Фармоиш #" + фармоиш.рақами_фармоиш);
143+
чоп.сабт("Харидор: " + фармоиш.харидор.ном);
144+
чоп.сабт("Миқдори маҳсулотҳо: " + фармоиш.маҳсулотҳо.дарозӣ);
145+
чоп.сабт("Маблағи умумӣ: " + Утилитҳо.форматкунии_пул(маблағи_умумӣ));

0 commit comments

Comments
 (0)