Skip to content

Latest commit

 

History

History
374 lines (232 loc) · 24.4 KB

[3]statements-and-data-types.md

File metadata and controls

374 lines (232 loc) · 24.4 KB

Иструкциялар ва маълумот турлари

Синтаксис

Жаваскрипт тилида езилган хар бир дастур инструкциялардан иборат.

Инструкциялар (statement)

Инструкцилар – бирор бир харакатни амалга оширадиган синтактик конструкциялар ва командалар хисобланади.

Инструкцияга мисол - console.log(). Бу функция туридаги инструкция ва у одатда консольга маълумотларни чикариш ва яхши одат булмаса хам дибаггинг еки код ичидаги хатоларни топиш учун ишлатилади.

Жаваскритда инструкцилар кетма-кет бажарилади. Ва одатда инструкциялар нуктали вергул билан ажратилади. Албатта нуктали вергулни ишлатмаса хам булади, лекин бу холда инструкциялар уз каторида езилиши керак.

Энг оддий иструкция бу - ифода инструкцияси. Ифода инструкциясига мисол сифатида литералларни (2335) еки айрим калит сузларни (this) келтириш мумкин.

Одатда ифода инструкцияси бирор бир натижа кайтаради.

Масалан, 6 + 10. бу ерда 6 ва 10 сон литерал ифодалари кушиш арифметик оператори ердамида мураккаб ифодаларга бирлашитирилди ва амал натижасини кайтарди.

Жаваскриптда ифодаларнинг концептуал 2 тури мавжуд - (1) кушимча таъсирга эга ифодалар ва (2) кушимча таъсирга эга булмаган ифодалар.

Кушимча таъсирга эга булган ифодаларга “узгарувчан бирликни” ни мисол килиб келтирса булади.

Масалан, var x = 3; бу ерда ифода натижаси 3 га тенг, лекин унинг кушимча таъсири бу 3 сонининг компьютернинг оператив хотирасига сакланишидир.

10 + 5 мураккаб ифодаси учун факат натижа кайтарилади ва хеч кандай кушимча харакатлар амалга оширилмайди. Оддий килиб айтганда бу ифода натижасини кайта ишлатиш имконияти булмайди.

Олдинги мураккаб ифодалар мисолларида (+) арифметик оператори ишлатилган эди. Умуман олганда Жаваскрипт тилида 3 турдаги оператор мавжуд.

Операторлар операндлар сонига караб бинар, унар ва тернар турларга булинади.

Бинар - чап ва унг операндларга эга. Масалан, 10 + 25. Бу ерда 10 чап ва 25 сони унг операнд ролини уйнайди. + - бу уринда кушиш арифметик оператори сифатида ишлатилган.

Унар - факат бир операндга эга. Масалан,

typeof оператори унг операндга эга. Бу оператор маълумот турини аниклаш учун ишлатилади.

Тернар оператор 3 операндга эга ва асосан бошкарув мантикини амалга ошириш учун ишлатилади.

Операторларни максадли гурухларга хам булиш мумкин. Куп ишлатиладиган оператор гурухлари қуйида кўрсатилган.

Операторларнинг мақсадли гуруҳлари

Операторлар мавзусига кейинчалик курс давомида яна кайтаман.

Ўзгарувчан бирлик.

Дастурлаш жараенида ишлатиладиган инструкцияларнинг яна бир тури бу декларатив инструкциялар. Декларатив инструкцияга мисол бу - узгарувчан бирлик.

Узгарувчан бирликлар дастурда ишлатиладиган маълумотларни вактинчалик саклаш учун ишлатилади. Бу албатта соддалаштирилган тушунтирув.

Узгарувчан бирлик Жаваскрипт тилида var, let, const калит сузлари оркали белгиланади. Калит суздан сунг албатта идентификатор еки оддий килиб айтганда узгарувчан бирлик номи келтирилади. Узгарувчан бирликлар номи харф, пастки чизик еки доллар белгиси билан бошланиши мумкин. Масалан, ****

let name; let _name; let $name;

Узгарувчан бирлик бирор бир киймат билан хам яратилиши мумкин. Масалан,

 ****let x = 4;

Кейинчалик сакланган киймат билан ишлаш учун узгарувчан бирлик идентификатори еки номига мурожаат килиш мумкин.

console.log(x + 5);

Узгарувчан бирликлар кетма-кет вергул билан ажратилган холда хам яратилиши мумкин. Масалан,

let y, z = 4; 

бу ерда биринчи бирлик кийматсиз иккинчиси 4 сон киймати билан инициализация килинди.

Узгарувчан бирликнинг киймати вакт утиши билан узгариши мумкин. Масалан,

