2-DARSI CHORAK

Sonli qiymatlar va arifmetik amallar

Taqdimot slaydlari

DARSVEB-02

I chorak · Veb dasturlash

Sonlar va amallar

Kompyuter endi hisoblay boshlaydi

LETAMALLARPROMPT
SLAYD · 01 / 1502 dars
01 / 15

Dars qo'llanmasi

Nima o'rganamiz

Ushbu darsdan keyin siz:

  • son yoki matnni o'zgaruvchida saqlab, keyin uni nomi bilan ishlata olasiz;
  • beshta arifmetik amalni (+, -, *, /, %) qo'llay olasiz va qaysi amal birinchi bajarilishini bilasiz;
  • prompt bilan foydalanuvchidan son so'rab, javobni Number() yordamida songa aylantira olasiz.

O'tgan darsda biz faqat tayyor sonlarni chiqardik: 7 * 8 yozsak, 56 chiqardi. Bu darsdan keyin dasturingiz o'zi hisoblaydi va foydalanuvchi bergan songa qarab boshqacha javob beradi.

Har bo'limda avval o'zingiz qilib ko'rasiz, keyin nima bo'lganini sxemada ko'rasiz, oxirida qoidasini o'qiysiz.

Kerakli narsalar

Nima Izoh
Brauzer Chrome yoki Edge — konsol uchun
Matn muharriri VS Code yoki Bloknot
O'tgan darsdagi papka birinchi-sahifa ichida birinchi.html va kod.js

O'tgan darsdagi ikkita fayl yo'q bo'lsa, xavotir olmang: 3-bo'limda ular to'liq qayta beriladi, nusxa olib ishlatasiz.

Bu darsda hech qanday yangi dastur o'rnatilmaydi.


1. O'zgaruvchi va qiymat

Avval qilib ko'ring

  1. Brauzerda istalgan sahifani oching va F12 bilan konsolni oching.

  2. Console yorlig'ida quyidagini yozib Enter bosing:

    JavaScript
    let narx = 12000;
    
  3. Konsol javob o'rniga undefined deb yozadi — bu xato emas, pastda tushuntiramiz. Endi shunchaki nomni yozing va Enter bosing:

    JavaScript
    narx
    
  4. Endi shu nom bilan hisoblang:

    JavaScript
    console.log(narx * 3);
    

Skrinshot kutilmoqdaKonsolda o'zgaruvchi yaratish va ishlatish

Tekshirib ko'ring: uchinchi qadamda 12000, to'rtinchisida 36000 chiqdi. Demak narx degan nom haqiqatan 12000 sonini eslab qolgan.

Nega undefined chiqdi? Konsol har bir qatordan keyin "bu qator qanday qiymat berdi?" deb yozadi. let narx = 12000; — bu buyruq qiymat bermaydi, u faqat qiymatni saqlaydi. Shuning uchun konsol "qiymat yo'q" degan ma'noda undefined yozadi. Saqlash esa amalga oshgan — buni keyingi qatorda ko'rdingiz.

Nima bo'ldi

O'zgaruvchi — nomi yozilgan quti

O'zgaruvchini nomi yozilgan quti deb tasavvur qiling. let narx = 12000; qatori ikki ish qiladi:

  1. narx degan yorliqli bo'sh quti yasaydi;
  2. uning ichiga 12000 sonini qo'yadi.

Shundan keyin kodning istalgan joyida narx deb yozsangiz, brauzer qutini ochib ichidagi sonni oladi. Ya'ni narx * 3 aslida 12000 * 3 bo'lib bajariladi.

Qiymatni almashtirsangiz — narx = 15000; — quti o'zi o'sha quti bo'lib qolaveradi, faqat ichidagi son almashadi. Eski qiymat hech qayerda saqlanmaydi, u butunlay yo'qoladi. Kerak bo'lsa, uni oldindan boshqa qutiga ko'chirib qo'yish kerak.

Qoida

O'zgaruvchi ikki so'z bilan e'lon qilinadi:

JavaScript
let narx = 12000;
const soliq = 12;
Bo'lak Vazifasi
let "yangi quti yasa" degan so'z
narx qutining nomi — o'zingiz o'ylab topasiz
= "ichiga shuni qo'y" degan belgi, tenglik emas
12000 qutiga qo'yiladigan qiymat
; buyruq shu yerda tugadi

