Programiranje u Skreču, praktikum za peti razred

Корњача графика

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

Да бисмо то ефикасније радили користићемо и неке од наредби за понављање које ћемо детаљно упознати у наредном поглављу.

Скреч је један од савремених језика програмирања у који су укључене могућности корњача графике први пут представљене у језику Лого још пре педесетак година.

Језик Лого омогућавао је управљање уређајем корњача, врстом робота, који је био повезан са рачунаром. Корњача је могла да се креће по хоризонталној подлози напред-назад и да мења смер и правац кретања. Уколико би се поставио лист папира испод корњаче она је могла да оставља траг формирајући графику која је названа корњача графика.

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

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

У групи наредби Оловка постоји блок spusti. Ако га придружите скрипти за нек лик, он ће надаље остављати траг.

Тај траг ће бити боје и дебљине које су претходно придружене оловци наредбама neka_boja и neka_debljina .

Ако се лику придружи наредба podigni, он при даљем кретњу неће остављати траг све док му се поново не зада наредба spusti.

Наредба obrisi брише са позорнице све што је претходно било нацртано оловком.

Напомена

Наредба obrisi разликује се од наредбе sakrij из групе Изглед коју смо раније упознали.

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

У претходним поглављима смо научили како можемо управљати кретањем лика помоћу дирки са
тастатуре. Сада ћемо скриптама за кретање додати могућност да лик притом оставља траг.

Пример 1 - Пројекат Прати ме по трагу 1

Лик који ће остављати траг биће бубамара Ladybug 1 из библиотеке ликова. Бубамари ћемо придружити скрипте за вођење стрелицама као у вежби 3 поглавља Координате позорнице. Уз скрипте које описују понашање бубамаре када се притисне нека од дирки са стрелицама, направићемо и скрипту која се активира кликом на зелену заставицу, а која поставља боју и дебљину оловке и спушта оловку.

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

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

_images/prati_me1.png

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

Побољшања пројекта Прати ме по трагу

У наредном примеру унапредићемо пројекат "Прати ме по трагу" тако што ћемо омогућити да
се лик који оставља траг слободније креће. У првој верзији бубамара је могла да иде само
у једном од 4 основна смера кретања: надесно, надоле, налево и нагоре. Боље управљање
кретањем лика постижемо изменом наредби придружених стрелицама лево и десно наредбама
за окретање улево и удесно за 15 степени. Такође ћемо омогућити непрестану промену боје
и дебљине оловке чиме постижемо да лик оставља атрактивнији траг.

Пример 2 - Пројекат Прати_ме по трагу 2

Променићемо функције дирки за управљање кретањем лика. Наиме, избацићимо наредбе за усмеравање. Диркама стрелица лево и стрелица десно придружићемо наредбе који окрећу лик за 15 степени улево, односно удесно, а диркама стрелица горе и стрелица доле придружиће наредбе иди 10 корака, односно иди -10 корака. Тако ће притисак на дирке са стрелицама покретати следеће акције лика.

_images/prati_me3.png

Да би траг који оставља бубамара био атрактивнији, додаћемо промену боје и дебљине оловке сваких 5 секунди на случајан начин. У ту сврху ћемо уместо задавања боје оловке наредбом neka_boja користити наредбу boja_broj у којој се боја задаје бројем. У њој може да се користи операција случајан број.

Кодирање боја бројевима

Сваком од целих бројева из интервала [0,199] одговара нека од боја. На пример, 0 је црвено, 30 жуто, 70 зелено, 130 плаво, а 170 магента. Како су бројеви повезани са бојама можемо илустровати на следећи начин.

  1. Лик који оставља траг поставимо на средину левог руба позорнице, на пример на тачку с координатама (-190,0).
  2. Поставимо да оловка буде врло дебела, на пример 100 пиксела.
  3. Поставимо боју на 0, спустимо оловку. Као траг остаће круг пречника 100 пиксела задате боје.
  4. Кад подигнемо оловку лик треба да иде 100 корака.
  5. Поновимо кораке (3) и (4) још четири пута, сваки пут са другом вредношћу за боју (30, 70, 130, 170).

