$$ \newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} \newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} \renewcommand{\mod}{\,\mathrm{mod}\,} \renewcommand{\div}{\,\mathrm{div}\,} \newcommand{\metar}{\,\mathrm{m}} \newcommand{\cm}{\,\mathrm{cm}} \newcommand{\dm}{\,\mathrm{dm}} \newcommand{\litar}{\,\mathrm{l}} \newcommand{\km}{\,\mathrm{km}} \newcommand{\s}{\,\mathrm{s}} \newcommand{\h}{\,\mathrm{h}} \newcommand{\minut}{\,\mathrm{min}} \newcommand{\kmh}{\,\mathrm{\frac{km}{h}}} \newcommand{\ms}{\,\mathrm{\frac{m}{s}}} \newcommand{\mss}{\,\mathrm{\frac{m}{s^2}}} \newcommand{\mmin}{\,\mathrm{\frac{m}{min}}} \newcommand{\smin}{\,\mathrm{\frac{s}{min}}} $$

Prijavi problem


Obeleži sve kategorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.

Час 7 - Одлучивање

На овом часу говорићемо о: ­

  • ­­­­oдлучивање у програму;

  • ­блокови одлучивања;

  • ­оператори поређења и логички оператори.

Колико се пута сваког дана срећеш са одлукама од којих ти зависи како ћеш провести дан, да ли ћеш да учиш, или ћеш ићи да се играш са својим другарицама и друговима?

Програми у МејкКоду такође могу да донесе одлуке.

Да ли можеш да претпоставиш како се то ради?

До сада, све програме које смо писали, били су линијски програми, тачније програми који се извршавају од првог блока, блок по блок, од почетка до краја.

За разлику од оваквих програма, где се сваки корак, односно свака наредба, извршава само једанпут, у програмима одлучивања, тачније разгранатим (условним) програмима неке наредбе ће се извршити, а неке не, у зависности од испуњености услова (односно донете одлуке).

Да би обезбедили потпуно разумевање условних програма направићемо програм у коме ако је температура у просторији већа од 28 степени микробит ће послати информације другом микробиту да се огласи. Само ако је температура већа од 28 степени, уређај ће послати информацију другом уређају да се огласи. Ако одговор није тачан (ако температура није већа од 28 степени), блокови који обезбеђују слање информације се неће извршити. Дакле, на основу одлуке да ли је “унета” температура већа од 28 степени или не, неки блокови програма ће се извршити, а неки не.

Фаза 1

Разумевање проблема: Помоћу сензора температуре на микробиту очитава се тренутна температура која се упоређује са задатом температуром. Ако је она већа од задате вредности, шаље се информација другом микробиту. Када желимо да успоставимо комуникацију (да искористимо радио комунукацију) између микробитова, сви укључени микробитови морају да припадају истој групи, односно да користе исти ИД групе.

Корак 1: Креира се простор за комуникацију између два микробит уређаја.

Корак 2: „Читање” вредности сензора темепратуре.

Корак 3: Упоређивање вредности сензора са задатом вредношћу (веће од 28).

Корак 4: Ако је услов тачан шаље се инфромација другом микробиту.

Корак 5: Када други микробит прими информацију извршава се блок за репродукцију звука.

Фаза 2

Покрени МејкКод за одабир и слагање блокова у простор за програмирање.

На интернет страници на адреси https://makecode.microbit.org покрени нов пројекат кликом на дугме New Project dugme3.

Креирањем ИД групе, у ствари креира се простор у коме ће комуницирати оба микробита.

Да бисмо креирали ИД групу из категорије Radio превлачимо у блок on start блок radio set group … У простор за унос броја или текст уносимо жељени број за ИД групе, који може бити било који број. Ми ћемо оставити да то буде 1. На тај начин смо креирали групу са ИД 1 у којој ће комуницирати оба микробита.

_images/116.png

Напомена: Када користимо радио блокове из категорије Radio на симулатору ће бити приказана два микробита.

Баш као и на часу математике, МејкКод омогућава да упоређујемо вредности коришћењем оператора поређења који се налазе у категорији Logic.

_images/118.png

Као резултат поређења добијамо вредност тачно или нетачно.

Размисли:

