$$ \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.

Низање корака

paleta3

У претходној лекцији си упознао наредбe кретања, а сада ћеш се бавити дејством неких наредби из група Изглед и Догађаји. Показаћемо како повезивањем наредби у скрипте задајемо понашање ликова. Пројекти у овој лекцији састоје се од скрипти у којима се кораци нижу један за другим. За такве скрипте кажемо да имају просту линијску структуру.

Речник и визуелна граматика језика Скреч

Ликови могу да извршавају више од 100 наредби. Блокови који одговарају наредбама чине речник језика Скреч, а правила по којима се повезују у целину одговарају граматици језика. Блокови се чувају у палети блокова и распоређени су у 10 група различитих боја:

  • kretanje Кретање,

  • izgled Изглед,

  • zvuk Звук,

  • dogadjaji Догађаји,

  • upravljanje Управљање,

  • osecaji Осећаји,

  • operatori Оператори,

  • promenljive Променљиве,

  • moji_blokovi Моји блокови и

  • prosirenja Проширења.

Блокови су издељени у групе да би се програмери лакше сналазили приликом креирања скрипти. Ма колико сложено било понашање ликова, скрипта која га описује састоји се од скупа елементарних операција ових 10 типова. Ако знаш коју врсту акције треба да уради лик, онда лако можеш да изабереш одговарајућу групу и из ње издвојиш потребан блок.

Постоје самостални и функцијски блокови.

Самостални блокови одговарају наредбама језика, односно корацима алгоритма. Неки од њих имају поља у која се може поставити вредност.

Функцијски блокови враћају вредности. Они не могу да стоје сами у скрипти, већ се умећу у поља блокова који примају вредности и прецизирају њихове акције.

Блокови су обликовани тако да могу да се повежу само они који могу да формирају исправне конструкције језика, односно Скреч има визуелну граматику која не дозвољава да се праве синтаксне грешке.

_images/sl3_1.png

Самостални блокови

Блокове који одговарају корацима обраде зваћемо надаље стек блокови. Сваки стек блок одговара једној акцији, односно одговара на питање ШТА треба урадити. На пример, блок idi_koraka наређује лику да се помери задати број корака у смеру у коме је тренутно постављен. Облик овог блока подсећа на Lego коцку, а цела скрипта на коцке склопљене у стек.

Задати број корака уписује се у бели кружић - улазно поље блока.

У блоку izgovori_sec једно улазно поље има облик заобљеног правоугаоника, а друго круга. Правоугаони улази прихватају и текстуалне и бројне, а кружни само бројне вредности.

Блок klizi_xy има чак три улаза.

Неки блокови имају шестоугаона улазна поља, на пример управљачки блок cekaj_dok_ne. Они прихватају логичке вредности (тачно или нетачно).

У групи Управљање постоје блокови С-облика, које називамо С-блокови. Слот унутар С-блока је специјална врста улаза који прима скрипту као улаз. Блок ponavljaj има 2 улаза: један за број и један за скрипту.

Постоји и један управљачки блок Е-облика који има три улаза, један за услов (логичку вредност) и два за скрипте. Од та два улаза за скрипте, први задаје шта треба урадити ако је услов испуњен, а други задаје шта треба урадити ако услов није испуњен.

Почетни блокови одговарају почетном алгоритамском кораку. Они одговарају на питање КАДА треба покренути скрипту. Овај тип блокова има заобљен врх и поставља се на врх стека, а повезује се са наредним блоковима преко испупчења на дну. Почетни блокови дефинишу који догађај треба да наступи да би се извршио стек блокова испод њих. Тај догађај може да буде, на пример, клик на дугме зелена заставица или притисак на неку дирку тастатуре.

Завршни блокови одговарају завршном алгоритамском кораку. Они имају удубљење на врху, али немају испупчење на дну. Како у Скречу једном објекту може бити придружено више скрипти које се могу паралелно извршавати, завршни блок може прекинути извршавање свих покренутих скрипти.

Функцијски блокови

Функцијски блокови чувају податке за друге блокове. Често се називају репортери зато што обавештавају колика је текућа вредност неке променљиве. Блокове репортере који чувају текуће координате и усмерење лика упознали смо у претходном поглављу. Неки блокови репортери и сами имају улазна поља кружног или правоугаоног облика, на пример plus и povezi.

Логички блокови чувају логичке вредности (тачно или нетачно). Они имају облик шестоугла и могу да се поставе само у улазна поља одговарајућег облика (шестоугаоног или правоуглог). Такав је на пример, блок jednako. У Скречу лако могу да се конструишу сложени логички услови тако што се логички блокови умећу у улазна поља других логичких блокова.

