Skip to content

Latest commit

 

History

History
307 lines (224 loc) · 11.3 KB

File metadata and controls

307 lines (224 loc) · 11.3 KB

Боби 3: Намудҳои маълумот дар SomonScript

3.1. Намудҳои ибтидоӣ (Primitive Types)

3.1.1. Сатр (String)

Сатр барои нигоҳдории матн истифода мешавад. Онро дар байни кавычкаҳои дукарата "..." ё '...' менависанд.

тағйирёбанда ном: сатр = "Аҳмад";
тағйирёбанда шаҳр: сатр = 'Душанбе';
тағйирёбанда паём: сатр = "Салом ҷаҳон!";

чоп.сабт(ном);     // Аҳмад
чоп.сабт(шаҳр);    // Душанбе
чоп.сабт(паём);    // Салом ҷаҳон!

Амалиёт бо сатрҳо:

// Пайваст кардани сатрҳо
тағйирёбанда ном: сатр = "Аҳмад";
тағйирёбанда фамилия: сатр = "Раҳимов";
тағйирёбанда номи_пурра: сатр = ном + " " + фамилия;
чоп.сабт(номи_пурра); // Аҳмад Раҳимов

// Дарозии сатр
тағйирёбанда матн: сатр = "SomonScript";
чоп.сабт(матн.дарозӣ); // 12

// Ибораҳои литералӣ (Template Literals)
тағйирёбанда синну_сол: рақам = 25;
тағйирёбанда маълумот: сатр = `Ман ${ном} ҳастам ва ${синну_сол} сола дорам.`;
чоп.сабт(маълумот); // Ман Аҳмад ҳастам ва 25 сола дорам.

3.1.2. Рақам (Number)

Рақам барои нигоҳдории арзишҳои ададӣ (бутун ва касрӣ) истифода мешавад.

// Ададҳои бутун
тағйирёбанда синну_сол: рақам = 25;
тағйирёбанда шумораи_донишҷӯён: рақам = 1000;

// Ададҳои касрӣ
тағйирёбанда қимат: рақам = 99.99;
собит ПИ: рақам = 3.14159;

// Ададҳои манфӣ
тағйирёбанда харораҷот: рақам = -50;
тағйирёбанда маблағ: рақам = -1000.50;

чоп.сабт(синну_сол);  // 25
чоп.сабт(қимат);      // 99.99
чоп.сабт(ПИ);         // 3.14159

Амалиёти риёзӣ:

тағйирёбанда а: рақам = 10;
тағйирёбанда б: рақам = 3;

чоп.сабт("Ҷамъ: " + (а + б));         // Ҷамъ: 13
чоп.сабт("Тарҳ: " + (а - б));         // Тарҳ: 7
чоп.сабт("Зарб: " + (а * б));         // Зарб: 30
чоп.сабт("Тақсим: " + (а / б));       // Тақсим: 3.333...
чоп.сабт("Боқимонда: " + (а % б));    // Боқимонда: 1

3.1.3. Мантиқӣ (Boolean)

Мантиқӣ танҳо ду қимат метавонад дошта бошад: дуруст (true) ё нодуруст (false).

тағйирёбанда донишҷӯ_аст: мантиқӣ = дуруст;
тағйирёбанда устод_аст: мантиқӣ = нодуруст;

чоп.сабт(донишҷӯ_аст);  // true
чоп.сабт(устод_аст);    // false

// Истифода дар шартҳо
тағйирёбанда синну_сол: рақам = 20;
тағйирёбанда калонсол_аст: мантиқӣ = синну_сол >= 18;
чоп.сабт(калонсол_аст); // true

3.1.4. Холӣ (Null)

холӣ маънои дорад, ки тағйирёбанда қимат надорад (холӣ аст).

тағйирёбанда маълумот: холӣ = холӣ;
чоп.сабт(маълумот); // null

// Истифода барои нишон додани набудани қимат
тағйирёбанда натиҷа: рақам | холӣ = холӣ;
чоп.сабт(натиҷа); // null

3.1.5. Беқимат (Undefined)

беқимат маънои дорад, ки тағйирёбанда ҳанӯз қимат нагирифтааст.

тағйирёбанда маълумот: беқимат;
чоп.сабт(маълумот); // undefined

3.1.6. Калонрақам (BigInt)

Барои кор бо ададҳои хеле калон.

тағйирёбанда калон_адад: калонрақам = 9007199254740991n;
чоп.сабт(калон_адад); // 9007199254740991n

3.1.7. Рамз (Symbol)

Барои эҷоди идентификаторҳои беназир.

тағйирёбанда калид1: рамз = Рамз("калид");
тағйирёбанда калид2: рамз = Рамз("калид");
// калид1 ва калид2 мухталифанд

3.2. Намудҳои махсус (Special Types)

3.2.1. Ҳар (Any)

ҳар маънои дорад, ки тағйирёбанда метавонад ҳар намуди қиматро дошта бошад.

тағйирёбанда қимат: ҳар = "сатр";
чоп.сабт(қимат); // сатр

қимат = 123;
чоп.сабт(қимат); // 123

қимат = дуруст;
чоп.сабт(қимат); // true

3.2.2. Ношинос (Unknown)

Монанди ҳар, вале бехатартар. Пеш аз истифода бояд намудашро санҷид.

тағйирёбанда қимат: ношинос = "сатр";

// Пеш аз истифода бояд намудро санҷид
агар (навъи қимат === "сатр") {
    чоп.сабт(қимат);
}

3.2.3. Беджавоб (Void)