let number = 10; console.log(number);
number = 20; console.log(number);

Юкорида айтиб утганимдек узгарувчан бирлик 3 та калит суз оркали яратилиши мумкин.

var - узгарувчан бирликни яратиш учун таклиф килинган энг биринчи ендашув ва унинг узига хослиги бор. Агар var ердамида узгарувчан бирлик яратилса бу бирликнинг ишлатилиш еки тугрироги бажарилиш доираси ,соддалаштириб айтганда, бир javascript файли контекстида глобал булади.

Масалан, var ердамида 2 та бир хил идентификаторли узгарувчан бирлик мавжуд лекин буларнинг бири код блоки ичида яратилган. Код блоги алохида еки епик бажарув доирасига эга. Бунда мантикан биринчи куринишда console.log() факат глобал доирада жойлашган number узгарувчан бирлигига мурожаат килиши мумкин.

Аммо кодни интерпретор ердамида ишга туширилса блок ичидаги x узгарувчан бирлик киймати консольга езилади. Чунки var глобал бажарилув доирасига эга ва код блоги бу ерда хеч кандай рольни уйнамайди.

Аслида бу мисолда x узгарувчан бирлиги кайта яратилган деб хисобласа булади.

var x = 3; { var x = 5; } console.log(x);

Бундай ноаникликни келтириб чикариш мумкин булган холатни олдини олиш учун JS тилининг янги версияларида let калит сузини ишлатиш таклиф килинган. Худди шу мисолни узида var ни let га узгартириб кутилган натижани олиш мумкин.

let x = 3; { let x = 5; } console.log(x);

Умуман узгарувчан бирликларни яратиш учун let ни ишлатишни одат килиб олиш керак.

Энди кискача const калит сузи хакида маълумот. Const матетамитикага хос тушунча ва у узгармас кийматни еки константани белгилаш учун ишлатилади. Масалан PI хар доим 3.14 га тенг.

Худди шундай кийматлар дастурлашда хам ишлатилади ва шундай кийматдарни белгилаш ва кайта ишлатиш учун одатда const калит сузи ишлатилади.

Аммо JS тилида const калит сузи хакикий узгармас бирликни белгилаш учун ишлатилади деб булмайди. Аслида const калит сузи ишлатилганда узгармас бирликнинг идентификатори учун кайта белгилаш амалини ишлатиш имконияти булмайди.

Масалан, константа ****PI ****га ****3.14 киймати бириктирилгандан сунг кийматни узгартириш имконияти булмайди. Агар кийматни узгартиришга харакат килсангиз интерпретатор хато матнинни консольга чикаради. Лекин худди шу амал объект сифатида белгиланса

const PI = { value: 3.14, };  PI.value = 10; console.log(PI.value);

бу ерда код амалга ошади ва янги киймат бириктирилади.

Эсламта! const узгарувчан бирлиги факат содда маълумот турлари билан константа шаклида ишлаши мумкин. Аммо мураккаб маълумот турлари билан ишлаганда const янги киймат олиши мумкин.

Маълумот турлари

Одатда узгарувчан бирликга бирор бир киймат бириктирилади. Буни олдинги мисолларда куриш мумкин эди. Кийматлар хар хил маълуълот турларига тегишли булиши мумкин.

Javascript да икки гурух маълумот турлари мавжуд. Булар содда ва мураккаб маълумот гурухлари. Маълумот гурухлари уз ичига маълумот турларини бирлаштиради.

Оддий маълумот турлари сифатида JS тили сон (number), сатр (string), булев мантикий маълумот тури (boolean), ноаниклик еки кийматнинг йуклигини белгиловчи undefined ва null, BigInt ва Symbol ни таклиф килади.

Мураккаб маълумот турлари факат объект (object) сифатида таклиф килинган. Объект хар хил куринишда келиши мумкин. Масалан, Array еки кийматлар гурухи сифатида, еки функция сифатида. аммо буларнинг барчаси охир окибат объект турига тегишли маълумот турлари хисобланади.

Объектлар мавзуси кейинчалик алохида видео лавҳада чукуррок кўриб чиқилади.

953402010 карта раками ва заказ номери

Содда маълумотлар амаллари

Маълумотлар устида хар хил операцияларни амалга ошириш мумкин. Бу видео лавхада факат содда турдаги маълумотлар мисолида Жаваскрипт тилида белгиланган айрим операциялар еки амаллар куриб чикилади.

Содда турдаги маълумотлар уз холича хеч кандай ички операцияларга эга эмас. Лекин Жаваскрипт тилида бу маълумотлар билан ишлаш кулай булиши учун “махсус ёрдамчи объектлар” белгиланган.

