Час 3 - Низање блокова¶
На овом часу говорићемо о:
блоковима у МејкКоду;
повезивању блокова у програме.
Решавање неког проблема, пре свега зависи од избора корака (акција) који треба да изврши неки уређај, у нашем случају микробит уређај.
Тај низ корака у МејкКоду окружењу назива се програм или скрипта, и сачињен је од различитих блокова који су повезани.
У МејкКоду су блокови наредби подељени у категорије, као што видиш на доњој слици.
Име категорије (нпр. Music) упућује корисника на врсте наредби (блокова) које се у тој категорији могу наћи. Сви блокови једне категорије су исте боје.
У претходној лекцији смо креирали једноставан програм за приказивање поруке „Здраво, свете!”, где смо користили једну врсту података под наводницима који се у програмским језицима назива стринг. Стринг представља низ карактера, представљених између знака навода. Стрингови имају велику примену у програмирању. За микробит уређај подржани су само ASCII кодови знакова од 32 до 126, у те знаке спадају слова, цифре, интерпункцијски знаци и неколико симбола. Сви остали знаци појављују се као ? на екрану микробита.
Напомена: ASCII чини скуп карактера тј. кодова који се најчешће користе у рачунарству, али и у комуникационој и управљачкој опреми у раду са текстом.
Хајде да сада креирамо још неке једноставне програме коришћењем блокова из категорије . У свим тим програмима блокове ћемо ређати један за другим. Такви програми у којима се блокови извршавају по редоследу по коме су наведени називају се линијски програми.
Нека то буде приказ трепћућег срца (које симулира рад срца) на екрану микробита.
Поступак решавања било ког задатка (проблема) подразумева прелазак кроз сваку од следећих фаза:
Фаза 1: Размисли о проблему и напиши или нацртај алгоритам (кораке) за његово решавање.
Фаза 2: У складу са алгоритмом, одабери и сложи блокове.
Фаза 3: Тестирај и анализирај рад програма. Исправи грешке (ако их има).
Фаза 1
Размишљање о проблему: Приказ трепћућег срца (симулација срца које куца) на екрану микробита представља укључивање појединих лед диода у облику срца и њихово искључивање.
Корак 1. Приказати слику срца, укључивањем диода на екрану микробита.
Корак 2. Уклањање слике срца са екрана микробита.
Фаза 2
Покрени МејкКод за одабир и слагање блокова у простор за програмирање. На интернет страници на адреси https://makecode.microbit.org покрени нов пројекат кликом на дугме New Project .
Да бисмо приказали слику срца на екрану микробита, потребно је из категорије Basic, у простору за програмирање превучемо блок .
Кликом на одређена поља у блоку show leds (укључивање лед диода) исцртавамо срце.
Следеће је да додамо још један блок show leds у коме ћемо исцртати пуно срце чиме ћемо симулирати откуцаје срца.
Фаза 3
Тестирање и анализа програма.
Да бисмо тестирали програм имамо две могућности: 1 да га покренемо у симулатору кликом на дугме . 2 да га пребацимо на микробит. Да бисмо програм пребацили на микробит треба да га прикачимо на рачунар коришћењем USB кабла. Кликом на дугме преузмите .hex фајл на ваш рачунар. Превлачењем фајла на микробит, уређај је спреман за рад.
Након пребацивања програма он ће се покренути на микробиту.
Важно: Микробит може да чува само један програм. Микробит ће извршавати одређени програм све док се не унесе нови програм.
У случају да немамо физички уређај, програме можемо да тестирамо и коришћењем уграђеног симулатора у окружењу МејкКода.
Након тестирања и анализе, постоји грешка, слике два срца се промене, тачније блокови за приказ слика се изврше. У програму су извршене сви блокови чиме нисмо добили симулацију откуцаја срца. Грешке у програмима које доводе до неочекиваног резултата или неправилног извршавања програма називају се багови (енгл. bugs – бубе). Процес проналажења и исправљања грешака назива се дебаговање (енгл. debugging).
Занимљивост: 9. септембра 1947. године, рачунар Марк 2 показивао је проблеме у раду. Након целодневне истраге, откривен је мољац у унутрашњости рачунара. Мољац је уклоњен и залепљен у дневник рада. Текст је гласио: „Први случај нађене бубе”. Убрзо потом, раширила се вест да је тим научника са Харварда „дебаговао“ рачунар. Тако је створен термин „дебаговање рачунарског програма“.
Овако изгледа поступак за отклањање грешака у програму:
Предвиди шта би требало да се догоди у програму. (Објасни своје решење. Док објашњаваш, велика је вероватноћа да откријеш у чему је проблем постојећег решења.).
Пронађи грешку. (Када утврдиш да програм не ради на очекивани начин, анализирај програм (блок по блок). На овај начин утврдићеш да ли је до грешке дошло због лошег осмишљеног решења или због погрешно одабраних блокова у програму.).
Исправи грешке (Унеси исправке и поново тестирај програм. На овај начин пружа ти се сјајна прилика да учиш из својих грешака и тако постанеш бољи програмер.).
Грешка 1. Блокови се извршавају само једном.
Исправљање грешака. Променићемо начин покретања програма, уместо блока оn start, где су поређани блокови извршавају само једном, превућићемо блок .
Изглед измењеног кода:
Размисли: Да ли овако блокови, са сликама два срца, симулирају откуцаје срца, да ли се дешава нека промена? Зашто?
Грешка 2. Слике се пребрзо мењају.
Исправљање грешака. Између блокова show leds додати блок којим се дефинише временски интервал од на пример пола секунди, или 500 милисекунди. Блок којим се дефинише временски интервал којим се чека извршење следећег блока за дефнисан број милисекунди. Овај блок превлачимо из категорије Basic.
Након исправљених грешака, требало би да програм изгледа овако:
Поново тестирајте програм. Сада изгледа као да срце куца. Преузмите га на микробит.
Хајде сада да напишемо програм којим ћемо направити мелодију песме „На крај села жута кућа“.
Фаза 1
Размишљање о проблему: Мелодија песме „На крај села жута кућа“ гласи:
d, f, g, g
d, f, g, g
d, f, g
d, f, g, g
d, f, g
g, g, f, f, d
Фаза 2
Покрени МејкКод за одабир и слагање блокова у простор за програмирање.
На интернет страници на адреси https://makecode.microbit.org покрени нов пројекат кликом на дугме New Project .
Да бисмо одсвирали неки тон или мелодију користимо категорију Music и блокове који се у њој налазе. Помоћу блока репродукује тон одређене дужине. Прва нота коју превлачимо у блок on start биће нота d, дужине једног бита, или тачније једне милисекунде.
Изглед кода:
Сада је потребно само превући испод датог блока остале ноте d, f, g, g.
Изглед кода:
На исти начин ређамо блокове за остале ноте:
d, f, g, g
d, f, g
d, f, g, g
d, f, g
g, g, f, f, d
Коначан изглед кода:
Код можете погледати на линку: https://makecode.microbit.org/_D1553sX4v5Cj
Фаза 3
Тестирање и анализа програма.
Да бисмо тестирали програм имамо две могућности:
1 да га покренемо у симулатору кликом на дугме . 2 да га пребацимо на микробит. Да бисмо програм пребацили на микробит треба да га прикачимо на рачунар коришћењем USB кабла. Кликом на дугме преузмите .hex фајл на ваш рачунар. Превлачењем фајла на микробит, уређај је спреман за рад.
Након пребацивања програма он ће се покренути на микробиту.
Важно: Да бисмо могли да чујемо музику на уређају потребно је слушалице повезати са микробитом, јер микробит нема уграђене звучнике. Начин везивања звучника и слушалица на микробит приказан је на слици.
Доњи део прикључка (најближи пластици) везујемо на GND пин, а врх прикључка на пин P0.
- Шта смо научили?
Линијски програм је програм у коме се блокови извршавају по редоследу по ком су наведени.
Поступак решавања било ког задатка (проблема) подразумева прелазак кроз сваку од следећих фаза:
Фаза 1: Размисли о проблему и напиши или нацртај алгоритам (кораке) за његово решавање.
Фаза 2: У складу са алгоритмом, одабери и сложи блокове.
Фаза 3: Тестирај и анализирај рад програма. Исправи грешке (ако их има).
Блокови за пуштање тонова или мелодија налазе се у категорији Music.
Квиз¶
- Input
- Твој одговор није тачан. Покушај поново!
- Loop
- Твој одговор није тачан. Покушај поново!
- Music
- Браво! Твој одговор је тачан.
- Basic
- Твој одговор није тачан. Покушај поново!
Q-33: У којој категорији се налази блок за пуштање тона G?
- биће одсвиран тон D, а након паузе биће пуштена мелодија dadadum једном
- Браво! Твој одговор је тачан.
- биће одсвиран тон D
- Твој одговор није тачан. Покушај поново!
- биће одсвирана мелодија dadadum једном
- Твој одговор није тачан. Покушај поново!
- ништа се неће десити
- Твој одговор није тачан. Покушај поново!
Q-34: Пажљиво проучи код:
Шта ће се десити након извршавања датог кода:
- Input
- Твој одговор није тачан. Покушај поново!
- Loop
- Твој одговор није тачан. Покушај поново!
- Music
- Твој одговор није тачан. Покушај поново!
- Basic
- Браво! Твој одговор је тачан.
Q-35: У којој категорији се налази блок за приказивање насмејаног лица?
- Input
- Твој одговор није тачан. Покушај поново!
- Loop
- Твој одговор није тачан. Покушај поново!
- Music
- Твој одговор није тачан. Покушај поново!
- Basic
- Браво! Твој одговор је тачан.
Q-36: У којој категорији се налази блок којим се дефинише временски интервал којим се чека извршење неког блока?