Функције блокова из групе Изглед и Догађаји

Блокови из групе кретање које смо упознали у претходној лекцији могли су да се примене само на ликове. За разлику од њих, блокове групе Изглед можеш да употребиш и за контролу изгледа ликова и за контролу позадина, односно изгледа позорнице. Али то не важи за све блокове ове групе. Межу њима има оних који се односе само на ликове и оних који се односе само на позорницу. Блокови из групе Догађаји покрећу извршавање скрипти. Преглед свих блокова ових група дати су у Додацима који се налазе у 11. лекцији овог практикума.

У претходним лекцијама већ смо упознали дејство неких блокова Изгледа и Догађаја, на пример, изговори и клик на дирку. У овој лекцији ћемо детаљније упознати блокове који омогућавају једноставну анимацију применама уграђених графичких ефеката и проширити речник Скреча коришћењем нових наредби.

prouci Проучи следеће примере пројеката

Друштво можемо да забавимо причањем вицева, али и математичким триковима. Следећи пројекат илуструје један од њих. Има само једну скрипту простe линијскe структурe.

Пример 1 - Пројекат „Математичар”

  • Корак 1: Замисли један троцифрени број чије су све цифре једнаке, нпр. 111, 222.

  • Корак 2: Сабери све цифре тог броја.

  • Корак 3: Замишљени троцифрени број подели добијеним збиром.

  • Корак 4: Резултат је број 37.

Сценарио овог пројекта је сасвим једноставан. Лик наредбама izgovori_sec задаје кориснику прва три захтева, а наредбом izgovori саопштава резултат.

Користићемо лик девојчице Avery из библиотеке ликова који има два костима (Кликни на картицу Костими да их видиш) и између свака два захтева задати промену костима наредбом sledeci_kostim.

Да би корисник имао времена да израчуна шта се од њега тражи у прве две наредбе ставићемо да се текст који лик изговара види 3 секунде, а у трећој 5 секунди. Наредба izgovori последњи текст оставља на екрану све док не прекинемо извршавање програма кликом на знак стоп - црвени осмоугао изнад горњег десног угла позорнице.

Скрипта овог пројекта приказана је на следећој слици.

_images/sl3_2.png

Пример 2 - Пројекат „Разговор”

Овај пројекат представља надоградњу пројекта „Математичар”. У њему девојчица Avery и дечак Devin исти математички трик представљају кроз разговор у коме Devin „замишља” број 222 и врши тражена рачунања, а на крају пита: „Како си погодила?”. Понашање оба лика задају скрипте просте линијске структуре. Да би изгледало као да заиста разговарају, у скрипту девојчице треба додати наредбе чекања у време док дечак размишља, а у скрипту дечака чекања у време док девојчица поставља питања.

Следећа слика приказује сценарио пројекта.

_images/sl3_3.png

Израда пројекта

1 Отвори пројекат Математичар.

2 Упамти овај пројекат под новим именом Разговор.

Савет. Када правиш нову верзију неког пројекта, на самом почетку је упамти под промењеним именом. Тако нећеш изгубити стару верзију.

3 Из библиотеке ликова изабери лик дечака Devin.

4 Постави дечака уз десни руб позорнице и у информацијама о лику промени његово усмерење на -90, тако да гледа према девојчици.

5 Ликовима придружи следеће скрипте.

_images/sl3_4.png

у пројекту Математичар девојчица изговара 4 реченице, а 3 пута мења костим (има 2 костима). То значи да се у два узастопна извршавања пројекта девојчица неће на почетку појавити у истом костиму. Да би при сваком извршавању пројекта девојчица била приказана на исти начин (да се појави у првом костиму), на почетак скрипте смо додали одговарајућу наредбу.

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

Усклађивање понашања ликова постигли смо уметањем наредби чекања у скрипте оба лика.

_images/sl3_5.png

6 Упамти овако измењен програм.

Ако те интересује одговор на дечаково питање „Како си погодила?”, кликни на дугме Прикажи упутство.

Упутство:

Девојчица је тражила да се замисли троцифрен број са истим цифрама. Означимо цифру која се понавља са х. Тада је замишљен број једнак 111*х, а збир цифара је 3*х. Резултат операције дељења броја збиром његових цифара једнак је 111/3=37, независно од броја који је замишљен.


Пример 3 - Пројекат „Рачунање”

И наредни пројекат је надоградња претходног. У њему дечак уместо фиксног броја 222 замишља произвољан троцифрен број са све три једнаке цифре и над њим врши тражене операције. Ово можемо да испрограмирамо захваљујући могућности да се генерише случајан број из задатог интервала.