Разуме се, пре експеримента треба обрисати позорницу наредбом obrisi.

Почетак кода и изглед позорнице по задавању свих 5 вредности за боју приказани су на следећој слици.

_images/prati_me2.png

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

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

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

_images/prati_me4.png
Трећи пример показује како коришћењем наредбе понављања (коју ћемо упознати
у наредном поглављу), можемо нацртати линије за подвлачење различитих стилова.

Препоручујемо да претходно погледате пројекте Цртање_линије и ЦртањеЛинијеУдвеБоје у којима је показано како се могу нацртати линије раличите дужине, дебљине и боје.

У пројекту ЦртањеИспрекиданеЛиније показано је како се понављањем 10 пута узорка „цртица празнина”, при чему се при сваком понављању мења боја цртице наредбом promeni_boju, може нацртати „весела испрекидана линија”.

Пример 3 - Пројекат Линије

Пројекат Линије црта линију љубичасте боје, дужине 400 и дебљине 2 пиксела почев од тачке (-200,0) на један од 5 следећих начина.

_images/linije.png

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

Кликом на зелену заставицу брише се све што је претходно било на позорници, постављају се вредности за боју и дебљину оловке и појављује се лик који даје упутства како покренути пројекат.

Свака од скрипти придружених диркама 1-5 тастатуре прво обрише све што је претходно нацртано, сакрије лик, исцртава линију на задати начин и затим у горњем левом углу прикаже лик који изговара на који је начин исцртана линија.

Први начин је цртање непрекидне линије. Ово се може урадити тренутно, једном једином наредбом „иди 400 корака”, али ми смо, да би и први начин трајао приближно као остали, цртање 400 тачака обавили тако што је лик 40 пута ишао по 10 корака.

Други начин - лик 100 пута понавља узорак: иде 1 корак са спуштеном оловком, па 3 корака са подигнутом.

Трећи начин - лик 50 пута понавља узорак: иде 3 корака са спуштеном оловком, па 5 корака са подигнутом.

Четврти начин - лик 40 пута понавља узорак: иде 6 корака са спуштеном оловком, па 4 корака са подигнутом.

Пети начин - лик 25 пута понавља узорак: иде 6 корака са спуштеном оловком, 4 корака са подигнутом, 2 корака са спуштеном, па 4 корака са подигнутом оловком.

На следећој слици приказане су скрипте за догађаје клик на зелену заставицу, клик на дирку 1 и клик на дирку 2

_images/linije_skripte.png
Пошто смо у претходном примеру већ унапред представили наредбу понављања, искористићемо
је и у следећем пројекту. Напомињемо да наредбе понављања не скраћују трајање извршавања
програма, већ само омогућавају програмеру да прегледније и краће пише програме.

Пре примера 4 корисно је да погледаш пројекат Цртање_квадрата у коме се објашњава употреба наредбе понављања.

Пример 4 - Пројекат Геометријске_фигуре 1

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

Правилни многоуглови имају све странице једнаке и све углове једнаке. Цртаћемо наведене многоуглове почев од темена у центру екрана, са страницама дужине 100 пиксела.

Кренимо од цртања квадрата. Послаћемо оловку у центар екрана, тачку (0,0), спустити је и поновити 4 пута пар наредби: иди 100 корака, окрени се 90 степени.

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

_images/mnogouglovi1.png

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

_images/geometrijske_figure1.png

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

Као и у претходном примеру, кликом на зелену заставицу брише се све што је претходно било на позорници, постављају се вредности за боју и дебљину оловке и даје упутство како користити пројекат.

Да би упутство било све време на позорници направићемо позадину на којој је исписано. Како Скречов уграђени едитор слика још увек не подржава ћирилицу, текст који је исписан као позадина припремили смо у програму Paint. Прво треба подесити величину слике према димензијама позорнице као на следећој слици.

