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

Час 15 - Функције

На овом часу говорићемо о: ­

  • ­­­томе како се сложени програми деле на делове – функције;

  • креирању функција у МејкКоду;

  • параметрима и аргументима.

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

Једна од главних улога функције је да рашчлани програм на делове који имају тачно дефинисане улоге. На пример, за прављење пице, потребно је да направиш тесто, развучеш тесто, додаш преливе, додаш састојке, и на крају је испечеш. Ако бисте програмирали робота за производњу пица, коришћењем функција можеш целокупни поступак „направи пицу” да поделиш на делове - једна функција за сваки део процеса прављења пица, нпр. поступак прављења теста, процес печења,…..

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

Функција у MeјкКоду представља групу наредби које се извршавају само када су позване.

Како се дефинишу функције

Да бисмо дефинисали функцију потребно је да изаберемо из категорије Advanced подкатегорију Function. Из категорије Function (1) кликнемо на дугме Make a Function (2). Појавиће се дијалошки прозор (3) који омогућава креирање функције. У пољу за назив функције упиши име (4), на пример Срце и потврди кликом на дугме Done (5).

_images/252.png

У радном окружење појавиће се нови блок Срце, којем треба придружити блок за приказивање слике срца fun1 (1).

У програму, приказивање слике срца (3) функције Срце вршимо позивањем функције користећи блок fun2 (2).

_images/255.png

Нови блок може да има и улазна поља. Захваљујући томе можемо да користимо функцију за израчунавање збира два броја а и b. Да бисмо то постигли, потребно је да из категорије Function, кликнемо на дугме Make a Function. Отвара се прозор у коме уносимо име функције Сабирање.

Од четири могућности које су понуђене за додавање нових поља у блоку fun3 изабраћемо два блока Number и на нашем блоку ће се појавити одговарајућа два улазна поља у које ћемо уписати а и b имена променљивих за два сабирка.

_images/257.png

Име a и b који смо унели у заглавље дефиниције фунције Сабирање назива се параметар (1). Конкретне вредности параметара ћемо задати као аргумент (2) новоуведене функције. Тај аргумент ће заменити свако појављивање параметра а и b у функцији. За параметар можемо да кажемо да је „чувар“ места за аргумент. Да бисмо функцију користили, морамо да је „позовемо” навођењем њеног имена, коришћењем блока fun4fun7 (2).

_images/262.png

Аргументе a и b ћемо креирати користећи функцију за насумично биране бројчаних вредности fun8 од 0 до 10, тако што притиснемо тастере А и Б на микробиту:

Цртање хоризонталних линија (свака друга)

_images/264.png

Да бисмо нацртали хоризонталну линију (паралелну х оси) потребно је да повежемо све тачке које имају исту вредност координате у. На пример, ако је у=0 нацртаћемо саму х осу. На почетку укључујемо диодицу на левом рубу екрана микробита у тачку (0, 0), и попуњавамо празна поља све до (5,0). Следећи корак да пређемо на цртање следеће линије у другом и последњем реду. Ако желимо да нацртамо све хоризонталне линије чија је у координата број који се завршава цифром 0 (дељив са 2) понављаћемо претходно описани поступак за у=2 и 4.

_images/265.png

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

_images/266.png

Цртање вертикалних линија

Слично цртању хоризонталне линије, да бисмо нацртали вертикалну линију потребно је да повежемо све тачке које имају исту вредност координате х. На почетку поставимо да је упаљена диода на горњи руб екрана, на пример у тачку (0,0), и затим, укључујемо све диоде у интервалу (0, 5). Следећи корак да пређемо на цртање следеће линије у другом и последњем реду. Ако желимо да нацртамо све хоризонталне линије чија је x координата број који се завршава цифром 0 (дељив са 2) понављаћемо претходно описани поступак за x=2 и 4.

_images/267.png

Упамтите цео појекат под називом Мрежа.

Размисли:

Треба да креираш функцију којом се исцртава квадрат као на слици.

_images/268.png

Креиране су одговарајуће функције и код којим се црта квадрат.

_images/269.png

Међутим, ови блокови као резултат дају следећу слику.

_images/270.png

Где је грешка?

Одговор: У функцији Линија вертикална у блоку plot x …. уместо 0 постави променљиву x из главног програма, исто урадити у функцији Линија хоризонтална у блоку plot y…. уместо 0 постави променљиву y из главног програма.

Шта смо научили?
  • да је главна улога функције да рашчлани програм на делове који имају тачно дефинисане улоге.

  • како се креирају нови блокови (функције) са и без улазних поља. Блокови са улазним пољима, аргументе који се у њих уписују прослеђује функцији дајући параметра вредности. На тај начин, један исти блок може да реализује више различитих акција у зависности вредности аргумената.

Квиз

    Q-19: Да ли је главни програм надређен функцијама? Означи тачан одговор.

  • Да
  • Браво! Твој одговор је тачан.
  • Не
  • Твој одговор није тачан. Покушај поново!

    Q-20: Да ли се у MeјкКоду функције могу реализовати на само један начин? Означи тачан одговор.

  • Да
  • Твој одговор није тачан. Покушај поново!
  • Не
  • Браво! Твој одговор је тачан.

    Q-21: Да ли блок за функцију може да има и улазна поља? Означи тачан одговор.

  • Да
  • Браво! Твој одговор је тачан.
  • Не
  • Твој одговор није тачан. Покушај поново!

    Q-22: Да ли се вредности које блок предаје функцији називају параметри? Означи тачан одговор.

  • Да
  • Твој одговор није тачан. Покушај поново!
  • Не
  • Браво! Твој одговор је тачан.