Истифода мешавад барои нишон додани он ки функсия ҳеҷ чиз бармегардонад.

функсия салом(): беджавоб {
    чоп.сабт("Салом!");
    // ҳеҷ чиз бармегардонад
}

3.2.4. Абадан (Never)

Барои функсияҳое ки ҳеҷ гоҳ тамом намешаванд ё ҳамеша хато мепартоянд.

функсия хатои_фоҷиавӣ(паём: сатр): абадан {
    партофтан нав Хато(паём);
}

3.3. Намудҳои мураккаб (Complex Types)

3.3.1. Массив (Array)

Массив барои нигоҳдории рӯйхати қиматҳо истифода мешавад.

// Массиви ададҳо
тағйирёбанда ададҳо: рақам[] = [1, 2, 3, 4, 5];
чоп.сабт(ададҳо[0]);  // 1
чоп.сабт(ададҳо[2]);  // 3

// Массиви сатрҳо
тағйирёбанда номҳо: сатр[] = ["Аҳмад", "Фотима", "Ҳасан"];
чоп.сабт(номҳо[1]);   // Фотима

// Дарозии массив
чоп.сабт(ададҳо.дарозӣ); // 5

// Илова кардан ба массив
ададҳо.илова(6);
чоп.сабт(ададҳо); // [1, 2, 3, 4, 5, 6]

3.3.2. Объект (Object)

Объект барои нигоҳдории маълумоти мураккаб бо калидҳо истифода мешавад.

// Эҷоди объект
тағйирёбанда шахс: объект = {
    ном: "Аҳмад",
    фамилия: "Раҳимов",
    синну_сол: 25,
    донишҷӯ_аст: дуруст
};

// Дастрасӣ ба хосиятҳо
чоп.сабт(шахс.ном);        // Аҳмад
чоп.сабт(шахс.синну_сол);  // 25

// Тағйир додани хосиятҳо
шахс.синну_сол = 26;
чоп.сабт(шахс.синну_сол);  // 26

// Илова кардани хосияти нав
шахс.шаҳр = "Душанбе";
чоп.сабт(шахс.шаҳр);       // Душанбе

3.3.3. Tuple (Кортеж)

Массиви бо шумораи муайян ва намудҳои муайяни элементҳо.

// Эҷоди tuple
тағйирёбанда маълумот: [сатр, рақам, мантиқӣ] = ["Аҳмад", 25, дуруст];

чоп.сабт(маълумот[0]); // Аҳмад
чоп.сабт(маълумот[1]); // 25
чоп.сабт(маълумот[2]); // true

3.4. Муайян кардани намуди тағйирёбанда

Барои муайян кардани намуди тағйирёбанда оператори навъи истифода мешавад:

тағйирёбанда ном: сатр = "Аҳмад";
тағйирёбанда синну_сол: рақам = 25;
тағйирёбанда дуруст_аст: мантиқӣ = дуруст;

чоп.сабт(навъи ном);        // сатр
чоп.сабт(навъи синну_сол);  // рақам
чоп.сабт(навъи дуруст_аст); // мантиқӣ

3.5. Мисоли комплексӣ

// Системаи маълумоти донишҷӯ
собит НОМИ_ДОНИШГОҲ: сатр = "Донишгоҳи миллии Тоҷикистон";

// Маълумоти донишҷӯ
тағйирёбанда донишҷӯ: объект = {
    ном: "Аҳмад",
    фамилия: "Раҳимов",
    синну_сол: 20,
    донишкада: "Математика ва механика",
    курс: 3,
    бахоҳо: [5, 4, 5, 5, 4],
    фаъол_аст: дуруст
};

// Намоиши маълумот
чоп.сабт("=== " + НОМИ_ДОНИШГОҲ + " ===");
чоп.сабт(`Донишҷӯ: ${донишҷӯ.ном} ${донишҷӯ.фамилия}`);
чоп.сабт(`Синну сол: ${донишҷӯ.синну_сол}`);
чоп.сабт(`Донишкада: ${донишҷӯ.донишкада}`);
чоп.сабт(`Курс: ${донишҷӯ.курс}`);

// Ҳисоби миёнаи бахо
тағйирёбанда ҷамъи_бахоҳо: рақам = 0;
барои (тағйирёбанда и: рақам = 0; и < донишҷӯ.бахоҳо.дарозӣ; и++) {
    ҷамъи_бахоҳо = ҷамъи_бахоҳо + донишҷӯ.бахоҳо[и];
}
тағйирёбанда миёнаи_бахо: рақам = ҷамъи_бахоҳо / донишҷӯ.бахоҳо.дарозӣ;
чоп.сабт(`Миёнаи бахо: ${миёнаи_бахо}`);

3.6. Хулоса

Дар ин боб шумо омӯхтед:

  • Намудҳои ибтидоӣ: сатр, рақам, мантиқӣ, холӣ, беқимат
  • Намудҳои махсус: ҳар, ношинос, беджавоб, абадан
  • Намудҳои мураккаб: массив, объект, tuple
  • Чӣ тавр бо намудҳои гуногун кор кардан

Машқҳо:

  1. Массиве эҷод кунед, ки 5 адади дӯстдоштаи шумо дорад ва онҳоро як ба як чоп кунед
  2. Объекте созед барои китоб бо хосиятҳои: ном, муаллиф, соли нашр, саҳифаҳо
  3. Ду массиви ададҳо эҷод кунед ва ҷамъи ҳамаи элементҳои онҳоро ҳисоб кунед
  4. Объекте барои автомобил созед бо маълумоти тафсилӣ ва онро чоп кунед