Хар бир белгилаган операциядан олдин содда турдаги маълумот вактинчалик яратиладиган махсус объектга ўралади. Ундан сўнг бу объектга ҳос амал бажарилади ва қайта ишланган содда маълумот қайтарилади.

Сатр (String)

Сатр содда маълумот тури ҳисобланади. Сатрни яратиш учун қиймат қўштиртоқлар ичида белгиланиши керак. Масалан,

// 1 - вариант 
let satr = 'Uzbekistan';

// 2 - вариант
let satr2 = "Uzbekistan";

Бу икки мисол ҳам дастурлаш жараёнида ишлатилиши мумкин. Аммо, 1 - вариантда кўрсатилган мисол Жаваскрипт тилида кўпроқ ишлатилади ва одатда шу вариантни ишлатиш маслаҳат берилади.

Сатр тескари апостроф белгиси ичида ҳам яратилиши мумкин. Бунда сатр билан ишлаш ёки форматлаш учун бир қанча енгилликлар мавжуд. Масалан,

let oddiySatr = 'boshqa satr';
let tildaSatr = `Tilda belgisi yordamida yaratilgan satr va unga ${satr}!`;

console.log(tildaSatr);

Бу мисолда ${} қуйидаги конструкция ёрдамида икки сатр бирлаштирилди.

Сатрларни бирлаштиришнинг яна бир йўли бу + операторини ишлатиш. Масалан,

let rayon = 'Chilonzor';
let kvartal = '13';
let manzil = rayon + kvartal;

console.log(manzil);

Сатрнинг узунлигини билиш учун length хусусиятидан фойдаланиш керак. Масалан,

let satr = 'Bu oddiy misol';
let satrningUzunligi = satr.length;

console.log(`Satrning uzunligi ${satrningUzunligi}`); // 'Satrning uzunligi 14'

Бу мисолда length хусусияти нуқта нотацияси орқали ишлатилган. Бу нотация объектларга ҳос тил конструкцияси ҳисобланади.

Эслатиб ўтаман содда маълумотлар устида объектларга ҳос амалларни ишлатиш учун уларни махсус ёрдамчи объектларга ўраш керак бўлади. Бу сингари операциялар интерпретатор ёрдамида амалга оширилади. Шунинг учун дастурчидан қўшимча ҳаракатларни амалга ошириш талаб қилинмайди. Асосийси, мавжуд амалларни ишлатишни билиш зарур.

Сатрни юқори регистрга ўтказиш учун toUpperCase() функциясини ишлатиш мумкин. Аксинча пастги регистрга ўтказиш учун toLowerCase() функцияси ишлатилади.Масалан,

let registr = 'bu pastgi registrdagi satr';
let yuqoriRegistr = registr.toUpperCase();

console.log(yuqoriRegistr); // 'BU YUQORI REGISTRDAGI SATR'

Агар сатрдаги фақат айнан бир харфни юқори регистрга ўтказиш керак бўлса, унинг сатрдаги индексига мурожаат қилиш керак бўлади. Бунда тўғри бурчакли қавс [] консрукцияси ишлатилади. Масалан,

let rassom = 'leonardo';
let rassom2 = rassom[0].toUpperCase(); // биринчи харфнинг индекси ўзгартирмоқда

console.log(rassom2); // 'Leonardo'

Жаваскрипт тилида индекслар 0 рақамидан бошланади.

Сатрдаги харф индексини билиш учун indexOf() функциясидан фойдаланилади. Бу функция сатрдаги мавжуд харфни аргумент сифатида олади. Натижа сон маълумот тури сифатида кайтарилади. Масалан,

let satr = 'televizor';
let xarf = satr.indexOf('v'); 

console.log(xarf); // 4

Сатрнинг бир қисмини ажратиш учун substring(startIndex, endIndex) фунциясидан фойдаланилади. Бу функция индекслар орқали бошқарилади. Биринчи индекс керакли бўлган сатр боши ва иккинчиси сатрнинг охирини билдиради. Масалан,

let shahar = 'Toshkent';
let shahar2 = shahar.substring(0, 4);

console.log(shahar2); // 'Tosh'

Сатрда бирор бир сўзни ёки харфни бошқа қийматга ўзгартириш учун replace(...args) функциясидан фойдаланиш мумкин. Бу функция биринчи аргумент сифатида ўзгариши керак бўлган сўз ёки харф ва иккинчи аргумент сифатида янги қийматни олади. Масалан,

let satr = 'shirin qovun';
let satr2 = satr.replace('qovun', 'tarvuz');

console.log(satr2); // 'shirin tarvuz'