_images/pozadina1.png

Затим треба изабрати одговарајући фонт и исписати текст упутства. Овако обликовану позадину смо упамтили као фајл Позадина и увезли га као нову позадину у Скреч. Изглед позорнице по извршеној скрипти за цртање шестоугла приказан је на следећој слици.

_images/pozadina2.png

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

_images/geometrijske_figure21.png

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

Питање 1

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

    _images/pit4_1.png
  • Припада групи Операције.
  • Припада групи Изглед.
  • Блок је тамно зелене боје.
  • Блок је тамно зелене боје.

Питање 2

    Q-53: Сваки од ових блокова нешто мења. Који од њих ће променити траг који оставља оловка при цртању? (Изабери све тачне одговоре)

    _images/pit4_2.png
  • Промениће дебљину трага.
  • Припада групи Изглед.
  • Промениће боју трага.
  • Мења позицију лика.

Питање 3

    Q-54: У неком програму се лик креће, али не оставља траг. У чему је проблем? (Изабери све тачне одговоре)
  • није активиран блок спусти оловку
  • Ако оловка није спуштена не остаје траг.
  • активиран је блок подигни оловку
  • Ако је оловка подигнута не остаје траг при кретању лика.
  • лик је скривен
  • Да ли је лик скривен или приказан не утиче на цртање.
  • активиран је блок обриши
  • То што је претходно обрисана позорница не смета цртању.

Питање 4

    Превлачењем упари блокове са одговарајућим групама наредби. Покушај поново
  • сакриј
  • Изглед
  • обриши
  • Оловка
  • питај_и чекај
  • Осећаји
  • усмери се ка
  • Кретање

Питање 5

    Сваком од целих бројева из интервала [0,199] одговара нека од боја. Превлачењем упари боје са бројем којим се кодирају. Покушај поново
  • црвено
  • 0
  • жуто
  • 30
  • зелено
  • 70
  • плаво
  • 130

pokusaj Покушај

Вежба 1

Шта црта следећи програм?

_images/vezba4_1.png

Вежба 2

Напиши скрипту која ће обезбедити следеће цртање.

Одведи лик на позицију (-50,30), спусти оловку, па напиши наредбе које омогућавају следеће релативно кретање:

1 →, 1 ↓, 2 →, 1 ↑, 1 →, 2 ↓, 4 ←, 2 ↑.

Запис 5 → значи да 5 пута треба ићи по 10 корака удесно, а запис 1 ↑ да треба једанпут ићи 10 корака горе. За задавање кретања користићемо још ознаке ← и ↓.

Вежба 3

Напиши скрипту која користи само наредбe апсолутног кретања (и спуштања оловке) за цртање слике коју је цртао програм из вежбе 2.

Вежба 4

Графички диктат 1

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

Направи пројекат који омогућава вођење лика диркама стрелицама као у Примеру 3 овог поглавља:

  • стрелица десно води лик 10 корака удесно,
  • стрелица лево води лик 10 корака улево,
  • стрелица горе води лик 10 корака нагоре,
  • стрелица доле води лик 10 корака надоле.

Обезбеди да је лик сакривен и позорница обрисана.

Одведи лик на позицију (-50,30), то је полазна тачка, спусти оловку, па откуцај следећи низ стрелица:

1 →, 1 ↓, 2 →, 1 ↑, 1 →, 2 ↓, 5 →, 2 ↑, 1 ←, 1 ↑,

2 →, 8 ↓, 1 ←, 2 ↑, 1 ←, 2 ↓, 1 ←, 2 ↑, 3 ←, 2 ↓,

1 ←, 2 ↑, 1 ←, 2 ↓, 1 ←, 3 ↑, 1 ←, 4 ↑.

Ако си добро пратио упутство, требало би да си се вратио у полазну тачку.

Шта си нацртао?

Одговор:

_images/gd1.png

Вежба 5

Графички диктат 2

