IlmHamroh
JavaScript Full-stack/8-qism. JavaScript asoslari11/61-dars18 daqiqa
Mundarija (44)

JavaScript arifmetik operatorlari: +, -, *, /, %, ** va tayinlash

Qisqacha: JavaScript'da hisob-kitob maktab matematikasiga o'xshaydi: +, -, * (ko'paytirish), / (bo'lish). Qo'shimcha ikkitasi bor: % — bo'linmaning qoldig'i, ** — darajaga ko'tarish. x += 5 — "x ga 5 qo'sh" degan qisqa yozuv, x++ esa x ni bittaga oshiradi. Eng katta tuzoq: "5" + 2 natijasi "52", chunki + satrni ko'rsa, matnlarni yopishtiradi.

Bu darsda

  • Oltita arifmetik operator bilan hisob-kitob qila olasiz.
  • % yordamida sonning juft yoki toqligini aniqlay olasiz.
  • Amallar tartibini bilasiz va qavsni to'g'ri qo'ya olasiz.
  • +=, -=, ++, -- bilan o'zgaruvchi qiymatini qisqa yo'l bilan o'zgartira olasiz.
  • x++ va ++x farqini tushuntira olasiz.
  • "5" + 2, nolga bo'lish va 0.1 + 0.2 kabi kutilmagan natijalarni taniysiz.

Oldin bilishingiz kerak: let va const bilan o'zgaruvchilar, Ma'lumot turlari xaritasi, Boolean va truthy/falsy qiymatlar.

1. Nega bu kerak?

Oldingi darsda qiymatlarni "ha/yo'q" ga aylantirishni o'rgandik. Endi sonlar bilan ishlaymiz.

Deyarli har bir dastur hisoblaydi. Bozorda savatning umumiy narxi. Taksida masofa bo'yicha to'lov. Bankda oylik foiz. Telegram kanalida obunachilar o'sishi. Bularning hammasi — oddiy arifmetika.

Lekin JavaScript'ning o'z qoidalari bor: masalan, satr va sonni qo'shsa, kutilmagan narsa qiladi. Bu darsda shu qoidalar va tuzoqlarni ko'ramiz.

2. To'rt asosiy amal

2.1 Operator va operand

Avval ikki atama:

  • Operator — amalni bildiradigan belgi: +, -, *, /.
  • Operand — amal bajariladigan qiymat. 7 + 3 da 7 va 3 — operandlar.

Hayotdan o'xshatish: "non kes" gapida "kes" — operator (nima qilinadi), "non" — operand (nimaga qilinadi).

js
console.log(7 + 3); // 10
console.log(7 - 3); // 4
console.log(7 * 3); // 21
console.log(7 / 2); // 3.5

Ko'paytirish belgisi — yulduzcha *. Bo'lish belgisi — qiya chiziq /. Klaviaturada × va ÷ yo'q, shuning uchun dasturlash tillari shu belgilarni tanlagan.

2.2 O'zgaruvchilar bilan hisoblash

O'zgaruvchilar bilan ham xuddi shunday hisoblanadi:

js
const nonNarxi = 4000;
const nonSoni = 3;
const jami = nonNarxi * nonSoni;

console.log(jami); // 12000

Uchinchi qatorda JavaScript avval o'ng tomonni hisoblaydi: 4000 * 3 = 12000. Keyin natijani jami ga yozadi.

2.3 Bo'lish har doim ham butun son bermaydi

Maktabda 7 : 2 = 3 (qoldiq 1) deb yozgan bo'lishingiz mumkin. JavaScript esa aniq kasr javob beradi:

js
console.log(7 / 2); // 3.5
console.log(10 / 3); // 3.3333333333333335

Oxiridagi 5 — yaxlitlash izi: kompyuter cheksiz kasrni to'liq saqlay olmaydi. Butun qismni olish vositalarini Math obyekti darsida ko'ramiz.

Tekshirib ko'ring: const narx = 25000; bo'lsa, narx / 4 nima bo'ladi?

Javob

6250. 25 000 ni to'rtga bo'lsak, butun son chiqadi, kasr qismi yo'q. JavaScript kasr qismi nol bo'lsa, uni ko'rsatmaydi: 6250.0 emas, 6250.