Аслида бу сингари сатрга хос функциялар кўп ва ҳар бирини таништириш бу видео лавҳа доирасига кирмайди. Бу мисолларни кўрсатишдан асосий мақсад сатр содда маълумот тури ва уни ўзгартириш учун ишлатиладиган махсус объект ҳақида қисқача маълумот бериш.

Сон (Number)

Жаваскриптда сон маълумот тури шу жумладан бутун ва каср сонларни ўз ичига олади. Масалан,

let son = 10;
let kasrSon = 14.5;

Сонлар устида турли ҳил математик амалларни ошириш мумкин. Бунда юқорида айтиб ўтилган операторлар ёрдам беради. Масалан,

let x = 12;
let y = 5;

console.log(`Қўшиш: ${x + y}`);  // 17
console.log(`Айириш: ${x - y}`);  // 7
console.log(`Кўпайтириш: ${x * y}`);  // 60
console.log(`Бўлиш: ${x / y}`);  // 2.4
console.log(`Қолдиқни аниқлаш: ${x % y}`);  // 2
console.log(`Қўшма амаллар: ${5 / 12 * 3 + (22 + 13) - 45 + 10}`) // 1.25

Агар берилган сон 0 га бўлинса чексизлик қиймати келиб чиқади.

let son = 1;
let natija = 1 / 0;

console.log(son); // Infinity

Сатр сингари сон ҳам ўзига ҳос функцияларга эга. Бу функцияларнинг кўп ишлатиладиган қисми Number объекти доирасида белгиланган. Масалан, соннинг бутунлигини текшириш учун Number.isInteger() функциясидан фойдаланиш мумкин. Бу функция натижа сифатида тўғри ёки нотўғри яъни boolean қийматини қайтаради ва соннинг бутунлигини тасдиқлайди.

let son = 5;
let butunSon = Number.isInteger(son);

console.log(butunSon); // true - сон бутун

Берилган соннинг чекли эканлигини Number.isFinite() функцияси орқали текшириш имконияти мавжуд. Масалан,

let son = 10;
let chekli = Number.isFinite(son);

console.log(chekli); // true - сон чекли

Каср сонларни Number.toFixed() функцияси ёрдамида форматлаш мумкин. Масалан,

let kasrSon = 10.343233;
let kasrSon2 = kasrSon.toFixed(2);

console.log(kasrSon2); // 10.34

Математик операциялар купрок алохида статик Math утилитар объекти доирасида амалга оширилади. Масалан, сон илдизини олиш учун Math.sqrt(son) функциясидан фойдаланиш мумкин.

let son = 25;
let sonIldizi = Math.sqrt(son);

console.log(sonIldizi); // 5 

Сонни даражага кутариш учун Math.pow(x, y) функцияси ишлатилиши мумкин.

let son = 10;
let son2 = Math.pow(son, 2); // 3, 4, 5 ... n

console.log(son2); // 10

Сонга алокадор функциялар хакида кушимча маълумотни видеонинг куйида келтирилган ресурслар оркали олиш мумкин.

Булев мантикий маълумот тури еки оддий килиб айтганда Boolean

Булев мантикий маълумот тури факат икки хил қиймат тарзида белгиланиши мумкин. Булар тугри true ва нотугри false ёки ҳақиқат ва ёлғон.

let boolean = true;
let boolean2 = false;

console.log(boolean); // true
console.log(boolean2); // false 

Boolean кийматлари устида хам математик амалларни амалга ошириш мумкин. Бунда boolean кийматлари сон сифатида амал натижасига таъсир килади. Масалан,

let bool = true;
let bool2 = false;

Undefined ва Null

Бу икки маълумот тури хам кийматнинг йуклигини белгилаш учун ишлатилади. Масалан,

let x = undefined;
let y = null; 

undefined нинг узига хослиги бу интерпретатор томонидан белгалиши мумкинлигидир. Масалан, агар узгарувчан бирлик кийматсиз яратилса, интерпретатор унга undefined кийматини бириктиради.

let x;
console.log(x); // undefined

Лекин агар узгарувчан бирликни кийматсиз яратиш шарти булса унда null дан фойдаланган максадга мувофикрок булади.

let x = null;

Юкорида келтирилган амаллар ва тушунчалар факат ЖС даги маълумот турларининг бир кисмини ташкил этади. Жаваскриптдаги маълумот турлари ва уларнинг хусусиятлари хакида туликрок маълумот олиш учун видео куйидаги келтирилган ресурсалардан фойдаланиш мумкин.

Бу қисқа видео лавҳада ЖС тили систаксиси ва маълумот турлари ҳақида сўз борди.

Кейинги видео лавхада бошкарув мантикига тегишли тил конструкциалари хакида суз боради.