Покушај да попуниш празна места одговарајућим вредностима Тачно или Нетачно.

slika11

Покушај да попуниш празна места одговарајућим вредностима Тачно или Нетачно.

slika21

Покушај да попуниш празна места одговарајућим вредностима Тачно или Нетачно.

slika31

Покушај да попуниш празна места одговарајућим вредностима Тачно или Нетачно.

slika41

Поређење враћа вредност тачно у случају да је „очитана“ вредност са сензора температуре већа од 28. У свим осталим случајевима враћа нетачно.

У блок forever превлачимо блок if.. then из категорије Logic. У делу за услов треба да превучемо блокове којим се дефинише услов да је температура већа од 28.

У нашем случају услов да је температура већа од 28, дефинишемо блоком uslov. Очитана вредност сензора температуре чува се у блоку температуре (у степенима целзијуса).

Услов из поставке задатка дефинишемо на следећи начин:

_images/120.png

Када је услов испуњен, тачније када је очитана температура већа од 28, микробит шаље вредност коришћењем блока радио send number .. из категорије Logic. У поље за број уносимо било коју вредност (нпр. 10). Да би сензор реаговао, тачније детектовао покрете поставићемо да је за то потребан одређени временски период, нека то буде 3 секунде (или 3000 милисекунди). За то ћемо користити блок pause (ms) из категорије Basic. У поље за број уносимо 3000 мс које ће бити време за које сензор одреагује на промену која се десила.

_images/121.png

На крају, потребно је испрограмирати други мицро:бит (оглашивач) да када прими информације од микробита се огласи.

Потребно је да Креирамо исту групу са ИД 1.

Микробит треба да прими информацију (у нашем случају број - 10) на основу које ће да „одреагује“ тако што ће се чути звук. За то ћемо из категорије Radio превући блок:

_images/122.png

У њега ћемо превући блок if .. then. Превлачимо блок за поређење којим се проверава да ли је примљена вредност (блок receivedNumber) једнака 10.

_images/123.png

Ако је примљена вредност једнака 10, услов је испуњен и репродукује се звук. За репродукцију звука превлачимо блок из категорије Misic. Поред овог блока додајемо и временски интервал од једне секунде како би се регистровале све промене које се десе.

Коначан изглед кода:

_images/124.png

Фаза 3

Тестирање и анализа програма.

Да бисмо тестирали програм имамо две могућности:

1 да га покренемо у симулатору кликом на дугме startuj.

2 да га пребацимо на микробит. Да бисмо програм пребацили на микробит треба да га прикачимо на рачунар коришћењем USB кабла. Кликом на дугме download преузмите .hex фајл на ваш рачунар. Превлачењем фајла на микробит, уређај је спреман за рад.

Промисли:

Проучи још једном горњи пример. Шта ће се десити са програмом, ако би би температура била мања од 26?

Добро би било да наш програм даје повратну информацију и када је температура мања од 28. У том случају можемо да, из категорије Logic, одаберемо блок:

_images/125.png

или у блоку if .. then користимо знака plus где уводимо нову грану (else), у којој ће се извршавати блокови у случају да је температура мања или је 28 степени. Ако је температура мања или једнака од 28 степени приказати тренутну температуру. За приказивање тренутне температуре превлачимо блок show number.. из категорије Basic. У пољу за број превлачимо блок temperature (C).

_images/127.png

Тестирај поново програм.

Услови могу бити сложени (настају повезивањем простих услова). За повезивање простих услова користиш логичке операторе (I (енгл. AND), ILI (енгл. OR), NE (енгл. NOT)).

Овакве услове срећеш у свакодневном животу када доносиш одлуку, на пример о поклону који желиш да купиш другарици за рођендан (у зависности од количине новца који имаш, купићеш јој и књигу и/или улазницу за концерт).

У МејкКоду логички оператори су представљени на следећи начин:

Логички оператори

Име оператора

Опис оператора

and

Повезује два услова, и као резултат враћа Тачно само ако су оба услова Тачна.

or

Повезује два услова, и као резултат враћа Тачно ако је бар један услов Тачан.

not

Ставља се испред једног услова, и као резултат враћа Тачно у случају да услов није задовољен.

Покушај да попуниш празна места одговарајућим вредностима Тачно или Нетачно.

