Час 7 - Одлучивање¶
На овом часу говорићемо о:
oдлучивање у програму;
блокови одлучивања;
оператори поређења и логички оператори.
Колико се пута сваког дана срећеш са одлукама од којих ти зависи како ћеш провести дан, да ли ћеш да учиш, или ћеш ићи да се играш са својим другарицама и друговима?
Програми у МејкКоду такође могу да донесе одлуке.
Да ли можеш да претпоставиш како се то ради?
До сада, све програме које смо писали, били су линијски програми, тачније програми који се извршавају од првог блока, блок по блок, од почетка до краја.
За разлику од оваквих програма, где се сваки корак, односно свака наредба, извршава само једанпут, у програмима одлучивања, тачније разгранатим (условним) програмима неке наредбе ће се извршити, а неке не, у зависности од испуњености услова (односно донете одлуке).
Да би обезбедили потпуно разумевање условних програма направићемо програм у коме ако је температура у просторији већа од 28 степени микробит ће послати информације другом микробиту да се огласи. Само ако је температура већа од 28 степени, уређај ће послати информацију другом уређају да се огласи. Ако одговор није тачан (ако температура није већа од 28 степени), блокови који обезбеђују слање информације се неће извршити. Дакле, на основу одлуке да ли је “унета” температура већа од 28 степени или не, неки блокови програма ће се извршити, а неки не.
Фаза 1
Разумевање проблема: Помоћу сензора температуре на микробиту очитава се тренутна температура која се упоређује са задатом температуром. Ако је она већа од задате вредности, шаље се информација другом микробиту. Када желимо да успоставимо комуникацију (да искористимо радио комунукацију) између микробитова, сви укључени микробитови морају да припадају истој групи, односно да користе исти ИД групе.
Корак 1: Креира се простор за комуникацију између два микробит уређаја.
Корак 2: „Читање” вредности сензора темепратуре.
Корак 3: Упоређивање вредности сензора са задатом вредношћу (веће од 28).
Корак 4: Ако је услов тачан шаље се инфромација другом микробиту.
Корак 5: Када други микробит прими информацију извршава се блок за репродукцију звука.
Фаза 2
Покрени МејкКод за одабир и слагање блокова у простор за програмирање.
На интернет страници на адреси https://makecode.microbit.org покрени нов пројекат кликом на дугме New Project .
Креирањем ИД групе, у ствари креира се простор у коме ће комуницирати оба микробита.
Да бисмо креирали ИД групу из категорије Radio превлачимо у блок on start блок radio set group … У простор за унос броја или текст уносимо жељени број за ИД групе, који може бити било који број. Ми ћемо оставити да то буде 1. На тај начин смо креирали групу са ИД 1 у којој ће комуницирати оба микробита.
Напомена: Када користимо радио блокове из категорије Radio на симулатору ће бити приказана два микробита.
Баш као и на часу математике, МејкКод омогућава да упоређујемо вредности коришћењем оператора поређења који се налазе у категорији Logic.
Као резултат поређења добијамо вредност тачно или нетачно.
Размисли:
Поређење враћа вредност тачно у случају да је „очитана“ вредност са сензора температуре већа од 28. У свим осталим случајевима враћа нетачно.
У блок forever превлачимо блок if.. then из категорије Logic. У делу за услов треба да превучемо блокове којим се дефинише услов да је температура већа од 28.
У нашем случају услов да је температура већа од 28, дефинишемо блоком . Очитана вредност сензора температуре чува се у блоку температуре (у степенима целзијуса).
Услов из поставке задатка дефинишемо на следећи начин:
Када је услов испуњен, тачније када је очитана температура већа од 28, микробит шаље вредност коришћењем блока радио send number .. из категорије Logic. У поље за број уносимо било коју вредност (нпр. 10). Да би сензор реаговао, тачније детектовао покрете поставићемо да је за то потребан одређени временски период, нека то буде 3 секунде (или 3000 милисекунди). За то ћемо користити блок pause (ms) из категорије Basic. У поље за број уносимо 3000 мс које ће бити време за које сензор одреагује на промену која се десила.
На крају, потребно је испрограмирати други мицро:бит (оглашивач) да када прими информације од микробита се огласи.
Потребно је да Креирамо исту групу са ИД 1.
Микробит треба да прими информацију (у нашем случају број - 10) на основу које ће да „одреагује“ тако што ће се чути звук. За то ћемо из категорије Radio превући блок:
У њега ћемо превући блок if .. then. Превлачимо блок за поређење којим се проверава да ли је примљена вредност (блок receivedNumber) једнака 10.
Ако је примљена вредност једнака 10, услов је испуњен и репродукује се звук. За репродукцију звука превлачимо блок из категорије Misic. Поред овог блока додајемо и временски интервал од једне секунде како би се регистровале све промене које се десе.
Коначан изглед кода:
Фаза 3
Тестирање и анализа програма.
Да бисмо тестирали програм имамо две могућности:
1 да га покренемо у симулатору кликом на дугме .
2 да га пребацимо на микробит. Да бисмо програм пребацили на микробит треба да га прикачимо на рачунар коришћењем USB кабла. Кликом на дугме преузмите .hex фајл на ваш рачунар. Превлачењем фајла на микробит, уређај је спреман за рад.
Промисли:
Проучи још једном горњи пример. Шта ће се десити са програмом, ако би би температура била мања од 26?
Добро би било да наш програм даје повратну информацију и када је температура мања од 28. У том случају можемо да, из категорије Logic, одаберемо блок:
или у блоку if .. then користимо знака где уводимо нову грану (else), у којој ће се извршавати блокови у случају да је температура мања или је 28 степени. Ако је температура мања или једнака од 28 степени приказати тренутну температуру. За приказивање тренутне температуре превлачимо блок show number.. из категорије Basic. У пољу за број превлачимо блок temperature (C).
Тестирај поново програм.
Услови могу бити сложени (настају повезивањем простих услова). За повезивање простих услова користиш логичке операторе (I (енгл. AND), ILI (енгл. OR), NE (енгл. NOT)).
Овакве услове срећеш у свакодневном животу када доносиш одлуку, на пример о поклону који желиш да купиш другарици за рођендан (у зависности од количине новца који имаш, купићеш јој и књигу и/или улазницу за концерт).
У МејкКоду логички оператори су представљени на следећи начин:
Име оператора |
Опис оператора |
---|---|
Повезује два услова, и као резултат враћа Тачно само ако су оба услова Тачна. |
|
Повезује два услова, и као резултат враћа Тачно ако је бар један услов Тачан. |
|
Ставља се испред једног услова, и као резултат враћа Тачно у случају да услов није задовољен. |
Хајде да урадимо још један задачић којим ћемо да омогућимо да се на екрану микробита прикаже број додирнутог пина.
Фаза 1
Разумевање проблема: Стање пина (да ли је он притиснут или не) „чува“ блок који се налази у категорији Input. Вредност коју враћа овај блок је Тачно, ако је пин притиснут, и Нетачно ако пин није притиснут. Програм приказује име пина који је притиснут.
Корак 1. Ако је пин P0 притиснут, приказати на екрану микробита његово име.
Корак 2. У супротном се проверава да ли је притиснут пин P1. Ако је пин P1 притиснут, приказати на екрану микробита његово име.
Корак 3. У супротном се проверава да ли је притиснут пин P2. Ако је пин P1 притиснут, приказати на екрану микробита његово име.
Корак 4. У супротном укључује све лед диоде на екрану микробита.
Фаза 2
Покрени МејкКод за одабир и слагање блокова у простор за програмирање.
На интернет страници на адреси https://makecode.microbit.org покрени нов пројекат кликом на дугме New Project .
У блок forever превлачимо блок if.. then..else из категорије Logic. Како бисмо приказали име пина који је притиснут користићемо угњеждени блок if. У делу за услов треба да превучемо блок којим се дефинише услов да ли је пин P0 притиснут.
Ако је пин P0 притиснут приказати на екрану микробита његово име.
Изглед кода:
у супротном се проверава да ли је притиснут пин P1.
Ако је пин P1 притиснут приказати на екрану микробита његово име, у супротном се проверава да ли је притиснут пин P2.
Ако је пин P2 притиснут приказати на екрану микробита његово име, у супротном укључује све лед диоде на позицији (2, 2).
Коначан изглед кода:
Фаза 3
Тестирање и анализа програма.
Да бисмо тестирали програм имамо две могућности:
1 да га покренемо у симулатору кликом на дугме .
2 да га пребацимо на микробит. Да бисмо програм пребацили на микробит треба да га прикачимо на рачунар коришћењем USB кабла. Кликом на дугме преузмите .hex фајл на ваш рачунар. Превлачењем фајла на микробит, уређај је спреман за рад.
- Шта смо научили?
да ће се у програмима одлучивања, тачније разгранатим (условним) програмима неке наредбе извршити, а неке не, у зависности од испуњености услова (односно донете одлуке).
да би смо креирали неки услов користимо операторе поређења.
да бисмо направили сложени услов користимо логичке операторе and, or и not.
да бисмо имали више услова користимо угнеждене рагранате структуре
Квиз¶
- када је притснуто дугме А биће приказано срце на екрану микробита.
- Браво! Твој одговор је тачан.
- ако није притснуто дугме А биће приказано срце на екрану микробита.
- Твој одговор није тачан. Покушај поново!
- када је притснуто дугме А биће неће бити приказано ништа.
- Твој одговор није тачан. Покушај поново!
Q-44: Пажљиво проучи блок наредби.
- када је притснуто дугме А биће приказано срце на екрану микробита.
- Браво! Твој одговор је тачан.
- ако није притснуто дугме А биће приказано срце на екрану микробита.
- Твој одговор није тачан. Покушај поново!
- ако није притснуто дугме А биће приказан крстић на екрану микробита.
- Браво! Твој одговор је тачан.
- када је притснуто дугме А биће неће бити приказано ништа.
- Твој одговор није тачан. Покушај поново!
Q-45: Пажљиво проучи блок наредби.