Генерисање случајних бројева

У групи блокова Оператори налази се наредба slucajan_broj. Генерисати случајан број значи на случајан начин одабрати број из неког интервала. Најмањи и највећи број тог интервала задаје се у пољима овог репортера. Значи, ако су то бројеви 1 и 10 биће изабран ма који број из интервала [1,10], а да су, на пример, то -100 и 100, био би генерисан неки број из интервала [-100,100].

У нашем примеру, у прво поље треба уписати број 1, а у друго број 9.

У овом пројекту су коришћене променљиве са којима ћемо се упознати тек у осмој лекцији. Зато је означен као тежак. Можеш га можеш прескочити, па се на њега врати касније.

Ако пак волиш изазове, да кажемо нешто мало унапред. Под променљивом подразумевамо област меморије рачунара у којој програм чува текуће вредности података са којима ради. Име променљиве је име те области, а вредност променљиве је оно што се чува у тој области.

Израда пројекта

1 Отвори пројекат Разговор и упамти га под новим именом Рачунање.

2 Направи променљиву x која одговара цифрама троцифреног броја и као почетну вредност јој додели случајан број из интервала [1,9].

3 Направи променљиву broj и као почетну вредност јој додели вредност израза 111*x.

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

n1 != n2

5 Направи променљиву zbir и као почетну вредност јој додели вредност израза x+x+x. Како блок за сабирање има само 2 улазна поља, Уложићемо један блок за сабирање у улазно поље другог блока за сабирање. (Разуме се, исто смо могли постићи и једним блоком за множење јер је х+х+х=3х)

_images/sl3_7.png

6 У другом блоку замисли дечакове скрипте постави репортер променљиве zbir уместо текста 2+2+2.

7 Направи променљиву rezultat и као почетну вредност јој додели вредност израза broj/zbir.

8 У трећем блоку замисли дечакове скрипте постави репортер променљиве rezultat уместо броја 37.

9 Изврши пројекат више пута како би проверио да ли генерише различите троцифрене бројеве.

10 Упамти тако измењен пројекат.


Пример 4 - Пројекат „Ефекти на лик”

Следећи пројекат илуструје како наредба promeni_efekat из групе Изглед може да утиче на приказ ликова. Такође показује и како догађај клик на лик може да покрене извршавање скрипте.

Сценарио пројекта

На позорници се налази 7 примерака истог лика. Кликом на неки од њих лик се мења коришћењем једног од седам графичких ефеката. То омогућава наредба promeni_efekat. Лик такође изговара о којем се ефекту ради.

Израда пројекта

1 Започни нови пројекат.

2 Обриши лик мачка и из библиотеке ликова изабери Singer1.

3 Лику придружи следећу скрипту.

_images/sl3_9.png

4 Сада десним кликом на лик у листи ликова отвори приручни мени и изабери опцију умножи. У листи ликова појавиће се лик Singer2 коме ће бити придружена иста скрипта као лику од кога је настао.

5 Промени ефекат у наредби promeni_efekat на рибље око, а у наредби izgovori_sec преправи текст у рибље око.

6 Понови ову операцију још 5 пута и сваки пут измени ефекат и поруку коју лик саопштава када се кликне на њега.

7 Равномерно распореди ликове на позорници и тестирај да ли пројекат ради то што је замишљено кликом на сваки од ликова.

8 При сваком новом клику на исти лик одговарајући ефекат ће се појачавати.

9 Зато треба додати скрипту позорници која ће по клику на зелену заставицу поништавати промене наредбом ukloni_efekte.

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

_images/sl3_10.png

Пример 5 - Пројекат „Ефекти на позадину”

За разлику од блокова из групе Кретање, блокови из групе Изглед могу се применити и на позорницу. Све скрипте у овом пројекту придружене су позорници. Сврха пројекта је да илуструје како наредба promeni_efekat може да утиче на изглед позадине и да ти да идеје како би сам могао да је користиш у својим пројектима. Да би се све вратило у нормалу, догађају клик на зелену заставицу придружено је брисање свих графичких ефеката.

Сценарио пројекта

Мачак се налази усред пустиње. Корисник може да промени изглед позадине притискањем неке од дирки са бројевима од 1 до 3. Сваки од ових догађаја одговара неком од графичких ефеката на позадини. На следећој слици приказано је како изгледа позорница на почетку (0) и после неколико притисака на дирку: 1 - ефекат боја, 2 - ефекат рибље око, 3 - ефекат вртлог и 4 - ефекат позрнати.

_images/sl3_11.png

pitaj Одговори на следећа питања