3. Qoldiq operatori %

3.1 % nima qiladi?

% — foiz emas! JavaScript'da bu qoldiq operatori (remainder). U bo'lishdan keyin ortib qolgan qismni beradi.

Hayotdan o'xshatish: 17 ta olmani 5 ta bolaga teng bo'lasiz. Har biriga 3 tadan tegadi, 2 ta ortib qoladi. 17 % 5 — aynan shu ortib qolgan 2.

js
console.log(17 % 5); // 2
console.log(20 % 5); // 0
console.log(3 % 5); // 3
  • 20 % 5 — 0, chunki 20 beshga qoldiqsiz bo'linadi.
  • 3 % 5 — 3, chunki 3 ni beshga bo'lganda hech kimga butun olma tegmaydi, hammasi ortib qoladi.

3.2 Juft yoki toq?

% ning eng mashhur ishlatilishi — sonni ikkiga bo'lib, qoldiqqa qarash:

js
console.log(10 % 2); // 0
console.log(7 % 2); // 1

Qoida:

  • son % 2 natijasi 0 — son juft.
  • son % 2 natijasi 0 emas — son toq.

Bu natijani oldingi darsdagi truthy/falsy bilan bog'lash mumkin. 7 % 2 = 1 — truthy, ya'ni "toq — ha". 10 % 2 = 0 — falsy, ya'ni "toq — yo'q".

3.3 Soat va daqiqa

Yana bir foydali misol. Kino 135 daqiqa davom etadi. Bu necha soat va necha daqiqa?

js
const daqiqa = 135;

console.log(daqiqa % 60); // 15
console.log((daqiqa - daqiqa % 60) / 60); // 2

Qoldiq — 15 daqiqa. Qolgan 120 daqiqa esa 60 ga bo'linib, 2 soat beradi. Demak, 2 soat 15 daqiqa.

3.4 Manfiy sonlar bilan %

% natijasining ishorasi (plyus yoki minus) chap tomondagi songa ergashadi:

js
console.log(-7 % 2); // -1
console.log(7 % -2); // 1

Buning bir amaliy oqibati bor. Toq sonni "qoldiq 1 ga teng" deb tekshirsangiz, manfiy toq sonlarda adashasiz: -7 % 2 — 1 emas, -1. Shuning uchun juft/toqni nol bilan solishtiring: "qoldiq 0 mi yoki yo'qmi". Bu usul manfiy sonlarda ham ishlaydi.

Maslahat: % kasr sonlar bilan ham ishlaydi: 5.5 % 2 — 1.5. Amalda kam kerak bo'ladi, lekin xato bermasligini bilib qo'ying.

Tekshirib ko'ring: 50 ta daftarni 8 ta o'quvchiga teng bo'lsangiz, nechta ortib qoladi? Buni qaysi ifoda bilan hisoblaysiz?

Javob

50 % 8 — natija 2. Har bir o'quvchiga 6 tadan (48 ta) tegadi, 2 ta ortadi.

4. Daraja operatori **

4.1 Darajaga ko'tarish

** — darajaga ko'tarish operatori. 2 ** 3 — "2 ning 3-darajasi", ya'ni 2 * 2 * 2.

js
console.log(2 ** 3); // 8
console.log(10 ** 6); // 1000000
console.log(9 ** 0.5); // 3
console.log(2 ** -1); // 0.5

Oxirgi ikki qatorga e'tibor bering. 0.5 darajasi — kvadrat ildiz: 9 ** 0.5 = 3. Manfiy daraja — "birni shu songa bo'l": 2 ** -1 = 1 / 2 = 0.5.

Eski kodda Math.pow(2, 3) yozuvini uchratasiz — natija bir xil.

4.2 Bir necha ** ketma-ket

Matematikadagidek, ketma-ket darajalar o'ngdan chapga hisoblanadi:

js
console.log(2 ** 3 ** 2); // 512

Avval 3 ** 2 = 9, keyin 2 ** 9 = 512. Agar chapdan hisoblansa, 8 ** 2 = 64 bo'lardi. Chalkashmaslik uchun qavs qo'ying: 2 ** (3 ** 2).

4.3 Minus va daraja — qavs majburiy