Важе све поставке као за Графички диктат 1, а алгоритам цртања је следећи.

Одведи лик на полазну тачку (-60,40), спусти оловку и цртај:

3 →, 1 ↑, 1 →, 4 ↓, 6 →, 1 ↑, 1 →, 1 ↓, 1 ←,

7 ↓, 1 ←, 3 ↑, 5 ←, 3 ↓, 1 ←, 7 ↑, 3 ←, 3 ↑.

Ако си добро пратио упутство, требало би да си се вратио у полазну тачку.

Шта си нацртао?

Одговор:

_images/gd2.png

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

Грешка 1

Питање:Ученик је написао програм који треба да нацрта линију укупне дужине 300 пиксела такву да је првих 100 црвене боје, следећих 100 зелене, а последњих 100 плаве боје. Када је покренуо скрипту ништа се није десило. У чему је проблем?
_images/greska4_1.png

Одговор:

Нема наредбе spusti.

Грешка 2

Питање:Ученик је написао програм који треба да нацрта линију плаве боје укупне дужине 300 пиксела такву да је првих 100 дебљине 10, следећих 100 дебљине 20, а последњих 100 дебљине 30 пиксела. Када је први пут покренуо програм све је радило како треба, али при сваком следећем стартовању линија коју је програм цртао целом дужином је била дебела 30 пиксела. У чему је проблем?
_images/greska4_2.png

Одговор:

На крају првог извршавања програма дебљина оловке је постављена на 30, оловка се налази на крају линије на позицији (200,0) и није подигнута. Зато се у следећем извршавању враћа на полазну позицију остављајући траг дебео 30 пиксела, па цртање преко тог трага са мањом дебљином исте боје не може да се види. Грешка се исправља тако што се пре постављања на почетну позицију оловка подигне.

Грешка 3

Питање:Ученик је написао програм који треба да нацрта линију плаве боје укупне дужине 300 пиксела такву да је првих 100 дебљине 10, следећих 100 дебљине 20, а последњих 100 дебљине 30 пиксела. При сваком покретању програма добијао се исти траг, али не са захтеваним повећањем дебљине, него много већим. У чему је проблем?
_images/greska4_3.png

Одговор:

Није требало користити наредбу promeni_debljinu са параметрима 20 и 30, већ са повећањем дебљине за 10, или уместо те наредбе поставити блок neka_debljina са параметрима 20 и 30.

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

Појмови: корњача графика, кодирање боја, случајни бројеви.

Наредбе: olovka - obrisi, podigni, spusti, neka_boja, promeni_boju, boja_broj, promeni_senku, neka_senka, promeni_debljinu, neka_debljina;

upravljanje - ponovi10, ponavljaj.

Репортери: operacije -slucajan_broj.

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

Пројекат 1 - Шестоугао

Састави програм који црта шестоугао чија се дужина странице генерише као случајан број из интервала [100,200].

Пројекат 2 - Квадрати

Напиши пројекат који нуди цртање квадрата чије су странице паралелне координатним осама или са координатним осама заклапају угао од 45 о. Избор треба да се врши кликом на дирку 1 или 2 тастатуре. Упутство за коришћење програма треба да буде исписано на позадини позорнице као у Примеру 2. Дужина странице нека буде 100 пиксела.

Пројекат 3 - Троуглови

Напиши пројекат који нуди цртање троугла који је:

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

Пројект треба да има упутство које каже која дирка тастатуре покреће цртање које врсте троугла.

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

Пројекат 4 - Четвороуглови

Напиши пројекат који нуди цртање четвороугла који је:

а) квадрат, б) правоугаоник, в) ромб, г) паралелограм, д) трапез.

Цртање испланирај тако да на крају на позорници буду нацртане све побројане врсте четвороуглова.

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

Догађаји који покрећу цртање појединих врста четвороуглова треба да буду придружени диркама тастатуре по твом избору.

Напомена. Тема Четвороугао обрађује се у математици за шести разред.