slika1

Покушај да попуниш празна места одговарајућим вредностима Тачно или Нетачно.

slika2

Покушај да попуниш празна места одговарајућим вредностима Тачно или Нетачно.

slika3

Хајде да урадимо још један задачић којим ћемо да омогућимо да се на екрану микробита прикаже број додирнутог пина.

Фаза 1

Разумевање проблема: Стање пина (да ли је он притиснут или не) „чува“ блок pin1 који се налази у категорији Input. Вредност коју враћа овај блок је Тачно, ако је пин притиснут, и Нетачно ако пин није притиснут. Програм приказује име пина који је притиснут.

Корак 1. Ако је пин P0 притиснут, приказати на екрану микробита његово име.

Корак 2. У супротном се проверава да ли је притиснут пин P1. Ако је пин P1 притиснут, приказати на екрану микробита његово име.

Корак 3. У супротном се проверава да ли је притиснут пин P2. Ако је пин P1 притиснут, приказати на екрану микробита његово име.

Корак 4. У супротном укључује све лед диоде на екрану микробита.

Фаза 2

Покрени МејкКод за одабир и слагање блокова у простор за програмирање.

На интернет страници на адреси https://makecode.microbit.org покрени нов пројекат кликом на дугме New Project dugme3.

У блок forever превлачимо блок if.. then..else из категорије Logic. Како бисмо приказали име пина који је притиснут користићемо угњеждени блок if. У делу за услов треба да превучемо блок којим се дефинише услов да ли је пин P0 притиснут.

Ако је пин P0 притиснут приказати на екрану микробита његово име.

Изглед кода:

_images/134.png

у супротном се проверава да ли је притиснут пин P1.

Ако је пин P1 притиснут приказати на екрану микробита његово име, у супротном се проверава да ли је притиснут пин P2.

Ако је пин P2 притиснут приказати на екрану микробита његово име, у супротном укључује све лед диоде на позицији (2, 2).

Коначан изглед кода:

_images/135.png

Фаза 3

Тестирање и анализа програма.

Да бисмо тестирали програм имамо две могућности:

1 да га покренемо у симулатору кликом на дугме startuj.

2 да га пребацимо на микробит. Да бисмо програм пребацили на микробит треба да га прикачимо на рачунар коришћењем USB кабла. Кликом на дугме download преузмите .hex фајл на ваш рачунар. Превлачењем фајла на микробит, уређај је спреман за рад.

Шта смо научили?
  • да ће се у програмима одлучивања, тачније разгранатим (условним) програмима неке наредбе извршити, а неке не, у зависности од испуњености услова (односно донете одлуке).

  • да би смо креирали неки услов користимо операторе поређења.

  • да бисмо направили сложени услов користимо логичке операторе and, or и not.

  • да бисмо имали више услова користимо угнеждене рагранате структуре

Квиз

    Q-44: Пажљиво проучи блок наредби.

    _images/136.png

    Шта ће бити приказано након извршавања следећег блока наредби?

  • када је притснуто дугме А биће приказано срце на екрану микробита.
  • Браво! Твој одговор је тачан.
  • ако није притснуто дугме А биће приказано срце на екрану микробита.
  • Твој одговор није тачан. Покушај поново!
  • када је притснуто дугме А биће неће бити приказано ништа.
  • Твој одговор није тачан. Покушај поново!

    Q-45: Пажљиво проучи блок наредби.

    _images/137.png

    Шта ће бити приказано након извршавања следећег блока наредби? Изабери све тачне одговоре.

  • када је притснуто дугме А биће приказано срце на екрану микробита.
  • Браво! Твој одговор је тачан.
  • ако није притснуто дугме А биће приказано срце на екрану микробита.
  • Твој одговор није тачан. Покушај поново!
  • ако није притснуто дугме А биће приказан крстић на екрану микробита.
  • Браво! Твој одговор је тачан.
  • када је притснуто дугме А биће неће бити приказано ништа.
  • Твој одговор није тачан. Покушај поново!

    Q-46: Да ли блок isshake „чува“ да ли је дошло до покрета?

  • Тачно
  • Твој одговор није тачан. Покушај поново!
  • Нетачно
  • Браво! Твој одговор је тачан.