Гранање¶
Верујемо да те је досашње програмерско искуство уверило у чињеницу да је понављање извршавања једног или више блокова наредби моћан коцепт у програмирању.
Једнако користан и важан је концепт гранања програма. Гранање омогућава да се део наредби програма извши, а део не. Kоје наредбе ће бити извршене зависи од испуњености услова. Услов треба да схватиш као тврђење које може бити тачно или нетачно.
Иако смо до сада стварали само програме у којима су се све наредбе извршавале редом, једна за другом, од почетка до краја програма, већина програма садржи гранање.
У категорији Управљање налазе се два блока намењена гранању:
Блок који обезбеђује да се изврше одређене наредбе ако је резултат провере испуњености услова тачно и
Блок који обезбеђује да се изврше одређене наредбе ако је резултат провере испуњености услова тачно, а друге наредбе ако је резултат провере испуњености услова нетачно .
Оператори поређења¶
Један од начина да утврдимо да ли је услов испуњен јесте да, из категорије Оператори одаберемо неки од оператора поређења:
веће од ;
мање од ;
једнако .
На доњој слици приказани су резултати испитивања успуњености услова (добили смо их двокликом на шестоугаони блок).
У примеру А видимо да је резултат испитивања испуњености услова вредност false, што значи нетачно. И заиста, нетачно је да су бројеви 20 и 50 једнаки. У примеру B испитивали смо да ли је број који је унео корисник мањи од броја 50 и добили вредност true, што значи тачно. Заиста, корисник је унео број 32, а тај број је мањи од броја 50.
Дакле, блокови наредби шестоугаоног облика, након извршавања, враћају вредност true (тачно) или false (нетачно).
У школи организујете пролећни вашар. Имаш задатак да осмислиш лутрију. Све мора да буде фер и поштено. Зато се одлучујеш да направиш рачунарски програм и избегнеш могућност људске грешке.
Направићеш програм који тражи од учесника да унесе реч дужине до 20 слова, по свом избору. Ако је број слова у унетој речи исти као број који је „замислио” рачунар, учесник добија награду.
Анализом долазимо до закључка да:
рачунар треба насумично да одабере број;
учесник треба да унесе реч;
рачунар треба да упореди број слова у унетој речи са раније одабраним насумичним бројем;
ако су број слова и насумични број једнаки, рачунар треба да обавести корисника да је добио награду, док у супротном треба да га обавести да није добио награду.
Помоћи ћемо ти при изради дела програма који испитује да ли су број слова у речи коју је корисник унео и насумични број који је рачунар одабрао једнаки.
Допуни приказану скрипту потребним блоковима и направи функционалан програм за школски вашар.
Могуће решење
Логички оператори¶
Интересантно је да погледамо принцип функционисања логичких оператори. Они су, као и оператори поређења, шестоугаоног облика, те након извршавања, враћају вредност true или false. Ипак, имају сложенији посао од оператора поређења. Користећи ове операторе, можемо да комбинујемо два или више услова како бисмо довили један резултат (тачно или нетачно).
Оператор враћа вредност true ако су тачна оба услова;
Оператор враћа вредност true ако су тачан бар један од услова;
Оператор враћа вредност true ако није испуњен услов (вредност услова је нетачно).
На доњој слици приказани су резултати испитивања успуњености услова (добили смо их двокликом на шестоугани блок).
Логички оператор ИЛИ враћа вредност true зато што је испуњен бар један од два услова (број који је корисник унео није једнак 50, али јесте једнак 40). Логички оператор НИЈЕ враће вредност false зато што услов је услов испуњен (40 јесте мање од 50). Овај оператор вратио би вредност true када услов не би био испуњен (нпр. да је корисник унео број 60, тада би било истина да услов није испуњен, те би оператор НИЈЕ вратио вредност true). Делује помало замршено, зар не? :) Ако се тако осећаш, предлажемо ти да још једном анализираш горњу слику и прочиташ нше објашњење.
- true
- Ниси у праву. Приказани оператор враћа вредност true ако није истина да је дужина стринга "јабука" 6 карактера. С обзиром на то да дужина стринга "јабука" јесте 6 карактера, оператор ће вратити вредност false.
- false
- Браво! Приказани оператор враћа вредност true ако није истина да је дужина стринга "јабука" 6 карактера. С обзиром на то да дужина стринга "јабука" јесте 6 карактера, оператор ће вратити вредност false.
Q-4: Означи коју вредност ће, након извршавања, вратити логички оператор приказан на слици.
Организациони одбор пролећног вашара одлучио је да награду не добије само учесник лутрије који је унео реч чија је дужина једнака броју који је рачунар „замислио”. Утешну награду добиће они учесници лутрије који су унели реч за једно слово дужу или за једно слово краћу од броја који је рачунар замислио
Очигледно је да мораш да коригујеш свој програм. Саветујемо ти да користиш логички оператор , као и да направиш променљиву Случајан број..
Могуће решење
Деца су навикла да користе уређаје са екранима осетљивим на додир. Нису нарочито спретна када је коришћење миша у питању. Помоћи ћемо им да увежбају ову технику тако што ћемо да направимо програм у коме је лик Kамион, а позадина позорнице Пут. Kамион треба да прати показивач миша корисника и стигне са леве на десну страну позорнице. На свом путу, камион не сме да додирне ивицу пута. Ако до таквог додира дође, камион се враћа на почетну позицију (на почетак пута на левој страни позорнице - x: -226, y: -41). При креирању програма предлажемо ти да користиш пројекат Путовање на адреси https://scratch.mit.edu/projects/326419371/.
Kао што видиш, лик Kамион је сувише велики за узак пут нацртан на позадини позорнице коју користимо у овом програму. Такође, уочаваш да је пут беле боје и да га од „траве” одваја црна линија. Ова два запажања треба да ти буду на уму ако желиш самостално да направиш овакав програм.
Могуће решење
Било би добро да наш програм мери време потребно да корисник „доведе” камион до краја пута. Унапреди програм додајући му скрипту која мери време потребно кориснику да „заврши путовање”.
Могуће решење
Направи Scratch програм који садржи један лик - шарену лопту. Лопта треба бесконачно да се креће по позорници одбијајући се о њене зидове. Када је на десној страни позорнице, лопта треба да мења боје. Када се врати на леву страну позорнице, лопта треба да задржи последњу боју коју је имала.
Мала помоћ: За одбијање лопте о зидове позорнице користи блок , а за одређивање боје лопте сети се координатног система позорнице.
Могуће решење
- Наше решење налази се на адреси https://scratch.mit.edu/projects/171584194/.
Од Скреча ка Пајтону
На доњој слици приказан је запис гранања програма у Скречу и Пајтону. Обрати пажњу на два знака једнакости која користимо у Пајтону када испитујемо испуњеност услова. По твом мишљењу, зашто Пајтон не користи само један знак једнакости?