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

Гранање

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

Једнако користан и важан је концепт гранања програма. Гранање омогућава да се део наредби програма извши, а део не. Kоје наредбе ће бити извршене зависи од испуњености услова. Услов треба да схватиш као тврђење које може бити тачно или нетачно.

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

У категорији Управљање налазе се два блока намењена гранању:

  • Блок који обезбеђује да се изврше одређене наредбе ако је резултат провере испуњености услова тачно AkoOnda и

  • Блок који обезбеђује да се изврше одређене наредбе ако је резултат провере испуњености услова тачно, а друге наредбе ако је резултат провере испуњености услова нетачно AkoOndaS.

Оператори поређења

Један од начина да утврдимо да ли је услов испуњен јесте да, из категорије Оператори одаберемо неки од оператора поређења:

  • веће од VeceOd;

  • мање од ManjeOd;

  • једнако Jednako.

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

_images/PRIOP.png

У примеру А видимо да је резултат испитивања испуњености услова вредност false, што значи нетачно. И заиста, нетачно је да су бројеви 20 и 50 једнаки. У примеру B испитивали смо да ли је број који је унео корисник мањи од броја 50 и добили вредност true, што значи тачно. Заиста, корисник је унео број 32, а тај број је мањи од броја 50.

Дакле, блокови наредби шестоугаоног облика, након извршавања, враћају вредност true (тачно) или false (нетачно).

_images/zzz.png

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

Направићеш програм који тражи од учесника да унесе реч дужине до 20 слова, по свом избору. Ако је број слова у унетој речи исти као број који је „замислио” рачунар, учесник добија награду.

Анализом долазимо до закључка да:

  • рачунар треба насумично да одабере број;

  • учесник треба да унесе реч;

  • рачунар треба да упореди број слова у унетој речи са раније одабраним насумичним бројем;

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

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

_images/LutrijaDeo.png

Допуни приказану скрипту потребним блоковима и направи функционалан програм за школски вашар.

Могуће решење

_images/Lutrija.png

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

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

  • Оператор And враћа вредност true ако су тачна оба услова;

  • Оператор Or враћа вредност true ако су тачан бар један од услова;

  • Оператор Not враћа вредност true ако није испуњен услов (вредност услова је нетачно).

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

_images/PRILO.png

Логички оператор ИЛИ враћа вредност true зато што је испуњен бар један од два услова (број који је корисник унео није једнак 50, али јесте једнак 40). Логички оператор НИЈЕ враће вредност false зато што услов је услов испуњен (40 јесте мање од 50). Овај оператор вратио би вредност true када услов не би био испуњен (нпр. да је корисник унео број 60, тада би било истина да услов није испуњен, те би оператор НИЈЕ вратио вредност true). Делује помало замршено, зар не? :) Ако се тако осећаш, предлажемо ти да још једном анализираш горњу слику и прочиташ нше објашњење.

    Q-4: Означи коју вредност ће, након извршавања, вратити логички оператор приказан на слици.

    _images/Z1.png
  • true
  • Ниси у праву. Приказани оператор враћа вредност true ако није истина да је дужина стринга "јабука" 6 карактера. С обзиром на то да дужина стринга "јабука" јесте 6 карактера, оператор ће вратити вредност false.
  • false
  • Браво! Приказани оператор враћа вредност true ако није истина да је дужина стринга "јабука" 6 карактера. С обзиром на то да дужина стринга "јабука" јесте 6 карактера, оператор ће вратити вредност false.

_images/zzz.png

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

Очигледно је да мораш да коригујеш свој програм. Саветујемо ти да користиш логички оператор Or, као и да направиш променљиву Случајан број..

Могуће решење

_images/LutrijaKorigovano.png

_images/zzz.png

Деца су навикла да користе уређаје са екранима осетљивим на додир. Нису нарочито спретна када је коришћење миша у питању. Помоћи ћемо им да увежбају ову технику тако што ћемо да направимо програм у коме је лик Kамион, а позадина позорнице Пут. Kамион треба да прати показивач миша корисника и стигне са леве на десну страну позорнице. На свом путу, камион не сме да додирне ивицу пута. Ако до таквог додира дође, камион се враћа на почетну позицију (на почетак пута на левој страни позорнице - x: -226, y: -41). При креирању програма предлажемо ти да користиш пројекат Путовање на адреси https://scratch.mit.edu/projects/326419371/.

_images/Putovanje.png

Kао што видиш, лик Kамион је сувише велики за узак пут нацртан на позадини позорнице коју користимо у овом програму. Такође, уочаваш да је пут беле боје и да га од „траве” одваја црна линија. Ова два запажања треба да ти буду на уму ако желиш самостално да направиш овакав програм.

Могуће решење

_images/PutovanjeSkripta.png

_images/zzz.png

Било би добро да наш програм мери време потребно да корисник „доведе” камион до краја пута. Унапреди програм додајући му скрипту која мери време потребно кориснику да „заврши путовање”.

Могуће решење

_images/PutovanjeVreme.png

_images/zzz.png

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

_images/SarenaLopta.png

Мала помоћ: За одбијање лопте о зидове позорнице користи блок NaRubu, а за одређивање боје лопте сети се координатног система позорнице.

_images/KoordinateLopta.png

Могуће решење

_images/SarenaLoptaSkripta.png
Наше решење налази се на адреси https://scratch.mit.edu/projects/171584194/.

Од Скреча ка Пајтону

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

_images/L7_OdSkrecaKaPajtonu.png