Arifmetik amallar — chuqurroq
Amallar tartibi, butun va kasr sonlar, Math obyekti va sonlarni matnga aylantirish hiylalari.
Arifmetik amallar
Matematika — dasturlashning poydevori. Bugun JS'da sonlar bilan ishlashning barcha sirini o'rganamiz.
Dars rejasi
5 ta mavzu1. Amallar tartibi
Maktabdan bilamiz: avval ko'paytirish va bo'lish, keyin qo'shish va ayirish. JS ham xuddi shunday. Qavs — tartibni o'zgartiradi.
1console.log(2 + 3 * 4); // 14 — avval 3*4=12, keyin 2+122console.log((2 + 3) * 4); // 20 — qavs tufayli 2+3=5, keyin 5*43
4// Murakkab misol5const narx = 100;6const soliq = 12;7const umumiy = narx + (narx * soliq / 100); // 100 + 12 = 1128console.log(umumiy);2. Son va matn qo'shilsa nima bo'ladi?
JS'da + belgisi ikki ishni qiladi: sonlarni qo'shadi yoki matnlarni ulaydi. Bu chalkashlikka olib keladi — diqqat.
1console.log(5 + 3); // 8 (son + son)2console.log("Ali" + " " + "Valiyev"); // "Ali Valiyev" (matn + matn)3
4// Chalkash qism:5console.log("5" + 3); // "53" (matn, chunki "5" matn!)6console.log("Yosh: " + 17); // "Yosh: 17"7console.log(1 + 2 + "3"); // "33" (avval 1+2=3, keyin "3"+"3"="33")8console.log("1" + 2 + 3); // "123" (avval "1"+"2"="12", keyin +"3")3. Template literals
+ bilan matnni ulash og'ir. Zamonaviy yo'l — teng belgili qo'shtirnoq (backtick) ichida ${...} bilan o'zgaruvchi qo'shish.
1const ism = "Ali";2const yosh = 17;3
4// Eski usul (qiyin o'qiladi)5console.log("Mening ismim " + ism + ", " + yosh + " yoshdaman.");6
7// Zamonaviy usul — template literals8console.log(`Mening ismim ${ism}, ${yosh} yoshdaman.`);9
10// Ichida amal ham bajarish mumkin11console.log(`Keyingi yili ${yosh + 1} yoshga to'laman.`);4. Math obyekti
Math — JS'ning tayyor matematik asboblari. Kvadrat ildiz, daraja, yaxlitlash, tasodifiy son — hammasi shu yerda.
1Math.PI // 3.1415926535897932Math.max(3, 7, 2, 9) // 93Math.min(3, 7, 2, 9) // 24
5Math.abs(-5) // 5 (modul)6Math.sqrt(16) // 4 (kvadrat ildiz)7Math.pow(2, 10) // 1024 (2^10)8
9// Yaxlitlash10Math.round(4.5) // 5 (yaqin butun)11Math.ceil(4.1) // 5 (yuqoriga)12Math.floor(4.9) // 4 (pastga)13
14// Tasodifiy son (0 dan 1 gacha)15Math.random() // 0.7342...16
17// 1-6 oralig'ida tasodifiy son (zar tashlash)18Math.floor(Math.random() * 6) + 15. Sonni matnga, matnni songa
Foydalanuvchi formadan kiritgan narsalar — hamisha matn (string). Hisob-kitob qilish uchun ularni songa aylantirish kerak.
1// Matndan songa2const matn = "42";3console.log(Number(matn)); // 424console.log(parseInt("18px")); // 185console.log(parseFloat("3.14 kg")); // 3.146
7// Sondan matnga8const son = 42;9console.log(String(son)); // "42"10console.log(son.toString()); // "42"11
12// Qisqa hiyla: +13console.log(+"5" + +"3"); // 8 (ikkalasini ham songa aylantirdik)14
15// Noto'g'ri son = NaN16console.log(Number("salom")); // NaN (Not a Number)Kichik test
0 / 41.2 + 3 * 4 natijasi?
2."5" + 3 natijasi?
3.Kasrni yuqoriga yaxlitlash uchun?
4.Template literals qaysi tirnoqlar bilan yoziladi?