js
console.log(-2 ** 2);
text
SyntaxError: Unary operator used immediately before
exponentiation expression. Parenthesis must be used
to disambiguate operator precedence

(Konsolda bu bitta uzun qator bo'lib chiqadi.)

Tarjimasi: "Daraja ifodasidan darhol oldin unar operator ishlatilgan. Amallar tartibini aniqlashtirish uchun qavs qo'yish kerak."

Muammo shunda: -2 ** 2 ni ikki xil tushunish mumkin. (-2) ** 2 = 4 yoki -(2 ** 2) = -4. JavaScript taxmin qilmaydi — sizdan aniq yozishni talab qiladi:

js
console.log((-2) ** 2); // 4
console.log(-(2 ** 2)); // -4

"Unar operator" nima ekanini keyingi bo'limda ko'ramiz.

5. Unar minus va unar plyus

Shu paytgacha ko'rgan operatorlarimiz ikkita operand bilan ishlardi: 7 + 3. Bunday operator binar (ikkilik) deyiladi. Bitta operand bilan ishlaydigani — unar (birlik) operator.

Unar minus -x — sonning ishorasini teskarisiga o'zgartiradi:

js
const harorat = 5;
console.log(-harorat); // -5

Unar plyus +x — qiymatni songa aylantiradi. Bu satrdan son olishning eng qisqa yo'li:

js
console.log(+"250"); // 250
console.log(+""); // 0
console.log(+"salom"); // NaN
  • +"250" — satr songa aylandi.
  • +"" — bo'sh satr 0 ga aylanadi. Bu kutilmagan, lekin shunday.
  • +"salom" — son chiqmaydi, natija NaN ("son emas").

Satrni songa aylantirishning boshqa usullarini va ularning farqini turlarni aniq o'zgartirish darsida o'rganamiz.

6. Amallar tartibi (ustuvorlik)

6.1 Ko'paytirish qo'shishdan oldin

2 + 3 * 4 nima bo'ladi — 20 mi yoki 14 mi?

js
console.log(2 + 3 * 4); // 14
console.log((2 + 3) * 4); // 20

Maktabdagidek: avval ko'paytirish, keyin qo'shish. Qavs esa tartibni o'zgartiradi. Qaysi operator avval bajarilishi ustuvorlik (precedence) deyiladi.

Tartib Operatorlar Misol
1 ( ) qavs (2 + 3) * 4 → 20
2 ** daraja 2 * 3 ** 2 → 18
3 *, /, % 10 - 6 / 2 → 7
4 +, - 1 + 2 - 3 → 0
5 =, += va boshqa tayinlashlar eng oxirida

Tayinlash (=) eng oxirida bajariladi. Shuning uchun const jami = 2 + 3 * 4; da avval o'ng tomon to'liq hisoblanadi, keyin natija jami ga yoziladi.

6.2 Bir xil darajadagi operatorlar — chapdan o'ngga

* va / bir xil darajada. Ular yonma-yon kelsa, chapdan o'ngga bajariladi. + va - ham shunday:

js
console.log(100 / 10 / 2); // 5
console.log(10 - 2 - 3); // 5
console.log(10 % 3 * 2); // 2

100 / 10 / 2 — avval 100 / 10 = 10, keyin 10 / 2 = 5. 10 % 3 * 2 — avval 10 % 3 = 1, keyin 1 * 2 = 2. Faqat ** bu qoidadan istisno: u o'ngdan chapga hisoblanadi.

Maslahat: Shubha tug'ilsa — qavs qo'ying. Qavs kodni sekinlashtirmaydi, lekin keyin o'qiydigan odamga (va sizga) aniq yo'l ko'rsatadi. Barcha operatorlarning to'liq ustuvorlik jadvalini operatorlar ustuvorligi darsida ko'ramiz.

Tekshirib ko'ring: Choyxonada 3 ta choy (har biri 2 000 so'm) va 2 ta somsa (har biri 5 000 so'm) olindi. Jasur 3 * 2000 + 2 * 5000 deb yozdi. Qavs kerakmi?

Javob

Kerak emas. Ko'paytirishlar avval bajariladi: 6000 + 10000 = 16000. Natija to'g'ri. Lekin o'qishni osonlashtirish uchun (3 * 2000) + (2 * 5000) deb yozish ham xato emas.

7. Satr va son: + ning tuzog'i

7.1 "5" + 2 = "52"

+ belgisi JavaScript'da ikki ish qiladi: sonlarni qo'shadi va satrlarni yopishtiradi (birlashtiradi).

js
console.log("Salom, " + "Ali"); // Salom, Ali
console.log(5 + 2); // 7
console.log("5" + 2); // 52

Uchinchi qatorda bittasi satr, bittasi son. Bunday holatda + satrni tanlaydi: sonni ham satrga aylantirib, ikkalasini yopishtiradi. Natija — "52" satri.

Boshqa arifmetik operatorlar esa faqat son bilan ishlaydi. Ular satrni songa aylantiradi:

js
console.log("5" - 2); // 3
console.log("5" * "2"); // 10
console.log("abc" * 2); // NaN

Shuning uchun "5" - 2 = 3, lekin "5" + 2 = "52". Bir qarashda mantiqsiz, lekin qoida bitta: faqat + satrni yaxshi ko'radi.

7.2 Tartib ham muhim

js
console.log(1 + 2 + "3"); // 33
console.log("1" + 2 + 3); // 123

Chapdan o'ngga hisoblanadi, eslang:

  • 1 + 2 + "3": avval 1 + 2 = 3 (ikkalasi son). Keyin 3 + "3" = "33".
  • "1" + 2 + 3: avval "1" + 2 = "12" (satr). Keyin "12" + 3 = "123".

7.3 Nega bu real muammo?

Foydalanuvchi saytdagi maydonga yozgan har qanday qiymat JavaScript'ga satr bo'lib keladi. U 5 yozsa ham, sizga "5" keladi. Shunda "savatdagi mahsulotga 2 ta qo'sh" degan kod 7 o'rniga "52" beradi.

js
const kiritilganSon = "5";
console.log(kiritilganSon + 2); // 52
console.log(+kiritilganSon + 2); // 7

Ikkinchi qatorda unar plyus + satrni oldin songa aylantirdi — natija to'g'ri. Turlar qanday va qachon avtomatik o'zgarishini turlarni aniq o'zgartirish va yashirin coercion qoidalari darslarida batafsil o'rganamiz.

Tekshirib ko'ring: "10" - 3 va "10" + 3 natijalari qanday?

Javob

"10" - 3 = 7 (son): ayirish faqat son bilan ishlaydi, shuning uchun "10" songa aylandi. "10" + 3 = "103" (satr): + satrni ko'rib, yopishtirdi.

8. Maxsus natijalar: nolga bo'lish va 0.1 + 0.2

8.1 Nolga bo'lish — xato emas

Matematikada nolga bo'lib bo'lmaydi. Ko'p dasturlash tillari bu yerda xato beradi. JavaScript esa xato bermaydi — maxsus qiymat qaytaradi:

js
console.log(10 / 0); // Infinity
console.log(-10 / 0); // -Infinity
console.log(0 / 0); // NaN
console.log(10 % 0); // NaN
  • Infinity — "cheksizlik". Musbat sonni nolga bo'lsangiz chiqadi.
  • -Infinity — manfiy cheksizlik.
  • NaN — 0 / 0 ning ma'nosi yo'q, shuning uchun "son emas".

Xato chiqmagani xavfli: Infinity yoki NaN jimgina keyingi hisoblarga o'tib ketadi. Masalan, "o'rtacha baho" hisobida o'quvchilar soni 0 bo'lsa, ekranda NaN chiqadi. Bo'lishdan oldin bo'luvchi 0 emasligini tekshirish odatini qiling — buni if / else bilan qilasiz.

8.2 0.1 + 0.2 — kichik sir

js
console.log(0.1 + 0.2); // 0.30000000000000004

Bu JavaScript'ning xatosi emas. Kompyuter kasr sonlarni ikkilik sanoq sistemasida saqlaydi va 0.1 ni aniq yoza olmaydi — xuddi 1/3 ni o'nlik kasrda aniq yozib bo'lmagani kabi. Python, Java va boshqa tillarda ham natija xuddi shunday.

Pul hisoblashda bu jiddiy muammo. Nega shunday bo'lishini Number turi darsida, pulni to'g'ri hisoblashni esa pul va aniq hisob-kitob darsida ko'ramiz.

9. Tayinlash operatorlari

9.1 = — "teng" emas, "yoz"

Matematikada x = x + 1 — mantiqsiz: hech bir son o'zidan bitta katta emas. JavaScript'da esa = — tayinlash operatori. U "o'ngdagini hisobla va chapdagi o'zgaruvchiga yoz" degani:

js
let ball = 10;
ball = ball + 5;

console.log(ball); // 15

Ikkinchi qator shunday o'qiladi: "ball ning hozirgi qiymatini ol (10), unga 5 qo'sh, natijani (15) yana ball ga yoz".

Hayotdan o'xshatish: cho'ntagingizda 10 000 so'm bor. Onangiz yana 5 000 berdi. Siz eski pulni tashlab yubormaysiz — unga qo'shasiz. Endi cho'ntakda 15 000.

9.2 Qisqa tayinlash: +=, -= va boshqalar

ball = ball + 5 ni qisqa yozish mumkin: ball += 5. Ma'nosi bir xil.

Qisqa yozuv To'liq yozuv Ma'nosi
x += 5 x = x + 5 5 qo'sh
x -= 5 x = x - 5 5 ayir
x *= 5 x = x * 5 5 ga ko'paytir
x /= 5 x = x / 5 5 ga bo'l
x %= 5 x = x % 5 5 ga bo'lgandagi qoldiq
x **= 5 x = x ** 5 5-darajaga ko'tar

Misol — Click hamyonidagi balans:

js
let balans = 50000;

balans += 20000; // hisob to'ldirildi
balans -= 12000; // taksi uchun to'lov
balans *= 2; // aksiya: balans ikki barobar

console.log(balans); // 116000

Qadamma-qadam: 50000 → 70000 → 58000 → 116000.

+= satrlar bilan ham ishlaydi — matnni oxiriga qo'shadi:

js
let xabar = "Salom";
xabar += ", Malika";
xabar += "!";

console.log(xabar); // Salom, Malika!

Diqqat: const bilan e'lon qilingan o'zgaruvchiga += ishlatib bo'lmaydi. += ham qayta tayinlash, const esa buni taqiqlaydi. Qiymati o'zgaradigan o'zgaruvchini let bilan e'lon qiling.

Tekshirib ko'ring: let narx = 8000; narx *= 3; narx -= 4000; — oxirida narx nechaga teng?

Javob

20000. Avval 8000 * 3 = 24000, keyin 24000 - 4000 = 20000.

10. ++ va --: bittaga oshirish va kamaytirish

10.1 Asosiy ishlatilishi

O'zgaruvchini bittaga oshirish juda ko'p kerak bo'ladi: sanash, navbat raqami, "like" soni. Buning uchun maxsus operator bor:

  • x++ — inkrement: x ni 1 ga oshiradi (x += 1 bilan bir xil).
  • x-- — dekrement: x ni 1 ga kamaytiradi (x -= 1 bilan bir xil).
js
let navbat = 1;

navbat++;
navbat++;
console.log(navbat); // 3

navbat--;
console.log(navbat); // 2

Bu operatorni for sikli darsida juda ko'p ishlatamiz.

10.2 x++ va ++x — farqi qayerda?

++ ni o'zgaruvchidan keyin ham (x++, postfiks), oldin ham (++x, prefiks) yozish mumkin. Alohida qatorda turganda farqi yo'q — ikkalasi ham x ni 1 ga oshiradi.

Farq faqat bitta holatda chiqadi: natija shu zahoti ishlatilsa, masalan boshqa o'zgaruvchiga yozilsa.

js
let a = 5;
const b = a++;

console.log(a); // 6
console.log(b); // 5

a++ — "avval eski qiymatni ber, keyin oshir". b ga eski qiymat 5 yozildi, shundan keyin a 6 ga oshdi.

js
let a = 5;
const c = ++a;

console.log(a); // 6
console.log(c); // 6

++a — "avval oshir, keyin yangi qiymatni ber". a 6 ga oshdi va c ga yangi qiymat 6 yozildi.

Yozuv Nima qaytaradi x o'zi
x++ eski qiymat 1 ga oshadi
++x yangi qiymat 1 ga oshadi

Eslab qolish usuli: ++ qaysi tomonda tursa, o'sha tartibda ishlaydi. Oldinda (++x) — avval oshiradi. Orqada (x++) — oshirishni oxiriga qoldiradi.

Maslahat: Professional dasturchilar ++ ni odatda alohida qatorda ishlatadi: navbat++;. Uni boshqa ifoda ichiga qo'shish (const b = a++ + ++a;) kodni chalkash qiladi. Ba'zi jamoalar ++ o'rniga faqat x += 1 yozadi — ma'nosi aniqroq.

Tekshirib ko'ring: let x = 10; const y = x--; dan keyin x va y nechaga teng?

Javob

x — 9, y — 10. x-- postfiks: avval eski qiymat (10) y ga berildi, keyin x bittaga kamaydi.

11. Ko'p uchraydigan xatolar

11.1 const o'zgaruvchini o'zgartirish

js
const likelar = 10;
likelar++;
text
TypeError: Assignment to constant variable.

Tarjimasi: "O'zgarmas o'zgaruvchiga qiymat tayinlash". likelar++ aslida likelar = likelar + 1 degani, ya'ni qayta tayinlash. const esa bunga ruxsat bermaydi. +=, -= va boshqalar ham xuddi shu xatoni beradi. Yechim: qiymati o'zgaradigan o'zgaruvchi uchun let ishlating.

11.2 Songa ++ qo'yish

js
5++;
text
SyntaxError: Invalid left-hand side expression in postfix operation

Tarjimasi: "Postfiks amalda chap tomondagi ifoda noto'g'ri". ++ qiymatni o'zgaruvchiga qayta yozadi. 5 esa o'zgaruvchi emas — uni o'zgartirib, qayergadir saqlab bo'lmaydi. ++ va -- faqat o'zgaruvchi bilan ishlaydi.

11.3 Qiymat berilmagan o'zgaruvchiga qo'shish

js
let jami;
jami += 1000;

console.log(jami); // NaN

Xato chiqmaydi, lekin natija — NaN. jami ga boshlang'ich qiymat berilmagan, u undefined. undefined + 1000 esa son emas. Yechim: hisoblagichni doim boshlang'ich qiymat bilan e'lon qiling — let jami = 0;.

11.4 Satrni qo'shib yuborish

Raqamlar yopishib qolsa ("20001000"), qiymatlardan biri satr bo'lishi mumkin — typeof bilan tekshiring.

11.5 % ni foiz deb o'ylash

200 % 10 — 10 foiz emas, qoldiq (0). Foiz uchun: 200 * 10 / 100 = 20.

12. Mashqlar

1-mashq (oson): Bozor savati

Malika bozordan 2 kg olma (kilosi 12 000 so'm) va 3 ta non (donasi 4 000 so'm) oldi. Umumiy summani hisoblab, konsolga chiqaring. Har bir narsani alohida const o'zgaruvchiga yozing.

Yechim
js
const olmaNarxi = 12000;
const olmaKg = 2;
const nonNarxi = 4000;
const nonSoni = 3;

const jami = olmaNarxi * olmaKg + nonNarxi * nonSoni;

console.log(jami); // 36000

Ko'paytirishlar avval bajariladi: 24000 + 12000 = 36000. Qavs shart emas.

2-mashq (o'rta): Bo'sh joylarni to'ldiring

Quyidagi kod ishga tushsa, konsolda nima chiqishini to'ldiring:

js
let sanoq = 7;
sanoq += 3;
console.log(sanoq);
sanoq %= 4;
console.log(sanoq);
console.log(sanoq ** 3);
console.log("3" + sanoq);
  • Birinchi chiqish:
  • Ikkinchi chiqish:
  • Uchinchi chiqish:
  • To'rtinchi chiqish:
Yechim
js
let sanoq = 7;
sanoq += 3;
console.log(sanoq); // 10
sanoq %= 4;
console.log(sanoq); // 2
console.log(sanoq ** 3); // 8
console.log("3" + sanoq); // 32
  • 7 + 3 = 10.
  • 10 % 4 = 2 (4 ikki marta sig'adi — 8, qoldiq 2).
  • 2 ** 3 = 8.
  • "3" + 2 — satr va son, + ularni yopishtiradi: "32". Bu 32 soni emas, satr.

3-mashq (qiyin): Taksi hisobi

Taksi narxi quyidagicha:

  • O'tirish — 5 000 so'm.
  • Har bir kilometr — 2 500 so'm.
  • Kutish — har daqiqasi 500 so'm.

Jasur 7 km yurdi va 4 daqiqa kutdi.

  1. Umumiy narxni hisoblang.
  2. Jasur 3 do'sti bilan (jami 4 kishi) narxni teng bo'lmoqchi. Har biriga qancha tushadi?
  3. Jasurda faqat 5 000 so'mlik kupyuralar bor. Umumiy narxni to'lash uchun 5 000 so'mlik kupyuralardan nechtasini bera oladi va qancha qoldiq so'm mayda pul bilan to'lanadi? (% va 3.3 bo'limdagi soat hisobini eslang.)
Yechim
js
const otirish = 5000;
const kmNarxi = 2500;
const daqiqaNarxi = 500;

const km = 7;
const kutishDaqiqa = 4;

let narx = otirish;
narx += km * kmNarxi;
narx += kutishDaqiqa * daqiqaNarxi;

console.log("Umumiy narx:", narx);
console.log("Har biriga:", narx / 4);

const mayda = narx % 5000;
const kupyuralar = (narx - mayda) / 5000;

console.log("5 000 lik kupyura:", kupyuralar);
console.log("Mayda pul:", mayda);

Konsolda:

text
Umumiy narx: 24500
Har biriga: 6125
5 000 lik kupyura: 4
Mayda pul: 4500
  • Narx: 5000 + 17500 + 2000 = 24500. += bilan bosqichma-bosqich qo'shdik — har qadam aniq ko'rinadi.
  • 24500 / 4 = 6125 so'm har biriga.
  • 24500 % 5000 = 4500 — kupyuralarga sig'magan qism. Qolgan 20000 ni 5000 ga bo'lsak — 4 ta kupyura.

13. Real ishda

Arifmetik operatorlar har qanday dasturda bor:

  • Internet-do'kon: savat narxi, chegirma, yetkazib berish narxi — *, +, -.
  • Sahifalash (pagination): 95 ta mahsulotni sahifasiga 10 tadan ko'rsatsangiz, oxirgi sahifada 95 % 10 = 5 ta qoladi.
  • Jadval ranglari: juft qatorlarni bir rangda, toqlarini boshqa rangda bo'yash — % 2.
  • Hisoblagichlar: "like", ko'rishlar soni, savatdagi mahsulot soni — ++ va +=.

Intervyuda boshlang'ich dasturchiga ko'pincha shunday savollar beriladi: ""5" + 2 va "5" - 2 natijasi?", "x++ va ++x farqi?", "0.1 + 0.2 nega 0.3 emas?", "Sonning juftligini qanday tekshirasiz?". Mashhur FizzBuzz masalasi ham % operatoriga asoslangan — shart va sikllarni o'rgangach, uni o'zingiz yecha olasiz.

Xulosa

  • Arifmetik operatorlar: +, -, *, /, % (qoldiq), ** (daraja).
  • % — foiz emas, qoldiq. son % 2 natijasi 0 bo'lsa — juft. Natija ishorasi chap operandga ergashadi.
  • Amallar tartibi: qavs → ** → * / % → + - → tayinlash. Shubhada qavs qo'ying.
  • + satrni ko'rsa, yopishtiradi: "5" + 2 = "52". Boshqa operatorlar satrni songa aylantiradi.
  • Nolga bo'lish xato bermaydi: Infinity yoki NaN qaytaradi.
  • x += 5 — x = x + 5. x++ eski qiymatni, ++x yangisini qaytaradi.

Keyingi dars: Taqqoslash operatorlari — >, <, >=, <= bilan qiymatlarni solishtirish va nega "10" < "9" natijasi true ekanini o'rganamiz.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
JavaScript arifmetik operatorlari: +, -, , /, %, va tayinlash — IlmHamroh