Питање 1

    Q-49: Који од блокова припада групи наредби Изглед? (Изабери све тачне одговоре)

    _images/pitanje3_1.png

Питање 2

    Q-50: Које од наредби припадају групи наредби Догађаји? (Изабери све тачне одговоре)

    _images/pitanje3_2.png

Питање 3

    Q-51: Који од блокова припада групи наредби Управљање? (Изабери све тачне одговоре)

    _images/pitanje3_3.png

Питање 4

    Q-52: Да ли једна скрипта може имати више почетних блокова?

  • да
  • Погрешно.
  • не
  • Тачно.

Питање 5

    Q-53: Којој врсти припадају блокови који имају удубљење на горњој и испупчење на доњој страни.

  • блокови репортери
  • стек блокови
  • Тачно.
  • почетни блокови
  • завршни блокови

Питање 6

    Q-54: Којој врсти припадају блокови који чувају вредности и не могу да стоје самостално у скрипти, већ се умећу у улазна поља других блокова.

  • блокови репортери
  • Тачно.
  • стек блокови
  • почетни блокови
  • С-блокови

Питање 7

    Q-55: Превлачењем упари облик блокова са њиховом улогом у Скречу. Покушај поново
  • почетни
  • задају КАДА треба покренути скрипту
  • репортери
  • чувају вредности
  • С-блокови
  • примају скрипту као улаз
  • стек блокови
  • дефинишу ШТА треба урадити

Питање 8

    Q-56: Да ли изрази pitanje3_8a и pitanje3_8b имају исту вредност?

  • да
  • не
  • Тачно.

Питање 9

    Q-57: Који од израза pitanje3_9a и pitanje3_9b има негативну вредност?

  • ниједан
  • Нетачно. Други има вредност 10/(-1)=-10
  • први
  • Нетачно. Први има вредност 5-3=2
  • други
  • Тачно.
  • оба
  • Нетачно. Први има вредност 2.

Питање 10

Колика је вредност израза pitanje3_10

Питање 11

    Q-58: Колика је вредност израза pitanje3_11?

  • 45
  • Нетачно. 5+(2*(7-4)) = 5+2*3 = 5+6 = 11
  • 11
  • Тачно.
  • 15
  • Нетачно. 5+(2*(7-4)) = 5+2*3 = 5+6 = 11

Питање 12

    Q-59: Колика је вредност израза pitanje3_12?

  • 3
  • Нетачно. ((2+1)*(9-5))/2 = 3*4/2 = 6
  • 11
  • Нетачно. ((2+1)*(9-5))/2 = 3*4/2 = 6
  • 6
  • Тачно.

pokusaj Покушај

Вежба 1 - Увећање

Креирај пројекат који омогућава да се лик на позорници увећава и смањује. Увећавање треба да покреће клик на дирку стрелица горе, а смањивање клик на дирку стрелица доле. Обезбеди да се кликом на зелену заставицу лик врати на своју природну величину.

Упутство:

Лику треба придружити следеће скрипте: vezba3_1


Вежба 2 - Окретање

Уз лик мачка учитај још два лика из библиотеке ликова: девојчицу Avery и дечака Devin. Постави девојчицу лево, а дечака десно од мачка. Креирај пројекат који омогућава да се мачак на позорници окреће налево ка девојчици и надесно ка дечаку. Окретање налево треба да покреће клик на дирку стрелица лево, а окретање надесно клик на дирку стрелица десно. Обезбеди да се мачак приликом окретања налево не окреће наглавачке.

Упутство:

Лику мачак треба придружити следеће скрипте: vezba3_2


Вежба 3 - Промена боје позадине

Креирај пројекат који омогућава да, после сваког клика на позорницу, позадина мења боју. Користи ефекат боја и обезбеди да се кликом на зелену заставицу уклоне графички ефекти.

Упутство:

Позорници треба придружити следеће скрипте: vezba3_3


Вежба 4 - Кодирање аритметичког израза са заградама (1)

Формирај аритметички израз у Скречу који одговара следећем математичком изразу: (5*(5+4))-(2*(2+3)). Постављањем одговарајућег репортера у улазно поље наредбе изговори провери да ли добијаш његову тачну вредност: (5*(5+4))-(2*(2+3)) = 5*9-2*5 = 45-10 = 35

Одговор:

vezba3_4


Вежба 5 - Кодирање аритметичког израза са заградама (2)

Формирај аритметички израз у Скречу који одговара следећем математичком изразу: (8/(4-2))*(8-(6/2)) Постављањем одговарајућег репортера у улазно поље наредбе изговори провери да ли добијаш његову тачну вредност: (8/(4-2))*(8-(6/2)) = 8/2*(8-3) = 4*5 = 20.