= belgisi tenglik emas. Matematikada x = 5 — "x bilan 5 teng" degani. JavaScriptda esa x = 5 — "5 ni x qutisiga qo'y" degan buyruq. Shuning uchun narx = narx + 1000 degan qator mantiqsiz emas: o'ng tomon avval hisoblanadi (13000), keyin natija yana narx qutisiga qo'yiladi.

let faqat bir marta yoziladi. Qiymatni almashtirganda let takrorlanmaydi:

JavaScript
let narx = 12000;   // yaratildi
narx = 15000;       // almashtirildi — let YO'Q

Ikkinchi marta let narx deb yozsangiz, brauzer SyntaxError: Identifier 'narx' has already been declared deb xato beradi — "bunday nomli quti allaqachon bor" degani.

Konsol bu qoidani yumshatadi. Chrome va Edge konsolida let narx ni ikki marta yozsangiz xato chiqmaydi — konsol mashq maydoni bo'lgani uchun oxirgi qiymatni qabul qilaveradi. Xato kod.js kabi fayllarda ko'rinadi. Shuning uchun bu qoidani konsolda emas, fayl ustida sinang.

const — o'zgarmaydigan quti. Qiymat butun dastur davomida bir xil qoladigan bo'lsa (soliq foizi, sinfdagi o'quvchilar soni), let o'rniga const yoziladi:

JavaScript
const soliq = 12;
soliq = 15;   // TypeError: Assignment to constant variable.

Bu — himoya chorasi. Qiymat adashib almashib ketmasligi kerak bo'lsa, const yozing; keyinchalik o'zgarishi aniq bo'lsa — let.

Nom qanday tanlanadi. Qoidalar qat'iy:

Qoida To'g'ri Xato
Harf bilan boshlanadi narx2 2narx
Bo'sh joy bo'lmaydi jamiNarx jami narx
Katta-kichik harf farqlanadi narx va Narx — ikki xil quti
Apostrof bo'lmaydi narxi narx'
Band so'zlar ishlatilmaydi qiymat let, const, class

Kirill harflari bilan yozilgan nom (сони) aslida ishlaydi — brauzer uni qabul qiladi va xato bermaydi. Shunga qaramay biz faqat lotin harflaridan foydalanamiz: kod yozayotganda klaviatura tilini almashtirib o'tirish ishni sekinlashtiradi. Apostrof esa haqiqatan xato — narx' deb yozsangiz SyntaxError chiqadi.

Ikki so'zli nom kerak bo'lsa, ikkinchi so'z katta harf bilan boshlanadi: jamiNarx, birNarx, qutiSoni. Bu — JavaScriptda qabul qilingan yozuv usuli, uni camelCase deb atashadi.

Nomni mazmunli tanlang. a, b, x1 degan nomlar bugun tushunarli, bir haftadan keyin esa nima saqlanayotgani esdan chiqadi. narx, soni, jami — kod o'zini o'zi tushuntiradi.


2. Arifmetik amallar

Avval qilib ko'ring

  1. Sahifani F5 bilan yangilang — eski o'zgaruvchilar o'chadi va toza boshlaymiz. Ikkita o'zgaruvchi yarating:

    JavaScript
    let narx = 12000;
    let soni = 7;
    
  2. Endi to'rtta qatorni birin-ketin yozing:

    JavaScript
    console.log(narx * soni);
    console.log(narx + 2000);
    console.log(soni / 2);
    console.log(soni % 3);
    

Skrinshot kutilmoqdaKonsolda arifmetik amallar natijasi

Tekshirib ko'ring: 84000, 14000, 3.5 va 1 chiqdi. Uchinchi javob butun son emas — bu normal. To'rtinchisi esa 7 ni 3 ga bo'lgandagi qoldiq: 7 = 3 + 3 + 1, ortib qolgani 1.

Nima bo'ldi

Amallar tartibi: avval ko'paytirish, keyin qo'shish

Brauzer ifodani chapdan o'ngga o'qiydi, lekin hammasini navbati bilan bajarmaydi — avval kuchliroq amallarni tanlab oladi.

2 + 3 * 4 ifodasida:

  1. avval 3 * 4 hisoblanadi → 12;
  2. keyin 2 + 12 hisoblanadi → 14.

Javob 20 emas, 14. Xuddi matematikadagi kabi: ko'paytirish qo'shishdan kuchli.

Qavs bu tartibni buzadi: (2 + 3) * 4 da avval qavs ichi hisoblanadi (5), keyin ko'paytiriladi (20).

Qoida

Beshta amal bor:

Amal Nomi Misol Natija
+ qo'shish 12000 + 2000 14000
- ayirish 12000 - 2000 10000
* ko'paytirish 12000 * 7 84000
/ bo'lish 7 / 2 3.5
% qoldiq 7 % 3 1

/ har doim aniq javob beradi. Ba'zi tillarda 7 / 2 butun son (3) chiqadi, JavaScriptda esa 3.5. Kasr qismi vergul bilan emas, nuqta bilan yoziladi: 3.5, 0.25. Vergul qo'ysangiz brauzer uni ikkita alohida son deb o'qiydi.

% — bo'lishdan qolgan qoldiq. Nomi foizga o'xshaydi, lekin foizga hech qanday aloqasi yo'q:

Ifoda Ma'nosi Natija
24 % 5 24 ta narsa 5 tadan qutiga joylandi 4 ortdi
20 % 5 20 ta narsa 5 tadan qutiga joylandi 0 — hammasi sig'di
7 % 3 7 ni 3 ga bo'lgandagi qoldiq 1

Qoldiq nolga teng bo'lsa — son butunlay bo'linadi. Bu keyinchalik juft va toq sonlarni ajratishda asosiy usul bo'ladi.

Amallar tartibi — ikki daraja:

Navbat Amallar
Birinchi * / %
Ikkinchi + -

Bir darajadagi amallar chapdan o'ngga bajariladi. Qavs esa hammasidan kuchli: qavs ichidagisi doim birinchi hisoblanadi.

Amalda bu shunday ko'rinadi:

JavaScript
let narx = 12000;
let soni = 7;

console.log(narx + 2000 * soni);     // 26000
console.log((narx + 2000) * soni);   // 98000

Birinchi qatorda 2000 * 7 = 14000 hisoblanib, ustiga 12000 qo'shildi. Ikkinchisida esa narx avval 14000 ga ko'tarildi, keyin 7 ga ko'paytirildi. Ikkinchisi to'g'ri javob — har bir daftarga ustama qo'shilishi kerak edi. Bitta juft qavs javobni 72 000 so'mga o'zgartirdi.

Shuning uchun qoida oddiy: shubha bo'lsa — qavs qo'ying. Ortiqcha qavs xato emas, u faqat niyatingizni ochiq ko'rsatadi.

E'tibor bering: kasr sonlarda kichik xatolik bo'ladi. Konsolda 0.1 + 0.2 ni yozib ko'ring — javob 0.3 emas, 0.30000000000000004 chiqadi. Sabab: kompyuter sonlarni ikkilik sanoq sistemasida saqlaydi va 0.1 u yerda aniq ifodalanmaydi. Bu xato emas, hamma dasturlash tillarida shunday. Pul hisobida shuning uchun so'mni butun son sifatida saqlash qulayroq. Kasrni chiroyli ko'rsatish usulini 12-darsda o'rganamiz.


3. prompt bilan son olish

Hozirgacha sonlarni biz yozdik. Endi ularni dastur ishlab turgan paytda foydalanuvchidan so'raymiz.

Avval qilib ko'ring

O'tgan darsdagi papkani oching. Fayllar yo'q bo'lsa, hisob degan yangi papka yarating va ikkita fayl yasang.

hisob.html:

HTML
<!DOCTYPE html>
<html lang="uz">
  <head>
    <meta charset="UTF-8">
    <title>Hisob-kitob</title>
  </head>
  <body>
    <h1>Kalkulyator</h1>
    <script src="kod.js"></script>
  </body>
</html>

kod.js — xuddi shu papkada:

JavaScript
let a = Number(prompt("Birinchi sonni kiriting:"));
let b = Number(prompt("Ikkinchi sonni kiriting:"));

alert("Yig'indisi: " + (a + b));

Endi hisob.html ni brauzerda oching.

Skrinshot kutilmoqdaSahifa ochilganda chiqqan prompt oynasi

Tekshirib ko'ring: ketma-ket ikkita savol oynasi chiqdi. 5 va 3 kiriting — oxirida Yig'indisi: 8 yozuvli oyna paydo bo'ladi.

Kodni o'zgartirsangiz, sahifani F5 bilan yangilashni unutmang — aks holda eski natijani ko'rasiz.

Nima bo'ldi

prompt matn qaytaradi, Number uni songa aylantiradi

prompt oynasi nimani qaytarishini bilish muhim: u har doim matn qaytaradi, siz raqam yozgan bo'lsangiz ham. 5 deb yozsangiz, u "5" — ya'ni ichida 5 raqami turgan matn.

Matn bilan qo'shish amali boshqacha ishlaydi. + belgisi ikki tomonda matn ko'rsa, ularni qo'shmaydi, bir-biriga ulaydi:

Ifoda Natija Nega
5 + 3 8 ikkalasi ham son
"5" + "3" "53" ikkalasi ham matn — ulandi
Number("5") + Number("3") 8 matn songa aylantirildi

Shuning uchun Number() yozamiz: u matn ichidagi raqamni haqiqiy songa aylantiradi. Bir marta aylantirilgandan keyin barcha amallar odatdagidek ishlaydi.

Buni o'zingiz ko'ring: kod.js dagi ikkala Number( va yopuvchi qavsni olib tashlang, sahifani yangilab yana 5 va 3 kiriting. Natija 8 emas, 53 chiqadi.

Qoida

JavaScript
let a = Number(prompt("Birinchi sonni kiriting:"));

Bu qatorni ichkaridan tashqariga qarab o'qing:

Bo'lak Nima qiladi
prompt("...") oyna chiqaradi, yozilgan javobni matn ko'rinishida qaytaradi
Number(...) matnni songa aylantiradi
let a = natijani a qutisiga qo'yadi

Qavslar ichma-ich yoziladi. Number(prompt("...")) da ikkita yopuvchi qavs bor va ularning tartibi muhim. Ochilgan har bir qavs yopilishi kerak — VS Code buni rang bilan ko'rsatadi.

alert ichida matn va sonni birga chiqarish. Natijani izohi bilan ko'rsatmoqchi bo'lsangiz, matnni + bilan ulaysiz — lekin sonlarni oldin qavs ichida hisoblab olish kerak:

JavaScript
alert("Yig'indisi: " + (a + b));   // Yig'indisi: 8
alert("Yig'indisi: " + a + b);     // Yig'indisi: 53

Ikkinchi qatorda qavs yo'q, shuning uchun + chapdan o'ngga ishlaydi: avval "Yig'indisi: " matniga 5 ulanadi, keyin natijaga 3 ulanadi. Bu — 2-bo'limdagi amallar tartibi qoidasining aynan o'zi, faqat bu safar matn ustida.

Foydalanuvchi son yozmasa nima bo'ladi? Number("salom") natijasi NaN bo'ladi — Not a Number, "son emas" degani. Undan keyingi barcha hisoblar ham NaN chiqadi. Foydalanuvchi Bekor qilish (Cancel) tugmasini bossa, prompt null qaytaradi va Number(null) 0 beradi. Bunday holatlarni tekshirishni 4-darsda, shart operatorlarida o'rganamiz.

prompt qayerda ishlaydi. U faqat brauzerda ochilgan sahifada ishlaydi. Ketma-ket ko'p oyna chiqarsangiz, Chrome "Bu sahifa boshqa oyna chiqarmasin" degan katakcha ko'rsatadi — uni belgilab qo'ysangiz, prompt boshqa chiqmaydi. Tuzatish uchun sahifani yopib qaytadan oching.


Tez-tez uchraydigan xatolar

Xato Nima ko'rinadi Sabab Yechim
let ikki marta Identifier 'narx' has already been declared faylda bitta nom ikki marta e'lon qilingan ikkinchi qatordan let ni olib tashlang
const ga qayta yozish Assignment to constant variable const qiymati o'zgartirilmoqchi let bilan e'lon qiling
Nom noto'g'ri yozilgan narx is not defined Narx, narxx yoki hali yaratilmagan nomni harfma-harf solishtiring
Qo'shish o'rniga ulash 53 chiqadi, 8 emas Number() yozilmagan Number(prompt(...))
Kasr vergul bilan kutilmagan natija 3,5 deb yozilgan nuqta ishlating: 3.5
Kasrda uzun dum 0.30000000000000004 ikkilik sanoq sistemasi xato emas, hozircha e'tibor bermang
Qavs unutilgan ustama noto'g'ri hisoblanadi narx + 2000 * soni (narx + 2000) * soni
Matn son bilan ulanib ketdi Yig'indisi: 53 "matn" + a + b "matn" + (a + b)
Son o'rniga matn kiritilgan NaN Number("salom") raqam kiriting
Oyna chiqmay qoldi prompt ishlamaydi "boshqa oyna chiqarmasin" belgilangan sahifani yopib qaytadan oching
Kod o'zgardi, natija eski eski javob chiqaveradi sahifa yangilanmagan F5 bosing

Qisqacha

  • let nom = qiymat; — nomi bor qutiga qiymat qo'yadi
  • = tenglik emas, "ichiga qo'y" degan buyruq
  • Qiymatni almashtirganda let takrorlanmaydi
  • const — o'zgarmaydigan qiymat uchun
  • Nom harf bilan boshlanadi, bo'sh joysiz, camelCase: jamiNarx
  • Beshta amal: + - * / %
  • * / % — birinchi, + - — ikkinchi, qavs hammasidan kuchli
  • / kasr javob beradi (7 / 23.5), kasr nuqta bilan
  • % — bo'lishdan qolgan qoldiq, foiz emas
  • prompt har doim matn qaytaradi
  • Number() matnni songa aylantiradi — bo'lmasa "5" + "3""53"
  • Matn bilan sonni birga chiqarganda natijani qavsga oling

Uy vazifasi

Bu darsda ikki topshiriq bor, ikkalasi ham shu qo'llanmadagi materialdan chiqadi:

  1. Konsolda hisob (≈12 daqiqa) — 1 va 2-bo'lim: konsolda let bilan o'zgaruvchi yaratish, jami summani va qavsli ustama hisobini chiqarish, % bilan qoldiqni topish.
  2. Ishlaydigan kalkulyator (≈18 daqiqa) — 3-bo'lim: prompt bilan ikkita son so'rab, sizga tegishli amalni qo'llash.

Topshiriq matni shu sahifaning pastida — jurnaldagi raqamingizni tanlaganingizdan keyin chiqadi. Har kimda o'z buyumi, o'z narxi va o'z amali bo'ladi.

Skrinshot qanday olinadi? Win + Shift + S bosing, kerakli qismni belgilang, so'ng Word yoki Paint'ga Ctrl + V bilan qo'ying. Kod skrinshotida fayl nomi ham ko'rinib tursin.

Ikkinchi topshiriqda qavslarni sanang: Number(prompt("...")) da ikkita qavs ochiladi va ikkalasi ham yopilishi kerak. Eng ko'p vaqt aynan shu yerda yo'qoladi.

Keyingi darsda

Endi sonlar bilan ishlay olamiz, lekin matn hali "shunchaki matn": uni birlashtirishdan boshqa hech narsa qila olmaymiz. Ism kiritilganda uning uzunligini bilish, harflarni katta qilish, matn ichidan bo'lak ajratib olish — bularning hech biri hozircha qo'limizdan kelmaydi.

Keyingi darsda satrli qiymatlar bilan tanishamiz: matn ustida qanday amallar borligini va bugun ko'rgan "5" + "3" hodisasining to'liq sababini ko'ramiz.

Shaxsiy uy vazifasi

2 topshiriq · ≈30 daqiqa

Ro'yxatdagi tartib raqamingizni tanlang — shaxsiy topshiriq shu yerda chiqadi. Bir marta tanlaysiz, brauzer eslab qoladi.