Matematik operatorlar
Arduinoda arifmetik operatorlarni bajarish uchun ifodada bevosita sonlarning o’zini qo’llash yoki oldin ularni o’zgaruvchiga o’zlashtirilib, so’ng ular ustida operatorlarni bajarish mumkin. Muhimi, o’zgaruvchilarning qiymat turini (qiymat qabul qilish sohasini) oldindan aniq belgilab olish zarur. Masalan, int turidagi o’zgaruvchi faqat -32 768… 32 767 oralig’ida, unsigned int turidagi o’zgaruvchi faqat 0 … 65 535 oralig’ida butun sonli qiymat qabul qila oladi. Undan kattaroq butun sonlar bilan ishlash uchun long (-2 147 483 648 … 2 147 483 647), unsigned long (0 … 4 294 967 295) kabi qiymat turlarini tanlash mumkin.
Kasr sonlar bilan ishlashda esa, float qiymat turidan foydalaniladi. Biroq yuqori aniqlik yoki tezlik talab etilgan vaziyatlarda undan foydalanish tavsiya etilmaydi. Chunki, mazkur qiymat turi bilan bog’liq hisoblashlarda natija aniqligi 7-8 xonadan oshmaydi, hisoblash nisbatan sekin (butun sonlarga nisbatan 7-10 baravar sekinroq) bajarilishi esa, mikrokontroller ishlashi va qurilma ishining umumiy samaradorligiga salbiy ta’sir o’tkazishi mumkin. Shuning uchun, uning o’rniga hisoblashni butun sonlarda bajarib, keyin kerakli aniqlikka erishish uchun 10 ning darajalariga bo’lish mumkin: 42949,67 = 4294967/100.
Arifmetik operatorlar:
- + qo’shish (a + b)
- – ayirish (a – b)
- * ko’paytirish (a * b)
- / bo’lish (a / b)
- % bo’linmaning qoldig’i (a % b)
- = o’zlashtirish operatori (a = b)
- += qo’shma yig’indi (o’zgaruvchi qiymatiga yangi qiymat qo’shish: a += 10 bilan a = a + 10 bir xil)
- -= qo’shma ayirma (o’zgaruvchi qiymatidan yangi qiymatni ayirish: a -= 10 bilan a = a – 10 bir xil)
- *= qo’shma ko’paytma (o’zgaruvchi qiymatiga yangi qiymatni ko’paytirish: a *= 10 bilan a = a * 10 bir xil)
- /= qo’shma bo’linma (o’zgaruvchi qiymatini yangi qiymatga bo’lish: a /= 10 bilan a = a / 10 bir xil)
- %= qo’shma qoldiq (o’zgaruvchi qiymatini yangi qiymatga bo’lish qoldig’i: a %= 10 bilan a = a % 10 bir xil)
- ++ inkrement (o’zgaruvchi qiymatiga 1 ni qo’shish: a++ bilan a = a + 1 bir xil). O’zgaruvchi nomi operatorning qaysi tomonida ko’rsatilganidan kelib chiqib 2 xil turi mavjud: pre-inkrement (a++) va post-inkrement (++a). Quyiroqdagi misollarga qarang.
- – – dekrement (o’zgaruvchi qiymatidan 1 ni ayirish: a- – bilan a = a – 1 bir xil). O’zgaruvchi nomi operatorning qaysi tomonidaligidan kelib chiqib 2 xil turi mavjud: pre-dekrement (a- -) va post-dekrement (- -a). Quyiroqdagi misollarga qarang.
Arifmetik operatorlarni misollarda ko’rib chiqamiz va hisoblash natijalarini port monitorida kuzatamiz:
Boshqa matematik (trigonometrik) operatorlar Arduinoda kamdan-kam qo’llaniladi. Shuning uchun ular haqidagi ma’lumotlarni biz keltirmaymiz.
Taqqoslash (solishtirish) operatorlari
Arduinoda taqqoslash operatorlari (operatorlari) 2 ta va undan ortiq qiymatlarni yoki operatorlarni o’zaro solishtirish uchun ishlatiladi. Shuningdek, amaliyotda qurilmaga ulangan datchiklar ko’rsatkichlariga ko’ra, tashqi yuklamani boshqarishda katta rol o’ynaydi. Masalan, yorug’lik darajasi o’zgarishiga qarab, chiroqni yoqib-o’chirish yoki ob-havo darajasiga qarab konditsioner yoki isitish vositalarini boshqarish, shuningdek, obyektdagi ogohlantirish datchiklari (masalan, tovush, harakat, temperatura va boshqa datchiklar ko’rsatkichlaridagi o’zgarishlar) holati haqida egasini ogohlantiruvchi signallarni yuborish kabi jarayonlarini avtomatlashtirish mumkin.
Arduinoda quyidagi taqqoslash operatorlari qo’llaniladi:
- == teng (a == b)
- != teng emas (a != b. Ushbu amal a=!b amali bilan har doim ham bir xil natija bermaydi!)
- > katta (a > b)
- < kichik (a < b)
- >= katta yoki teng (a >= b)
- <= kichik yoki teng (a <= b)
Taqqoslash operatori natijasi true yoki 1 (shart bajarilganda), false yoki 0 (shart bajarilmaganda) qiymatlariga teng bo’lishi mumkin.
Taqqoslash operatorlari ko’proq if/else shartli operatori tarkibida qo’llaniladi (masalan, if(a > b) {…}, if(a != b){…}else{…} kabi).
Misollar:
Mantiqiy operatorlar
Arduinoda mantiqiy operatorlar quyidagicha ifodalanadi:
- && mantiqiy “VA” operatori
- || mantiqiy “YOKI” operatori
- ! (not) mantiqiy “EMAS” (inkor qilish) operatori
Mantiqiy operatorlar ko’pincha bir nechta taqqoslash operatorlarini birlashtirish maqsadida qo’llaniladi.
Shartli operatorlar
Shartli operator deganda, ma’lum bir kodning muayyan shart bajarilganda (yoki bajarilmaganda) bajarilishini ta’minlaydigan operatorga aytiladi. Arduinoda bir nechta shartli operator turlaridan keng foydalaniladi:
- if/else/else if shartli operatori
- ? uchlik shartli operatori (“тернарный оператор”)
- switch/case (tanlash) shartli operatori
Arduinoda shartli operatorlar o’zgaruvchilarni, ifodalarni, qiymatlarni taqqoslash maqsadida foydalaniladi, shuningdek ular shartni belgilash qismida mantiqiy operatorlar bilan ham birgalikda qo’llaniladi.
if/else if/else shartli operatori – shart yoki solishtirish asosida amallarni bajarish operatori. Sintaksisi:
if(<shart>) {<shart bajarilgandagi kod>} else if {2-shart bajarilgandagi kod} … else {hech qaysi shart bajarilmagandagi kod}
Agar shartdan keyin faqat 1 ta amal bajarilsa, {} belgilaridan foydalanish shart emas.
? (“тернарный оператор”) uchlik shartli operatorining (if/else operatorining qisqartirilgan ko’rinishi) sintaksisi:
(shart) ? <u holda> : <aksincha>
switch/case – tanlashga asoslangan shartli operator. Sintaksisi:
switch (<o’zgaruvchi>){
case <1-qiymat>: <1-kod>
break;
case <2-qiymat>: <2-kod>
break;
default: <3-kod>
break;
}
// default – qo’llanishi majburiy emas bo’lgan buyruq
// break – qo’llanishi majburiy bo’lgan buyruq