Одговор:

vezba3_5

bug Исправи грешке

Грешка 1

Питање

Да ли је следећи разговор добро синхронизован?

_images/greska3_1.png

Одговор:

Није добро постављено време. Инструкције чекај и изговори треба да имају исто време да би разговор био добро синхронизован.

Грешка 2

Питање

Ученик воли да све ради по правилима и зато жели да сваком програму дода и наредбу за заустављање програма. Тако је и на крај скрипте за математичара поставио наредбу zaustavi. Међутим, текст последње наредбе izgovori уопште се није видео. Како да ученик ово исправи, а да на крају ипак остане наредба која га зауставља?

_images/greska3_2.png

Одговор:

Наредба изговори Резултат је 37 се тренутно извршава и одмах затим се извршава наредба заустави све, па ми практично и не успевамо да видимо дејство наредбе изговори. Зато ову наредбу треба заменити наредбом изговори__током__секунде и поставити да се приказ види, на пример, током 5 секунди.

Грешка 3

Питање

Ученик жели да његов лик ротира када притисне тастер размак. Али лик се не покреће. У чему је грешка?

_images/greska3_3.png

Одговор:

Лик се окреће, али сувише брзо, брзином којом рачунар извршава наредбе, па људско око то не може да испрати. Да би се окретање лика видело треба између наредби окрет удесно ставити наредбе чекања, рецимо за десети део секунде. Тако ћемо успети да испратимо окретање лика.

knjiga Шта смо научили

У овој лекцији упознали смо се са групама и облицима блокова из палете блокова којима се задају наредбе програмског језика Скреч. Визуелни речник Скреча садржи више од 100 блокова подељених у 10 група. Визуелна граматика Скречa реализована је кроз облик блокова: не дозвољава да се повежу блокови чије функције нису одговарајуће. Самостални блокови повезују се у скрипте које задају понашње објеката, а функцијски им постављају потребне вредности.

Примери пројеката: 3Studio

Појмови: догађаји, акције, аритметички оператори, случајни бројеви, линијска структура скрипте.

Наредбе: dogadjaji - klik_lik, klik_pozornica; upravljanje - cekaj, zaustavi;

izgled - zamisli_sec, sledeci_kostim, promeni_efekat, ukloni_efekte, neka_velicina, promeni_velicinu; operatori: plus, minus, puta, podeli, slucajan_broj;

promenljive - * neka_var.

Напомена. Наредбе означене знаком * биће обрађене у наредним лекцијама.

project Уради неки од следећих пројеката

Пројекат 1 - „Геније”

Овај пројекат направи по узору на пример Математичар.

Започни нови пројекат који ћеш назвати Геније. Изабери главни лик из библиотеке ликова и позадину из библиотека позадина. Лик треба да поставља следеће задатке.

  1. “Замисли било који троцифрени број.”

  2. “Поређај његове цифре од већих ка мањим - то је први број.”

  3. “Поређај његове цифре одмањих ка већим - то је други број.”

  4. “Одузми други број од првог.”

  5. “Запамти резултат, а затим обрни његове цифре.”

  6. “Тај број додај резултату који си запамтио.”

  7. “Добио си број 1089.”

Пројекат 2 - „Чококолач”

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

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

Води рачуна о синхронизацији скрипти за сваки лик убацивањем команде чекај потребне дужине. Једини лик који све време треба да буде на позорници је кувар. Он чита рецепт (алгоритам) и одређује појављивање и нестајање осталих ликова.

  1. Кувар је сам на позорници. Изговара: “Ево АЛГОРИТМА за прављење колача!” (2 секунде)

  2. Кувар изговара следеће: “Узмите јаја, брашно, шећер и чоколаду.” У том тренутку на позорници се појављују јаја, брашно, шећер и чоколада. Сцена траје 2 секунде.

  3. Кувар изговара следеће: “Све ставите у чинију и измешајте миксером.” У том тренутку са позорнице нестају јаја, брашно, шећер и чоколада, а појављују се чинија и миксер. Сцена траје 2 секунде.

  4. Кувар изговара следеће: “Ставите чинију у врућу рерну.” У том тренутку са позорнице нестају чинија и миксер, а појављује се шпорет. Сцена траје 2 секунде.

  5. Кувар изговара следеће: “Пеците колач пола сата.” На позорници се ништа не мења. Сцена траје 2 секунде.

  6. Кувар изговара следеће: “Послужите колаче.” У том тренутку са позорнице нестаје шпорет, а појављују се колачи. Сцена траје 2 секунде.