Mundarija (44)
- Bu darsda
- 1. Nega bu kerak?
- 2. To'rt asosiy amal
- 2.1 Operator va operand
- 2.2 O'zgaruvchilar bilan hisoblash
- 2.3 Bo'lish har doim ham butun son bermaydi
- 3. Qoldiq operatori %
- 3.1 % nima qiladi?
- 3.2 Juft yoki toq?
- 3.3 Soat va daqiqa
- 3.4 Manfiy sonlar bilan %
- 4. Daraja operatori **
- 4.1 Darajaga ko'tarish
- 4.2 Bir necha ** ketma-ket
- 4.3 Minus va daraja — qavs majburiy
- 5. Unar minus va unar plyus
- 6. Amallar tartibi (ustuvorlik)
- 6.1 Ko'paytirish qo'shishdan oldin
- 6.2 Bir xil darajadagi operatorlar — chapdan o'ngga
- 7. Satr va son: + ning tuzog'i
- 7.1 "5" + 2 = "52"
- 7.2 Tartib ham muhim
- 7.3 Nega bu real muammo?
- 8. Maxsus natijalar: nolga bo'lish va 0.1 + 0.2
- 8.1 Nolga bo'lish — xato emas
- 8.2 0.1 + 0.2 — kichik sir
- 9. Tayinlash operatorlari
- 9.1 = — "teng" emas, "yoz"
- 9.2 Qisqa tayinlash: +=, -= va boshqalar
- 10. ++ va --: bittaga oshirish va kamaytirish
- 10.1 Asosiy ishlatilishi
- 10.2 x++ va ++x — farqi qayerda?
- 11. Ko'p uchraydigan xatolar
- 11.1 const o'zgaruvchini o'zgartirish
- 11.2 Songa ++ qo'yish
- 11.3 Qiymat berilmagan o'zgaruvchiga qo'shish
- 11.4 Satrni qo'shib yuborish
- 11.5 % ni foiz deb o'ylash
- 12. Mashqlar
- 1-mashq (oson): Bozor savati
- 2-mashq (o'rta): Bo'sh joylarni to'ldiring
- 3-mashq (qiyin): Taksi hisobi
- 13. Real ishda
- Xulosa
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— "xga 5 qo'sh" degan qisqa yozuv,x++esaxni bittaga oshiradi. Eng katta tuzoq:"5" + 2natijasi"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++xfarqini tushuntira olasiz."5" + 2, nolga bo'lish va0.1 + 0.2kabi 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 + 3da7va3— operandlar.
Hayotdan o'xshatish: "non kes" gapida "kes" — operator (nima qilinadi), "non" — operand (nimaga qilinadi).
console.log(7 + 3); // 10
console.log(7 - 3); // 4
console.log(7 * 3); // 21
console.log(7 / 2); // 3.5Ko'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:
const nonNarxi = 4000;
const nonSoni = 3;
const jami = nonNarxi * nonSoni;
console.log(jami); // 12000Uchinchi 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:
console.log(7 / 2); // 3.5
console.log(10 / 3); // 3.3333333333333335Oxiridagi 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 / 4nima 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.
console.log(17 % 5); // 2
console.log(20 % 5); // 0
console.log(3 % 5); // 320 % 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:
console.log(10 % 2); // 0
console.log(7 % 2); // 1Qoida:
son % 2natijasi0— son juft.son % 2natijasi0emas — 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?
const daqiqa = 135;
console.log(daqiqa % 60); // 15
console.log((daqiqa - daqiqa % 60) / 60); // 2Qoldiq — 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:
console.log(-7 % 2); // -1
console.log(7 % -2); // 1Buning 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.
console.log(2 ** 3); // 8
console.log(10 ** 6); // 1000000
console.log(9 ** 0.5); // 3
console.log(2 ** -1); // 0.5Oxirgi 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:
console.log(2 ** 3 ** 2); // 512Avval 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
console.log(-2 ** 2);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:
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:
const harorat = 5;
console.log(-harorat); // -5Unar plyus +x — qiymatni songa aylantiradi. Bu satrdan son olishning eng qisqa yo'li:
console.log(+"250"); // 250
console.log(+""); // 0
console.log(+"salom"); // NaN+"250"— satr songa aylandi.+""— bo'sh satr0ga aylanadi. Bu kutilmagan, lekin shunday.+"salom"— son chiqmaydi, natijaNaN("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?
console.log(2 + 3 * 4); // 14
console.log((2 + 3) * 4); // 20Maktabdagidek: 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:
console.log(100 / 10 / 2); // 5
console.log(10 - 2 - 3); // 5
console.log(10 % 3 * 2); // 2100 / 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 * 5000deb 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).
console.log("Salom, " + "Ali"); // Salom, Ali
console.log(5 + 2); // 7
console.log("5" + 2); // 52Uchinchi 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:
console.log("5" - 2); // 3
console.log("5" * "2"); // 10
console.log("abc" * 2); // NaNShuning uchun "5" - 2 = 3, lekin "5" + 2 = "52". Bir qarashda mantiqsiz, lekin qoida bitta: faqat + satrni yaxshi ko'radi.
7.2 Tartib ham muhim
console.log(1 + 2 + "3"); // 33
console.log("1" + 2 + 3); // 123Chapdan o'ngga hisoblanadi, eslang:
1 + 2 + "3": avval1 + 2=3(ikkalasi son). Keyin3 + "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.
const kiritilganSon = "5";
console.log(kiritilganSon + 2); // 52
console.log(+kiritilganSon + 2); // 7Ikkinchi 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" - 3va"10" + 3natijalari 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:
console.log(10 / 0); // Infinity
console.log(-10 / 0); // -Infinity
console.log(0 / 0); // NaN
console.log(10 % 0); // NaNInfinity— "cheksizlik". Musbat sonni nolga bo'lsangiz chiqadi.-Infinity— manfiy cheksizlik.NaN—0 / 0ning 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
console.log(0.1 + 0.2); // 0.30000000000000004Bu 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:
let ball = 10;
ball = ball + 5;
console.log(ball); // 15Ikkinchi 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:
let balans = 50000;
balans += 20000; // hisob to'ldirildi
balans -= 12000; // taksi uchun to'lov
balans *= 2; // aksiya: balans ikki barobar
console.log(balans); // 116000Qadamma-qadam: 50000 → 70000 → 58000 → 116000.
+= satrlar bilan ham ishlaydi — matnni oxiriga qo'shadi:
let xabar = "Salom";
xabar += ", Malika";
xabar += "!";
console.log(xabar); // Salom, Malika!Diqqat:
constbilan e'lon qilingan o'zgaruvchiga+=ishlatib bo'lmaydi.+=ham qayta tayinlash,constesa buni taqiqlaydi. Qiymati o'zgaradigan o'zgaruvchiniletbilan e'lon qiling.
Tekshirib ko'ring:
let narx = 8000; narx *= 3; narx -= 4000;— oxiridanarxnechaga 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:xni 1 ga oshiradi (x += 1bilan bir xil).x--— dekrement:xni 1 ga kamaytiradi (x -= 1bilan bir xil).
let navbat = 1;
navbat++;
navbat++;
console.log(navbat); // 3
navbat--;
console.log(navbat); // 2Bu 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.
let a = 5;
const b = a++;
console.log(a); // 6
console.log(b); // 5a++ — "avval eski qiymatni ber, keyin oshir". b ga eski qiymat 5 yozildi, shundan keyin a 6 ga oshdi.
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 faqatx += 1yozadi — ma'nosi aniqroq.
Tekshirib ko'ring:
let x = 10; const y = x--;dan keyinxvaynechaga 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
const likelar = 10;
likelar++;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
5++;SyntaxError: Invalid left-hand side expression in postfix operationTarjimasi: "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
let jami;
jami += 1000;
console.log(jami); // NaNXato 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
const olmaNarxi = 12000;
const olmaKg = 2;
const nonNarxi = 4000;
const nonSoni = 3;
const jami = olmaNarxi * olmaKg + nonNarxi * nonSoni;
console.log(jami); // 36000Ko'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:
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
let sanoq = 7;
sanoq += 3;
console.log(sanoq); // 10
sanoq %= 4;
console.log(sanoq); // 2
console.log(sanoq ** 3); // 8
console.log("3" + sanoq); // 327 + 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.
- Umumiy narxni hisoblang.
- Jasur 3 do'sti bilan (jami 4 kishi) narxni teng bo'lmoqchi. Har biriga qancha tushadi?
- 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
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:
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=6125so'm har biriga.24500 % 5000=4500— kupyuralarga sig'magan qism. Qolgan20000ni5000ga 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=5ta 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 % 2natijasi0bo'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:
InfinityyokiNaNqaytaradi. x += 5—x = x + 5.x++eski qiymatni,++xyangisini qaytaradi.
Keyingi dars: Taqqoslash operatorlari — >, <, >=, <= bilan qiymatlarni solishtirish va nega "10" < "9" natijasi true ekanini o'rganamiz.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!