Boxodir Xoshimovich Karimov

Robototexnikadan boshlang’ich bilimlar. O’quv qo’llanma


Скачать книгу

yozayotganda shartdan so`ng; qo`yish mumkin emas. Agar shartdan so`ng qo`ysak jarayon shu yerning o`zida to`xtaydi va shartdan keyingi operatorga murojaat qilmaydi.

      Operator-o`ziga yuklangan ma`lum bir shart asosida vazifani bajaruvchi vosita hisoblanadi va u dastur tuzishimizda bir qator qulayliklarga ega hisoblanadi.

      Misol uchun jamiyatimizdagi insonlarni olsak, har bir insonni o`zi bajaradigan vazifasi bo`ladi. O`quvchining vazifasi o`qish bo`lsa, o`qituvchining vazifasi anashu o`quvchilarga bilim berishdan iborat.

      Elektronika sohasida lampochka yoritish vazifasini bajarsa, sim ana shu lampochkani elektr ta`minotiga ulash vazifasini bajaradi.

      4.2.2.O‘zlashtirish operatori – =.

      O«zlashtirish operatori: = belgisidan chap tomonda turgan qiymatni = belgisidan o‘ng tomondagilarni hisoblangan qiymatiga almashtiradi. Masalan, x = a+b; ifodasi. Bu yerda“x»: a va b o‘zgaruvchining qiymatlarini qo‘shishdan hosil bo‘lgan natijani o‘zlashtiradi.

      4.2.3.Tenglashtirish operatori. = =.

      Tenglashtirish operatori== belgisidan o`ng tomonda turgan qiymat bilan chap tomonda turgan son qiymatini solishtirib, tenglashtirib ko`radi. Masalan, y==a+b; ifoda. Bu yerda «y»: a va b o‘zgaruvchilarnngi qiymatlarini qo‘shishdan hosil bo‘lgan natija bilan o`zining qiymatini tekshiradi. Agar tenglashtirilgan qiymat shartni qanoatlantirsa u holda operatsiyani bajaradi, agar tenglashtirilgan qiymat shartni qanoatlantirmasa shartning ichidan chiqib ketadi.

      Bularga qo`shimcha tarzda <,> katta va kichik belgilaridan foydalanamiz.

      Shart operatorining umumiy ko`rinishi:

      if (shart) {bajariladigan operatsiya 1;}

      else {bajariladigan operatsiya 2;}

      bu yerda else-aks holda.

      Shart 2 hil ko`rinishda boladi: rost (1) va yolg`on (0)

      {bajariladigan operatsiya 1;} – Agar (shart) bajarilsa ya`ni rost (1) qiymatga ega bo`lsa bajarilishi kerak bo`lgan jarayon.

      {bajariladigan operatsiya 2;} – bu jarayon else ya`ni shart bajarilmaganda yoki yolg`on (0) qiymatga ega bo`lganda bajarilishi kerak bo`lgan jarayon.

      Misol: quyidagi keltirgan misolimizga qarang! U yerda aks holda to`p darvozaning yonidan o`tib ketadi deyilgan. Ana shu operatsiya shart operatorining umumiy ko`rinishiga misol bo`lishi mumkin.

      if (to`pni to`g`ri tepsak) {to`p darvozaga borib tushadi;}

      else {to`p darvoza yonidan o`tib ketadi;}

      4.2.4.Arduinoda mantiqiy operatorlar- if va else

      Arduinodagi if operatori shartni tekshiradi, agar u rost bo`lsa, jingalak qavslardagi kod bloki bajariladi. Jingalak qavslar shartli operatordan keyingi kodning faqat bitta qatori bajariladi. Har doim jingalak qavslardan foydalanishni tavsiya qilamiz. Shartlar, shartlar tartibi va Arduino taqqoslash operatorlarini quyidagi misollar bilan ko`rib chiqamiz.

      Arduinoda if shartlari to`g`ri yoki noto`g`riligini tekshirish uchun taqqoslash operatorlari ishlatiladi. Jingalak qavslar mantiqiy ravishda bir nechta qatorlarni bitta blokda guruhlaydi. O`zgaruvchining qiymati berilgan raqamdan katta yoki kichikligini tekshiradigan dastur:

      if (qiymat> 500) {digitalWrite (8, HIGH); digitalWrite (7, LOW);}

      if (qiymat <500) {digitalWrite (8, LOW); digitalWrite (7, HIGH);}

      If va else konstruksiyasi bitta if operatoridan ko`ra dasturni yaxshiroq boshqarish imkonini beradi. Bu ifoda to`g`ri bo`lgan holat uchun emas, balki qarama-qarshi holat uchun ham harakatlarni aniqlashga imkon beradi (ifoda qiymati noto`g`ri bo`lsa ham).

      Arduinoga fotorezistorni ulashda if else operatoriga misol:

      #define SENSOR A0

      unsigned int qiymat = 0;

      void setup () {

      pinMode (LED, OUTPUT);

      pinMode (SENSOR, INPUT);

      }

      void loop () {

      //A0 analog kirishidagi fotorezistordan qiymatni o`qing

      qiymat = analogRead (SENSOR);

      //Agar A0 kirishidagi qiymat 500 dan kam bo`lsa, svetodiodni yoqing

      if (qiymat <500) {digitalWrite (LED, HIGH);}

      //Aks holda (agar qiymat> 500), svetodiodni o`chiring

      if (qiymat> 500) {digitalWrite (LED, LOW);}

      }

      Arduinoda taqqoslash operatorlari:

      x == y (x y ga teng)

      x!= y (x y ga teng emas)

      x <y (x y dan kichik)

      x> y (x y dan katta)

      x <= y (x y dan kichik yoki teng)

      x> = y (x y dan katta yoki teng)

      Tenglik belgisi `=` va `==` taqqoslash operatorini chalkashtirmang. If operatorida tenglik belgisidan foydalanish dastur (dastur) bajarilganda boshqacha natija berishi mumkin. Masalan, if (y = 100) if (y==100) bilan bir xil emas. Tenglik belgisi – o`zgaruvchining qiymatini 100 ga tekshirish o`rniga, o`zgaruvchining qiymatini 100 ga o`zgartiruvchi tayinlash operatori.

      Bir nechta mantiqiy qiymatlarni bog`lash uchun mantiqiy operatorlar qo`llaniladi:

      !(not) – EMAS, inkor

      && (and) – VA

      || (or) – YOKI

      if (raqam> 500 && qiymat> 500)

      {digitalWrite (7, HIGH); digitalWrite (8, LOW);

      }

      else {digitalWrite (7, LOW); digitalWrite (8, HIGH);}

      Shartlar tartibi

      Kodni optimallashtirish va dastur tezroq yozishga harakat qilishda shartlarning tartibi muhim rol o`ynaydi. Mantiqiy iboralar/qiymatlar chapdan o`ngga qarab tekshiriladi va agar birinchi tekshirishda ifoda noto`g`ri bo`lsa, shartlarni keyingi tekshirish to`xtatiladi. Misol uchun, agar raqam> 500 sharti noto`g`ri bo`lsa, keyingi ifoda qiymat> 500 tekshirilmaydi va amal bajarilmaydi.

      4.2.5.Arduinoda for va while sikllari

      Ushbu bo`limda Arduino IDE da for, while va do while sikllarining qanday ishlashini, dasturlarda to`g`ri foydalanishni va qanday xatolardan qochish kerakligini ko`rib chiqamiz. Oddiy misollar yordamida siklni qanday to`xtatishingiz yoki bir sikldan ikkinchisiga o`tishingiz mumkinligini ko`rsatamiz. Yozish sikllarining to`g`riligini tushunish uchun, avvalo, robototexnikadagi algoritmlarning turlari va xossalarini o`rganish kerak.

      Arduinoda C++dasturlash tilidagi har qanday sikl ko`p yoki chek takrorlanadigan harakatdir. Arduino mikrokontrolleri uchun biron bir dastur looplar ishlay olmaydi, masalan, void loop cheksiklda chaqiriladi. Uch xil sikl operatorlari mavjud: for, while va do while – har bir operatorga to`xtalib o`tamiz, ularning qanday ishlashini misollar bilan ko`rib chiqamiz.

      for va while ishlash prinspini quyidagi oddiy misollar bilan tushuntirish mumkin. for sikli chekli marta bajariladi (operator holatida ko`rsatilgan), u dastur, masalan, svetodiodni bir necha marta miltillashini talab qilganda ishlatiladi. while sikli chek muddatda bajarilishi mumkin, masalan, sensordan olingan ma`lumotlar o`zgarmaguncha Arduinodagi svetodiod yonib-o`chib turadi.

      Arduinoda for operatori quyidagicha yoziladi:

      for (boshlash; shart; o`zgartirish) {

      // takrorlanadigan buyruqlar

      }

      For tsikli jingalak qavslar ichiga olingan ma`lum buyruqlarni takrorlash uchun ishlatiladi. Ushbu sikl har qanday takroriy harakatlarni bajarish uchun javob beradi.

      Initializatsiya o`zgaruvchini yaratadi va boshlang`ich qiymatni belgilaydi. Shartda sikl bajariladigan o`zgaruvchining