You are on page 1of 164

Светлана Вујиновић

РАЧУНАРСТВО И
ИНФОРМАТИКА 3
Приручник за наставнике рачунарства и
информатике за трећи разред гимназије
РАЧУНАРСТВО И ИНФОРМАТИКА 3
Приручник за наставнике рачунарства и информатике за трећи разред гимназије
Прво издање

Аутор: Светлана Вујиновић


Рецензент: Љубица Бојовић, професор рачунарства и информатике у Економској школи у Чачку

Фотографије и илустрације: Светлана Вујиновић


Компјутерско обликовање: „АБРАКА ДАБРА”, Нови Сад
Обликовање корица: Издавачка кућа „Klett”
Лектура и коректура: Ана Влајић

CIP - Каталогизација у публикацији -


Народна библиотека Србије, Београд
Издавач: Издавачка кућа „Klett” д.о.о.
371.3::004(035)
Маршала Бирјузова 3–5, 11000 Београд
Тел.: 011/3348-384, факс: 011/3348-385 ВУЈИНОВИЋ, Светлана, 1973-
office@klett.rs, www.klett.rs Рачунарство и информатика 3 : приручник
за наставнике рачунарства и информатике за
трећи разред гимназије / Светлана Вујиновић ;
За издавача: Гордана Кнежевић Орлић [фотографије Светлана Вујиновић ; илустрације
Главни уредник: Александар Рајковић Светлана Вујиновић]. - 1. изд. - Београд : Klett, 2016
Уредник: др Гордана Павловић Лажетић (Београд : Марго арт). - 164 стр. : илустр. ; 29 cm
Руководилац пројекта: Александра Стаменковић Тираж 300. - Библиографија: стр. 164.
Штампа: Марго арт, Београд
ISBN 978-86-7762-923-6
Тираж: 300 примерака
a) Рачунарство - Настава - Методика - Приручници
COBISS.SR-ID 225212940

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

© Klett, 2016.

ISBN 978-86-7762-923-6
УВОД
Приручник за наставнике рачунарства и информатике за трећи разред гимназије пред-
ставља додатни наставни материјал који прати актуелни Наставни план и програм и уџбе-
ник ИК „Klett” Информатика 3, аутора Филипа Марића.
Наставни програм у трећем разреду гимназије предвиђа упознавање ученика са програ-
мирањем. Програмирање је интересантна и динамична научна дисциплина, а од ученика
захтева особине неопходне и за професионални рад и за сналажење у многим ситуацијама
из свакодневног живота: логичко мишљење, прецизност, систематичност, креативност и
ефективност.
Настава би требало да буде организована тако да подстиче интересовање ученика за
унапређење алгоритамске културе и стицање основних знања из програмирања. Након за-
вршетка треће године гимназије, ученици би требало да схвате неопходност коришћења
рачунара у животу, будућем школовању и раду и ефикасно користе програмски језик. Стога
је навећи део Приручника посвећен раду са алгоритмима. Због мотивације ученика, важно
је показати им како програм ради на рачунару, па је коришћен програмски језик Pascal, који
је препоручен и у Уџбенику, док је интерфејс програма у његовој визуелној модификацији,
Lazarus-у.
Надамо се да ће вам Приручник бити од помоћи у раду, а сугестије, критике и предлози
како да га заједно учинимо бољим биће нам веома драгоцени.

Аутор
САДРЖАЈ
1. НАСТАВА РАЧУНАРСТВА И ИНФОРМАТИКЕ У ТРЕЋЕМ РАЗРЕДУ ГИМНАЗИЈА . .5
1.1. Начин остваривања програма . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7

2. ПРЕДЛОЗИ ЗА ИЗР,АДУ ГОДИШЊЕГ И ОПЕРАТИВНОГ ПЛАНА . . . . . . . . . . . . . . . . . .15


2.1. Пример годишњег планирања наставе рачунарства и информатике
у трећем разреду гимназије. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
2.2. Месечни распоред наставног градива за трећи разред гимназије . . . . . . . . . . . . . .22

3. СТАНДАРДИ УЧЕНИЧКИХ ПОСТИГНУЋА . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141

4. ХОРИЗОНТАЛНА, ВЕРТИКАЛНА И ДИЈАГОНАЛНА КОРЕЛАЦИЈА . . . . . . . . . . . . .150

5. НАСТАВНЕ ТЕХНИКЕ, МЕТОДЕ И ОБЛИЦИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152

6. НАСТАВНА СРЕДСТВА. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156

7. ОЦЕЊИВАЊЕ УЧЕНИКА. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157

8. ЛИТЕРАТУРА . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164
1. НАСТАВA РАЧУНАРСТВA И ИНФОРМАТИКE
У ТРЕЋЕМ РАЗРЕДУ ГИМНАЗИЈА1

Циљ наставног предмета Рачунарство и информатика је стицање знања, овладавање


вештинама и формирање вредносних ставова који доприносе развоју информатичке писме-
ности неопходне за даље школовање, живот и рад у савременом друштву и оспособљавање
ученика да ефикасно и рационално користе рачунаре на начин који не угрожава њихово
физичко и ментално здравље.1
Задаци наставе Рачунарства и информатике су да ученици:
• развију свест о неопходности коришћења рачунара у свакодневном животу и раду и
значају информатике за функционисање и развој друштва;
• овладају коришћењем програма за обраду текста и табеларних података и креирање
докумената у којима су интегрисани текст, слика и табела;
• ефикасно користе програмски језик заснован на прозорима за решавање различитих
проблема у даљем образовању, професионалном раду и свакодневном животу;
• стекну знања потребна за подешавање параметара оперативног система на нивоу ко-
рисничког интерфејса, за коришћење могућности оперативних система и система дато-
тека конкретног оперативног система;
• разумеју принципе функционисања интернета, локалних мрежа и оспособе се за ко-
ришћење мрежних ресурса, интернет сервиса и система за електронско учење;
• јачају способност за прецизно и концизно дефинисање проблема;
• упознају се са алгоритамским начином решавања проблема и основним алгоритмима;
• развију способности писања програма вођених догађајима и разумеју принципе креи-
рања модуларних и добро структуираних програма;
• упознају основни концепт и принципе веб-дизајна и веб-програмирања, разумеју логи-
ку анимације и овладају њеном употребом у креирању сопствених веб-пројеката;
• упознају принципе представљања и обраде цртежа и слика на рачунару и овладају тех-
никама коришћења једног од графичких програма за обраду цртежа и слика;
• упознају начине израде презентација и оспособе се за израду једноставнијих презента-
ција;
• упознају концепт базе података, њену организацију, коришћење упита за добијање тра-
жених података из базе, прављење извештаја и дистрибуцију података;
• јачају способност решавања проблема развојем логичког и критичког мишљења;
• унапреде способности за брзо, ефикасно и рационално проналажење информација ко-
ришћењем рачунара, као и њихово критичко анализирање, складиштење и преношење;
• развију прецизност, рационалност и креативност у раду са рачунаром;
• унапреде стратегије и технике самосталног учења користећи могућности рачунара и
развију спремност за учење током целог живота;
• на адекватан начин користе предности рачунара и друштвених мрежа у удруживању са
другима и покретању акција чији је циљ ширење корисних информација или пружање
помоћи и подршке онима којима је то потребно;
• примене стечена знања и вештине у савладавању програма других наставних предмета;
• изграде правилне ставове о коришћењу рачунара, без злоупотребе и претеривања које
угрожава њихово физичко и ментално здравље;
• упознају савремена ергономска решења која олакшавају употребу рачунара и изграде
спремност за праћење нових решења у области информатичке технологије.

1
„Сл. гласник РС – Просветни гласник”, бр. 18/2013.

5
САДРЖАЈИ ПРОГРАМА

Трећи разред гимназије природно-математичког, друштвено-језичког смера и општег типа


(1 час недељно, 30 часова вежби, 37 + 30 часова годишње)

I Решавање проблема применом рачунара (2 + 0)


• Решавање проблема применом рачунара
• Појам и карактеристике алгоритма
• Кратак преглед развоја програмских језика

II Објектно-оријентисано програмирање (1 + 1)
• Објектно-оријентисано програмирање
• Програми засновани на прозорима
‒ Појам графичког корисничког интерфејса
‒ Појам контрола и врсте контрола

III Увод у развојно окружење програмског језика (0 + 2)


• Развојно окружење и креирање апликације
• Креирање апликација
‒ Етапа дизајна корисничког интерфејса
‒ Етапа кодирања

IV Типови података (2 + 0)
• Основни типови података
• Текстуални тип података
• Класа као тип података
• Декларација и дефиниција променљиве
• Конверзије података

V Изрази и наредбе (2 + 2)
• Изрази
• Оператори
• Наредбе

VI Креирање апликација (0 + 4)

VII Наредбе гранања (6 + 4)


• Наредба условног преласка
• Наредба вишеструког избора
• Контроле избора и контејнерске контроле

VIII Наредбе за организацију циклуса (6 + 5)


• Бројчани циклус
• Циклус са условом за понављање на почетку
• Циклус са условом за понављање на крају

6
IХ Методе (6 + 4)
• Решавање проблема помоћу метода
• Пренос параметра

Х Низови и датотеке (6 + 4)

Напомена: За проверу знања предвидети 6 + 4 часова.

1.1. НАЧИН ОСТВАРИВАЊА ПРОГРАМА

При састављању програма и редоследу тематских целина водило се рачуна о обезбеђи-


вању поступности у остваривању садржаја, као и о психофизичким могућностима ученика
овог узраста. Примере који се користе у реализацији наставе треба прилагодити појединач-
ним смеровима гимназије.
Реализација програма Рачунарства и информатике постиже се добром организацијом
наставног процеса, што практично значи:
• рационално коришћење расположивог фонда часова;
• добра организација практичних вежби на рачунару;
• добар избор задатака који се алгоритамски решавају.

У погледу организације рада, значајно је обратити пажњу на следеће елементе:


• Теоријска настава се изводи са целим одељењем и, по потреби, наставник практично
демонстрира поступак решавања проблема уз употребу рачунара. Уколико услови то
дозвољавају, препоручује се извођење и теоријске наставе у рачунарском кабинету. На
часовима теоријске наставе ученицима треба објаснити основне наредбе и упутити их
како да повезују и примењују претходно усвојена знања.
• Увежбавање и практичан рад изводи се у рачунарском кабинету, под контролом настав-
ника. Ученици изводе вежбе самостално, уз потребна упутства наставника о начину
рада, поступцима и фазама. Током реализације вежбе, наставник је дужан да пружи
сва неопходна додатна објашњења, као и потребну помоћ сваком ученику. Свака вежба
мора имати тачно утврђен циљ и задатак који се саопштава ученицима.
• За извођење вежби одељење се дели на две групе. Оцењивање ученика треба обавља-
ти систематски у току школске године. Елементи за оцењивање треба да буду усмене
провере знања, резултати рада на рачунарским вежбама, као и укупан учеников однос
према раду. Наставник је у могућности да проверу знања врши и кроз највише два једнo-
часовна писмена задатка, по један у сваком полугодишту.

При реализацији програма треба имати на уму да се ученици не школују за професију


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

7
Данас сви рачунари имају оперативни систем са графичким корисничким интерфејсом
(програми засновани на прозорима) и ученици интензивно користе рачунаре са таквим
софтвером. Потребно је да се код свих ученика развије свест о томе како је креиран софтвер
који користе и какав све софтвер може да се креира да би се одређени проблеми решили по-
моћу рачунара. Кроз овај предмет потребно је изградити добру основу за даљу надоградњу
знања из програмирања за оне ученике који ће се касније, током школовања на факултету,
тиме више бавити.
Уз сваку тематску целину дат је оријентациони број часова за остваривање. Пред-
лог броја часова који је дат уз наставне теме није коначан и наставник може направити
прерасподелу према сопственом мишљењу, а свакако у зависности од састава ученика у
одељењу, тј. од брзине њиховог напредовања. Такође, потребно је број часова прилагодити
могућностима и интересовањима ученика, у зависности од смера гимназије. Предложено
је да се све теме (до последње: „Низови и датотеке”) обраде са свим ученицима, без обзира
на смер који похађају. Уколико ученици имају потешкоћа у савладавању неких предвиђе-
них тема, предлаже се да се одвоји већи број часова за њихово увежбавање. Тема „Низови
и датотеке” је веома важна, и, уколико је то могуће, потребно је да се реализује на онолико
часова колико је за њу предвиђено. Уколико то није могуће, препоручује се да ученици бар
информативно виде понеки пример и буду упознати са проблемима који се решавају упо-
требом низова. Предлаже се да се и током часова теорије ученицима приказују различити
примери алгоритама и програма, јер ученици у овом узрасту најбоље уче кроз конкретне
примере. У упутству за реализацију програма се у виду предлога налазе неки примери који
могу да послуже као идеја за задатке који могу да се раде са ученицима.
За реализацију наставе у рачунарском кабинету потребно је припремити лаке и средње
тешке задатке са детаљним упутством за решавање. Поред тога, потребно је припреми-
ти и сличне задатке, без решења, кроз које ће ученици постепено развијати способности
алгоритамског решавања проблема. На пример, детаљно објаснити и скицирати решење за
проблем проналажења минимума два броја, а затим ученицима дати да самостално ураде
максимум три броја. Тешке задатке понудити само талентованим ученицима.

I Решавање проблема применом рачунара (2 + 0)


• Решавање проблема применом рачунара
• Појам и карактеристике алгоритма
• Кратак преглед развоја програмских језика

Како је информатика један од основних инструмената за развој интелектуалних способ-


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

8
обрадимо податке са одржаног матурског испита) и корака који су потребни да се креира
програм на рачунару који ће решити тај проблем (на пример, програм у који можемо да уно-
симо имена и бодове ученика и да добијемо уређену листу коначних резултата).
Ученици треба да се упознају са појмом и основним карактеристикама алгоритма. Алго-
ритам се може неформално дефинисати као коначан низ једноставних корака којима се
описује поступак решавања одређеног реалног проблема, тако да се од улазних података
обрадом добијају излазни подаци. Независно од будуће реализације на рачунару, приказати
ученицима неколико примера алгоритама као низова корака које је потребно урадити да би
се дошло до решења. За гимназије природно-математичког смера је, на пример, пожељно
показати Еуклидов алгоритам за проналажење највећег заједничког делиоца (уколико су
ученици добри математичари) или приказати неки од примера из живота, рецимо кулинар-
ски рецепт. У њему се јасно разликује шта је улаз (потребни састојци), шта је обрада (пре-
цизно описан поступак кувања), а шта је излаз (готово јело).
Објаснити ученицима шта је програмирање и дати кратку историју програмирања, на-
бројати врсте програмских језика и поменути који све приступи и тенденције постоје у све-
ту у тој области. Како је ова тема теоријска и планирана је за часове теорије, истовремено са
њеном обрадом могуће је ученике увести у развојно окружење на часовима који се одвијају
у рачунарским кабинетима (III тема: „Увод у развојно окружење програмског језика”).

II Објектно-оријентисано програмирање (1 + 1)
• Објектно-оријентисано програмирање
• Програми засновани на прозорима
‒ Појам графичког корисничког интерфејса
‒ Појам контрола и врсте контрола

Програми засновани на прозорима (програми са графичким корисничким интерфејсом)


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

9
III Увод у развојно окружење програмског језика (0 + 2)
• Развојно окружење и креирање апликације
• Креирање апликација
‒ Етапа дизајна корисничког интерфејса
‒ Етапа кодирања

Показати ученицима развојно окружење изабраног програмског језика. Објаснити ра-


звојно окружење, елементе радне површине, пројекат, поступак креирања пројекта и
чувања на рачунару.
Приликом креирања апликација могу се уочити две етапе које се преплићу: етапа дизајна
корисничког интерфејса и етапа кодирања. Потребно је овај поступак објаснити ученици-
ма. Упознати ученике са основним контролама. Објаснити како функционише програми-
рање вођено догађајима (о методама, догађајима, програмирању реакције на догађај).
У етапи дизајна корисничког интерфејса на форму се додају контроле (дугме, поље за унос
текста, часовник и др.) и друге компоненте. Можемо мењати стања постављених објеката
(текст, боја текста, боја позадине). Апликације су вођене догађајима. За сваки догађај чију ре-
ализацију желимо обезбедити потребно је написати методу (низ наредби) за обраду догађаја.
На пример, притиском на дугме на којем пише „Црвена” променити боју позадине форме у
црвену, а притиском на дугме на којем пише „Плава” променити боју позадине у плаву.
Креирати неке једноставне апликације са графичким корисничким интерфејсом. Водити
рачуна о томе да ученици још увек нису обрадили IV и V тему („Типови података” и „Наредбе
и изрази”), али да већ имају неко знање о објектно-оријентисаном програмирању са часова
теорије и знају да приступе атрибутима објеката и позову методе, тј. измене стања објеката
(на пример, да промене боју позадине форме или промене текст који пише на дугмету).

IV Типови података (2 + 0)
• Основни типови података
• Текстуални тип података
• Класа као тип података
• Декларација и дефиниција променљиве
• Конверзије података

Сваком апликацијом обрађују се подаци. Типом податка одређен је простор потребан за


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

10
С обзиром на то да је тема планирана за часове теорије, могуће је истовремено са њом на
часовима који се одвијају у рачунарским кабинетима кроз апликације приказати примере са
ових теоријских часова и могуће примене (у оквиру VI теме „Креирање апликација”).

V Изрази и наредбе (2 + 2)
• Изрази
• Оператори
• Наредбе

Низ променљивих, константи и позива метода међусобно одвојених операцијским зна-


цима називамо изразом. Изрази могу да буду прости (само константа, променљива, позив
метода) или сложени (са произвољним бројем оператора и елемената израза одвојених за-
градама). Оператори могу да буду аритметички, релацијски, логички и текстуални.
Операција доделе врши се тако што се прво одреди вредност израза, а затим се та вред-
ност додељује променљивој. Треба водити рачуна о томе да променљиве које учествују у
изразу морају претходно да буду постављене на неку вредност како би се вредност израза
могла израчунати. Метода се извршава тако што се једна за другом извршавају наредбе на-
ведене у методи. Начин записивања наредби програмског језика одређен је правилима про-
писаним синтаксом тог језика.
Како је ова тема теоријска и планирана за часове теорије, паралелно са њом на часовима
који се одвијају у рачунарским кабинетима могу се кроз апликације приказати примери са
ових теоријских часова, као и могуће примене (VI тема „Креирање апликација”).

VI Креирање апликација (0 + 4)

Паралелно са IV и V темом, „Типови података” и „Наредбе и изрази”, показати ученицима


неке основне алгоритме и рад са подацима.
Овај део програма требало би реализовати пре свега кроз алгоритме. Ученицима обја-
снити технике програмирања да би могли да их примене на било које развојно окружење.
Нагласити да је важан приступ, шта су полазни а шта излазни параметри, могућа вишестру-
ка решења и могући проблеми.
Један од параметара који би требало да се покаже ученицима је пример калкулатора, с
тим да га треба упростити како би га лакше прихватили. На пример, креирати апликацију
тако да се кроз поља за унос текста унесу два броја, а након клика на дугме апликација треба
да покаже њихов збир. Ученици самостално, ради вежбе, могу да прошире ову апликацију
како би обављали још неке аритметичке операције. Треба им скренути пажњу на то шта се
дешава уколико се у поља за унос текста унесу карактери који нису цифре. Потом им пока-
зати како да тај проблем превазиђу, рецимо механизмом за обраду изузетака у изабраном
програмском језику.
За примере је могуће узимати једноставне математичке проблеме који су ученицима по-
знати (израчунај површину/обим/запремину геометријског тела) или задатке из Физике
(превођење температуре из Фаренхејта у Целзијусе, рачунање пређеног пута на основу бр-
зине и времена кретања и слично). Препоручује се да се одаберу задаци у којима ученици
могу да виде њихову практичну примену у свакодневном животу (на пример, прерачуна-
вање износа новца из евра у динаре по датом курсу, рачунање цене дате тежине робе на

11
основу дате цене по килограму, рачунање дужине трајања лета на основу времена полетања
и слетања итд.).
Многи данашњи програми (игрице, софтвер за пројектовање, софтвер за обраду слика,
софтвер за обраду резултата ултразвука у медицини и сл.) богати су графиком. Могуће је
показати ученицима како се ради са графиком у изабраном програмском језику (цртање и
бојење различитих облика – елипса, правоугаоник, многоугао и сл.). Препорука је да се про-
цени време на располагању, способности и интересовања ученика и да се на основу тога до-
несе одлука о томе у којој мери ће се радити задаци са графиком. У неким условима могуће
је радити више графичких задатака, а мање математичких задатака са бројевима. Са малим
фондом часова који је на располагању тешко је очекивати да све групе задатака могу да се
покрију, па програм треба прилагодити потреби. На пример, креирати апликацију која ће на
основу унетих дужина страница троугла рачунати његову површину (математички задатак)
или креирати апликацију у којој се након корисниковог клика мишем на форми исцртава јед-
накостранични троугао (задатак са графиком). Задаци са графиком наводе ученике да, поред
програмерских вештина решавања проблема, развијају геометријске способности и вештине
пројектовања. Да би се радило са графиком, потребно је добро познавање координатног си-
стема и геометријских облика.

VII Наредбе гранања (6 + 4)


• Наредба условног преласка
• Наредба вишеструког избора
• Контроле избора и контејнерске контроле

Наредба гранања извршава се тако што се на основу вредности логичког израза изврши
један од предвиђених низова инструкција. Приказати ученицима примере наредбе гранања,
као и наредбе вишеструког гранања.
Један од могућих примера је алгоритам тражења максимума два броја. Од математичких
логаритама је, такође, могуће приказати проблем решавања линеарне једначине ах + b = 0,
која има неколико случајева (када је а различито од нуле, када су а и b једнаки нули и када је
а једнако нули али је b различито од нуле). Такође, постоје добри примери са датумима који
могу да се раде са ученицима. Рецимо, на основу редног броја дана приказати његов назив
или за одређени датум приказати следећи. Препоручују се и задаци који имају примену у
свакодневном животу. На пример, одредити оцену коју је добио ученик на тесту уколико
нам је позната скала оцењивања и број остварених бодова.
Приказати контроле избора и примере у којима се оне користе. На пример, на форми се
налазе контроле избора којима можемо да бирамо боју позадине форме. Избором одређене
контроле обојити позадину форме. Следећи пример може да буде са избором облика који се
исцртава на форми (круг, квадрат, троугао) и избором његове величине (мали, средњи, ве-
лики). Према потреби, за ученике гимназије друштвено-језичког смера тежиште ставити на
примере овог типа.

VIII Наредбе за организацију циклуса (6 + 5)


• Бројачки циклус
• Циклус са условом за понављање на почетку
• Циклус са условом за понављање на крају

12
Наредбом циклуса одређена група наредби понавља се више пута. Узимајући у обзир син-
таксу програмског језика који се користи за реализацију програма, приказати ученицима
различите наредбе за организацију циклуса: бројачки циклус, циклус са условом за понав-
љање на почетку и циклус са условом за понављање на крају. Ученици би требало да стекну
осећај о томе у којим ситуацијама је потребно употребити коју наредбу (када је потребан
бројачки циклус, а када циклус треба да се заустави након испуњења одређеног услова).
Поред многобројних задатака са бројевима (приказати све парне бројеве мање од унетог
броја, приказати све просте бројеве из задатог интервала, издвојити највећу цифру која се
појављује у запису природног броја, израчунати факторијел унетог природног броја и сл.),
овде је могуће приказати и разне примере са графиком уколико су се ученици већ упознали
са основама рада са графиком. На пример, нацртати зид чије димензије корисник прецизи-
ра тако што у једном темену дијагонале правоугаоне површи притисне, а у другом отпусти
тастер миша, након чега се та правоугаона површ испуни циглама (двоструким циклусом
се нацртају уоквирени црвено-браон правоугаоници). Још један пример би могла да буде
апликација у којој се по форми исцрта велики број пахуљица различитих величина на раз-
личитим позицијама.

IX Методе (6 + 4)
• Решавање проблема помоћу метода
• Пренос параметра

Методе су независне програмске целине којима описујемо одређене функционалности


објеката, а које позивамо и извршавамо са различитих места и у различито време. Акције
које методе извршавају описане су параметрима. Приказати основни начин преноса пара-
метара, тј. параметара који служе да се унесу вредности у методу. Инсистирати од ученика
да, пре саме реализације методе, јасно дефинишу шта су улазни подаци (листа параметара),
а шта је излазни податак (вредност коју враћа метода). Направити разлику између метода
које враћају неку вредност и оних које то не раде. Приказати примере и једних и других.
На пример, метода која враћа мању од две вредности има резултујући податак, док метода
која црта аутомобил на форми нема резултујућу вредност. Током обраде ове теме могуће је
приказати и другачије начине преноса параметара (улазно-излазни и излазни параметри).
Приказати неке од примера метода са графиком уколико су се ученици већ упознали са
основама рада са графиком. На пример, метода која црта аутомобил може да има као улазне
параметре позицију (х и у координате положаја), величину, боју аутомобила и објекат за рад
са графиком.
Следећи пример може бити метода која испитује да ли је број прост, односно нема друге
делиоце осим самог себе и броја 1.
Као пример из живота може да послужи метода која на основу уложеног новца, годишње
фиксне каматне стопе изражене у процентима и броја година које су прошле од тренутка
улагања рачуна ново стање на штедном рачуну.
Током обраде X теме, „Низови и датотеке”, поједине примере урадити употребом метода.
Ученике је могуће упознати са методама много раније, већ код креирања првих апликација.
У том случају, током обраде VI, VII и VIII теме („Креирање апликација”, „Наредбе гранања”
и „Наредбе за организацију циклуса”) пожељно је поједине примере урадити употребом
метода.

13
X Низови и датотеке (6 + 4)

Низ садржи информације истог типа, распоређене у познатом редоследу. Појединачним


елементима низа може се приступити произвољно, навођењем имена низа и индекса елеме-
ната (позиције елемената у низу).
Задатке који се баве низовима могуће је поделити у три групе:
1. формирање низова;
2. обрада података који се налазе у низу;
3. трансформације низова (избацивање или уметање елемената, сортирање и сл.).
Трансформације низова требало би радити по потреби, само у окружењу где су ученици
са лакоћом савладали остале теме.

Један од начина формирања низа је на основу садржаја фајла, па је могуће ученике


упознати са радом са датотекама. Како ово није једини начин да се формирају низови, није
потребно на томе инсистирати, већ је могуће ученике упознати и са другим одговарајућим
контролама.
Показати ученицима неке примере рада са низовима. На пример, у једном фајлу се нала-
зе плате запослених у некој компанији. Задатак је пребројати колико запослених зарађује
више од просека. Да би се то урадило, потребно је једном проћи кроз све елементе низа да би
се одредила просечна вредност. У другом проласку кроз низ, пребројати оне који зарађују
више.
На крају показати и употребљиве могућности у виду израде једноставних апликација као
што су адресар, телефонски именик, програм за евиденцију кућне библиотеке, речник.

14
2. ПРЕДЛОЗИ ЗА ИЗРАДУ ГОДИШЊЕГ И
ОПЕРАТИВНОГ ПЛАНА

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

Приликом планирања наставе, потребно је водити рачуна о следећим начелима:


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

При изради годишњег и оперативног плана из Рачунарства и информатике за трећи раз-


ред гимназије полази се од тематског планирања наставног садржаја. Пракса је да стварање
тематског плана на годишњем нивоу, колико год је то могуће, прати постојеће уџбенике
за Рачунарство и информатику, а самим тим и редослед рада предвиђен Наставним пла-
ном и програмом. Наравно, при планирању неопходно је водити рачуна и о времену које је
ученицима потребно за усвајање појединих наставних садржаја и овладавање неопходним
знањима, умењима и вештинама, при чему предност дајемо логичком памћењу у односу на
механичко памћење. Ту ће нам свакако највише помоћи искуство из претходних школских
година, како властито, тако и искуства колега из стручног већа.
Због специфичности школског календара који се сваке године делимично разликује (у
односу на распоред празника и распуста), оријентациони планови се морају прилагођавати
и мењати. Али не само зато. Сва запажања која наставник бележи током једне школске го-
дине, послужиће као помоћ у креативном редиговању планова за наредну школску годину
и њиховом преобликовању.
Наставник је дужан да, поред квалитетне обраде градива, остави и довољно времена за
утврђивање наставних садржаја. Обнављање наученог односи се делимично и на претходну
школску годину, али и на ново градиво обрађено током текуће школске године.

15
Прецизним планирањем извођења свих наставних садржаја подржава се принцип рацио-
нализације. Иако ће сваки час бити именован у односу на централну тему која се на њему
реализује, правилним уклапањем наставних јединица у месечне целине, а потом и годишњу
целину, отвориће се простор за повезивање градива из подобласти предмета Рачунарство и
информатика.
Рационално организовање наставних садржаја, адекватно предвиђање и реално плани-
рање наставног градива, које је могуће савладати у одређеном времену и обиму, пружа на-
ставнику могућност да искаже своју аутономност и да „ослободи” поједине часове за оне
ученичке потребе које се учине приоритетним у одређеном периоду школске године. Да
ли ће то бити часови утврђивања, припреме за различита такмичења, информисање о нов-
инама из области рачунарства, посета некој манифестацији (нпр. Сајам науке и технике),
популарном предавању или локалној фирми која се бави програмирањем и сл., зависи и од
састава ученика у одељењу, од њихове заинтересованости за предмет Рачунарство и инфор-
матика, амбиција, склоности, спремности на поступан и континуиран рад који, на крају,
ипак мора донети позитивне резултате.
Како је укупан фонд часова за Рачунарство и информатику у трећем разреду предвиђено
реализовати кроз 37 часова са целим одељењем и кроз 30 часова вежби, са поделом одељења
на две групе, поред горе поменутих смерница за израду плана, потребно је још узети у обзир
продуктивност ученика у појединим месецима (октобар и новембар у I полугодишту и март
и април у II полугодишту су знатно продуктивнији од осталих месеци), а затим, у догово-
ру са директором школе, направити детаљан план о терминима за извођење часова вежби.
Наставним планом и програмом предвиђено је реализовати 31 + 6 часова за контролу знања
са целим одељењем и 26 + 4 часа за контролу знања са обе групе. Часове контроле знања на
вежбама треба реализовати као практичну проверу знања, односно као самосталну израду
задатака на рачунару. Пошто је градиво трећег разреда обимно и за ученике прилично за-
хтевно, неки часови, иако класификовани као часови обраде или утврђивања знања, углав-
ном су комбиновани часови, па се могу реализовати на часовима вежбања, са једном групом.

16
2.1. ПРИМЕР ГОДИШЊЕГ ПЛАНИРАЊА НАСТАВЕ РАЧУНАРСТВА И
ИНФОРМАТИКЕ У ТРЕЋЕМ РАЗРЕДУ ГИМНАЗИЈЕ

Септембар
• Решавање проблема применом рачунара
• Објектно-оријентисано програмирање
• Типови података
• Увод у развојно окружење програмског језика

Октобар
• Изрази и наредбе
• Креирање апликација

Новембар
• Наредбе гранања

Децембар
• Наредбе гранања
• Наредбе за организацију циклуса

Јануар
• Наредбе за организацију циклуса

Фебруар
• Наредбе за организацију циклуса

Март
• Методе

Април
• Методе
• Низови и датотеке

Мај
• Низови и датотеке

Јун
• Низови и датотеке

17
Годишњи план рада2
Школска 20__/__.

Наставни предмет: Рачунарство и информатика


Наставник: _________________________________________________________________
Разред: III
Одељење:
Недељни фонд часова: 1 Недељни фонд часова вежби:_________
Годишњи фонд часова: 37
Годишњи фонд часова вежби: 30 Недељни фонд часова блок наставе:___

Циљеви учења:
1. Стицање основних знања и вештина из програмирања.
2. Развој алгоритамске културе.
3. Развој логичког мишљења, прецизности, систематичности, креативности и ефектив-
ности.

Типологија наставних часова3


усавршавања способности
Часови утврђивања знања
Часови увођења у нову

Часови за преношење
нових знања (обрада)

(понављања стечених

Часови развијања и

Часови за контролу
систематизације
наставну област

Време рада
знања и умења
и умешности

Укупно
Часови
знања)

знања

I полугодиште 1 14 3 15 5 38
II полугодиште 10 4 1 11 3 29
Укупно 1 24 7 1 263 8 67

2
Наставни план и програм предмета објављен у „Службеном гласнику РС – Просветном гласнику” број 5/90
и „Просветном гласнику” број 7/2011.
3
За часове вежбања, за које се одељење дели на две групе, Наставним планом и програмом предвиђена су још
4 часа намењена контроли знања, па се у класификацији налазе у колони за контролу знања. За контролу
знања је Наставним планом и програмом предвиђено укупно 10 часова, али су због обимности градива 2 часа
замењена часовима предвиђеним за обраду и утврђивање знања.

18
Уџбеник и додатна литература:
1. Ф. Марић, Информатика 3, уџбеник за трећи разред гимназије, Издавачка кућа „Кlett”,
Београд, 2016.
2. М. Чабаркапа, Рачунарство и информатика за 3. разред гимназије, Круг, Београд, 2014.
3. М. Чабаркапа, Рачунарство и информатика – збирка задатака за IV разред гимназије,
Завод за уџбенике, Београд, 2006.
4. М. Чабаркапа, Рачунарство и информатика за 3. разред гимназије (уџбеник са збирком
решених задатака у Pascal–у), Круг, Београд, 2004.

Предлог годишњег плана рада

(понављања стечених знања)

усавршавања способности и

Часови за контролу знања и


Часови утврђивања знања

Часови систематизације
Часови увођења у нову

Часови за преношење
нових знања (обрада)

Часови развијањa и
Месец

НАСТАВНА ТЕМА
наставну област

умешности

Укупно
умења
знања

1. Решавање проблема 1 1
применом рачунара
2. Објектно-оријентисано 1 1
Септембар

програмирање
8
3. Типови података 2
4. Увод у развојно 2
окружење програмског
језика
Октобар

5. Изрази и наредбе 1 1 2 1
10
6. Креирање апликација 4 1
Новембар

7. Наредбе гранања 5 1 2 1 9

19
Јун Мај Април Март Фебруар Јануар Децембар Месец

20
9. Методе
9. Методе
8. Наредбе за
8. Наредбе за
8. Наредбе за
7. Наредбе гранања
НАСТАВНА ТЕМА

10. Низови и датотеке


10. Низови и датотеке
10. Низови и датотеке
организацију циклуса
организацију циклуса
организацију циклуса
Часови увођења у нову
наставну област

Часови за преношење

1
3
2
4
1
3
нових знања (обрада)

Часови утврђивања знања

1
1
1
1
1
(понављања стечених знања)

Часови систематизације

1
знања

Часови развијањa и

4
4
3
2
2

усавршавања способности и
умешности

Часови за контролу знања и

1
1
1
1

умења

3
7
4
9
5
3
8

Укупно
Типологија наставних часова

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

Часови за преношење нових знања (обрада) служе за систематско преношење, објашња-


вање и усвајање знања и умења, правила и закона. Структура ових часова подразумева:
обнављање раније ученог градива; упознавање са чињеничким материјалом усменим изла-
гањем наставника или на основу посматрања ученика; понављање усвојених знања, њихово
преношењe на нове садржаје, примене различитих вежбања, домаћих задатака итд.

Часови предвиђени за утврђивања знања понављањем имају за циљ остваривање функ-


ција наставе које се односе на сигурност и трајност стечених знања (понављање, утврђи-
вање, продубљивање).

На часовима систематизације нова знања се упоређују са раније усвојеним и успоставља


се редослед (стечена знања се сређују у веће целине). Служе за учвршћивање чињеница у
систем.

На часовима за развијање и усавршавањe способности и умешности (часови вежбања)


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

Часови за контролу знања и умења (проверавања) имају основни задатак да утврде да ли


су и колико ученици усвојили неопходна знања и вештине. Зависно од карактера примене,
проверавање се може вршити фронтално, групно или индивидуално. Могу бити и усмена,
писмена, практична или комбинована (задаци практичног карактера, експерименти у при-
родним наукама, вежбања на часовима Физичког васпитања и сл.).

21
2.2. МЕСЕЧНИ РАСПОРЕД НАСТАВНОГ ГРАДИВА ЗА
ТРЕЋИ РАЗРЕД ГИМНАЗИЈЕ

I НАСТАВНА ТЕМА (СЕПТЕМБАР)

1. Решавање проблема помоћу рачунара (уводни час)

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


рање као интересантну и динамичну дисциплину која није лака, али је веома перспективна.
Оним ученицима који не буду имали афинитета да се у будућности баве програмирањем
ова дисциплина ће помоћи да развију логичко мишљење, прецизност, систематичност, кре-
ативност и ефективност у раду, што ће им касније, у школовању и животу, помоћи да лакше
реше проблеме из било које области.
Објаснити фазе у решавању проблема помоћу рачунара:
1. поставка проблема;
2. математичка формулација проблема;
3. избор методе решавања;
4. опис алгоритма;
5. фаза писања програма;
6. уношење и чување програма;
7. превођење програма;
8. тестирање програма;
9. експлоатација програма.

Речима описати начин решавања неког проблема из свакодневног живота. На пример,


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

Домаћи задатак
Описати поступак прављења палачинки.

2. Алгоритам и програмски језици (обрада)

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


Упознати ученике са поделом алгоритамских структура на линијске, разгранате и цикличне.
Дефинисати програмске језике (синтакса и семантика) и навести класификацију про-
грамских језика.

22
Дефинише почетак
Počеtаk или P алгоритма.

Дефинише улазне
величине алгоритма.

Блок израчунавања.

Гранање у зависности од
da da испуњености услова.
или
ne ne

Позив потпрограма.

Дефинише излазне
величине алгоритма.

Kraj или K Дефинише крај


алгоритма.

Слика 1. Графички симболи за приказивање алгоритма

Задаци за вежбање линијске алгоритамске структуре


1. Написати алгоритам којим се сабирају два броја.
Приказати њихов збир. P

Решење a, b

улазни подаци → два броја, a и b S=a+b


излазни податак → S – збир бројева a и b
S

23
2. Написати алгоритам којим се температура изражена у Целзијусовим степенима прево-
ди у Фаренхајтове, Ремирове и Келвинове степене.
P
Решење
C
улазни подаци → C – температура у Целзијусима
излазни податак → R – температура у Реомирима (R = 4/5C),
R=4/5C
K – температура у Келвинима (K = C + 273),
F – температура у Фаренхајтима (F = 1,8C + 32)
K = C + 273

F = 1,8C + 32

R, K, F

3. Написати алгоритам за израчунавање растојања две тачке у равни ако су задате својим
координатама.
P
Решење
x1,y1,x2,y2
улазни подаци → x1, y1 – координате прве тачке;
x2, y2 – координате друге тачке
излазни податак → d – растојање између две тачке у равни d = √ (x1 – x2)2 + (y1 – y2)2

d 2 = (x1 – x2)2 + (y1 – y2)2 ⇒ d = √ (x1 – x2)2 + (y1 – y2)2 D

Домаћи задатак
1. Написати алгоритам за израчунавање површине троугла
P
када су познате дужине страница троугла.

Решење a,b,c

улазни подаци → a, b, c – дужине страница троугла S =(a + b + c)/ 2


излазни податак → Р – површина троугла

P = √s(s – a)(s – b) (s – c)

24
Површину троугла израчунаћемо применом Хероновог обрасца, за шта нам је потребна и
једна помоћна променљива s, која ће представљати полуобим троугла. У овом задатку неће-
мо испитивати да ли се може конструисати троугао (претпоставићемо да може).
a+b+c
s=
2

P = √s(s – a)(s – b) (s – c)

2. Написати алгоритам помоћу којег ће се n евра преводити у америчке доларе, енглеске


фунте и швајцарске франке.

Решење

Иако није експлицитно наведено, из самог контекста задат- P


ка међу улазним подацима уочавају се још и курсеви наве-
дених валута (изражени у једној валути, нпр. у динарима).
n, ke, kd, kp, kf

улазни подаци → n – износ у еврима,


ke – курс евра, d = n * ke / kd
kd – курс долара,
kp – курс енглеске фунте,
p = n * ke / kp
kf – курс швајцарског франка
излазни податак → d – износ у доларима,
p – износ у енглеским фунтама, f = n * ke / kf
f – износ у швајцарским францима
d, p, f

K
Тражене износе добићемо из следећих релација:
n ∙ ke
n ∙ ke = d ∙ kd ⇒ d = ;
kd
n ∙ ke
n ∙ ke = p ∙ kp ⇒ p = ;
kp
n ∙ ke
n ∙ ke = f ∙ kf ⇒ d = .
kf

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


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

25
II НАСТАВНА ТЕМА (СЕПТЕМБАР)

3. Увод у објектно-оријентисано програмирање (обрада)

Објаснити појам и карактеристике објекта (стање и акције). Потом објаснити појам класе
у објектно-оријентисаном програмирању.
Основни појмови на којима се заснива објектно-оријентисано програмирање су:
• енкапсулација;
• наслеђивање;
• полиморфизам.
Програми засновани на прозорима називају се форме.
Објаснити програме руковођене догађајима.

4. Delphi развојно окружење. Форма и пројекат (вежбање)

Представити развојно окружење програмског језика Delphi и креирање апликације –


делови и функције појединих делова прозора. Показати поступак покретања апликације.
Разговарати о својствима форме – Caption, Color, Top, Left, Width, Height,
BorderIcons, Name.
Показати поступак чувања и отварања пројекта, као и елементе пројекта.

Задатак
Креирати пројекат под називом PrviProjekat у фолдеру D:\IIIх\I grupa\Moj
prvi projekat. Фајлу модула (Unit) доделити име uGlavna. Форму обојити у жуто. На-
слов на форми је Moj prvi program. Позиција форме је у координатном почетку. Ширина
форме је 300, а висина 350. На насловној линији форме приказана су два дугмета: Close и
Help. Име форме је frmGlavna.

III НАСТАВНА ТЕМА (СЕПТЕМБАР)

5. Типови података. Логички и реални тип података (обрада)

Под појмом подаци подразумевају се константе и променљиве које припадају неком типу
података, а типом података дефинише се начин представљања података у бинарном облику,
број битова за запис податка, скуп вредности које променљива или константа може имати и
скуп операција које се над податком одређеног типа могу извршити.
Целобројни тип података може бити означени и неозначени. Операције над целобројним
типом података могу бити:
• аритметичке (сабирање, одузимање, множење, целобројно дељење и остатак при цело-
бројном дељењу;
• релацијске (=, <, <=, >, >=, < >).
Функције над целобројним типом података су: sqr, abs, pred, succ, odd, random.

26
Објаснити реални тип података. Операције над реалним типом података могу бити:
• аритметичке (сабирање, одузимање, множење и дељење);
• релацијске (=, <, <=, >, >=, < >).
Функције над реалним типом података су: abs, sqr, sqrt, power, ln, log10, exp, pi,
sin, cos, tan, arcsin, arccos, arctan, random, round, trunc, frac, floor, ceil.

Домаћи задатак
1. Израчунати вредности наведенихих функција.
a) sqrt(36) б) round(21.5) в) round(‒14.8) г) trunc(‒101.9)
д) trunc(27.5) ђ) sqr(9) e) ceil(‒108.7) ж) frac(134.987)
з) abs(‒23) и) succ(‒2) ј) pred(‒13) к) power(2,5)

2. Израчунати вредности наведених израза.


а) 4 + sqr(5) – 17 + trunc(‒14.7 – 3.2)
б) 5 * sqrt(4 mod 9 * 24 div 6)
в) ‒7 + 4 * 5 div 2 * round(2.367) – 3 * 4
г) (trunc(7.3) – round(4.6)) * 2 mod 5 div 2

6. Типови података – логички, знаковни и тип стринг. Конверзија података (обрада)

Објаснити логички тип података. Операције над логичким типом података могу бити:
• логичке (негација, конјукција, дисјункција);
• релацијске (true > false).

Објаснити знаковни тип података. Функције над овим типом података су: chr, ord,
pred, succ.

Објаснити ниске или стрингове. Функције и процедуре за рад са стринговима су: str,
val, format.
За конверзије података користе се: StrToInt, StrToFloat, IntToStr, FloatToStr.
Разговарати о декларацији и дефиницији променљиве. Показати наредбу доделе.

27
IV НАСТАВНА ТЕМА (СЕПТЕМБАР)

7. Додавање контрола форми – Label, Edit и Button (вежбање)

Објаснити догађаје контрола. Показати намену и својства контрола Label, Edit и


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

8. Креирање апликације са једноставним контролама

Поступак креирања апликације најбоље је објаснити на примеру задатака.

Задатак
Отворити нови пројекат у Lazarus-у, а затим сачувати модул под именом D:\IIIx\
komponente\uGlavni.pas, a пројекат под именом komponente.lpi у фолдеру D:\
IIIx\komponente.
Креирати форму тако да изгледа као на слици 2, користећи дате компоненте.
Компоненте преименовати по мађарској нотацији и променити им својства као на слици.
На насловној линији форме треба да буде видљиво само дугме Close.
Edit контроли доделити поруку са саветом: "Klikni dva puta".

Слика 2. Изглед форме

Написати процедуру којом се при креирању форме боја форме мења у светло пла-
ву, боја свих слова на форми у црвену; величина слова контроле Label је 13; стил слова
ове компоненте је Underline. Натпис на форми се при креирању форме мења у "Mod
izvrsavanja", а садржај Edit контроле мења се у "Ovde se unosi tekst". Позиција
форме је у координатном почетку. Ширина форме је 290, а висина 270.
Написати процедуру којом се двокликом на контролу Edit садржај ове контроле мења у
"Bravo, napravili ste DblClick!", a боја форме се мења у жуту.
Написати процедуру којом се при померању миша над дугметом Klikni me форма по-
мера за 10 тачака надоле и 10 тачака удесно.

28
Решење

Контролу Form1 преименовати у frmForma, Labe1 у lblLabela, Edit1 у edEdit, а


контролу Button1 у btDugme.
Да би на насловној линији форме било видљиво само дугме Close, најпре треба означи-
ти форму frmForma, a потом из картица Properties ObjectInspector-a сложеном
својству BorderIcons треба променити вредности: biSystemMenu на True, а сва остала
подсвојства подесити на False. Ово подешавање ће бити видљиво тек у моду извршавања.
Означити контролу edEdit, па из картице Properties подесити својство Hint на
"Klikni dva puta", а својство ShowHint на True. Као и BorderIcons у претходном
задатку, и ово својство постаје видљиво у моду извршавања.
Означити контролу frmForma и из картице Events изабрати догађај OnCreate.
Добићете процедуру са заглављем, а између begin и end треба написати следеће наредбе.

procedure TfrmForma.FormCreate(Sender: TObject);


begin
frmForma.Color := clAqua;
frmForma.Font.Color := clRed;
frmForma.Font.Size := 13;
lbLabela.Font.Style := [fsUnderline];
frmForma.Caption := ꞌMod izvrsavanjaꞌ;
edEdit.Text := ꞌOvde se unosi tekstꞌ;
frmForma.Top := 0;
frmForma.Left := 0;
frmForma.Width := 290;
frmForma.Height := 270;
end;

Означити контролу edEdit и из картице Events изабрати догађај OnDblClick. До-


бићете процедуру са заглављем, а између begin и end треба написати следеће наредбе.

procedure TfrmForma.edEditDblClick(Sender: TObject);


begin
edEdit.Text := ꞌBravo, napravili ste DblClickꞌ;
frmForma.Color := clYellow;
end;

Означити контролу btDugme и из картице Events изабрати догађај OnMouseMove.


Добићете процедуру са заглављем, а између begin и end треба написати следеће наредбе.

procedure TfrmForma.btDugmeMouseMove(Sender: TObject; Shift:


TShiftState; X, Y: integrer);
begin
frmForma.Top := frmForma.Top + 10;
frmForma.Left := frmForma.Left + 10;
end;

29
V НАСТАВНА ТЕМА (ОКТОБАР)

9. Изрази и наредбе (обрада)

Разговарати о изразима (аритметичким, логичким и текстуалним) и операцијама. Потом


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

Задаци
1. Написати изразе у Pascal-у који су тачни ако су испуњени следећи услови и нетачни у
противном:
• обе логичке променљиве p и q имају вредност true;
• 1 < x < 5;
• све три нумеричке вредности а, b и c су позитивне;
• x = min(x, y, z);
• x ≠ max(x, y, z).

2. Написати наредбу доделе којом се променљивој р додељује вредност true ако се од


одсечака а, b и c може конструисати троугао.

3. Шта ће бити вредности променљивих А и В након извршења следећих наредби?


а) A := 5
б) B := 12
в) A := 2 * A – B
г) B := 7 * A – B
д) A := A – A

4. Декларисати променљиве неопходне за израчунавање:


• површине једнакостраничног троугла;
• површине трапеза;
• суме S (динара) потребне за куповину D ЦД-ова, М мишева и Т тастатура, по цени С1,
С2, С3 (динара). Динарски износи су на две децимале.

10. Изрази и наредбе – целобројни тип података (вежбање)

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

Задаци
1. Ако је вредност неког артикла у динарима дата целобројном променљивом Cena,
одредити најмању количину новчаница од 500 динара, 100 динара и 1 динара којима се
може платити дати артикал.

30
Решење P

улазни податак → Cena – вредност неког Cena


артикла (цео број)
излазни подаци → N500 – количина новчаница
N500 = Cena div 500
од 500 динара,
N100 – количина новчаница од 100 динара,
N1 – количина новчаница од 1 динара N100 = Cena mod 500 div 100

Да бисмо дати артикал платили најмањом коли-


N1 = Cena mod 500 mod 100
чином новчаница, најпре треба израчунати колики
је највећи број новчаница од 500 динара којим се
може платити артикал, затим од остатка новца од- N500, N100, N1
редити највећи број новчаница од 100 динара, а све
што остане плаћа се новчаницама од 1 динара. K

2. Написати алгоритам који датом природном четвороцифреном броју одређује број који
се добија исписом цифара у обрнутом поретку.

Решење

улазни податак → N – четвороцифрен број P


помоћне променљиве → H – цифра хиљада (добија
се тако што се четвороцифрени број N целобројно N
подели са 1000),
S – цифра стотина (добија се тако што се од датог
четвороцифреног броја N најпре издвоје прве две H = N div 1000
цифре, а затим од тог броја издвоји цифра једини-
ца: S = N div 100 mod 10 или тако што се од датог S = N mod 1000 div 100
четвороцифреног броја N најпре издвоје последње
три цифре, а потом од те три цифре цифра стотина:
S = N mod 1000 div 100), S = N mod 1000 div 100
D – цифра десетица (добија се тако што се од датог
четвороцифреног броја N најпре издвоје прве три J = N mod 10
цифре, а затим од тог броја издвоји цифра јединица:
D = N div 10 mod 10 или тако што се од датог чет-
вороцифреног броја N најпре издвоје последње две M = J*1000+D*100+S*10+H
цифре, а потом од те две цифре цифра десетица: D =
N mod 100 div 10),
M
J – цифра јединица (добија се увек тако што се од
n-тоцифреног броја рачуна остатак при дељењу са
10 : Ј = N mod 10) K
излазни податак → M – број N са обрнутим поретком
цифара (М = J * 1000 + D * 100 + S * 10 + H)

31
P
3. Написати алгоритам којим се избацује цифра десетица
у природном броју Х. X

Решење
L = X div 100
улазни податак → Х – природни број коме се не зна број
цифара J = X mod 10
помоћне променљиве → L – цифре које се налазе лево од цифре
десетица (L = X div 100),
J – цифра јединица (J = X mod 10) Y = L * 10 + J
излазни податак → J – број који се добија када из броја Х изба-
цимо цифру десетица, нпр. 1234 → 124 (цифре лево од цифре Y
десетица померити за једно место надесно: Y = L * 10 + J)
K

4. Дата су два угла изражена у степенима, минутима и секундама (s1, m1, sec1) и (s2, m2,
sec2). Написати алгоритам којим се одређује њихов збир, изражен у степенима, ми-
нутима и секундама.
P
Решење

улазни подаци → s1, m1, sec1 – величина првог угла, s1, m1, sec1, s2, m2, sec2
s2, m2, sec2 – величина другог угла
помоћна променљива → U – збир два угла изражен у U = (s1 + s2)3600 + (m1 +
секундама m2)60 + sec1 + sec2
излазни подаци → s – број степени збира два дата
угла (добија се целобројним дељењем збира углова s = U div 3600
израженог у секундама са бројем секунди у једном
степену, односно са 3 600), m = U mod 3600 div 60
m – број минута збира датих углова (добија се цело-
бројним дељењем остатка при целобројном дељењу
збирног угла са 3 600 [оно што остане од збирног угла sec = U mod 60
када израчунамо број степени] са бројем секунди у
једном минуту, односно са 60), s, m, sec
sec – број секунди збира датих углова (добија се као
остатак од целобројног дељења збирног угла са 60, ко-
K
лико има секунди у једном минуту)

11. Изрази и наредбе – реални и целобројни тип података (вежбање)

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

32
Задаци
1. Написати алгоритам који са тастатуре учитани износ претвара у новчани формат. На
пример, број 1 265.40 трансформише у облик 1 265 динара и 40 пара.

Решење
P
улазни податак → broj – дати реални број (непознат
број децимала) broj
излазни подаци → din – број динара датог реалног
броја (целобројни део датог реалног броја),
p – број пара датог реалног броја (пошто се не зна број din = trunc(broj)
децимала у реалном броју, а у једном динару има 100
пара, онда ћемо број пара добити тако што најпре од р = round(frac(broj) * 100)
датог реалног броја одредимо децимални део, а потом
добијени број помножимо са 100 [број пара у једном
динару] и добијени призвод заокружимо на најближи din, p
цео број)
K
Одговарајуће наредбе у програмском језику Pascal за
тражене вредности изгледале би овако:
din := trunc(broj),
p := round(frac(broj) * 100).

2. Банка улагачима обрачунава камату од р% годишње. Ако је улагач дао на штедњу Q


динара, колико је банка дужна да му исплати након n година?
P
Решење

улазни подаци → p – годишња камата, p, Q, n


Q – улог,
n – број година штедње S = Q(1 + p / 100)n
излазни подаци → S – износ после n година штедње

K
Поступак за решавање

Износ после једне године штедње:

(
S1 = Q ∙ 1 +
p
100).

Износ после две године штедње:

( ) ( )
2
p p
S2 = S1 ∙ 1 + =Q∙ 1+ .
100 100

33
После три године штедње, банка треба да исплати следећу суму:

( ) ( )( ) ( )
2 3
p p p p
S3 = S2 ∙ 1 + = Q∙ 1+ ∙ 1+ =Q∙ 1+ .
100 100 100 100
Аналогно претходном, после n година штедње износ за исплату ће бити:

( ) ( ) ( ) ( )
n–1 n
p p p p
Sn = Sn–1 ∙ 1 + = Q∙ 1+ ∙ 1+ =Q∙ 1+ ,
100 100 100 100

па је износ за исплату после n година:

( )
n
p
S=Q∙ 1+ .
100
У Pascal-у би се то могло записати изразом:
S := Q * power(1 + p/100,n).

3. Прве године рада предузеће је остварило раст од р1%, друге р2% и треће р3%. Одреди-
ти средњи годишњи раст производње (у процентима).

Решење P

улазни подаци → р1 – проценат p1, p2, p3


раста производње у првој години,
р2 – проценат раста
производње у другој pg = (3√(1 + р1 / 100)(1 + р2 / 100) (1 + р3 / 100) * 100
години,
р3 – проценат раста производње pg
у трећој години
излазни подаци →
K
pg – средњи годишњи раст
производње за три године

Ако претпоставимо да је почетни капитал Q, онда је раст производње у првој години:

( )
p1
S1 = Q ∙ 1 + .
100
Раст производње у другој години је:

( ) ( )( )
p2 p1 p2
S2 = S1 ∙ 1 + =Q∙ 1+ ∙ 1+ ,
100 100 100
док је раст производње у трећој години:

( ) ( )( )( )
p2 p1 p2 p3
S3 = S2 ∙ 1 + =Q∙ 1+ ∙ 1+ ∙ 1+ .
100 100 100 100

34
По аналогији у односу на претходни задатак, средњи годишњи раст за три године, са го-
дишњим процентом раста од pg%, износи:
S=Q∙ 1+
100(
pg 3
.
)
Ако изједначимо изразе S3 и S, онда ћемо имати следеће једнакости:

( )( )( ) ( )
p1 p2 p3 pg 3
Q∙ 1+ ∙ 1+ ∙ 1+ =Q∙ 1+ .
100 100 100 100

Поделићемо леву и десну страну са Q и уз мало изједначавања добићемо годишњи про-


ценат раста:
pg := power((1 + p1 / 100) * (1 + p2 / 100) * (1 + p3 / 100), 1 / 3) – 1) * 100.

4. Млади бизнисмен је од пријатеља позајмио бескаматно основни капитал за отварање


трговине. Ако је познато да се капитал увећава p% месечно, одредити после колико го-
дина ће се капитал повећати до износа довољног за враћање дуга, а да преостали новац
не буде мањи од позајмљеног износа.
P
Решење
p
улазни подаци → р – проценат месечног
увећања капитала
излазни подаци → n – број година за n – trunc(In 2 / (12 * In(1 + p / 100))) + 1
враћање дуга
n

Ако основни капитал који је млади бизнисмен позајмио од свог пријатеља означимо са Q,
годишњи проценат увећања капитала са pg, имајући у виду да година има 12 месеци, можемо
написати следећу једнакост:

( ) ( )
12 3
p pg
Q∙ 1+ =Q∙ 1+ ,
100 100
из чега можемо израчунати pg:

(( ) )
12
p
pg = 1+ – 1 ∙ 100.
100
Ако износ довољан за враћање дуга означимо са S, имајући у виду услов задатка да се
позајмљени новац враћа када се капитал повећа толико да преостали новац не буде мањи од
позајмљеног износа, онда можемо написати следећу неједначину:

S > 2 ∙ Q.

35
Износ довољан за враћање дуга за n година и са годишњим процентом раста pg је

( )
n
pg
S=Q∙ 1+ ,
100
па, када то ставимо у претходну неједнакост, добијамо:

( )
n
pg
Q∙ 1+ > 2 ∙ Q.
100
Неједнакост ћемо поделити са Q и уместо pg написати одговарајући израз за pg:

( )
n
pg
1+ > 2,
100

( (( ) )
)
12
p n
1+ –1 ∙ 100
100
1+ > 2,
100

( )
12 ∙ n
p
1+ > 2.
100

Да бисмо израчунали n из претходне неједнакости, неопходно је логаритмовати леву и


десну страну и применити особине логаритма, из чега ћемо добити:

(
12 ∙ n ∙ ln 1 +
p
100 ) > ln 2

ln 2
n> .

(
12 ∙ ln 1 +
p
100 )
Пошто је n цео број и због услова задатка први већи од вредности са десне стране неје-
днакости, онда ћемо применити функцију за одређивање целобројног дела и на тако добије-
ну вредност додати 1:

n = trunc
( (
12 ∙ ln 1 +
ln 2
p
100 ) ) + 1,

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

n := trunc(In(2)/(12 * In(1 + p/100))) + 1.

36
12. Изрази и наредбе (утврђивање знања)

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

Задаци
1. Одредити вредности следећих израза:
а) 39 mod 8 div succ(2) mod 3;
б) ord(false) + sqr(2)*(succ(3) + abs(‒2));
в) 1.2 + 17 mod 6 div 2 + 3;
г) round(sqrt(pred(29) mod 6 mod 5) + 15 / 2) < 11;
д) ‒11 mod 3 – 10 / 3;
ђ) odd(17 mod 6) and not odd(pred(ord(ꞌaꞌ)));
е) true or (sqrt(sqr(3) + sqr(4)) <= 1.5) and (abs(round(‒5.3)) < 5.3).

2. Написати наредбе доделе у Pascal-у којима се логичкој променљивој p додељује вред-


ност true, ако су испуњени следећи услови:
а) аритметичка средина два броја није мања од геометријске средине истих бројева;
б) правоугаоник са страницама a и b може се цео сместити у правоугаоник са страни-
цама c и d (уз услов да су им странице паралелне);
в) круг површине S се може цео сместити у квадрат површине P.

3. Ако је вредност променљиве dani број дана неког временског пеериода, написати на-
редбе доделе којима се израчунава број сати sat, минута min, секунди sec у датом
периоду.

4. Написати наредбу доделе којом се за дату реалну променљиву А исписује:


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

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

6. Написати одељак за опис променљивих којим се описују променљиве за израчунавање


укупне цене свих пакетића који се могу направити од А јабука, ако сваки пакетић треба
да садржи B јабука. Цена једне јабуке је C динара.

37
13. Типови података. Изрази и наредбе (провера знања)

I група

1. На линији испред назива основних конструкција Pascal-a упиши редне бројеве испред
примера који им припадају.
1) 3e – 3 ______ ниска
2) while_ ______ коментар
3) ꞌDa l' ti je ovo poznato?ꞌ ______ име
4) 4.2e – 5.3 ______ број
5) {[Sta je ovo?}]} ______ ништа од наведеног
6) {ꞌkomentar, niska ili...ꞌ}
7) "(***Sta bese ovo?*)ꞌ
8) 22e22

2. Израчунај вредности следећих израза:


а) 3 + succ(ord(ꞌbꞌ)) – 62 mod 8 mod (‒4));
б) (ꞌPꞌ > ꞌqꞌ) or odd(39 mod(‒8) ‒ round(1.5) * 4 mod 6) and true.

3. Напиши наредбу доделе којом се целобројној променљивој А додељује вредност дво-


цифреног броја B чије су цифре исписане у обрнутом поретку (нпр. броj 89 постаје 98).

4. Напиши наредбу доделе у Pascal-у којом се променљивој pripada додељује вредност


true ако је испуњен следећи услов: Квадрат површине S се може цео сместити у круг
површине P.

5. Написати одељак за опис променљивих потребних за израчунавање површине трапеза


чије су основице а и b, а висина h.

6. Написати алгоритам којим се одређује у колико сати, минута и секунди је слетео авион
који је полетео у H1 сати M1 минута и S1 секунди и у ваздуху провео S2 секунди, ако се
зна да је полетање и слетање било у истом дану и истој временској зони.

7. Написати алгоритам којим се израчунава површина паралелограма одређеног коорди-


натама три темена (x1, y1), (x2, y2), (x3, y3).

II група

1. На линији испред назива основних конструкција Pascal-a упиши редне бројеве испред
примера који им припадају.
1) e5 ____ ниска
2) procedure ____ коментар
3) +127.82E - 1.7 ____ име
4) 2e2 ____ број
5) "Da l" se secas ovoga?" ____ ништа од наведеног
6) ꞌ{komentar, niska ili...}ꞌ
7) (***Sta bese ovo?*)
8) Moze _li_ovo?

38
2. Написати одељак за опис променљивих потребних за израчунавање укупне цене М ау-
тића за новогодишње пакетиће по цени од С динара.

3. Израчунај вредности следећих израза:


а) pred(ord(ꞌ9ꞌ)) – 90 div 3 mod 13;
б) odd(‒38 mod 8 ‒ trunc(‒1.3 * sqrt(sqr(3) + 10 + 42 / 7))) or true and
not(5 <= 5).

4. Реалној променљивој A доделити вредност реалног броја B заокруженог на три децимале.

5. Напиши наредбу доделе у Pascal-у којом се променљивој pripada додељује вредност


true, ако је испуњен следећи услов: Површина правилног шестоугла уписаног у круг
полупречника r мања је од површине круга полупречника r.

6. Написати алгоритам којим се замењују места цифри десетица и цифри хиљада у при-
родном броју X.

7. Разредни старешина је израчунао средњу оцену S на основу оцена из 12 предмета. Са-


знао је да у просек улази и тринаеста оцена из владања V. Написати алгоритам којим се
на основу S и V израчунава средња оцена ученика.

VI НАСТАВНА ТЕМА (ОКТОБАР)

14. Креирање апликације – бруто и нето доходак (вежбање)

Креирати апликацију којом се за ученике запослене преко омладинске задруге израчуна-


ва бруто и нето доходак, ако је познат број радних сати, цена по сату и проценат одбијања
на основу одређених доприноса.
На форму ставити Edit контроле за унос датих вредности и преименовати их према
мађарској нотацији: edRadniSati, edCenaPoSatu и edProcenatOdbijanja, као и
две Edit контроле за испис резултата: edBruto и edNeto. Апликација се покреће кликом
на дугме btRacunaj.
Приликом писања програма најпре треба одредити типове података за променљиве које
ћемо користити:
• brs (integer) – број радних сати;
• cps (real) – цена по сату;
• po (real) – проценат одбијања по основу одређених доприноса;
• bruto (real) – бруто доходак (који се рачуна као производ броја радних сати и цене
по сату);
• neto (real) – нето доходак који се рачуна када се бруто доходак умањи за проценат
одбијања.
Потом ћемо свакој променљивој доделити одговарајућу вредност, и то променљивој brs
ћемо доделити садржај Edit контроле edRadniSati. Пошто је променљива brs цело-
бројног типа, а садржај Edit контроле типа string, неопходно је извшити конверзију

39
типова података brs:= StrToInt(edRadniSati.Text). Слично је и са остале две про-
менљиве cps и po, осим што се врши конверзија стринга у реалан број. За добијене вред-
ности променљивих bruto и neto које су типа real, а треба их уписати у Edit контроле
(у њихова својства Text) које чувају стрингове, врши се конверзија реалног броја у стринг,
и то edBruto.Text:= FloatToStr(bruto).

Слика 3. Изглед форме при покретању Слика 4. Изглед форме са задатим и вредностима
aпликације добијеним кликом на дугме Racunaj

Када означимо дугме btRacunaj и из картице Events одаберемо догађај OnClick,


добићемо процедуру у коју треба уписати дати код.

procedure TForm1.btRacunajClick (Sender: TObject);


var brs : integrer;
cps, po, bruto, neto : real;
begin
brs := StrToInt (edRadniSati.Text);
cps := StrToFloat (edCenaPoSatu.Text);
po := StrToFloat (edProcenatOdbijanja.Text);
bruto := brs * cps;
neto := bruto – bruto * po / 100;
edBruto.Text := FloatToStr(bruto);
edNeto.Text := FloatToStr(neto);
end;

За испис резултата може се одабрати и нека друга контрола, нпр. Label, па ћемо у том
случају употребити другачији програмски код:
lbRezultat.Caption := ꞌBruto dohodak iznosi ꞌ+ FloatToStr(bruto)+
ꞌdin, a neto dohodak iznosi ꞌ+ FloatToStr(neto)+ꞌdinꞌ,
који ће исписати у једном реду одговарајућу поруку, али без форматирања реалних бројева.
Овом проблематиком ћемо се позабавити у следећем примеру.
Подсетити ученике да се у оквиру ове апликације могу применити и процедуре обрађене
на осмом часу, за догађаје OnCreate, OnDblClick и OnMouseMove.

40
15. Креирање апликације – путовање до мора и назад (вежбање)

Креирати апликацију којом се рачунају трошкови путовања до мора и назад, ако је S


удаљеност до мора, потрошња аутомобила на 100km L литара, а цена једног литра горива
С динара. За приказ трошкова путовања користити компоненту Label, а резултат треба
да буде форматиран на две децимале у облику: Troskovi putovanja do mora i nazad
iznose 4567.93 din.

Слика 5. Изглед форме при Слика 6. Изглед форме са почетним вредностима


покретању апликација и резултатом после клика на дугме Racunaj

Edit контроле за унос познатих вредности су преименоване у складу са текстом задатка


и по мађарској нотацији у: edS, edL и edC, док је Label компонента за испис резултата
преименована у lbRezultat.
Како се израчунавање трошкова путовања врши кликом на дугме Racunaj, потреб-
но је следећи код уписати у процедуру која се добија избором догађаја OnClick за дугме
btRacunaj.

procedure TForm1.btRacunajClick (Sender: TObject);


var S, L, C, U : real;
begin
S := StrToFloat (edS.Text);
L := StrToFloat (edL.Text);
C := StrToFloat (edC.Text);
U := 2 * S * C * L / 100;
lbRezultat.Caption := Format(ꞌTroskovi putovanja do mora i nazad iznose
%0.2f din.ꞌ, [U]);
end;

Да би се израчунали трошкови путовања до мора и назад, потребно је дату удаљеност до


мора помножити са 2, а потом потрошњу аутомобила на 100 km сведену на потрошњу по 1
km (L / 100) помножити са ценом једног литра горива и помножити са 2S (U := 2 * S * C
* L / 100). Да бисмо резултат приказали на две децимале, применићемо функцију Format,
која има два аргумента. Први аргумент је текст који треба исписати у облику Troskovi
putovanja do mora i nazad iznose 4567.93 din. и у коме најпре уочавамо делове тек-
ста који представљају ниске и делове на које се уписују променљиве. Целокупан облик излаза
исписује се под апострофима у облику као што је написано, осим што се на месту на којем се

41
исписује вредност променљиве пише знак % као ознака да ту долази вредност променљиве,
потом укупна ширина излазног поља (за произвољну ширину се користи 0) и број децимала
(0.2), из чега следи ознака типа променљиве (f – реалан број, d – цео број, n – стринг). Други
аргумент је променљива (или листа променљивих) која се уписује између угластих заграда,
а чија вредност долази на место за променљиву означено у првом аргументу. Како резултат
треба приказати у Label контроли, то ће овај програмски ред имати следећи облик:

lbRezultat.Caption := Format(ꞌTroskovi putovanja do mora i nazad


iznose #0.2f din.ꞌ, [u])).

16. Креирање апликације – такси (вежбање)

У такси су истовремено ушла три путника. Када је изашао први путник, таксиметар је по-
казивао С1 динара, када је изашао други, показивао је С2 динара, а по окончању путовања
показивао је С3 динара. Креирати апликацију којом се израчунава колико треба да плати сва-
ки од путника да би се покрили трошкови путовања, ако сваки плаћа сразмерно, тј. када први
изађе, треба да плати само трећину трошкова од С1 динара за први део пута и тако редом.
На слици 7 приказан је прозор изледа апликације при њеном креирању, а на слици 8 су у
одговарајуће Edit контроле edC1, edC2 и edC3 уписани одређени новчани износи. Резул-
тат се исписује у посебном прозору, као на слици 9.

Слика 7. Прозор апликације при креирању Слика 8. Прозор са уписаним износима

Слика 9. Прозор са уписаним резултатом

Израчунавање трошкова путовања сваког од путника извршава се кликом на дугме


btRacunaj, па је за израчунавање потребно написати одређену процедуру.

42
procedure TForm1.btRacunajClick (Sender: TObject);
var C1, C2, C3, P1, P2, P3 : real;
begin
C1:= StrToFloat (edC1.Text);
C2:= StrToFloat (edC2.Text);
C3:= StrToFloat (edC3.Text);
P1:= C1/3;
P2:= C1/3 + (C2 – C1)/2;
P3:= C1/3 + (C2 – C1)/2 + C3 – C2;
ShowMessage(Format(ꞌPrvi putnik placa %0.2f din, drugi placa %0.2f din,a
treci %0.2f din.ꞌ, [P1,P2,P3]));
end;
Да би се резултат приказао у посебном прозору (слика 9), коришћена је процедура
ShowMessagе, унутар које је примењена функција Format, како би се резултат исписао
на две децимале, што је стандардни облик за исписивање новчаног износа.
Пошто се таксиметар не ресетује сваки пут када изађе неки од путника, да би сваки
путник платио сразмерно онолико колико се возио, то ће први путник платити трећину
износа С1, други плаћа такође трећину износа С1 (док су се возила сва три путника) увећану
за половину разлике износа С2 и С1 (колико су се заједно возили други и трећи путник), а
трећи плаћа трећину првог износа С1 увећану за половину износа С2 – С1 и износ када се
возио сам у таксију С3 – С2.

17. Креирање апликација – приземљење авиона (вежбање)

За овај час предвиђена је припрема за практичну проверу знања. Поделити наставне


листиће са задацима.

1. Дизајнирати форму као на слици 10.

Слика 10. Изглед форме у моду дизајнирања Слика 11. Изглед форме у моду извршавања са
задатим вредностима и резултатима обраде

43
2. Написати процедуру којом се кликом на дугме Racunaj одређује време приземљења
авиона који је летео х сати, y минута, z секунди и у лету провео q секунди. Променљива-
ма a, b, c означени су сат, минут и секунд приземљења авиона, док је променљивом s
означено време приземљења изражено у секундама.
procedure TForm1.btRacunajClick (Sender: TObject);
var x, y, z, q, a, b, c,s : real;
begin
x := StrToInt (edSati.Text);
y := StrToInt (edMin.Text);
z := StrToInt (edSec.Text);
q := StrToInt (edTrajanje.Text);
s := x * 3600 + y * 60 + z + q;
a := s div 3600 mod 24;
b := s mod 3600 div 60;
c := s mod 60;
lbRezultat.Caption : = Format(ꞌPrizemljenje: %0d :%0d:%0dꞌ, [a, b, c]);
end;

3. Написати процедуру којом се при креирању апликације брише садржај свих Edit кон-
трола, боја форме мења у зелену, боја свих слова на форми у љубичасту, величина слова
контроле Label за испис резултата на 12pt, а стил тих слова у подвучена слова. Пози-
ција форме је у координатном почетку, њена ширина је 300, а висина 600. Означити
форму и из картице Events одабрати догађај OnCreate.

procedure TForm1.FormCreate (Sender: TObject);


begin
edSati.Text := ꞌꞌ;
edMin.Text := ꞌꞌ;
edSec.Text := ꞌꞌ;
edTrajanje.Text := ꞌꞌ;
Form1.Color := c1Lime;
Form1.Font.Color := c1Purple;
lbRezultat.Font.Size := 12;
lbRezultat.Font.Size := [fsUnderline];
Form1.Top := 0;
Form1.Left := 0;
Form1.Width := 230;
Form1.Height := 230;
end;

4. Написати процедуру којом се обезбеђује да се кликом на контролно дугме Close са


насловне линије форме (при затварању форме) појављује порука у посебном прозору:

Da li ste sigurni da zelite da zatvorite ovaj prozor?

44
Означити форму и из картице Events одабрати догађај OnClose.

procedure TForm1.FormClose (Sender: TObject; var Action : TCloseAction);


begin
ShowMessage(ꞌDa li ste sigurni da zelite da zatvorite ovaj prozor?ꞌ);
end;

5. Написати процедуру којом се покретањем миша преко Label контроле за испис


резултата прозор помера надоле за 15 позиција. Означити lbRezultat контролу и из
картице Events одабрати догађај OnMouseMove.

procedure TForm1.lbRezultatMouseMove (Sender: TObject;


Shift : TShiftState;
X, Y : integrar);
begin
Form1.Top := Form1.Top + 15;
end;

18. Креирање апликација (провера знања)

I група

ЗАДАЦИ ПОЕНИ
1. Отворити нови пројекат у Lazarus-у и сачувати га у фолдеру Desktop\ 10
Kontrolni\Ime i Prezime под именом Ribe.
2. Креирати форму као на слици а). 10

а) б)

3. Преименовати све Edit, Label којом се исписује резултат и Button 6


контроле по мађарској нотацији.
4. Edit компоненти за проценат смањења броја додати поруку са саветом: 6
Unesi godisnji procenat smanjenja ribe u jezeru.

45
5. Написати процедуру која ће обезбедити да се при креирању апликације 20
избришу садржаји Edit контрола, боја форме промени у жуту, боја
свих слова на форми у зелену, стил слова у компоненти Label којом се
исписује резултат је Underline, а величина слова у тој компоненти је
12. Висина форме је 250, а ширина 370. Позиција форме је 0 у односу на
леву и 400 у односу на горњу ивицу екрана.
6. Број риба у неком језеру је S. Испрограмирати дугме Racunaj тако 30
да се кликом на то дугме одређује након колико година ће број риба
постати мањи од R ако се годишње број риба смањује за р%. Обезбедити
исписивање резултата у одговарајућој Label компоненти као што је
дато на слици б) у задатку 2.
7. Испрограмирати дугме Odustani тако да се при померању миша поред 9
тог дугмета компонента Form помери ка десној ивици екрана за 10.
8. Испрограмирати дугме Close на линији наслова тако да омогући 9
исписивање поруке: Ne zaboravi da me sacuvas!

II група

ЗАДАЦИ ПОЕНИ
1. Отворити нови пројекат у Lazarus-у и сачувати га у фолдеру 10
Desktop\ Kontrolni\Ime i Prezime под именом Banka.
2. Креирати форму као на слици а). 10

а) б)

3. Преименовати све Edit, Label којом се исписује резултат и Button 6


контроле по мађарској нотацији.
4. Дугмету Racunaj додати поруку са саветом: Klikni da izracunas 6
koliko godina treba da stedis.

46
5. Написати процедуру која ће обезбедити да се при креирању апликације 20
избрише садржај Edit контроле, боја форме промени у жуту, боја
свих слова на форми у плаву, стил слова у компоненти Label којом се
исписује резултат је Underline, а величина слова у тој компоненти је 12.
Ширина форме је 330, а висина 230. Позиција форме је на координатном
почетку.
6. Испрограмирати дугме Racunaj тако да израчунава за колико година 30
улог у банци од Q динара, уз годишњу камату од р%, нарасте тако да буде
већи од S динара. Обезбедити исписивање резултата на две децимале у
одговарајућој Label компоненти као што је дато на слици б) у задатку 2.
7. Испрограмирати дугме Odustani тако да се при померању миша над 11
тим дугметом компонента Form помери дијагонално ка горњем десном
углу екрана за 20.
8. Испрограмирати дугме Kraj тако да омогући затварање прозора. 7

VII НАСТАВНА ТЕМА (НОВЕМБАР, ДЕЦЕМБАР)

19. Наредба условног преласка (обрада)

Подсетити ученике на задатке са наредбом условног преласка и принципом функциони-


сања (други разред, „Табеларна израчунавања”).
Приказати алгоритамску шему разгранате структуре.
Да би се издала наредба условног преласка, потребно је укуцати предложени код.
if L then N1
if L then N1 else N2
if L then
begin
N11;
N12;
...
N1k
end
else
begin
N21;
N22;
...
N2m
еnd

47
Задаци
1. Шта се исписује извршавањем следећег сегмента програма за целобројне променљиве
а, b и c?

а := 2; b := 8; c := 0; a=2
if a > b then c := a + b; b =8
c =0
c := c + 12;
ShowMessage (Format('c = %0d',[c])); T
a>b

Задатак решити помоћу алгоритамске шеме. c =a+b


T

(Решење: c = 12.)
c = c + 12

2. Шта се исписује извршавањем следећег сегмента програма?

a := 2; b := 8;
if a > b then ShowMessage (ꞌa je vece od bꞌ) a=2
else ShowMessage (ꞌa je manje ili jednako bꞌ); b =8

(Решење: а је мање или једнако b.) a>b


T
T

a je manje
a je veće
ili jednako
od b
b

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


a, b и c?

a := 10; b := 2;
a = 10
if a < b then
b =2
begin
ShowMessage (ꞌa je manje od bꞌ); T
c := a * b; a< b
T
end
else
a je manje
begin a je manje
ili jednako
ShowMessage (ꞌa je vece ili jednako bꞌ); od b
b
c := a div b;
end;
c = a div b c= a*b
ShowMessage (Format(ꞌc = %Odꞌ, [c]));

(Решење: a je веће или једнако b; c = 5.) c

48
20. Одређивање максимума и минимума бројева. Уређивање бројева у тражени
поредак (обрада)

Примери
1. Написати алгоритам којим се променљивој max додељује вредност већих између
бројева a и b.

Решење
P
улазни подаци → a, b – задате вредности
излазни податак → max – већи од бројева a и b a, b

Најпре се променљивој max додели једна од датих вредно- ma x = a


сти (обично прва, max = a). Потом испитујемо да ли је друга
вредност већа од max (b > max). Ако јесте, онда max добија b > max
T
нову вредност (max = b), a ако није, max не мења своју вред-
max = b
ност (ништа се не дешава).
T

Постоје и друга решења за одређивање максимума (миниму-


ма), али треба инсистирати на овом алгоритму због његове max
применљивости у сложенијим алгоритамским структурама.
K

2. Написати алгоритам којим се променљивој min додељује вредност најмањег између


бројева a, b и c.

Решење
P

улазни подаци → a, b, c – задате вредности


a, b, c
излазни податак → min – најмањи од бројева a, b и c

Најпре се променљивој min додели прва вредност (min = a), ma x = a


а потом испитујемо да ли је друга вредност мања од min (b T
> min). Ако јесте, онда min добија нову вредност (min = b), b < min
a ако није, min не мења своју вредност (ништа се не дешава). T min = b
Слично ћемо поновити са трећом вредношћу с. Испитујемо
да ли је с мање од min, па ако јесте, онда min добија нову T
вредност (min = c), а ако није, остаје стара вредност min. c < min
Применљивост алгоритма из претходног задатка долази до T min = c
изражаја већ у овом примеру, јер би свако друго решење
било знатно компликованије.
min

49
3. Ако се молекул сумпорне киселине H2SO4 састоји из два атома водоника, једног атома
сумпора и четири атома кисеоника, написати алгоритам којим се одређује максималан
број молекула сумпорне киселине који се може формирати од датих А атома водоника,
В атома сумпора и С атома кисеоника.
P
Решење
A, B, C
улазни подаци → А – расположиви број атома водоника,
В – расположиви број атома сумпора, X = A div 2
С – расположиви број атома кисеоника
помоћне променљиве → Х – највећи број молекула H2SO4 Y= B
који се може направити од А атома водоника, Y – највећи
број молекула H2SO4 који се може направити од В атома Z = C div 4
сумпора,
Z – највећи број молекула H2SO4 који се може направити од
min = X
С атома кисеоника
излазни податак → min – највећи број молекула H2SO4 који T
се може формирати од А, В, С Y < min
T min = Y
Ако се од расположивог броја атома водоника могу форми-
рати нпр. 3 молекула H2SO4, од расположивог броја атома T
Z < min
сумпора нпр. 5 молекула H2SO4 и нпр. 8 молекула H2SO4 од
расположивог броја атома кисеоника, онда је највећи број T min = Z
молекула H2SO4 који се могу формирати 3, односно мини-
мум датих бројева. min

4. Написати алгоритам којим се вредности два дата реална броја премештају тако да важи
поредак А ≤ В.
P
Решење
A, B
улазни подаци → А, В – дати реални бројеви
помоћна променљива → Р – помоћна променљива за разме- A >B
T
ну вредности две променљиве T P =A
излазни подаци → А, В – реални бројеви у траженом поретку
A =B
Променљиве А и В треба да размене своје вредности уколи-
ко нису у поретку А ≤ В, односно ако су у поретку А > В,
применом алгоритма за размену вредности две променљиве, B =P
обрађеног на једном од претходних часова (девети час).
A, B

50
5. Написати алгоритам којим се вредности три дата реална броја премештају тако да
важи поредак А ≤ В ≤ С.
P
Решење
A, B, C
улазни подаци → А, В, С – дати реални бројеви
T
помоћна променљива → Р – помоћна променљива за размену A >B
вредности две променљиве T P =A
излазни подаци → А, В, С – реални бројеви у траженом A =B
поретку B =P

Најпре испитујемо да ли је нарушен поредак А ≤ В, односно T


A > C
да ли су прва два броја, А и В, у поретку А > В, па ако јесу,
онда им заменимо места, применом алгоритма за размену P =A
T
A =C
вредности две променљиве. Потом испитамо да ли су први и
C =P
трећи број у поретку А > С, па ако јесу, и ове две променљиве
размене своје вредности, чиме смо постигли да се на првом
T
месту налази најмања вредност. Остало је још да преостале B >C
две вредности (други и трећи број) сложимо у одговарајући T P =B
поредак. Оне се налазе у променљивама В и С, па ћемо B =C
и овде применити алгоритам за размену вредности две C =P
променљиве.
min

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

21. Уметнута наредба условног преласка (обрада)

Објаснити различите случајеве када се иза резервисаних речи then и else наводе нове
наредбе условног преласка.

Случај 1
T
L1
if L1 then T T
T L2
if L2 then N1 L3 T
T
else N2 N2 N1
else if L3 then N3 N4 N3

else N4;

51
Ако је испуњен услов L1 и ако је испуњен услов L2, онда се извршава наредба N1, а ако
је испуњен услов L1 и ако није испуњен услов L2, онда се извршава наредба N2. Ако није
испуњен услов L1 и ако је испуњен услов L3, онда се извршава наредба N3, а ако није испу-
њен услов L1 и ако није испуњен услов L2, онда се извршава наредба N4.

Случај 2
T
L1
if L1 then T T
L2
if L2 then N1 N3 T

else N2 N2 N1
else N3;

Ако је испуњен услов L1 и ако је испуњен услов L2, онда се извршава наредба N1, а ако
је испуњен услов L1 и ако није испуњен услов L2, онда се извршава наредба N2. Ако није
испуњен услов L1, онда се извршава наредба N3.

Случај 3
T
L1
if L1 then T T
L2
if L2 then N1 T

else N2; N2 N1

Ако је испуњен услов L1 и ако је испуњен услов L2, онда се извршава наредба N1, а ако је
испуњен услов L1 и ако није испуњен услов L2, онда се извршава наредба N2.

Случај 4
T
L1
if L1 then T T
L2
begin T
if L2 then N1; N2 N1
end
else N2;

Ако је испуњен услов L1 и ако је испуњен услов L2, онда се извршава наредба N1, а ако
није испуњен услов L1, онда се извршава наредба N2. Како се else везује за њему најближе
then, то ћемо за овај случај применити граничнике begin – end, који ће обезбедити да се
извршење наредбе N2 везује за услов L1.
На свакој од грана може се наћи више наредби, па их онда треба ограничити гранични-
цима begin – end, што нам обезбеђује да се та група наредби изврши на жељеном месту.

52
Пример
Написати алгоритам којим се израчунавају реална решења квадратне једначине:
ax2 + bx + c = 0 (a ≠ 0).

Решење P

улазни подаци → a, b, c – коефици- a,b,c


јенти квадратне једначине
помоћна променљива → D = b2 – 4ac
D – дискриминанта
излазни подаци → х – решење D =0
T
квадратне једначине за случај да
су решења реална и једнака, D > 0
T x1 = –b / (2a)
х1, х2 – реална и различита T
x1 = (–b + D)/ (2a) x
решења квадратне једначине
Resenja su
konjugovano- x2 = (–b – D)/ (2a)
Пошто решења квадратне -kompleksni brojevi
једначине зависе од
x1, x2
вредности дискриминанте,
најпре ћемо израчунати
њену вредност: D = b2 – 4 ∙ a ∙ c.
K

b
Ако је D = 0, онда ћемо имати једно решење квадратне једначине x = – .
2∙a
–b + √
Ако је D > 0, онда квадратна једначина има два реална решења: x1, 2 = , која ћемо
2∙a
–b + √ –b + √
у алгоритму раздвојити и записати као: x1 = и x2 = .
2∙a 2∙a
Ако је D < 0, решења нису у скупу реалних бројева, односно решења су конјуговано-ком-
плексни бројеви.
Задатак ћемо решити применом својства да ако није тачно да је D = 0 и ако није тачно да
је D > 0, онда је испуњен услов да је D < 0, па нема потребе проверавати алгоритам.

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

If D = 0 then
begin
x := -b/(2 * a);
ShowMessage(Format(ꞌx = %0.2fꞌ,[x]));
end

53
else
If D > 0 then
begin
x1 := (-b + sqrt(D)/(2 * a);
x2 := (-b - sqrt(d)/(2 * a);
ShowMessage(Format(ꞌx1 = %0.2f, x2 = %0.2fꞌ,[x1, x2]));
end
else ShowMessage(ꞌResenja su konjugovano-kompleksni brojeviꞌ);

22. Наредба вишеструког избора (обрада)

Објаснити услове коришћења и синтаксу наредбе вишеструког избора (case).

case selektor of
lista_konstanti_1:naredba_1;
lista_konstanti_2:naredba_2;
...
lista_konstanti_n:naredba_n
else alternativna naredba
end

Објаснити појам променљиве selektor и типове података којима може припадати


(integer, boolean, char). Вредности у листама константи. Просте и сложене наредбе –
примена граничника begin и end.

Примери
1. Написати програм који на основу редног броја дана у недељи исписује назив дана
(1 – понедељак, ..., 7 – недеља).

Решење

Ако редни број дана унесемо у некој Edit контроли edDan, онда би процедура у Lazarus-у
за решавање датог задатка имала следећи изглед.

dan := StrToInt(edDan.Text);
case dan of
1:ShowMessage(ꞌponedeljakꞌ);
2:ShowMessage(ꞌutorakꞌ);
3:ShowMessage(ꞌsredaꞌ);
4:ShowMessage(ꞌčetvrtakꞌ);
5:ShowMessage(ꞌpetakꞌ);
6:ShowMessage(ꞌsubotaꞌ);
7:ShowMessage(ꞌnedeljaꞌ);
end;
end;

54
2. Написати алгоритам и програм којим се за задати датум d, m, g одређује следећи датум.

Решење

улазни подаци → d, m, g – дати датум (дан, месец, година)


помоћна променљива → bd – број дана у месецу
излазни подаци → d, m, g – наредни датум (дан, месец, година)

При решавању овог задатка најпре треба одредити колико има дана у сваком месецу, при
чему, у зависности од унете године, програм треба да утврди да ли је година преступна и на
основу тога да одреди број дана у фебруару. Свака четврта година је преступна осим столет-
них година. Изузетак су столетне године које су дељиве са 400, па ћемо број дана у фебруару
одредити на основу услова (g mod 4 = 0)and(g mod 100 ≠ 0)or(g mod 400 = 0).
У даљем решавању задатка поћи ћемо од „критичног” дана у датуму, а то је последњи дан
у месецу, па ћемо задатак решити на следећи начин.

d, m, g

m
1, 3, 5, 3, 7, 8, 10, 12 4, 6, 9, 11 2

bd = 31 bd = 31 (g mod 4 = 0)˄
(g mod 100 ≠ 0)˅
(g mod 400 = 0)

bd = 31 bd = 31

d = bd

d=d+1 m = 12

d=1 d=1
m = m +1 m = 1
g = g+ 1

d , m, g

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

Упутство за решавање
„Критични” датум за овај задатак је први дан у месецу, и тада треба испитати број дана у
месецу који је за 1 мањи од унетог. Уколико је унети дан 1 и унети месец 1, онда је претходни
датум d := 31, m := 12, g := g - 1.

23. Наредбе гранања (утврђивање)

Задаци
1. Написати алгоритам који за дати троцифрен природан број х проверава да ли је Арм-
стронгов. Број је Армстронгов ако је једнак збиру кубова својих цифара. На пример:

135 је Армстронгов јер је 135 = 13 + 53 + 33;


100 није Армстронгов јер је 100 ≠ 13 + 03 + 03.

Решење
P
улазни податак → x – троцифрени број
помоћна променљива → s – цифра стотина, x
d – цифра десетица,
ј – цифра јединица s = x div 100
излазни подаци → порука о томе да ли је унети
бој Армстронгов или није
d = x mod 100 div 10

j = x mod 10

x = s3 + d 3 + j 3

x je
x nije
Amstrongov
Amstrongov
broj
broj

2. Написати алгоритам којим се испитује да ли се од одсечака са дужинама x, y, z може


конструисати троугао – ако може, одредити врсту троугла (једнакостранични, једнако-
краки, разностранични).

56
P
Решење
x,y,z
улазни подаци →
x, y, z – дужине одсечака (x + y > z)˄ T
излазни подаци → одговарајућа (x + z > y)˄
(x + z > y)
порука о врсти троугла, ако се T
може конструисати (x = y)˄(x = z)
Ne moze se
konstruisati trougao
T
Jednakostranicni
(x = y)˅(x = z) T
˅(y = z)
T
Jednakokraki

Raznostranicni

Најпре испитати да ли се од одсечака x, y, z може конструисати троугао. Троугао се може


конструисати ако је задовољен услов (x + y > z) (x + z > y) (y + z > x). Ако је услов тачан,
онда испитати да ли је троугао једнакостранични ((x = y) (x = z)), jeднакокраки ((x = y)
(x = z) (y = z)) или разностранични (ако није испуњен ниједан од ова два услова). Ако није
испуњен услов (x + y > z) (x + z > y) (y + z > x), троугао се не може конструисати.

3. Написати алгоритам којим се за учитани угао (дат у степенима) који може бити већи
од 360 одређује квадрант коме припада (0–89 степени → I квадрант, 90–189 степени → II
квадрант, 180–269 степени → III квадрант, 270–359 степени → IV квадрант).

Решење
P
улазни податак → U – величина угла
(у степенима) U
излазни податак → K – редни број
квадранта U = U mod 360

Пошто дати угао може имати вредност K = U div 90


већу од 360, онда га најпре треба све-
сти на вредност од 0 до 359 тако што 0 1 K 2 3
ћемо одредити остатак при дељењу да-
тог угла бројем 360 U = U mod 360, а I kvadrant II kvadrant III kvadrant IV kvadrant
потом ћемо вредност угла сведеног на
величину до 360 степени целобројно
поделити бројем степени једног квад-
ранта, K = U div 90. K

57
Резултат ће бити 0 ако је U < 90 (I квадрант), 1 ако је 90 ≤ U < 180 (II квадрант), 2 ако је 180
≤ U < 270 (III квадрант), 3 ако је 270 ≤ U < 360 (IV квадрант).

4. Шта се добија извршавањем следећег сегмента програма?

a := -4; b : = 8; c := 3;
a := a + b * trunc(swrt(succ(b + c) * 4 + 1) / 3) + c;
b := b * a mod 3 + c mod 5 - 2;
c := c div b + 2;
if (a < c)or(b < c)
then if (a = c)or(a <> 0)and(b > x)
then a := 0 + 1
else
begin
a := a + 2;
b := b + 2;
end
else a := a + 3
b := b + 3;
c := c + 3;

Решење

T
(a < c) ˅ (b > c)

(a = c) ˅ (a = 0) T
T

˄(b > c)
a=a+3 T a=a+1

a=a+2

b=b+2

b=b+3

c=c+3

На основу почетних вредности израза за израчунавање променљивих a, b и c и алгори-


тамске шеме сегмента програма, добија се: a = 17, b = 6, c = 8.

58
24. Наредбе гранања (провера знања)

I група

1. Написати алгоритам којим се за задате вредности променљивих а и b израчунава вред-


ност променљиве f помоћу дате формуле.

2. Написати алгоритам којим се за задато x и y израчунава z по датој формули.

3. Дата је инструкција кретања тачке учитавањем вредности променљиве a = {1, 2, 3, 4}.


Ако 1 представља кретање на север, 2 на исток, 3 на југ, 4 на запад, написати алгоритам
којим се исписује позиција тачке која полази из координатног почетка. Инструкцијом
а задаје се кретање за дужину d. За решавање користити наредбу case. (Пример: ако
су задате вредности а = 3 и d = 5, онда је позиција тачке x = 0, y = -5)

4. Шта се добија извршавањем следећег сегмента програма?

a := -6; b := 7; c := 4;
a := a + b * trunc(sqrt(succ(b + c) * 4 + 1) / 3) + c;
b := b * a mod 3 + c mod 5 - 2;
c := c div b + 2;
if (a < c)or(b < c)
then if (a = c)or(a <> 0)and(b > c)
then a := a + 1
else
begin
a := a + 2;
b := b + 2;
end
else a := a + 3;
b := b + 3;
c := c + 3;

59
II група

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


. Ако се вредност не може израчунати, написати одговарајућу поруку.

2. Написати алгоритам којим се проверава да ли је учитани троцифрени број Х дељив


бројем који се добија када се из броја Х избаци средња цифра (нпр. да ли је број 325
дељив бројем 35).

3. Дата су два броја а и b и индикатор поретка који узима вредност 1 ако бројеве треба
сложити у неопадајући поредак a ≤ b, односно вредност 2 ако их треба сложити у не-
растући поредак a ≥ b. За све остале вредности исписати поруку о грешци. За реша-
вање користити наредбу case.

4. Шта се добија извршавањем следећег сегмента програма?

a := -5; b := 7; c := 2;
a := a + b * round(2 * sqrt(pred(b + c) * 3 + 1) / 3) + c;
b := b * a mod 3 + c mod 5 – 3;
c := c div b + 2;
if (a > c) and(b < c)
then if (a > b)or(a <> 0)and(b > c)
then
begin
a := a + 1;
b := b + 1;
end
else
begin
a := a + 2;
b := b + 2;
end
else a := a + 3;
b := b + 3;
c := c + 3;

25. Контроле избора и контејнерске компоненте (обрада)

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


(RadioGroup, RadioButton, ListBox, ComboBox), као и у њихове особине и приме-
ну. Потом, објаснити кoнтролу која омогућава избор ниједне, једне или више од понуђених
могућности (CheckBox), њене особине и примену. На крају, објаснити контејнерске компо-
ненте (Panel, Bevel, GroupBox), њихове особине и примену.

60
26. Отпорници – израда апликације. Провера коректности улазних података (вежбање)

Креирати апликацију која израчунава укупни отпор два отпорника на основу задатих
вредности у Edit контролама и начин везивања који може бити редни и паралелни. Прове-
рити коректност улазних података при напуштању контроле Edit.

Решење

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

Рачунање укупног отпора врши се кликом на дугме btRacunaj, па због тога за дату
контролу из картице Events бирамо догађај OnClick и у добијеној процедури пишемо
следећи код.

procedure TForm1.btRacunajClick (Sender: TObject);


var R1, R2, R: real;
begin
R1 := StrToFloat (edR1.Text);
R2 := StrToFloat (edR2.Text);
case rgVezivanje.ItemIndex of
0 : R := R1 + R2;
1 : R := R1 * R2 / (R1 + R2);
end;
edR.Text := Format(ꞌ%0.0fꞌ, [R]);
end;

Укупан отпор за редну везу рачуна се као збир датих вредности отпора, по формули
R = R1 + R2. За паралелну везу реципрочна вредност укупног отпора једнака је збиру реци-
прочних вредности датих отпора, па се укупан отпор за паралелну везу рачуна по формули
R1 ∙ R2
R= .
R1 + R2

61
Да бисмо обезбедили да у Edit контролама увек буду бројеви, потребно је проверити
коректност улазних података при напуштању Edit контроле за унос отпора: edR1 и edR2.
Процедуре добијамо означавањем компоненте edR1 (edR2) и избором догађаја OnExit из
картице Events. У добијеним процедурама уписујемо одређене кодове.

procedure TForm1.edR1Exit (Sender: procedure TForm1.edR2Exit (Sender:


TObject); TObject);
var s : string; var s : string;
n : real; n : real;
er : integrer; er : integrer;
begin begin
s := edR1.Text; s := edR2.Text;
val (s, n, er); val (s, n, er);
if er <> 0 then if er <> 0 then
begin begin
ShowMessage(ꞌNekorektan unos!ꞌ); ShowMessage(ꞌNekorektan unos!ꞌ);
edR1.SetFocus; edR2.SetFocus;
edR1.SekectAll; edR2.SelectAll;
end; end;

end; end;

Процедуром val врши се превођење стринга s у број n, који може бити реалан или цео у
зависности од захтева задатка. При превођењу се рачуна грешка er (увек је целобројног типа),
која ће имати вредност 0, ако је стринг успешно преведен у број, и вредност различиту од 0,
ако се стринг не може превести у број (ако је у Edit контроли уписано нешто што није број).

27. Идеална тежина – израда апликације (вежбање)

Креирати апликацију која на основу висине и тежине особе одређује идеалну тежину за
особе женског и мушког пола и на основу датих података даје савет:
‒ Vi imate idealnu tezinu;
‒ Treba da smrsate x kg;
‒ Treba da se ugojite x kg.
За избор пола користити компоненте RadioButton или RadioGroup. Идеална тежи-
на за мушкарце је Visina – 100, а за жене Visina – 110.
Проверити коректност унетих података за висину и тежину.

62
Решење

Слика 14. Изглед форме при Слика 15. Задате вредности и одабрана ставка
покретању апликације из контроле RadioGroup

Слика 16. Резултат


(добија се кликом на дугме Racunaj)

Избором догађаја OnClick за дугме btRacunaj отвара се прозор за уписивање проце-


дуре и потребно је уписати наведени код.

procedure TForm1.btRacunajClick (Sender: TObject);


var V, T, IT : real;
begin
V := StrToFloat (edVisina.Text);
T := StrToFloat (edTezina.Text);
case rgPol.ItemIndex of
0 : IT := V – 100;
1 : IT := V – 100;
end;
if IT = T then ShowMessage(ꞌVi imate idealnu tezinuꞌ);
if IT = T then ShowMessage(Format(ꞌTreba da se ugojite %0.2f kgꞌ, [IT –
T]));
if IT = T then ShowMessage(Format(ꞌTreba da smrsate %0.2f kgꞌ, [IT – T]));
end;

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

63
Провера коректности улазних података врши се избором догађаја OnExit за контроле
edVisina и edTezina писањем наведених кодова.

procedure TForm1.edTezinaExit procedure TForm1.edVisinaExit


(Sender: TObject); (Sender: TObject);
var s : string; var s : string;
n : real; n : real;
er : integrer; er : integrer;
begin begin
s := edTezina.Text; s := edVisina.Text;
val (s, n, er); val (s, n, er);
if er <> 0 then if er <> 0 then
begin begin
ShowMessage(ꞌNekorektan unos!ꞌ); ShowMessage(ꞌNekorektan unos!ꞌ);
edTezina.SetFocus; edVisina.SetFocus;
edTezina.SekectAll; edVisina.SelectAll;
end; end;

28. Троугао – израда апликације (вежбање)

Креирати апликацију којом се на основу задатих одсечака са дужинама а, b и с израчуна-


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

Решење

Слика 17. Изглед форме при Слика 18. Изглед форме после задавања вредности
покретању апликације и избора за израчунавање

Израчунавање се покреће кликом на дугме btRacunaj, а резултат се исписује у Edit


контролама edObim и edPovrsina у зависности од избора за рачунање. Избор за рачу-
нање врши се селекцијом CheckBox контрола cbObim и cbPovrsina. Уколико нека од
CheckBox контрола није одабрана, одговарајућа Edit контрола треба да буде без садржаја.

64
Уколико се троугао може конструисати, површина троугла се рачуна применом Хероно-
вог обрасца:
P = √s ∙ (s – a) ∙ (s – b) ∙ (s – c).
У процедури коју добијамо избором догађаја OnClick за дугме btRacunaj уписујемо
код наведен у наставку текста.

procedure TForm1.btRacunajClick (Sender: TObject);


var a, b, c, O, P, s : real;
begin
a := StrToFloat (eda.Text);
b := StrToFloat (edb.Text);
c := StrToFloat (edc.Text);
if cbObim.Checked then
if (a + b > c) and (a + c > b) and (b + c > a) then
begin
O := a + b + c;
edObim.Text := Format(ꞌ%0.2fꞌ, [O]);
end
else ShowMessage(ꞌNe moze se konstruisati trougaoꞌ)
else edObim.Text := ꞌꞌ;
if cbPovrsina.Checked then
if (a + b > c) and (a + c > b) and (b + c > a) then
begin
s := a + b + c;
P := sqrt(s * (s – a) * (s – b) * (s – c));
edPovrsina.Text := Format(ꞌ%0.2fꞌ, [P]);
end
else ShowMessage(ꞌNe moze se konstruisati trougaoꞌ)
else edPovrsina.text := ꞌꞌ;

Ако је одабран CheckBox за израчунавање обима троугла, онда ћемо најпре испитати
да ли се од задатих одсечака може конструисати троугао, па ако може, израчунати обим и
исписати га, а ако не може, онда ћемо у посебном прозору исписати одговарајућу поруку о
томе. Уколико није одабран CheckBox за израчунавање обима троугла, онда ћемо испра-
знити садржај одговарајуће Edit контроле. Сличан поступак се примењује и за израчуна-
вање површине троугла.

29. Претходни и наредни датум – израда апликације (вежбање)

Креирати апликацију којом се за задати датум одређује претходни и наредни датум. Да-
тум уписати у три Edit контроле (за дан, месец и годину), а добијени датум уписати у једној
Edit контроли. Израчунавање новог датума врши се у зависности од одабира из CheckBox
контроле, кликом на одговарајуће дугме за рачунање.

65
Решење

Слика 19. Изглед форме при креирању Слика 20. Изглед форме са задатим
апликације вредностима и резултатима рада апликације

Процедуру за рачунање претходног и наредног датума ћемо написати према алгоритму


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

procedure TForm1.btRacunajClick (Sender: TObject);


var d, m, g, bd, d1, m1, g1, d2, m2, g2 : integrer;
begin
d := StrToFloat (edDan.Text);
m := StrToFloat (edMesec.Text);
g := StrToFloat (edGodina.Text);
case m of
1, 3, 5, 7, 8, 10, 12 : bd := 31;
4, 6, 9, 11 : bd := 30;
2 : if (g mod 4 = 0) and (g mod 100 <> 0) or (g mod 400 = 0)
then bd := 29;
else bd := 28;
end;
if (d < 1) or (d > bd) or (m < 1) or (m > 12) or (g < 0) then
begin
ShowMessage (ꞌUneli ste nepostojeci datum!ꞌ);
edDan.Text := ꞌꞌ);
edMesec.Text := ꞌꞌ);
edGodina.Text := ꞌꞌ);
edDan.SetFocus;
end
else

66
begin
if cbPrethodni.Checked then
begin
d1 := d;
m1 := m;
g1 := Sg;
if d1 = 1 then
if m1 = 1 then
begin
d1 := 31;
m1 := 12;
g1 := g – 1;
end
else
begin
m1 := , 1 – 1;
case m1 of
1, 3, 5, 7, 8, 10, 12 : d1 := 31;
4, 6, 9, 11 : d1 := 30;
2 : if (g1 mod 4 = 0) and (g1 mod 100 <> 0) or (g1 mod 400 = 0)
then d1 := 29
else d1 := 28;
end
end
edPrethodni.Text := Format (ꞌ%0d.%0d.%0d.ꞌ, [d1, m1, g1]);
end
else edPeethodni.Text := ꞌꞌ;
if cbNaredni.Checked then
begin
d2 := d;
m2 := m;
g2 := g;
if d2 = bd then
if m2 = 12 then
begin
d2 := 1;
m2 := 1;
g2 := g2 + 1;
end
else
begin
d2 := 1;
m2 := m2 + 1;
end
else d2 := d2 + 1;
edNaredni.Text := Format(ꞌ%0d.%0d.%0d.ꞌ, [d2, m2, g2]);
end
else edNaredni.Text := ꞌꞌ;
end;
end;

67
30. Разгранате програмске структуре (провера знања)

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

I група

ЗАДАЦИ ПОЕНИ
1 Отворити нови пројекат у Lazarus-у и сачувати га у фолдеру Desktop\ 5
Kontrolni\Ime i Prezime под именом Brojevi.
2 Креирати форму као на слици а). 14
а) б)

3 Преименовати све Edit, Label којом се исписује резултат, RadioGroup 6


и Button контроле по мађарској нотацији.
4 На насловној линији треба да буде приказано само дугме за затварање 5
прозора.
5 Нaписати процедуру којом се кликом на дугме Racunaj на основу унетих 40
реалних бројева a, b и с и одабране ставке у компоненти RadioGroup
одређује збир највећег и најмањег броја или распоређују бројеви у
растући поредак (a < b < c). Резултат се исписује у компоненти Label
предвиђеној за испис резултата, на начин на који је то приказано сликом
б) из задатка 2.
6 Проверити коректност унетих података при напуштању Edit контролa 30
предвиђених за унос бројева a, b и с.
7 Написати процедуру којом се кликом на дугме Kraj брише садржај свих 10
Edit контрола, а натпис компоненте Label за приказ резултата се мења
у Rezultat.

68
II група

ЗАДАЦИ ПОЕНИ
1 Отворити нови пројекат у Lazarus-у и сачувати га у фолдеру Desktop\ 5
Kontrolni\Ime i Prezime под именом Brojevi.
2 Креирати форму као на слици а). 14
а) б)

3 Преименовати све Edit, CheckBox и Button контроле по мађарској 6


нотацији.
4 На првој Edit контроли (за унос броја a) поставити поруку са саветом: 5
Unesite trocifren broj.
5 Нaписати процедуру којом се кликом на дугме Racunaj на основу унетих 40
бројева a, b и с и одабраних ставки испитује:
‒ да ли је унети троцифрени број a палиндром;
‒ максимум унетих бројева.
Резултат исписати у одговарајућим Edit контролама за испис резултата.
За први случај најпре проверити да ли је број a троцифрен, па ако јесте,
утврдити да ли је палиндром. Порука о томе да ли је унети број палиндром
или не исписује се као на слици б) из задатка 2, комбинацијом контрола
CheckBox и Edit, а ако унети број a није троцифрен, исписати поруку у
посебном прозору: Niste uneli trocifren broj.
6 Проверити коректност унетих података при напуштању Edit контролa 30
предвиђених за унос бројева a, b и с.
7 Написати процедуру којом се кликом на дугме Novi unos брише садржај 10
свих Edit контрола.

69
VIII НАСТАВНА ТЕМА (ДЕЦЕМБАР, ЈАНУАР, ФЕБРУАР)

31. Бројачки циклуси (обрада)

Објаснити шта су цикличне програмске структуре, као и облици циклуса.


Под бројачким циклусима подразумевају се наредбе for – to - do и for – downto -
do. Постоје бројачки циклуси који користе бројачку променљиву у телу петље и бројачки
циклуси који је не користе.
Вежбати на примерима којима се показује извршавање цикличног програма.

Примери
1. Коју ће вредност добити променљива S извршавањем следећег дела програма?

n := 5;
S := 0;
for i := 1 to n do
S := S + i;

Задатак ћемо решити применом следећег алгоритма, а поступак извршавања је приказан


табелом 1.

S=0

i = 1, n

S=S+i

Табела 1. Поступак извршавања програма са задатим вредностима

Понављање циклуса Наредбе n S i


Пре циклуса n := 5; 5 ? ?
Пре циклуса S := 0; 5 0 ?
1 S := S + i; 5 1 1
2 S := S + i; 5 3 2
3 S := S + i; 5 6 3
4 S := S + i; 5 10 4
5 S := S + i; 5 15 5

70
2. Које ће вредности добити вредности променљиве S и P извршавањем следећег дела
програма?

S := 0;
P := 1;
n := 7;
S := S + 2;
for i := 4 to n do
begin
P := P * i;
S := S + P + sqr(i);
end;
S := S + i;

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

S=0
P=1
n=7

S=S+2

i = 4, n

P:= P * i

S = S + P + i2

S=S+i

Табела 2. Поступак извршавања програма са задатим вредностима

Понављање циклуса Наредбе S P n i


Пре циклуса S := 0; 0 ? ? ?
Пре циклуса P := 1; 0 1 ? ?
Пре циклуса n := 7; 0 1 7 ?
Пре циклуса S := S + 2; 2 1 7 ?

71
P := P * i; 2 4 7 4
1
S := S + P + sqr(i); 22 4 7 4
P := P * i; 22 20 7 5
2
S := S + P + sqr(i); 67 20 7 5
P := P * i; 67 120 7 6
3
S := S + P + sqr(i); 223 120 7 6
P := P * i; 223 840 7 7
4
S := S + P + sqr(i); 1112 840 7 7
После циклуса S := S + i; 1120 840 7 8

3. Коју ће вредност добити променљива S извршавањем следећег сегмента програма?

S := 0;
n := 3;
for i := 1 to n do
for j := i to n do
S := S + j;

Дати програмски сегмент може се представити алгоритамском структуром, а проласком


кроз циклусе i и j добиће се S = 14.

S:= 0
n:= 3

i = 1, n

j = i, n

S=S+j

Као што се види из алгоритма, дати сегмент програма има два циклуса, спољашњи и
унутрашњи. У првом извршавању спољашњег циклуса i, унутрашњи циклус j се извршава
три пута; у другом извршавању спољашњег циклуса i, унутрашњи циклус j се извршава
два пута; у трећем извршавању циклуса i, унутрашњи циклус j се извршава једном. Цело-
купан поступак и међурезултати приказани су табели 3.

72
Табела 3. Поступак извршавања програма са задатим вредностима

Понављање Понављање
спољног унутрашњег Наредбе S n i j
циклуса циклуса
Пре циклуса Пре циклуса S := 0; 0 ? ? ?
Пре циклуса Пре циклуса n := 3; 0 3 ? ?
1 S := S + j; 1 3 1 1
1 2 S := S + j; 3 3 1 2
3 S := S + j; 6 3 1 3
1 S := S + j; 8 3 2 2
2
2 S := S + j; 11 3 2 3
3 1 S := S + j; 14 3 3 3

Задатак за вежбање
1. Коју ће вредност добити променљива k извршавањем следећих делова програма?

а) k := 1; б) k := 1; p := 1; r := 3;
p := 2; n := 1;
r := 1; for j := 2 to 4 do
n := 1; begin
for j := 0 to 2 do k := 2 * (n + 1) + sqr(j – 3)+ 3 * k;
begin k := k – 5;
for i := p downto r do end;
n := n * i + k; for i := r downto p do
k := 2 * k + sqr(j – 1) + n * j; if i < > 2 then
end; begin
k := p mod i + abs(k – 3)+ n;
(Решење: k = 177.) k := k – 10;
end
else
k := n + k div p + 2;
k := k + 20;

(Решење: k = 24.)

32. Бројачки циклуси који у телу циклуса не користе бројачку променљиву (обрада)

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

73
Задаци
1. Улазне величине су n реалних бројева. Написати алгоритам за учитавање, сумирање и
приказивање њихове суме.

улазни подаци → n – број реалних бројева, х – реалан број (има их n)


помоћна променљива → i – бројач P
излазни податак → S – збир n реалних бројева
n
Пре циклуса неопходно је унети број реалних бројева
n и поставити почетни збир на неутрални елемент за S=0
сабирање (S = 0), како бисмо касније могли вршити i = 1, n
збрајање бројева. Потом се у сваком пролазу кроз циклус
уноси реалан број x, и како се у наредном пролазу кроз x
циклус не би изгубила претходна вредност променљиве
S=S+x
x, то се у истом пролазу врши и додавање унетог броја на
претходно дефинисани збир (S = S + x). По изласку из
циклуса треба само приказати добијени резултат S. S

2. Са тастатуре се учитава температура за првих n дана у години. Написати алгоритам


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

улазни податак → n – број дана када је вршено P


мерење температуре
помоћна променљива → i – бројач (броји дане n, T
када је мерена температура) min = T
излазни подаци → min – најнижа температура, max = T
max – највиша температура
i = 2, n

За израду овог задатка користићемо алгоритам T


за одређивање максимума (минимума), обрађе-
T
ног на неком од претходних часова. Да бисмо T > max
одредили максимум (минимум), потребно је да T max = T
најпре једну вредност, у овом случају темпера-
туру, прогласимо максимумом (минимумом), T
што значи да ћемо температуру измерену првог T < min
дана унети пре почетка циклуса и прогласити T
min = T
је минималном (максималном), а потом ћемо
у циклусу у коме ћемо уносити температуре од
другог до n-тог дана поредити унете температу-
min, max
ре са максимумом (минимумом). Када изађемо
из петље, имаћемо највишу и најнижу темпера- K
туру.

74
3. Написати алгоритам који за n унетих целих бројева израчунава аритметичку средину
свих парних чланова низа.
P
улазни подаци → n – број целих бројева,
n
х – цео број (има их n)
помоћне променљиве → i – бројач, S=0
k=0
S – збир парних бројева,
k – број парних бројева i = 1, n
излазни податак → ars – аритметичка средина парних x
бројева
x mod 2 = 0
Пре почетка циклуса потребно је да унесемо колико S=S+x
целих бројева ћемо користити за рачунање и дефинисати k=k+1
колики је почетни збир парних бројева и колико парних
бројева смо пронашли међу унетим бројевима (S = 0;
k = 0). У сваком пролазу кроз циклус најпре ћемо унет k>0
и цео број, а потом проверити да ли је унети број паран.
ars = S / k
Ако јесте, његову вредност ћемо додати на претходни
збир, а број парних бројева увећати за 1. niste uneli
nijedan paran broj ars
Кад изађемо из петље, проверићемо да ли међу унетим
бројевима има парних, па уколико их има, израчунати K
аритметичку средину, а уколико их нема, исписати
одговарајућу поруку.

4. Написати алгоритам који за n унетих целих бројева одређује који се број пре појављује
– позитиван или негативан.
P
улазни подаци → n – број целих бројева,
n
х – цео број (има их n)
помоћне променљиве → i – бројач, S=0
k=0
okPoz – логичка променљива која идентификује прво
појављивање позитивног броја i = 1, n
излазни податак → порука о томе који се број прво x
појављује – позитиван, негативан или су сви унети
x mod 2 = 0
бројеви 0
S=S+x
Пре циклуса ћемо унети број целих бројева које ћемо ко- k=k+1
ристити за наш задатак и вредности обе логичке вредно-
сти поставити на false, јер полазимо од претпоставке
да међу унетим бројевима нема ни позитивних ни нега- k>0
тивних. У сваком пролазу кроз циклус унећемо цео број,
ars = S / k
испитати да ли је позитиван и да ли су вредности логи-
чких променљивих okPoz и okNeg и даље false. Aко niste uneli
nijedan paran broj ars
јесте, променљива okPoz ће добити вредност true.
Слично ћемо проверити и за негативне бројеве. K

75
После циклуса ћемо, у зависности од вредности логичких променљивих okPoz и okNeg,
исписати одговарајућу поруку.

Домаћи задатак
1. N предавача у Центру за таленте држи предавања по цени часа C. Написати алгоритам
којим се за сваког предавача учитава колико је одржао часова у току месеца и исписује
његова зарада. Одредити и укупан износ за исплату.

2. Са тастатуре се учитава температура за првих n дана у години. Написати алгоритам


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

3. Написати алгоритам који за n унетих целих бројева одређује број суседних позитивних
бројева.

33. Бројачки циклуси који у телу циклуса користе бројачку променљиву (обрада)

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

Задаци
1. Написати алгоритам којим се за дато n израчунава факторијел природног броја n:
fakt = n! = 1 ∙ 2 ∙ 3 ∙ … ∙ n.

улазни податак → n – број чији факторијел рачунамо P


помоћна променљива → i – бројач
излазни податак → fakt – факторијел броја n n

Факторијел броја n је производ бројева од 1 до n, а како fakt = 1


се на исти начин мења и вредност бројача, то ћемо у
сваком пролазу кроз циклус факторијел увећати онолико
пута колико износи вредност бројача у том пролазу i = 1, n
кроз петљу. Да бисмо то могли да урадимо, неопходно
је да пре уласка у циклус унесемо број чији факторијел fakt = fakt * i
рачунамо (n) и да вредност факторијела поставимо на
неутрални елемент за множење fakt := 1.

fakt

76
2. Написати алгоритам којим се за реално х израчунава: S = x + 2x2 + 3x3 + ... + nxn.

улазни подаци → n – број чланова низа,


х – реалан број P
помоћна променљива → i – бројач (представља и коефицијент
уз степен броја х), n, x
а – степен броја х
излазни податак → S – збир степена броја х a=1
S=0

Пре почетка циклуса уносимо број чланова низа и основу


i = 1, n
за степеновање – реалан број х, почетни збир постављамо
на неутрални елемент за сабирање (S := 0). Како чланови a=a*x
датог реда представљају степене броја х помножене редом S=S+i*a
бројевима који се мењају као бројач, посматраћемо их као
одвојене вредности, односно као производ коефицијента и
степена. Степени броја х се међу собом разликују х пута, па
S
ћемо један део члана реда а поставити на неутралан елемент
за множење (a := 1). У сваком пролазу кроз циклус најпре
рачунамо члан низа (a := a * x) и збир увећавамо за вредност K
члана низа а помноженог са вредношћу бројача i (S := S + i
* a). После циклуса исписујемо вредност збира S.

3. Написати алгоритам којим се приказују сви троцифрени Армстронгови бројеви. Број


је Армстронгов ако је једнак збиру кубова својих цифара.

улазни подаци → сви троцифрени бројеви (од


P
100 до 999)
помоћне променљиве → s – цифра стотина,
d – цифра десетица, i = 100,999
j – цифра јединица
излазни податак → i – вредност бројача који s = i div 100
задовољава тражени услов s = i mod 100 div 10
j = i mod 10
У сваком пролазу кроз циклус, вредност бројача
T
i, који узима вредности од 100 до 999, раставља i = s3 + d3 + j3
се на цифрe стотина, десетица и јединица, а T
потом се испитује да ли је i = s3 + d3 + j3. Ако је i
услов задовољен, исписује се вредност бројача i.

77
4. Написати алгоритам којим се одређују и исписују сви савршени бројеви од 2 до m. Број
је савршен ако је једнак суми својих делитеља искључујући њега самог. На пример, 28 је
савршен број јер је: 28 = 1 + 2 + 4 + 7 + 14.
P
улазни податак → m – вредност до које
тражимо савршене бројеве m
помоћне променљиве → n – бројач за
потенцијалне савршене бројеве (узима n = 2, m
вредности од 2 до m),
i – делитељи броја n, S=0
S – збир делитеља
излазни податак → n – савршен број i = 1, n div 2

Пре циклуса ћемо само унети вредност до T


које тражимо савршене бројеве m. n mod i = 0
Задатак ћемо решити применом две петље, T
S=S+i
спољне n, која узима вредности од 2 до m
и броји потенцијалне савршене бројеве, и
унутарње петље i, која представља дели-
теље броја n. Када уђемо у први циклус, ми T
n=S
у ствари започињемо тражење савршеног
броја, што значи да треба да пронађемо n
T

збир његових делитеља, а тражимо их од


броја 1 до половине потенцијалног савр-
шеног броја n (n div 2).
K

Да бисмо могли да сабирамо делитеље, неопходно је пре уласка у другу петљу поставити
почетни збир свих делитеља једног броја (S := 0). У унутрашњем циклусу најпре провера-
вамо дељивост броја n бројем i и сабирамо оне делитеље који задовољавају овај услов. Када
изађемо из унутрашње петље, испитујемо да ли је вредност бројача спољне петље n једнака
збиру делитеља тог броја S, па ако јесте, исписујемо број n.

Домаћи задатак
1. Написати алгоритам којим се израчунава збир првих n природних бројева.
2. Написати алгоритам којим се проверава тачност математичке формуле за израчуна-
вање суме: 12 + 32 + 52 + ... + (2n – 1)2 = n ∙ (4n2 – 1) / 3.
1 1 1
3. Написати алгоритам којим се израчунава збир првих n чланова реда: 1 – + – + ...
3 5 7
( )( ) (
4. Написати алгоритам којим се израчунава: p = 1 +
1
2!
1+
1
3! )
... 1 +
1
n!
.

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


који немају једнаких цифара.
6. Написати алгоритам који за n унетих целих бројева одређује редни број првог парног
члана низа.

78
34. Бројачки циклуси (вежбање)

Задаци
1. Креирати апликацију која, коришћењем ListBox контроле, креира табелу превођења
степени из скале Целзијуса (С) у степене по скали Фаренхајта (F), за вредности од n до
m°С са кораком 1°. Превођење се врши по формули: F = C ∙ 1,8 + 32.

Слика 21. Изглед форме при покретању Слика 22. Изглед форме након клика на дугме
апликације Konvertuј и уноса интервала за Целзијус

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

procedure TForm1.btKonvertujClick (Sender: TObject);


var n, m, c : integrer;
f : real;
begin
n := StrToInt (edN.Text);
m := StrToInt (edM.Text);
ListBox1.Items.Add (ꞌCelzija Farenhejtaꞌ);
ListBox1.Items.Add (ꞌ__________________ꞌ);
for C := n to m do
begin
F := 1.8 * C + 32;
ListBox1.Items.Add (Format(ꞌ%7d %10.2fꞌ, [C, F]));
end;

Брисање садржаја из Edit и ListBox контрола постиже се кликом на дугме Brisi


захваљујући датој процедури.

procedure TForm1.btBrisiClick (Sender: TObject);


begin
edM.Text := ꞌꞌ;
edN.Text := ꞌꞌ;
ListBox1.Items.Add (ꞌCelzija Farenhejtaꞌ);
ListBox1.Clear;
end;

79
2. Креирати апликацију којом се испитује да ли се може формирати батерија од 220V ред-
ним везивањем батерија од А и В волти. Ако је тражено повезивање могуће, одредити
колико треба узети батерија сваког од датих типова.

Слика 23. Изглед форме при покретању апликације Слика 24. Изглед форме након уноса величине
батерија и клика на дугме Racunaj

Да би се добио изглед форме са слике 24, применити процедуру из текста који следи.

procedure TForm1.btRacunajClick (Sender: TObject);


var a, b, i, j, k : integrer;
s : string;
begin
a := StrToInt (edPrva.Text); //velicina prve baterije
b := StrToInt (edDruga.Text); //velicina druge baterije
k := 0; //broj mogućih vezivanja pomocu datih baterija
s := ꞌꞌ;
for i := 0 to 220 div a do //ciklus koji broji baterije od A volti
begin
if (220 – 1 * a) mod b = 0 then
begin
s := ꞌꞌ;
j := (220 – i * a) div b; //broj baterija od B volti
k := k + 1;
if i <> 0 then s := s + IntToStr(i) + ꞌ od ꞌ + IntToStr(a) + ꞌVꞌ;
{Ako imamo mogucnost vezivanja sa obe baterije, onda zarezom
razdvajamo vrednosti}
if (i <> 0) and (j <> 0) then s := s + ꞌ, ꞌ;
if j <> 0 then s := s + IntToStr(j) + ꞌ od ꞌ + IntToStr(b) + ꞌVꞌ;
ListBox1.Items.Add (s);
end;
if k = 0 then ShowMessage (ꞌNemoguce je izvrsiti povezivanje baterija
date velicine!ꞌ);
end;

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


исписује одговарајућа порука: Nemoguce je izvrsiti povezivanje baterija date
velicine!

80
35. Бројачки циклуси (вежбање)

Креирати апликацију којом се у ListBox контролу најпре учитава n целобројних вре-


дности (из одговарајућег Edit поља за унос вредности или из датотеке), а потом се одређује
број парних бројева, аритметичка средина позитивних бројева и број суседних позитивних
бројева. Дугме Sacuvaj треба да обезбеди чување бројева из ListBox контроле у датотеку
brojevi.txt. Дугме Brisi треба да обезбеди брисање селектоване ставке из ListBox
контроле, а дугме Brisi sve брише целокупан садржај ListBox контроле.

Слика 25. Изглед форме при покретању апликације

Слика 26. Изглед форме кликом на дугме Racunaj

Процедура за додавање садржаја Edit контроле edN у ListBox контролу добија се


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

procedure TForm1.btDodajClick (Sender: TObject);


begin
ListBox1.Items.Add(edN.Text);
edN.Text := ꞌꞌ;
edN.SetFocus;
end;

81
Процедура за брисање селектоване ставке добија се кликом на дугме Brisi и приказана
је у наставку.

procedure TForm1.btBrisiClick (Sender: TObject);


begin
ListBox1.Items.Delete(ListBox1.ItemIndex);
end;

Да би целокупни садржај ListBox контроле био обрисан треба уписати процедуру


наведену у наставку текста.

procedure TForm1.btBrisiClick (Sender: Tobject);


begin
ListBox1.Items.Delete(ListBox1.ItemIndex);
end;

Да би се селектована ставка видела у ListBox контроли, треба применти следећу про-


цедуру.

procedure Tform1.ListBox1Click (Sender: Tobject);


begin
edN.text := ListBox1.Items[ListBox1.ItemIndex];
end;

Учитавање садржаја датотеке врши се методом LoadFromFile. Да би ова процедура


радила како треба, потребно је направити текстуални фајл brojevi.txt у директоријуму
IIIx на диску D: уписивањем процедуре дате у наставку.

procedure Tform1.btUcitajClick (Sender: Tobject);


begin
ListBox1.Items.LoadFromFile (ꞌD: \IIIx\brojevi.txtꞌ);
end;

Чување саржаја ListBox контроле у наведеном фајлу врши се методом SaveToFile


уписивањем приказане процедуре.

procedure Tform1.btSacuvajClick (Sender: Tobject);


begin
ListBox1.Items.SaveToFile (ꞌD: \IIIx\brojevi.txtꞌ);
end;
procedure TForm1.btRacunajClick (Sender: TObject);
var a, b, n, k, i, p, s : integrer;
begin
n := ListBox1.Items.Count;
if n > 0 then

82
begin
if cbBrParnih.Checked then
begin
p := 0;
for i := 1 to n do
begin
a := StrToInt(ListBox1.Items[i]);
if a mod 2 = 0 then p := p + 1;
end;
edBrParnih.text := IntToStr(p);
end
else
edBrParhih.Text := ꞌꞌ;
if cbAsPoz.Checked then
begin
a := StrToInt(ListBox1.Items[i]);
id a > 0 then
begin
s := s + a;
k := k + 1;
end;
end;
if k > 0 then edAsPoz.Text := Format(ꞌ$0.2fꞌ, [s/k])
else ShowMessage (ꞌNema pozitivnih brojevaꞌ);
end
else
edAsPoz.Text := ꞌꞌ;
if cbSusedni.Checked then
begin
a := StrToInt (ListBox1.Items[i]);
k := 0;
for i := 2 to n do
begin
b := StrToInt (ListBox1.Items[i]);
if (a > 0) and (b > 0) then k := k + 1;
a := b;
end;
edSusedni.Text := IntToStr(k);
end
else
edSusedni.Text := ꞌꞌ;
end
else ShowMessage(ꞌNiste uneli brojeve!ꞌ);
end;

83
36. Бројачки циклуси (утврђивање)

Препоручује се да се овај час организује као припрема за проверу знања.

Задаци P
1. Написати алгоритам којим се исписују све
могућности за исплату износа од N динара
са укупно К новчаница од 1, 3 и 5 динара. N, K

улазни подаци → N – износ за исплату, b=0


К – број новчаница
излазни подаци → i – број новчаница i = 0, K
од 1 динара,
ј – број новчаница од 3 динара, j = 0, K – i
m – број новчаница од 5 динара,
b – укупан број комбинација за исплату
m=K–i–j
траженог износа помоћу К новчаница
T
Најмањи број новчаница неког апоена је i+3*j+5*m=N
0, а највећи број новчаница од 1 динара
је К, највећи број новчаница од 3 динара
T
b=b+1
је укупан број новчаница умањен за број
новчаница од 1 динара, а највећи број b, i, j, m
новчаница од 5 динара је укупан број
новчаница К умањен за број новчаница
од 1 динара и 3 динара.

Да бисмо одредили све могуће комбина-


ције за исплату, користићемо две петље, K
спољну i за новчанице од 1 динара и
унутрашњу ј за новчанице од 3 динара.

У оквиру ове две петље рачунамо број новчаница од 5 динара и проверавамо да ли се


помоћу i новчаница од 1 динара, ј новчаница од 3 динара и m новчаница од 5 динара може
исплатити износ од N динара.

84
2. Написати алгоритам који за низ од N унетих целих бројева одређује највећи негативни
елемент низа.

улазни подаци → N – број целих бројева, Х – цео број (има их N)


помоћне променљиве → i – бројач, nadjen – логичка променљива за негативан број
излазни податак → max – највећи негативан број

Задатак ћемо решити према следећем алгоритму, у коме логичка променљива nadjen
има вредност false све док не пронађемо први негативан број. Када га пронађемо, промен-
љива nadjen мења вредност, а променљивој max додељујемо вредност првог негативног
броја. Уколико у неком новом пролазу кроз циклус пронађемо још неки негативан број,
онда се он пореди са претпостављеним максимумом, и кроз n пролаза добијамо вредност за
највећи негативан број, уколико је такав број унет.

nadjen = false

i = 1, N

T
X<0
T
nadjen = false
T

T
nadjen = true
T
max < X
max = X
T max = X

T
nadjen
T
max
Nema
negativnih
brojeva

85
3. Написати алгоритам којим се израчунава ако се корен приме-
ни N пута.
P
улазни податак → N – број примењивања операције кореновања
помоћна променљива → i – бројач
N
излазни податак → S – тражени корен

S =0
Из изгледа последња два члана израза које треба израчу-
нати уочавамо да увек рачунамо корен из збира броја 3 и
претходног збира. Пошто корен треба применити N пута, i = 1, N
онда за почетну вредност збира узимамо 0.
S = 3+S

37. Бројачки циклуси (провера знања)

I група

1. Написати алгоритам којим се за дати природни број k израчунава производ:


P .

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


који немају једнаких цифара.

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

4. Kоју ће вредност имати променљива k после извршавања следећег дела програма?

k := 4;
p := 7;
r := 5;
n := 2;
for j := 3 to 5 do
begin
for i := p downto r do
n := trunc(n / i) + k;

86
k := 2 * k div 3 + k mod (-3) + n * j;
n := n + 2;
end;
n := n div 2;
k := k – n;

II група

1. Написати алгоритам којим се за дате природне бројеве n и k израчунава сума:


1 1 1
S = 10 + + + ... + .
k2 (k + 1)2 n2
2. Написати алгоритам којим се исписују сви двоцифрени бројеви којима је цифра десе-
тица већа од 4 и цифра јединица парна.

3. Написати алгоритам који за N унетих целих бројева одређује број суседних парних
бројева.

4. Коју ће вредност имати променљива k после извршавања следећег дела програма?

k := 3;
p := 8;
r := 6
n := 2;
for j := 1 to 3 do
begin
n := n + 3;
for i := p downto r do
n := round(i / n)+k;
k := 2 * k div 3 + sqr( j – 1) + n * j;
end;
n := n + 5;
k := k + n;

38. Петље са предусловом и постусловом (обрада)

Показати како се изводи наредба циклуса са предусловом while – do, а како наредба
циклуса са постусловом repeat – until.
Вежбати на примерима извршавања програма са петљама са предусловом и постусловом.

87
Пример
Коју ће вредност променљива k добити извршавањем следећег дела програма?
k=1
k := 1; r=1
p=2
r := 1; n=1
j=0
p := 2;
n := 1; j<3
j := 0;
while j < 3 do n=n+1
begin
n := n + 1; i:=p ,r
for i := p downto r do n=n*i+k
n := n * i + k;
k := 2 * k + sqr(j – 1) + n * j;
j := j + 1; k=2*k+(j–1)2+n*j
end;
j=j+1

На основу дела програма најпре смо нацртали алгоритам из кога јасно видимо која ће
се наредба извршити у циклусу while, а која у оквиру петље for. Према почетним вред-
ностима и наредбама из програма добијамо резултате као у табели 3, а коначна вредност
променљиве је: k = 241.

Табела 4. Резултати након уноса почетних вредности и наредби из програма


while for наредбе k p r n j i
k := 1 1 ? ? ? ? ?
r := 2 1 2 ? ? ? ?
Пре
p := 1 1 2 1 ? ? ?
циклуса Пре циклуса
n := 1 1 2 1 1 ? ?
j := 0 1 2 1 1 0 ?
n := n + 1 1 2 1 2 0 ?
1 n := n * i + k 1 2 1 5 0 2
1 2 n := n * i + k 1 2 1 6 0 1
k := 2 * k + sqr(j - 1) + n * j 3 2 1 6 0 0
Пре циклуса j := j + 1 3 2 1 6 1 0
n := n + 1 3 2 1 7 1 0
1 n := n * i + k 3 2 1 17 1 2
2 2 n := n * i + k 3 2 1 20 1 1
После k := 2 * k + sqr(j - 1) + n * j 26 2 1 20 1 0
циклуса j := j + 1 26 2 1 20 2 0
Пре циклуса n := n + 1 26 2 1 21 2 0
1 n := n * i + k 26 2 1 68 2 2
3 2 n := n * i + k 26 2 1 94 2 1
После k := 2 * k + sqr(j - 1) + n * j 241 2 1 94 2 0
циклуса j := j + 1 241 2 1 94 3 0

88
Задатак за вежбање
Коју ће вредност променљива k добити извршавањем следећих делова програма?

а) k := 1; p := 5; r := 4; б) k := 2, p := 4, r := 2;
n := 0; n := 1;
i := 0; i := 0;
repeat repeat
k := 2 * k + sqr(i – 1) + i; k := k + sqr(i + 1) + 2 * i;
for j := p downto r do for j := p downto r do
if j mod 2 < > 1 if j mod 2 < > 0
then then
n := n + 2 * (i + 1) n := n + 3 *(i + 1)
else else
n := n + 2 * i; n := n + 2 *(i + 1);
i := i + 3 i := i + 2
until i >= 6; until i >= 4;
i := 0; i := 0;
while i < 3 do while i < r do
begin begin
k := 2 * (n + k) + abs(i – 2); k := 2 *(n + k) + sqr(i – 2);
i := i + 2; i := i + 1;
end; end;

(Решење: k = 152.) (Решење: k = 247.)

39. Петље са предусловом (вежбање)

Увежбавање израде апликација које користе петљу са предусловом while – do.

Задаци
1. Креирати апликацију којом се за дати природни број N испитује да ли је степен при-
родног броја М.

Слика 27. Изглед форме на почетку рада Слика 28. Резултат

Резултат се исписује у Label контроли lblRezultat, у облику као на слици 28.

89
Да бисмо испитали да ли је број N степен броја М, вршићемо узастопно дељење броја N
бројем М све док при дељењу броја N бројем М нема остатка. У зависности од тога са којом
вредношћу променљиве N смо изашли из циклуса, исписујемо поруке типа: Broj N je i
stepen broja M или Broj N nije stepen broja M.
procedure TForm1.btRacunajClick (Sender: TObject);
var N, M, i, K : integrer
begin
N := StrToInt(edN.Text);
M := StrToInt(edM.Text);
K := N;
i := 0;
while N mod M = 0 do
begin
n := n div 3;
i := i + i;
end;
if n = 1 then
lblRezultat.Caption := Format(ꞌBroj %Os je %Od. stepen broja %Odꞌ, [K, i,
M]);
else lblRezultat.Caption := Format (ꞌBroj %Od nije stepen broja %Odꞌ, [K,
M];
edN.SetFocus;
end;

Променљива К је уведена да би се омогућило памћење почетне вредности променљиве N,


док променљива i представља изложилац за основу M да би степен имао вредност N.

2. Почевши тренирање, спортиста је првог дана претрчао А km. Сваки следећи дан увећа-
вао је своју норму р% од норме претходног дана. Одредити редни број дана у коме је
укупан пређени пут већи од R.
Дизајнирати форму да изгледа као на слици 29.

Слика 29. Изглед форме на почетку рада Слика 30. Резултат

90
У наставку је дата процедура коју треба укуцати да би се добио резултат приказан на
слици 30.

procedure TForm1.btRacunajClick (Sender: TObject);


var A, R, p, S : real;
n : integrer;
begin
A := StrToFloat(edA.Text);
p := StrToFloat(edp.Text);
R := StrToFloat(edR.Text);
n := 1; //redni broj dana trcanja
S := A; //pocetna vrednost ukupnog predjenog puta
while S <= R do
begin
A := A + A * p / 100; //uvecanje norme
D := S + A; //racunanje predjenog puta
n := n + 1; //uvecanje rednog broja dana
end;
lblRezultat.Caption := Format(ꞌPredjeni put od %02.f km. sportista je
pretrcao nakon %0d danaꞌ, [R, n]);
end;

40. Петље са постусловом (вежбање)

Увежбавање израде апликација које користе петљу са постусловом repeat – until.

Задаци
1. Креирати апликацију којом се израчунавају сви степени променљиве х, почев од х: х,
х2, х3, х4, ... све док степен од х не добије вредност већу од вредности granica. Претпо-
ставка је да је х > 1.
Дизајнирати форму као што је приказано на слици 31.

Слика 31. Изглед форме на почетку рада Слика 32. Резултат

91
Процедура за исписивање степена задатог броја до неке вредности granica реализова-
на је наредбом repeat – until и приказана је у наставку.

procedure TForm1.btIspisiClick (Sender: TObject);


var x, s, granica : real;
n : integrer;
begin
x := StrToFloat(edX.Text);
granica := StrToFloat(edGranica.Text);
s := 1;
n := 0;
repeat
s := s * x
n := n + 1;
ListBox1.Items.Add(Format(ꞌ%5.2f ˄ %3d = 15.2fꞌ, [x, n, s]));
Until s > granica;
end;

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

Пошто не знамо колико унети број има цифара, да бисмо добили број са истим цифрама у
инверзном поретку, у сваком проласку кроз циклус од броја n издвајаћемо последњу цифру.
На пример, ако смо унели број 12345, у првом пролазу кроз циклус од датог броја издваја-
мо последњу цифру, број 5, а нови број је 1234. Број 5 је сада нови инверзни број. У другом
пролазу кроз циклус издвајамо цифру 4, а новоформирани број n је сада 123, а од цифара
5 и 4 треба да формирамо инверзни број, број 54. Дакле, прву цифру, односно претходни
инверзни број померамо за једно место улево, односно постаје цифра десетица, дакле мно-
жимо је са 10 (добили смо број 50) и на тај број додајемо новоиздвојену цифру, број 4. Нови
инверзни број је 54. У следећем пролазу кроз циклус поступићемо као и у претходна два
пролаза. Наиме, издвојену цифру 3 додајемо на број 54 * 10 и добијамо број 543, а нови
број n je 12. У још два пролаза кроз циклус добијамо најпре инверзни број 5432, а нови
број n je 1, а потом инверзни број 54321, а нови број n je 0, што је управо и вредност која
представља излазни критеријум из циклуса.

Слика 33. Изглед форме при дизајнирању Слика 34. Изглед форме при извршавању
апликације са задатим бројевима

92
Процедура за добијање изгледа форме као на слици 34 приказана је у наставку.

procedure TForm1.btInverzijaClick (Sender: TObject);


var n, m, inverzni : integrer;
begin
n := StrToInt(edN.Text);
m := n;
//promenljiva koja pamti pocetnu vrednost unetog broja inverzni := 0;
repeat
inverzni := inverzni * 10 + n mod 10;
n := n div 10;
ListBox1.Items.Add(Format(ꞌ%Od ‒‒> %Odꞌ, [m, inverzni]));
edN.Text := ꞌꞌ;
edN.SetFocus;
end;

41. Организација циклуса – прости бројеви (вежбање)

Вежбати на примеру израде апликацију која користи различите циклусе.


Креирати апликацију којом се из задатог опсега одређују сви прости бројеви и њихов
укупан број. Опсег за одређивање простих бројева одређује се уносом бројева у Edit кон-
троле. Уписивање простих бројева врши се у ListBox контроли. Кликом на дугме Novi
opseg брише се садржај свих Edit контрола и садржај ListBox контроле.
Дизајнирати форму као на слици 35.

Слика 35. Изглед форме при дизајнирању Слика 36. Изглед форме након
уноса вредности

Након тога унесемо вредности у Edit поља за унос опсега и кликнемо на дугме Trazi.
Просте бројеве одређујемо тако што тражимо делиоце потенцијалног простог броја у ин-
тервалу од 2 до корена тог број (тј. његове заокружене вредности). Да би се добио изглед
форме са слике 36, потребно је применити одговарајућу процедуру.

93
procedure TForm1.btTraziClick (Sender: TObject);
var M, N, i, j, koren, k : integrer;
begin
M := StrToInt(edM.Text);
N := StrToInt(edN.Text);
k := 0;
for i := M to N do
begin
koren := round(sqrt(i));
j := 2;
while (j <= koren) and (i mod j <> 0) do j := j + 1;
if j > koren then
begin
k := k + 1;
ListBox1.items.Add(IntToStr(i));
end;
end;
if k > 0 then ListBox1.Items.Add(ꞌUkupno prostih brojeva:ꞌ + IntToStr(k)
else ListBox1.Items.Add(ꞌNema prostih brojevaꞌ);
end;
procedure TForm1.btNoviClick (Sender: TObject);
begin
edM.Text := ꞌꞌ;
edN.Text := ꞌꞌ;
ListBox1.Clear;
end;

42. Организација циклуса (утврђивање)

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

1. Планинар је кренуо у освајање планинског врха из места са надморском висином V


метара. Првог сата пењања савладао је A метара надморске висине, а сваког следећег
P% мање од висине коју је савладао у претходном сату. Креирати апликацију којом се
одређује после колико сати ће освојити врх на висини H.

Дизајнирати форму као на слици 37.


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

94
Слика 37. Дизајн форме Слика 38. Полазне вредности

Слика 39. Решење

Процедура којом се решава задатак приказана је у наставку.


procedure TForm1.btRacunajClick (Sender: TObject);
var V, A, P, H : real;
S : integrer;
begin
V := StrToFloat(edV.Text);
A := StrToFloat(edA.Text);
P := StrToFloat(edP.Text);
H := StrToFloat(edH.Text);
S := 0;
while V < H do;
begin
V := V + A;
A := A – A * p / 100;
S := S + 1;
end;
ShowMessage(Format(ꞌTrazena visina je dostignuta posle %Od sataꞌ, [S]));
end;

95
2. Познато је да једној врсти бактерија сваког минута умире трећина чланова заједнице, као
и да се преживеле при истеку трећег минута деле на две. Креирати апликацију којом се
исписује број бактерија после M минута, ако је на почетку било K тек рођених бактерија.

Дизајнирати форму тако да изгледа као на слици 40. Сликом 41 приказане су вредности
које уноси корисник, а кликом на дугме Racunaj врши се приказивање резултата у посеб-
ном прозору (слика 42).

Слика 40. Дизајн форме Слика 41. Вредности које уноси корисник

Слика 42. Решење

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

procedure TForm1.btRacunajClick (Sender: TObject);


var K, M, i : integrer;
begin
K := StrToInt(edK.Text);
M := StrToInt(edM.text);
for i := 1 to M do
begin
K := 5 – K div 3;
If i mod 3 = 0 then K := 2 * K;
end;
ShowMessage(Format(ꞌPosle %Od min. bice %Od bakterijaꞌ, [M, K]));
end;

96
3. Две вреће јабука од М и N килограма (М и N су природни бројеви) треба препаковати у
мање, али једнаке вреће. Креирати апликацију којом се одређује највећа (целобројна)
количина коју треба ставити у сваку такву врећу.

Дизајнирати форму тако да изгледа као на слици 43. Решење задатка се своди на тражење
највећег заједничког делиоца бројева М и N и приказано је одговарајућом процедуром.

Слика 43. Дизајн форме Слика 44. Изглед форме у моду извршавања

Слика 45. Прозор са поруком

На слици 44 је изглед форме у моду извршавања са унетим вредностима за М и N, док је на


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

procedure TForm1.btRacunajClick (Sender: TObject);


var M, N, NZD : integrer;
begin
M := StrToInt(edPrva.Text);
N := StrToInt(edDruga.text);
//kandidat za NZD je manji od M i N
NZD := M;
if N < NZD then NZD := N;
//umanjivati NZD dok se ne dobije broj koji je delitelj i broja M i broja N
while (M mod NZD <> 0) or (N mod NZD <> 0) do
NZD := NZD – 1;
ShowMessage(Format(ꞌTreba ih prepakovati u vrece od %Od kg.ꞌ, [NZD]));
end;

97
43. Организација циклуса – израда апликација (провера знања)

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

I група

ЗАДАЦИ ПОЕНИ
1 Отворити нови пројекат у Lazarus-у, а затим сачувати модул под именом 5
D:\odeljenje\ime i prezime\trocifreni\uGlavni.pas, a
пројекат под именом D:\odeljenje\ime i prezime\trocifreni
\trocifreni.lpi.
2 Креирати форму да изгледа као на слици а), користећи дате компоненте. 15
а) б)

3 Преименовати све Edit и Button контроле по мађарској нотацији. 5


4 Написати процедуру којом се проверава коректност унетих података у 10
Edit компонентe за унос троцифрених бројева.
5 Дата су два троцифрена броја М и N. Испрограмирати дугме Racunaj 25
тако да омогућава да се на основу унетих троцифрених бројева у ListBox
контроли исписују сви они троцифрени бројеви из задатог интервала
који имају особину да су дељиви бројем који се добија избацивањем
средње цифре (слика б) из задатка бр. 2). Уколико у задатом интервалу не
постоји ниједан такав број, у посебном прозору написати одговарајућу
поруку.
6 Испрограмирати дугме Sacuvaj тако да омогућава чување садржаја из 10
ListBox компоненте у датотеку brojevi.txt коју треба сместити у
претходно креирани фолдер из задатка бр. 1 (D:\trocifreni\ime i
prezime).
7 Испрограмирати дугме Brisi по избору тако да омогућава брисање 10
означене ставке из компоненте ListBox.

98
II група

ЗАДАЦИ ПОЕНИ
1 Отворити нови пројекат у Lazarus-у, а затим сачувати модул под именом 5
D:\odeljenje\ime i prezime\banka\uGlavni.pas, a пројекат
под именом D:\odeljenje\ime i prezime\banka\banka.lpi.
2 Креирати форму да изгледа као на слици а), користећи дате компоненте. 15

а)

б)
3 Преименовати све Edit и Button контроле по мађарској нотацији. 5
4 Написати процедуре којима се проверава коректност унетих података у 15
Edit компонентама за унос улога, камате и броја година.
5 У банку је улагач положио S динара са годишњом каматом р процената, 20
која се обрачунава на износ који је одлежао претходне године.
Испрограмирати дугме Racunaj тако да омогућава да се у ListBox
контроли исписује износ камате и укупне суме на крају сваке године
штедње (као што је дато на слици б) у задатку бр. 2).
6 Испрограмирати дугме Sacuvaj тако да омогућава чување садржаја из 10
ListBox компоненте у датотеку stavke.txt која се налази у фолдеру
D:\odeljenje\ime i prezime.
7 Испрограмирати дугме Brisi тако да омогућава брисање означене 10
ставке из компоненте ListBox.

99
IX НАСТАВНА ТЕМА (МАРТ, АПРИЛ)

44. Потпрограми (обрада)

Показати поступак решавања проблема помоћу потпрограма. Облици потпрограма


називају се процедуре и функције. Пример једног програма урађеног преко потпрограма
(„Кретање робота Карела”, Уџбеник, стр. 44) приказати на пројектору уз прецизно обја-
шњење начин рада. Ученици дају примере из живота за коришћење метода (бешамел сос
и слично).

45. Опис функције (обрада)

Објаснити структуру функције – заглавље (кључна реч, параметри, тип резултата, одељци
за опис константи и променљивих) и тело функције (користи променљиве које су наведене
у одељку за опис променљивих и системску променљиву result). Вежбати на примерима
функције за израчунавање суме квадрата целих бројева од m дo n и израчунавање максиму-
ма 2 и 4 броја.

Примери
1. Написати функцију којом се израчунава сума квадрата целих бројева од m do n, а потом
написати процедуру која користи ову функцију.

За решење овог задатка најпре дизајнирати форму као на слици 46, а потом у одељку
implementation написати функцију за рачунање квадрата целих бројева од m do n (слика
47) и потом написати процедуру која користи ову функцију више пута на различите начине.
При покретању апликације, за унос одговарајућих вредности у Edit поља у посебном про-
зору добијамо резултат (слика 48).

Слика 46. Слика 47. Слика 48. Резултат


Дизајн форме Унос вредности

Функција и процедура за решавање овог задатка дате су у наставку текста.

100
var
Form1 : Tform1;
implementation
{$R * .1fm}

function SumaKv(m, n : integrer) : intefrer;


var s, i : integrer;
begin
s := 0;
for i := to n do
s := s + sqr(i);
SumaKv := s; //ili result := s;
end;

procedure Tform1.btTestClick (Sender: Tobject);


var m, n, p : integrer;
begin
m := StrToInt(edM.Text);
n := StrToInt(edN.Text);
p := SumaKv(2, 4);
p := SumaKv(m, n) + SumaKv(m – 2, n + 5);
if N < NZD then NZD := N;
ShowMessage(Format(ꞌp = %Odꞌ, [p]));
end;

2. Написати функцију којом се одређује максимум два дата броја, као и функције за од-
ређивање максимума 3 и 4 броја коришћењем функције за одређивање максимума два
броја.
var
Form1 : Tform1;
implementation
{$R * .1fm}
function max(a, b : integrer) : intefrer;
//funkcija za odredjivanje maksimuma dva broja
begin
if a > b then max := a
else max := b;
end;
function max3(a, b, c : integrer) : integrer;
//funkcija za odredjivanje maksimuma tri broja
begin
max3 := max(max(a, b), c);
end;
function max4(a, b, c, d : integrer) : integrer;
//funkcija za odredjivanje maksimuma cetiri broja
begin
max4 := max(max(a, b), max(c, d));
end;

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

46. Функције (вежбање)


Написати функцију која:
1. одређује растојање тачака А(х1, у1) и В(х2, у2);
2. израчунава обим троугла са теменима А(х1, у1), В(х2, у2) и С(х3, у3);
3. израчунава површину троугла са теменима А(х1, у1), В(х2, у2) и С(х3, у3).
Тестирати написане функције у програму:
1. одређивањем који од два дата троугла има већу површину;
2. израчунавањем површине четвороугла;
3. израчунавањем дужине полигоналне линије, ако се уноси број темена N, а затим редом
њихове координате.
Креирати форму као на слици 49, а потом применом одговарајућих функција испрогра-
мирати реакцију након клика на свако од три приказана дугмета.

Слика 49. Дизајн форме

var
Form1 : Tform1;
implementation
{$R * .1fm}

function Rastojanje(x1, y1, x2, y2 : real) : real;


begin
Rastojanje := sqrt(sqr(x1 – x2) + sqr(y1 – y2);
end;
function Obim(x1, y1, x2, y2, x3, y3 : real) : real;
var a, b, c : real;
begin
a := Rastojanje(x1, y1, x2, y2);
b := Rastojanje(x1, y1, x3, y3);
c := Rastojanje(x2, y2, x3, y3);
Obim := a + b + c;
end;

102
function Povrsina(x1, y1, x2, y2, x3, y3 : real) : real;
var a, b, c, s : real;
begin
a := Rastojanje(x1, y1, x2, y2);
b := Rastojanje(x1, y1, x3, y3);
c := Rastojanje(x2, y2, x3, y3);
s := (a + b + c) / 2;
Povrsina := sqrt(s * (s – a) * (s – b) * (s – c));
end;
procedure Tform1.btP2TrouglaClick (Sender: Tobject);
var x1, y1, x2, y2, x3, y3, P1, P2 : real;
begin
x1 := StrToFloat(InputBox(ꞌTemena 1. trouglaꞌ, ꞌx1 =ꞌ, ꞌ0.00ꞌ));
y1 := StrToFloat(InputBox(ꞌTemena 1. trouglaꞌ, ꞌy1 =ꞌ, ꞌ0.00ꞌ));
x2 := StrToFloat(InputBox(ꞌTemena 1. trouglaꞌ, ꞌx2 =ꞌ, ꞌ0.00ꞌ));
y2 := StrToFloat(InputBox(ꞌTemena 1. trouglaꞌ, ꞌy2 =ꞌ, ꞌ0.00ꞌ));
x3 := StrToFloat(InputBox(ꞌTemena 1. trouglaꞌ, ꞌx3 =ꞌ, ꞌ0.00ꞌ));
y3 := StrToFloat(InputBox(ꞌTemena 1. trouglaꞌ, ꞌy3 =ꞌ, ꞌ0.00ꞌ));
P1 := Povrsina(x1, y1, x2, y2, x3, y3);
x1 := StrToFloat(InputBox(ꞌTemena 2. trouglaꞌ, ꞌx1 =ꞌ, ꞌ0.00ꞌ));
y1 := StrToFloat(InputBox(ꞌTemena 2. trouglaꞌ, ꞌy1 =ꞌ, ꞌ0.00ꞌ));
x2 := StrToFloat(InputBox(ꞌTemena 2. trouglaꞌ, ꞌx2 =ꞌ, ꞌ0.00ꞌ));
y2 := StrToFloat(InputBox(ꞌTemena 2. trouglaꞌ, ꞌy2 =ꞌ, ꞌ0.00ꞌ));
x3 := StrToFloat(InputBox(ꞌTemena 2. trouglaꞌ, ꞌx3 =ꞌ, ꞌ0.00ꞌ));
y3 := StrToFloat(InputBox(ꞌTemena 2. trouglaꞌ, ꞌy3 =ꞌ, ꞌ0.00ꞌ));
P2 := Povrsina(x1, y1, x2, y2, x3, y3);
if P1 = P2 then ShowMessage(ꞌImaju jednake povrsina!ꞌ);
if P1 > P2 then ShowMessage(ꞌPrvi trougao ima vecu povrsinu!ꞌ);
if P2 > P1 then ShowMessage(ꞌDrugi trougao ima vecu povrsinu!ꞌ);
end;
procedure Tform1.btCetvorougaoClick (Sender: Tobject);
var x1, y1, x2, y2, x3, y3, x4, y4, P : real;
begin
x1 := StrToFloat(InputBox(ꞌTemena cetvorouglaꞌ, ꞌx1 =ꞌ, ꞌ0.00ꞌ));
y1 := StrToFloat(InputBox(ꞌTemena cetvorouglaꞌ, ꞌy1 =ꞌ, ꞌ0.00ꞌ));
x2 := StrToFloat(InputBox(ꞌTemena cetvorouglaꞌ, ꞌx2 =ꞌ, ꞌ0.00ꞌ));
y2 := StrToFloat(InputBox(ꞌTemena cetvorouglaꞌ, ꞌy2 =ꞌ, ꞌ0.00ꞌ));
x3 := StrToFloat(InputBox(ꞌTemena cetvorouglaꞌ, ꞌx3 =ꞌ, ꞌ0.00ꞌ));
y3 := StrToFloat(InputBox(ꞌTemena cetvorouglaꞌ, ꞌy3 =ꞌ, ꞌ0.00ꞌ));
x4 := StrToFloat(InputBox(ꞌTemena cetvorouglaꞌ, ꞌx4 =ꞌ, ꞌ0.00ꞌ));
y4 := StrToFloat(InputBox(ꞌTemena cetvorouglaꞌ, ꞌy4 =ꞌ, ꞌ0.00ꞌ));
P1 := Povrsina(x1, y1, x2, y2, x3, y3) + Povrsina (x3, y3, x4, y4, x1, y1);
ShowMessage(Format(ꞌPovrsina cetvorougla je %0.2fꞌ, [P]));
end;
procedure Tform1.btDuzinaLinijeClick (Sender: Tobject);
var i, n : integrer;
x1, y1, x2, y2, d : real;
begin
n := StrToInt(InputBox(ꞌBroj temena poligonalne linijeꞌ, ꞌN =ꞌ, ꞌ0ꞌ));
x1 := StrToFloat(InputBox(ꞌ1. temeꞌ, ꞌx =ꞌ, ꞌ0.00ꞌ));

103
y1 := StrToFloat(InputBox(ꞌ1. temeꞌ, ꞌy =ꞌ, ꞌ0.00ꞌ));
d := 0;
for i := 2 to n do
x2 := StrToFloat(InputBox(IntToStr(ꞌ1. temeꞌ, ꞌx =ꞌ, ꞌ0.00ꞌ));
y2 := StrToFloat(InputBox(IntToStr(ꞌ1. temeꞌ, ꞌy =ꞌ, ꞌ0.00ꞌ));
d := d + Rastojanje(x1, y1, x2, y2);
x1 := x2;
y1 := y2;
ShowMessage(Format(ꞌDuzina poligonalne linije je %0.2fꞌ, [d]));
end;

Домаћи задатак
1. Написати функцију за израчунавање n-тог степена броја а.

2. Написати програм за израчунавање броја комбинација m-те класе од n елемената:


n!
c= , користећи функцију за израчунавање факторијела.
m!(n – m)!2

47. Функције (вежбање)

Задаци за вежбање
1. Написати програм који за дати природан број n већи од 1 одређује n-ти прост број.

Форма садржи само једно дугме (InputBox) којим се отвара прозор за унос вредности.
У наставку је дата функција за одређивање простог броја.
var
Form1 : Tform1;
implementation
{$R * .1fm}

function prost(n : integrer) : boolean;


var i, koren : integrer;
begin
koren := round(sqrt(n));
i := 2;
while (i <= koren) and (n mod i <> 0) do i := 1 + 1;
prost := (n > 1) and (i > koren);
end;

Имајући у виду да број 1 није прост и уколико у опсегу од 2 до корена броја који
испитујемо не пронађемо ниједан делилац броја који испитујемо, функција prost ће
добити вредност true. Вредност ове функције користи се у процедури која омогућава
проналажење n-тог простог броја. Како је број 2 први прост број, то ће променљива i
која представља потенцијални прост број добити вредност 2, док ће променљива ј која

104
пребројава просте бројеве добити вредност 1. Поступак увећавања вредности променљиве
i за 1 и пребројавање пронађених простих бројева понавља се све док не пронађемо n-ти
прост број, односно док ј не добије вредност n. Процедура којом се одређује n-ти прост
приказана је у наставку.

procedure Tform1.btProstClick (Sender: Tobject);


var n, i, j : integrer;
begin
n := StrToInt(InputBox(ꞌUcitavanje podatakaꞌ, ꞌN =ꞌ, ꞌ0ꞌ));
if n = 1 then ShowMessage(ꞌ1. prost broj je 2ꞌ));
else
begin
i := 2;
j := 1;
repeat
i := 1 + 1;
if prost (i) then j := j + 1;
until j := n;
ShowMessage(Format(ꞌ%0d. prost broj je %0dꞌ, [n, 1]));
end;
end;

2. Написати програм који за дати природан број n већи од 1 одређује његов најближи
прост број. Ако су два проста броја на истом растојању, исписати оба.

За решење овог задатка користићемо функцију за одређивање простог броја из претход-


ног задатка. Наиме, на претходну форму ћемо додати још једно дугме, које ћемо испрогра-
мирати као што је приказано.

procedure Tform1.btNajbliziProstClick (Sender: Tobject);


var n, i : integrer;
nadjen : boolean;
begin
n := StrToInt(InputBox(ꞌUcitavanje podatakaꞌ, ꞌN =ꞌ, ꞌ0ꞌ));
if prost (n)
then ShowMessage(Format(ꞌNajblizi prost broj je %0dꞌ, [n]));
else
begin
nadjen := false;
if odd(n)
then i := 2
else i := 1;
repeat
if prost (n + 1)
then
begin
nadjen := true;
ShowMessage(Format(ꞌNajblizi prost broje je %0dꞌ,
[n + 1]));
end;
105
if prost (n – 1)
then
begin
nadjen := true;
ShowMessage(Format(ꞌNajblizi prost broje je %0dꞌ,
[n - 1]));
end;
i := i + 2;
until nadjen;
end;
end;

Домаћи задатак
1. Напиши програм који растављањем броја на просте чиниоце израчунава број и збир
његових делилаца. (Информатика 3, задаци уз уџбеник, стр. 195)

2. Број 2 520 је најмањи број који се може без остатка поделити свим бројевима од 1 до
10. Који је најмањи број који се може без остатка поделити свим бројевима од 1 до 20?
Напиши програм који га одређује. (Информатика 3, задаци уз уџбеник, стр. 200)

48. Функције (утврђивање)

Утврђивати научено о функцијама израдом различитих задатака.

Задаци
1. Написати функцију која:
а) испитује да ли је година g преступна (столетна година је преступна ако је дељива са
400; година која није столетна преступна је ако је дељива са 4);
б) одређује број дана у години g;
в) одређује број дана у месецу m године g;
г) враћа true ако је датум (d1, m1, g1) старији од датума (d2, m2, g2), у противном
враћа false;
д) испитује да ли је датум (d, m, g) коректан (на пример 30, 2, 1800 су некоректни).

Тражена функције добија се на приказани начин.

var
Form1 : Tform1;
implementation
{$R * .1fm}
function prestupna(g : word) : boolean;
begin
if (g mod 4 = 0) and (g mod 100 <> 0) or (g mod 400 = 0)
then prestupna := true
else prestupna := false;
end;

106
function BrDanaUGod(g : word) : word;
begin
if prestupna(g) then BrDanaUGod := 366
else BrDanaUGod := 365;
end;
function BrDanaUMes (m, g : word) : byte;
begin
case m of
1, 3, 5, 7, 8, 10, 12 : BrDanaUMes := 31;
4, 6, 9, 11 : BrDanaUMes := 30;
2 : if prestupna(g) then BrDanaUMes := 29;
else BrDanaUMes := 28;
end;
end;

У наставку је дата процедура која користи написану функцију и даје кориснику поруку о
томе који је од два коректно унета датума старији.

procedure Tform1.Button1Click (Sender: Tobject);


var d1, m1, g1, d2, g2, m2 : word;
begin
repeat
d1 := StrToInt(InputBox(ꞌUnesi 1. datumꞌ, ꞌdanꞌ, ꞌ0ꞌ));
m1 := StrToInt(InputBox(ꞌUnesi 1. datumꞌ, ꞌmesecꞌ, ꞌ0ꞌ));
g1 := StrToInt(InputBox(ꞌUnesi 1. datumꞌ, ꞌgodinaꞌ, ꞌ0ꞌ));
if not korektan (d1, m1, g1) then ShowMessage(ꞌNekorektan datumꞌ);
until korektan (d1, m1, g1)
repeat
d2 := StrToInt(InputBox(ꞌUnesi 2. datumꞌ, ꞌdanꞌ, ꞌ0ꞌ));
m2 := StrToInt(InputBox(ꞌUnesi 2. datumꞌ, ꞌmesecꞌ, ꞌ0ꞌ));
g2 := StrToInt(InputBox(ꞌUnesi 2. datumꞌ, ꞌgodinaꞌ, ꞌ0ꞌ));
if not korektan (d2, m2, g2) then ShowMessage(ꞌNekorektan datumꞌ);
until korektan (d2, m2, g2)
if stariji (d1, m1, g1, d2, m2, g2);
then ShowMessage(Format(ꞌStariji datum je %0d. %0d. %0d.ꞌ, [d1,
m1, g1]));
else ShowMessage(Format(ꞌStariji datum je %0d. %0d. %0d.ꞌ, [d2,
m2, g2]));
end;

1. Написати функцију која одређује број непарних цифара у запису природног броја N.
Тестирати функцију одређујући колико од N учитаних бројева нема ниједну непарну
цифру.

Функција којом се одређује број непарних цифара у запису природног броја N приказана
је у наставку.
var
Form1 : Tform1;
implementation
{$R * 1fm}
107
function BrojNeparnihCifara (n : integrer) : byte;
var k, c : byte;
begin
k := 0;
while n > 0 do
begin
c := n mod 10;
if c mod 2 = 1 then k := k + 1;
n := n div 10;
end;
BrojNeparnihCifara := k;
end;

Процедура којом се тестира колико бројева од N учитаних бројева нема ниједну непарну
цифру дата је у наставку.

procedure Tform1.btBezNeparnihClick (Sender: Tobject);


var n, b, i, x : integrer;
begin
n := StrToInt(InputBox(ꞌKoliko brojeva unosite?ꞌ, ꞌN =ꞌ, ꞌ0ꞌ));
b := 0;
for i := 1 to n do
begin
x := StrToInt(InputBox(ꞌUnesite ꞌ+ IntToStr(i) +ꞌ. broj :ꞌ, ꞌX =ꞌ,
ꞌ0ꞌ));
if BrojNeparnihCifara (x) = 0 then b := b + 1;
end;
ShowMessage(Format(ꞌBroj brojeva koji nemaju neparnih cifara je %0dꞌ,
[b]));
end;

Домаћи задатак
Ако се зна да је 1. јануар 2001. године био понедељак, напиши програм који за било који
датум у овом веку одређује који је дан у недељи. (Информатика 3, задаци уз уџбеник, стр. 163)

49. Процедуре – формални и стварни параметри (обрада)

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

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

108
var
Form1 : TForm1;
implementation
{$R * .1fm}
procedure minimax (a, b : real; var min, max : real);
begin
if a > b then
begin
max := a;
min := b;
end;
else
begin
max := b;
min := a;
end;
end;

Пример 2
Написати програм који пет бројева уређује у неопадајући поредак: а ≤ b ≤ c ≤ d ≤ e. У
програм укључити процедуру razmeni којом се размењују вредности две променљиве.

procedure Tform1.ButtonhClick (Sender: Tobject);


var a, b, min, max : real;
begin
a := StrToFloat(InputBox(ꞌUnos podatakaꞌ, ꞌa =ꞌ, ꞌ0.00ꞌ));
b := StrToFloat(InputBox(ꞌUnos podatakaꞌ, ꞌb =ꞌ, ꞌ0.00ꞌ));
minmax(a, b, min, max);
ShowMessage(Format(ꞌmin = %0.2f, max = %0.2fꞌ, [min, max]));
end;
procedure Tform1.ButtonhClick (Sender: Tobject);
var a, b, c, d, e : integrer;
begin
a := StrToFloat(InputBox(ꞌUnos podatakaꞌ, ꞌa =ꞌ, ꞌ0ꞌ));
b := StrToFloat(InputBox(ꞌUnos podatakaꞌ, ꞌb =ꞌ, ꞌ0ꞌ));
c := StrToFloat(InputBox(ꞌUnos podatakaꞌ, ꞌc =ꞌ, ꞌ0ꞌ));
d := StrToFloat(InputBox(ꞌUnos podatakaꞌ, ꞌd =ꞌ, ꞌ0ꞌ));
e := StrToFloat(InputBox(ꞌUnos podatakaꞌ, ꞌe =ꞌ, ꞌ0ꞌ));
if a > b then razmeni(a, b);
if a > c then razmeni(a, c);
if a > d then razmeni(a, d);
if a > e then razmeni(a, e);
if b > c then razmeni(b, c);
if b > d then razmeni(b, d);
if b > e then razmeni(b, e);
if c > d then razmeni(c, d);
if c > e then razmeni(c, e);
if d > e then razmeni(d, e);
ShowMessage(Format(ꞌ%0d <= %0d <= %0d <= %0dꞌ, [a, b, c, d, e]));
end;

109
50. Локалне и глобалне променљиве. Рекурзивне функције и процедуре (обрада)

Објаснити појам и примену локалне променљиве.


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

51. Функције и процедуре (вежбање)

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


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

Слика 50. Изглед програма

У наставку су приказане функције за рачунање растојања између две тачке и за рачунање


површине троугла дате, као и процедура која се добија као реакција на померање миша.
var
FormPovrsinaTrougla : TFormPovrsinaTrougla;
implementation
{$R * .1fm}
function rastojanje (x1, y1, x2, y2 : real) : real;
var a, b, c, s, P : real;
begin
a := rastojanje(x1, y1, x2, y2);
b := rastojanje(x1, y1, x3, y3);
c := rastojanje(x2, y2, x3, y3);
s := (a + b + c) / 2;
P := sqrt(s * (s – a) * (s – b) * (s – c);
PTrougla := P;
end

110
procedure TFormPovrsinaTrougla.FormMouseMove (Sender: Tobject);
Shift : TshiftState; X, Y : integrer;
var x1, y1, x2, y2, x3, y3 : integrer;
begin
x1 := 0; y1 := Height; //donje levо teme prozora
x2 := Width; y2 := Height; //donje desno teme prozora
x3 := x; y3 := y;
Repaint; //brisanje prozora
Canvas.Line(x1, y1, x2, y2); //crtanje trougla
Canvas.Line(x1, y1, x3, y3);
Canvas.Line(x2, y2, x3, y3);
P := Ptrougla(x1, y1, x2, y2, x3, y3);
lblP.Caption := Format(ꞌP = %0.2fꞌ, [P]);
end;

Домаћи задатак
1. Написати програм којим се одређује врста троугла (оштроугли, тупоугли, правоугли)
на основу нацртаног троугла на форми. (Уџбеник, стр. 192)

2. Написати програм којим се врши исцртавање правилног полигона и његових дијагона-


ла. (Информатика 3, задаци уз уџбеник, стр. 180)

52. Функције и процедуре (вежбање)

Вежбати примену локалних и глобалних променљивих.

Задатак
Написати програм који омогућава да рачунар након клика на дугме са натписом Start
замисли број у интервалу од 1 до 100. Играч има право да га из 10 покушаја погоди. Рачунар
му помаже поруком из које може сазнати да ли је замишљени број мањи или већи од унетог.

Слика 51. Изглед форме Слика 52. Изглед форме у


моду извршавања

111
За решавање задатка потребно је поставити следећу функцију.

var
Form1 : TForm1;
implementation
{$R * .1fm}
{ Tform1 }

Потом укуцати процедуру.

procedure Tform1.btStartClick (Sender: Tobject);


begin
lblBroj.Visible := True;
lblRezultat.Visible := True;
Randomize; //generisanje brojeva prema stanju cenovnika
r := 1 + Random(100); //random(100) vraca slucajan broj izmedju 0 i 99
k := 0; //broji pokusaje pogadjanja zamisljenog broja
btTest.Enabled := True;
btStart.Enabled := True;
end;
procedure Tform1.btTestClick (Sender: Tobject);
var m : integrer;
begin
k := k + 1;
m := StrToInt(edBroj.Text);
if m > r then lblRezultat.Caption := ꞌZamisljeni broj je manji!ꞌ;
if m < r then lblRezultat.Caption := ꞌZamisljeni broj je veci!ꞌ;
if r = m then ShowMessage(Format(ꞌBravo!!! Pogodio si iz %0d. pokusajaꞌ,
[k]));
if (k = 10) and not (r = m) then ShowMessage(Format(ꞌNisi pogodio! To je
broj %0d.ꞌ, [r]));
if (k = 10) or (r = m) then
begin
lblBroj.Visible := False;
lblRezultat.Visible := False;
edBroj.Text := ꞌꞌ;
lblRezultat.Caption := ꞌꞌ;
btStart.Enabled := True;
btTest.Enabled := False;
end;
end;

112
53. Функције и процедуре (утврђивање)

Задатак за утврђивање градива


Коришћењем процедура prethodni и sledeci које враћају датуме претходног и
наредног дана, за датум d, m, g одредити N дана млађи и N дана старији датум.
За решавање овог задатка применићемо процедуре за одређивање претходног и наредног
датума које ће у току свог извршавања позивати функције за одређивање броја дана у месе-
цу и испитивање да ли је година преступна.

var
Form1 : TForm1;
implementation
{$R * .1fm}
function prestupna (g : word) : boolean;
begin
if (g mod 4 = 0) and (g mod 100 <> 0) or (g mod 400 = 0)
then prestupna := true;
else prestupna := false;
end;

function BrDanauMes (m, g : word) : byte;


begin
case m of
m := StrToInt(edBroj.Text);
1, 3, 5, 7, 8, 10, 12 : BrDanauMes := 31;
4, 6, 9, 11 : BrDanauMes := 30;
2 : if prestupna(g) then BrDanauMes := 29
else BrDanauMes := 28;
end;
end;

procedure prethodni (var d, m, g : integrer);


begin
if d = 1 then
if m = 1 then
begin
d := 31;
m := 12;
g := g – 1;
end
else
begin
d := BrDanauMes(m – 1, g);
m := m – 1;
end;
else d := d – 1;
end;

113
procedure sledeci (var d, m, g : integrer);
begin
if BrDanauMes(m, g) then
if m = 12 then
begin
d := 1;
m := 1;
g := g + 1;
end
else
begin
d := 1;
m := m + 1;
end;
else d := d + 1;
end;

Да би се одредило који ће датум бити за n дана, односно који је датум био пре n дана
користи се процедура приказана у наставку текста. За израду ове апликације треба да се
користи контрола RadioButton, а избором једне од понуђених ставки добија се одгова-
рајући датум.

procedure TForm1.Button2Click (Sender: TObject)


var i, n, d, m, g : integrer;
begin
n := StrToInt(InputBox(ꞌUnesi broj danaꞌ, ꞌN =ꞌ, ꞌ0ꞌ));
d := StrToInt(InputBox(ꞌUnesi datumꞌ, ꞌd =ꞌ, ꞌ0ꞌ));
m := StrToInt(InputBox(ꞌUnesi datumꞌ, ꞌm =ꞌ, ꞌ0ꞌ));
g := StrToInt(InputBox(ꞌUnesi datumꞌ, ꞌg =ꞌ, ꞌ0ꞌ));
case RadioGrouo1.ItemIndex of
0: begin
for i := 1 to n do prethodni (d, m, g);
ShowMessage(Format(ꞌPre %0d dana je bio %0d.%0d.%0d.ꞌ, [n, d, m, ]));
end;
1: begin
for i := 1 to n do sledeci (d, m, g);
ShowMessage(Format(ꞌZa %0d dana bice %0d.%0d.%0d.ꞌ, [n, d, m, g]));
end;
end;

Домаћи задатак
Сабирање реда, израчунавање бројева π и е (Уџбеник, стр. 240).

114
54. Потпрограми (контрола знања)

Проверити знање ученика израдом различитих задатака у којима се примењују функције


и процедуре.

Задаци
1. Написати функцију која враћа true ако тачка са координатама (х, у) припада кругу са
центром (х0, у0) и полупречником r. Тестирати функцију одређујући колико од N учи-
таних тачака припада датом кругу.
2. Дати су одсечци a, b, c и d. За свака три одсечка од којих се може конструисати троугао,
приказати његову површину. Ако се не може конструисати троугао, исписати одгова-
рајућу поруку.
3. Написати програм којим се израчунава збир квадрата простих бројева који се налазе у
интервалу (а, b) (а и b су природни бројеви).
4. Написати програм који, коришћењем процедуре razmeni, четири различита броја a,
b, c и d уређује тестерасто: a < b > c < d.
5. Коришћењем функције NZD(a, b) израчунати NZD(a, b, c).
6. Дати су природни бројеви d1, m1, g1 и d2, m2, g2 који означавају два датума (дан, месец,
година). Одредити број дана између та два датума.

X НАСТАВНА ТЕМА (АПРИЛ, МАЈ, ЈУН)

55. Низовни тип података (обрада)

Објаснити појам и поделу низа. Дефинисати једнодимензионалне статичке низове. Упу-


тити ученике на дефиницију низовног типа и на декларацију променљиве низовног типа.
Објаснити чланове (елементе) низа и индексе. Говорити о броју чланова низа и приступу
члану низа. Показати како се користе низови у потпрограмима.

56. Креирање, учитавање и приступ низу (обрада)

Показати поступак учитавања елемената низа. Потом показати процедуру за учитавање


насумичних вредности низа и процедуру којом се учитавају чланови низа чији су елемен-
ти добијени као резултат рада неке функције или на основу претходних елемената низа.
Упознати ученике и са процедуром којом се низ а попуњава степенима броја х и са процеду-
ром за испис елемената низа – контроле Edit, Label, Memo, ListBox.

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

Слика 53. Изглед форме при Слика 54. Изглед форме после клика
креирању апликације на дугме Odredi и попуњавања
ListBox контроле

Унос вредности у ListBox контролу врши се помоћу посебних прозора који се отварају
позивом функције InputBox.

procedure TForm1.btOdrediClick (Sender: TObject);


var T : array[1..365] of integrer;
n, i : integrer;
s1, s2 : string;
begin
ListBox1.Clear;
s1 := ꞌꞌ;
s2 := ꞌꞌ;
n := StrToInt(InputBox(ꞌBroj dana kada je merena temperaturaꞌ, ꞌN =ꞌ, ꞌ0ꞌ));
ListBox1.Items.Add(Format(ꞌN = %0dꞌ, [n]));
for i := 1 to n do
begin
T[i] := StrToInt(InputBox(ꞌTemperatureꞌ, ꞌT[ꞌ+ IntToStr(i) +ꞌ] =ꞌ, ꞌ0ꞌ));
ListBox1.Items.Add(Format(ꞌT[%0d] = %0dꞌ, [i, T[i]]));
if T[i] < 0 then s1 := s1 + IntToStr(i) + ꞌ. ꞌ;
end
lblNeg.Caption := s1;
lblPoz.Caption := s2;
end;

116
57. Учитавање и приказивање низова помоћу StringGrid контроле (обрада)

Показати поступак учитавања у приказивања низова помоћу контроле StringGrid.


Својства ове контроле су: Cells, ColCount, RowCount, FixedCols, FixedRows,
Options (goEditing, goAlwaysShowEditor).

Пример 1
Написати програм који омогућава да се у један StringGrid унесе низ од N елемената
(N <= 10), а у другом прикаже у инвертованом поретку.

Слика 55. Изглед форме при креирању апликација

Слика 56. Изглед форме после попуњавања прве табеле и клика на дугме ОК

При креирању фпрме (догађај OnCreate) користи се наредна процедура.

procedure TForm1.FormCreate (Sender: TObject);


var c : integrer;
begin
SG1.ColCount := 10;
SG1.RowCounz := 2;
SG2.ColCount := 10;
SG2.RowCount := 2;
SG1.Cells[0, 0] := ꞌIndexiꞌ;
SG1.Cells[0, 1] := ꞌVrednostiꞌ;
for c := 1 to SG1.ColCount – 1 do SG1.Cells[c, 0] := IntToStr(c);

117
SG2.Cells[0, 0] := ꞌIndexiꞌ;
SG1.Cells[0, 1] := ꞌVrednostiꞌ;
for c := 1 to SG2.ColCount – 1 do SG2.Cells[c, 0] := IntToStr(c);
edN.Text := ꞌꞌ;
end;

Када димензије табеле задаје корисник (као што је случај у овом задатку), онда је погодно
при напуштању Edit контроле за унос димензије табеле исконтролисати коректност улаз-
ног податка и, ако је коректан, поставити број колона (редова) на одређену вредност. Број
колона је увећан за 1 због заглавља табеле, а то показује процедура у наставку.

procedure TForm1.edNExit (Sender: TObject);


var n, er : integrer;
s : string;
begin
s := edN.Text;
val(s, n, er);
if er <> 0 then
begin
ShowMessage(ꞌNekorektan unos!ꞌ);
edN.SetFocus;
edN.SelectAll;
end;
else;
begin;
SG1.ColCount := n + 1;
SG2.ColCount := n + 1
end;
end;

Табела SG1 је отворена за упис (goEditing и goAlwaysShowEditor су подешене на


True). У наставку текста приказана је процедура којом се вредности унете у табелу SG1
премештају у табелу SG2 у инвертованом поретку.

procedure TForm1.btOKClick (Sender: TObject);


var n, c : integrer;
a : array[1..10] of integrer;
begin
n := StrToInt(edN.Text);
for c := 1 to SG1.ColCount – 1 do a[c] := StrToInt(SG1.Cells[c, 1]);
for c := 1 to SG1.ColCount – 1 do SG2.Cells[c, 1] := IntToStr(a[n – c + 1]);
end;

Пример 2
Написати програм којим се реализује циклично премештање вредности елемената низа
a[1], a[2], …, a[n] за једно место улево.
Кликом на дугме ОК након уписа вредности у прву табелу, друга табела треба да буде по-
пуњена као на слици 57.

118
Слика 57. Табела након уписа вредности и клика на дугме ОК

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

procedure TForm1.btOKClick (Sender: TObject);


var n, c, p : integrer;
a : array[1..20] of integrer;
begin
n := StrToInt(edN.Text) + 1;
for c := 1 to n – 1 do a[c] := StrToInt(SG1.Cells[c, 1]);
p := a[1];
for c := 2 to n – 1 do a[c - 1] := a[c]);
a[n – 1] := p;;
for c := 1 to n – 1 do SG2.Cells[c, 1] := IntToStr(a[c]));
end;

Домаћи задатак
1. Написати програм којим се реализује циклично премештање вредности елемената
низа a[1], a[2], …, a[n] за једно место удесно.

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


низа a[1], a[2], …, a[n] за m места улево (удесно).

58. Алгоритми сортирања (обрада)

Показати појам сортирања. Објаснити шта је растући, опадајући, нерастући и неопа-


дајући поредак. Показати поступак размене вредности две променљиве, а потом методе
Bubble Sort (метод мехурића) и Selection Sort (метод селекције).

Пример 1
Написати програм којим се низ од N бројева распоређује у неопадајућем поретку.
Креирати форму као на слици 58.
На слици 59 приказан је изглед форме у моду извршавања апликације, при чему је најпре
унет број чланова низа, а потом су у прву табелу унете неке вредности (реални бројеви).

119
Слика 58. Приказ форме

Слика 59. Приказ форме у моду извршавања апликације

Кликом на дугме ОК у другу табелу се уписују вредности у неопадајућем поретку, а про-


цедура којом се решава задатак приказана је у наставку.

procedure TForm1.btOKClick (Sender: TObject);


var i, j, c : integrer;
p : real;
a : array[1..30] of real;
begin
//vrednosti iz kontrole SG1 se upisuju u niz realnih brojeva
for c := 1 to SG1.ColCount – 1 do
a[c] := StrToInt(SG1.Cells[c, 1]);
//sortiranje niza
for i := 1 to SG1.ColCount – 2 do
for j := i + 1 to SG1.ColCount – 1 do
if a[i] > a[j] then
begin
p := a[i];
a[i] := a[j];
a[j] := p;
end;
//upis sortiranog niza u kontrolu SG2
for c := 1 to SG2.ColCount – 1 do
SG2.Cells[c, 1] := FloatToStr(a[c]);
end;

120
При креирању форме попуњава се заглавље табеле (SG1 и SG2), а при напуштању Edit
контроле за унос броја чланова низа проверава се коректност унетог податка, па уколико је
податак коректан, број колона за упис вредности код обе табеле поставља се на тај број. То
се остварује следећом процедуром.

procedure TForm1.FormCreate (Sender: TObject);


var c : integrer;
begin
SG1.Cells[0, 0] := ꞌIndexiꞌ;
SG1.Cells[0, 1] := ꞌVrednostiꞌ;
for c := 1 to SG1.ColCount – 1 do
SG1.Cells[c, 0] := IntToStr(c);
SG2.Cells[0, 0] := ꞌIndexiꞌ;
SG2.Cells[0, 1] := ꞌVrednostiꞌ
for c := 1 to SG2.ColCount – 1 do
SG1.Cells[c, 0] := IntToStr(c);
end;

59. Једнодимензионални низови (вежбање)

Самостална израда задатка применом једнодимензионалних низова.

Задатак
Мерењем атмосферског притиска n дана у метеоролошкој станици формиран је низ вред-
ности р1, р2, ..., р3. Креирати апликацију којом се одређује:
• минимални и максимални притисак и њихов редни број дана;
• средња вредност притиска у току посматрања.

Слика 60. Изглед форме при креирању апликације

121
Слика 61. Изглед форме после попуњавања табеле и клика на дугме ОК

За решавање овог задатка користе се наредне процедуре.

procedure TForm1.FormCreate (Sender: TObject);


var r : integrer;
begin
edN.Text := ꞌꞌ;
edMax.Text := ꞌꞌ;
edMin.Text := ꞌꞌ;
edRbMax.Text := ꞌꞌ;
edRbMin.Text := ꞌꞌ;
edS.Text := ꞌꞌ;
Sg1.Cells[0, 0] := ꞌDanꞌ;
SG1.Cells[1, 0] := ꞌPritisakꞌ;
for r := 1 to SG1.RowCount – 1 do
SG1.Cells[0, r] := IntToStr(r);
end;

procedure TForm1.edNExit (Sender: TObject);


var s : string;
n, er, r : integrer;
begin
s := edN.Text;
val(s, n, er);
if er <> 0 then
begin
ShowMessage(ꞌNekorektan unos!ꞌ);
edN.SetFocus;
edN.SelectAll;
end
else
begin
SG1.RowCount := StrToInt(edN.Text) + 1;
for r := to SG1.RowCount – 1 do
SG1.Cells[0, r] := IntToStr(r);
end;
end;

122
procedure TForm1.btRacunajClick (Sender: TObject);
var r : array[1..40] of real;
max, min, S : real;
RbMax, RbMin, r, n : integrer;
begin
n := StrToInt(edN.Text);
for r := 1 to SG1.RowCount – 1 do
p[r] := StrToFloat(SG1.Cells[1, r]);
if cbMax.Checked then
begin
max := p[1];
RbMax := 1;
for r := 2 to SG1.RowCount – 1 do
if p[r] > max then
begin
max := p[r];
RbMax := r;
end;
edMax.Text := FloatToStr(max);
edRbMax.Text := IntToStr(RbMax)
end;
else
begin
edMax.Text := ꞌꞌ;
edRbMax.Text := ꞌꞌ;
end;
for r := 1 to SG1.RowCount – 1 do
p[r] := StrToFloar(SG1.Cells[1, r]);
if cbMin.Checked then
begin
min := p[1];
RbMin := 1;
for r := 2 to SG1.RowCount – 1 do
if p[r] < min then
begin
min := p[r];
RbMin := r;
end;
edMin.Text := FloatToStr(min);
edRbMin.Text := IntToStr(RbMin);
end
else
begin
edMin.Text := ꞌꞌ;
edRbMin.Text := ꞌꞌ;
end;

123
if cbS.Checked then
begin
S := 0;
for r := 1 to SG1.RowCount – 1 do
S := S + p[r];
if n > 0 then
begin
S := S / n;
edS.Text := Format(ꞌ%0.2fꞌ, [S]);
end
else ShowMessage(ꞌNiste uneli vrednosti!ꞌ);
end
else edS.Text := ,ꞌꞌ;
end;

60. Сортирање једнодимензионалног низа (вежбање)

Задатак
На такмичењу у скоку у даљ добијени су следећи резултати: s1, s2, …, s3. Исписати
резултате од најбољег до најгорег и одговарајуће такмичарске бројеве. Обезбедити да се за
резултате такмичара у одговарајућој табели аутоматски уписују случајни реални бројеви од
7 до 10 на две децимале.

Слика 62. Изглед форме Слика 63. Изглед форме

На слици 62 дат је изглед форме после уноса броја скакача и напуштања Edit контроле,
при чему се у StringGrid контролу аутоматски уносе случајни реални бројеви на две
децимале.
На слици 63 приказан је изглед форме после клика на дугме ОК.
За креирање форме укуцати процедуру приказану у наставку.

124
procedure TForm1.FormCreate (Sender: Tobject);
var r : integrer;
begin
edN.Text := ꞌꞌ;
SG1.Cells[0, 0] := ꞌStartni brojꞌ;
SG1.Cells[1, 0] := ꞌRezultatꞌ;
for r := 1 to SG1.RowCount – 1 do
SG1.Cells[0, r] := IntToStr(r);
end;

При напуштању Edit контроле укуцати следећу процедуру.

procedure TForm1.edNExit (Sender: Tobject);


var s: string;
n, er, r : integrer;
begin
s := edN.Text;
val(s, n, er);
if er <> 0 then
for r := 1 to SG1.RowCount – 1 do
begin
ShowMessage(ꞌNekorektan unos!ꞌ);
edN.SetFocus;
edN.SelectAll;
end
else
begin
SG1.RowCount := StrToInt(edN.Text) + 1;
for r := 1 to SG1.RowCount – 1 do
SG1.Cells[0, r] := IntToStr(r);
Randomize;
for r := 1 to SG1.RowCount – 1 do
SG1.Cells[1, r] := FloatToStr((Random(301) + 700) / 100);
end;

После клика на дугме ОК потребно је укуцати дату процедуру.

procedure TForm1.btRacunajClick (Sender: Tobject);


var sb: array[1..30] of byte;
rez : array[1..30] of real;
p1, i, j, r : byte;
p2 : real;
begin
for r := 1 to SG1.RowCount – 1 do
begin
sb[r] := StrToInt(SG1.Cells[0, r]);
rez[r] := StrToFloat(SG1.Cells[1, r]);
end;

125
for i := 1 to SG1.RowCount – 2 do
for j := i + 1 to SG1.RowCount – 1 do
if rez[i] < rez[j] then
begin
p1 := sb[i];
sb[i] := sb[j];
sb[j] := p1;
p2 := rez[i];
rez[i] := rez[j];
rez[j] := p2;
end;
for r := 1 to SG1.RowCount – 1 do
begin
SG1.cells[0, r] := IntToStr(sb[r]);
SG1.Cells[1, r] := FloatToStr(rez[r]);
edN.SelectAll;
end
end;

61. Дводимензионални низови (обрада)

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

Пример
Написати програм који за целобројну матрицу А(N x M) задату помоћу StringGrid
табеле израчунава суму парних елемената. Табела се попуњава аутоматски, случајним целим
бројевима од –30 до 30.

Слика 64. Изглед форме Слика 65. Изглед форме

126
Изглед форме после клика на дугме Formatiraj tabelu приказан је на слици 64, док
је на слици 65 приказан изглед форме после клика на дугме Racunaj. Процедура која омо-
гућава приказ форме са слике 64 приказана је у наставку.

procedure TForm1.btFormatirajClick (Sender: TObject);


var n, m, c, r : integrer;
begin
n := StrToInt(edN.Text);
m := StrToInt(edM.Text);
SG1.ColCount := m + 1;
SG1.RowCount := n + 1;
for c := 1 to SG1.ColCount – 1 do SG1.Cells[c, 0] := IntToStr(c);
for r := 1 to SG1.RowCount – 1 do SG1.Cells[0, r] := IntToStr(r);
Randomize;
for c := 1 to SG1.ColCount – 1 do
for r := 1 to SG1.RowCount – 1 do
SG1.Cells[c, r] := IntToStr(Random(61) - 30);
end;

Да би се добио изглед форме са слике 65 уписати следећу процедуру.

procedure TForm1.btRacunajClick (Sender: TObject);


var c, r, S : integrer;
a : array[1..20, 1..20] of integrer;
begin
S := 0;
for c := 1 to SG1.ColCount – 1 do
for r := 1 to SG1.RowCount – 1 do
begin
a[r, c] := StrToInt(SG1.Cells[c, r]);
if a[r, c] mod 2 = 0 then S := S + a[r, c];
end;
end;

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

Домаћи задатак
Написати програм којим се за матрицу А(NxN) израчунава:
• сума позитивних елемената изнад главне дијагонале;
• сума елемената на главној дијагонали;
• вредност највећег елемента на споредној дијагонали;
• производ негативних елемената изнад споредне дијагонале.

127
62. Дводимензионални низови (вежбање)

Вежбати на примерима задатака у којима се због траженог израчунавања формира нова


врста или нова колона постојеће матрице.

Задаци
1. Написати програм којим се на основу дате матрице A(N x N) формира нова колона ма-
трице чији су елементи једнаки најмањим вредностима у врстама матрице А. Матрицу
попунити аутоматски случајним реалним бројевима од –50 до 50 са једном децималом.

Слика 66. Изглед форме Слика 67. Изглед форме

Дизајнирати форму као што је приказано на сслици 66 кликом на дугме Formatiraj.


Да би се попунило заглавље табеле димензије N и остатак табеле случајним реалним броје-
вима од –50 до 50 са једном децималом потребно је применити следећу процедуру.

procedure TForm1.btFormatirajClick (Sender: TObject);


var c, r : integrer;
begin
SG1.ColCount := StrToInt(edN.Text) + 1;
SG1.RowCount := StrToInt(edN.Text) + 1;
for c := 1 to SG1.ColCount – 1 do
SG1.Cells[c, 0] := IntToStr(c);
for r := 1 to SG1.RowCount – 1 do
SG1.Cells[0, r] := IntToStr(r);
Randomize;
for c := 1 to SG1.ColCount – 1 di
for r := 1 to SG1.RowCount – 1 do
SG1.Cells[c, r] := FloatToStr(Random(1001) / 10 – 50);
end;

Процедура која обезбеђује формирање нове колоне у којој се приказује минимум сваке
врсте матрице А приказана је у наставку.

procedure TForm1.btRacunajClick (Sender: TObject);


var c, r : integrer;
min : real;
a : array [1..20, 1..20] of real;

128
begin
for c := 1 to SG.1ColCount – 1 do
for r := 1 to SG1.RowCount – 1 do
a[r, c] := StrToFloat(SG1.Cells[c, r];
SG1.ColCount := StrToInt(edN.Text) + 2;
SG1.Cells[SG.1ColCount – 1, 0] := ꞌminꞌ;
for r := 1 to SG1.RowCount – 1 do
begin
min := a[r, 1];
for c := 2 to SG1.ColCount – 1 do
if a[r, c] < min then min := a[r, c];
SG1.Cells[SG1.ColCount – 1, r] := FloatToStr(min);
end;
end;

2. Написати програм који за одељење од највише 32 ученика и највише 15 предмета


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

На слици 68 приказан је изглед форме после попуњавања Edit поља за унос броја пред-
мета и броја ученика и клика на дугме Formatiraj, док је на слици 69 приказан изглед
форме после клика на дугме Racunај. Може се приметити да на слици 69 колоне нису исте
ширине. Да бисмо то постигли, потребно је да у режиму дизајнирања особину контроле
StringGrid, Options → goColSizing поставимо на True.

Слика 68. Изглед форме на почетку рада Слика 69. Изглед форме на крају рада

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


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

procedure TForm1.btFormatirajClick (Sender: TObject);


var m, n, c, r : integrer;
begin
m := StrToInt(edM.Text) + 1; //broj predmeta i zaglavlje
n := StrToInt(edN.Text) + 1; //broj ucenika i zaglavlje
SG1.ColCount := m;

129
SG1.RowCount := n; //popunjavanje zaglavlja tabele
for c := 1 to SG1.ColCount – 1 do
SG1.Cells[c, 0] := IntToStr(c);
for r := 1 to SG1.RowCount – 1 do
SG1.Cells[0, r] := IntToStr(r); //automatsko popunjavanje tabele ocenama
Randomize;
for c := 1 to SG1.ColCount – 1 do
for r := 1 to SG1.RowCount – 1 do
SG1.Cells[c, r] := IntToStr(Radnom(5) + 1);
end;

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

procedure TForm1.btRacunajClick (Sender: TObject);


var m, n, c, r, su, sp : integrer;
pu, pp : real;
a : array[1..34, 1..18] of integrer;
begin
m := StrToInt(edM.Text);
n := StrToInt(edN.Text);
SG1.ColCount := m + 2; //pravljenje nove kolone
SG1.RowCount := n + 2; //pravljenje novog reda
SG1.Cells[0, SG1.RowCount – 1] := ꞌprosek predmetaꞌ;
//zaglavlje za novi red
SG1.Cells[SG1.ColCount – 1, 0] := ꞌprosek ucenikaꞌ;
//zaglavlje za novu kolonu
//upisivanje sadrzaja tabele u matricu a
for c := 1 to SG1.ColCount – 2 do
for r := 1 to SG1.RowCount – 2 do
a[r, c] := StrToInt(SG1.Cells[c, r]);
//izracunavanje proseka po predmetima
for c := 1 to SG1.ColCount – 2 do
begin
sp := 0;
for r := 1 to SG1.RowCount – 2 do
sp := sp + a[r, c];
pp := sp / n:
SG1.Cells[c, SG1.RowCount - 1] := Format (ꞌ%0.2fꞌ, [pp]);
end;
//izracunavanje proseka ucenika
for r := 1 to SG1.RowCount – 2 do
begin
su := 0;
for c := 1 to SG1.ColCount – 2 do
su := su + a[r, c];
pu := su / m:
SG1.Cells[SG1.ColCount – 1, r] := Format (ꞌ%0.2fꞌ, [pu]);
end;
end;

130
63. Дводимензионални низови (вежбање)

Вежбати научено на задацима са сортирањем дводимензионалних низова.

Задаци
1. Написати програм којим се сортирају елементи врста у неопадајућем поретку. Матри-
цу попунити случајним целим бројевима од 0 до 100.

На слици 70 дата је матрица задатих димензија, попуњена случајним целим бројевима од


0 до 100.

Слика 70. Изглед матрице Слика 71. Изглед сортиране матрице

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


који је дат у наредној процедури.

procedure TForm1.btFormatirajClick (Sender: TObject);


var c, r : integrer;
begin
SG1.RowCount := StrToInt(edM.Text) + 1;
SG1.ColCount := StrToInt(edN.Text) + 1;
for c := 1 to SG1.ColCount – 1 do
SG1.Cells[c, 0] := IntToStr(c);
for r := 1 to SG1.RowCount – 1 do
SG1.Cells[0, r] := IntToStr(r);
Randomize;
for c := 1 to SG1.ColCount – 1 do
for r := 1 to SG1.RowCount – 1 do
SG1.Cells[c, r] := IntToStr(Radnom(101));
end;

Сортирана матрица приказана је на слици 71, а програмски код дат је у процедури у


наставку и добија се кликом на дугме Racunaj.

procedure TForm1.btSortirajClick (Sender: TObject);


var c, c1, c2, r, p : integrer;
a : array[1..20, 1..30] of integrer;

131
begin
//ucitavanje vrednosti iz tabele u matricu a
for c := 1 to SG1.ColCount – 1 do
for r := 1 to SG1.RowCount – 1 do
a[r, c] := StrToInt(SG1.Cells[c, r]);
//sortiranje matrice po vrstama
for r := 1 to SG1.RowCount – 1 do
for c1 := 1 to SG1.ColCount – 2 do
for c2 := c1 + 1 to SG1.ColCount – 1 do
if a[r, c1] > a[r, c2] then
begin
p := a[r, c1];
a[r, c1] := a[r, c2];
a[r, c2] := p;
end;
//upisivanje sortirane matrice u tabelu
for c := 1 to SG1.ColCount – 1 do
for r := 1 to SG1.RowCount – 1 do
SG1.Cells[c, r] := IntToStr(a[r, c]);
//automatsko popunjavanje tabele ocenama
end;

Сортирање по колонама би се реализовало на сличан начин, само што би први циклус


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

2. Написати програм којим се у матрици А(N x N) сортирају у нерастућем поретку еле-


менти сваке врсте од главне дијагонале до десне колоне матрице.

Слика 72. Изглед матрице Слика 73. Изглед матрице

На слици 72 приказана је попуњена квадратна матрица, а на слици 73 приказана је матри-


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

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

procedure TForm1.btSortirajClick (Sender: TObject);


var c, c1, c2, r, p : integrer;
a : array[1..20, 1..20] of integrer;
begin
//ucitavanje vrednosti iz tabele u matricu A
for c := 1 to SG1.ColCount – 1 do
for r := 1 to SG1.RowCount – 1 do
a[r, c] := StrToInt(SG1.Cells[c, r]);
//sortiranje matrice po vrstama
//od glavne dijagonale do desne kolone
for r := 1 to SG1.RowCount – 2 do
for c1 := r to SG1.ColCount – 2 do
for c2 := c1 + 1 to SG1.ColCount – 1 do
if a[r, c1] < a[r, c2] then
begin
p := a[r, c1];
a[r, c1] := a[r, c2];
a[r, c2] := p;
end;
//upisivanje sortirane matrice u tabelu
for c := 1 to SG1.ColCount – 1 do
for r := 1 to SG1.RowCount – 1 do
SG1.Cells[c, r] := IntToStr(a[r, c]);
end;

3. Написати програм којим се у матрици А(N x N)размењују елементи симетрично у


односу на споредну дијагоналу.

Слика 74. Изглед матрице Слика 75. Изглед матрице

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

procedure TForm1.btRazmeniClick (Sender: TObject);


var c, r, p : integrer;
a : array[1..15, 1..15] of integrer;
begin
//ucitavanje vrednosti iz tabele u matricu a
for c := 1 to SG1.ColCount – 1 do
for r := 1 to SG1.RowCount – 1 do
a[r, c] := StrToInt(SG1.Cells[c, r]);
//ciklusi za elemente iznad sporedne dijagonale
for r := 1 to SG1.RowCount – 2 do
for c := 1 to SG1.ColCount – r - 1 do
//razmena elemenata u odnosu na sporednu dijagonalu
begin
p := a[r, c1];
a[r, c1] := a[SG1.ColCount – c, SG1.RowCount - r];
a[SG1.ColCount – c, SG1.RowCount - r] := p;
end;
//upisivanje sortirane matrice u tabelu
for c := 1 to SG1.ColCount – 1 do
for r := 1 to SG1.RowCount – 1 do
SG1.Cells[c, r] := IntToStr(a[r, c]);
end;

Задаци за вежбање
1. Матрицом А(N x 2) дате су координате N тачака у равни. Одредити растојање нају-
даљеније тачке од координатног почетка.

2. У датој матрици одредити максимум минималних елемената колона.

134
64. Низови (провера знања)

I група

ЗАДАЦИ ПОЕНИ
Отворити нови пројекат у Lazarus-y и сачувати га у фолдеру Desktop\
1 6
Kontrolni\Ime i Prezime под именом Мatrica.
2 Креирати форму као на слици а).
а) б)

10

Преименовати Edit, Button, CheckBox и StringGrid контроле по


3 4
мађарској нотацији.
Написати процедуру која ће обезбедити да се при креирању апликације
избрише садржај Edit контрола, подеси број редова и колона у табели на 5
4 15
и унесу бројеви у првом реду и првој колони, као што је дато на слици б) у
задатку бр. 2.
Написати процедуру којом се обезбеђује да се при напуштању Edit контроле
за унос димензије матрице провери да ли је у датој Edit контроли цео број.
5 Ако јесте, онда димензију StringGrid контроле подесити на број из Edit 20
контроле увећан за један (заглавље) и попунити заглавље одговарајућим
бројевима, а ако није, исписати поруку о томе.
Написати процедуру којом се обезбеђује да се кликом на дугме Popuni
6 преостале ћелије контроле StringGrid попуњавају случајним целим 15
бројевима од –30 до 70.
Написати процедуру која омогућава да се избором одговарајуће CheckBox
контроле и притиском на дугме Racunaj рачуна производ непарних еле-
7 мената и сума парних елемената испод споредне дијагонале и резултат упи- 30
сује у одговарајућу Edit контролу. Ако CheckBox контрола није одабрана,
онда испразнити садржај одговарајуће Edit контроле за упис резултата.

135
II група

ЗАДАЦИ ПОЕНИ

Отворити нови пројекат у Lazarus-y и сачувати га у фолдеру Desktop\


1 6
Kontrolni\Ime i Prezime под именом Мatrica.

2 Креирати форму као на слици.


а) б)

10

Преименовати Edit, Button, CheckBox и StringGrid контроле по


3 4
мађарској нотацији.
Написати процедуру која ће обезбедити да се при креирању апликације
избрише садржај Edit контрола, подеси број редова и колона у табели на 5
4 15
и унесу бројеви у првом реду и првој колони, као што је дато на слици б) у
задатку бр. 2..
Написати процедуру којом се обезбеђује да се при напуштању Edit контроле
за унос димензије матрице провери да ли је у датој Edit контроли цео број.
5 Ако јесте, онда димензију StringGrid контроле подесити на број из Edit 20
контроле увећан за један (заглавље) и попунити заглавље одговарајућим
бројевима, а ако није, исписати поруку о томе.
Написати процедуру којом се обезбеђује да се кликом на дугме Popuni
6 преостале ћелије контроле StringGrid попуњавају случајним реалним 15
бројевима од –15 до 20 са две децимале.
Написати процедуру која омогућава да се избором одговарајуће CheckBox
контроле и притиском на дугме Racunaj рачуна сума квадрата свих
елемената и производ негативних елемената изнад споредне дијагонале и
7 30
резултат уписује у одговарајућу Edit контролу. Ако CheckBox контрола
није одабрана, онда испразнити садржај одговарајуће Edit контроле за
упис резултата.

136
65. Текстуалне датотеке (обрада)

Објаснити појам датотеке. Показати структуру текстуалне датотеке. Потом објаснити


шта је променљива датотечног типа. Показати како се врши:
• повезивање променљиве датотечног типа са физичком датотеком (AssignFile);
• креирање текстуалне датотеке;
• отварање датотеке за упис (Rewrite);
• читање текстуалне датотеке (Reset);
• затварање датотеке (CloseFile).

Пример
Написати програм који омогућава да се кликом на дугме Sifriraj (слика 76) текст који
је унет у Memo контролу шифрира тако да се сваки знак замењује следећим знаком у ASCII
кодном систему и уписује у фајл 'poruka.txt'. Кликом на дугме Desifruj сваки знак
текстуалног фајла 'poruka.txt' замењује се претходним знаком у ASCII кодном систе-
му и приказује у Memo контроли.

Слика 76. Изглед Memo контроле Слика 77. Изглед фајла 'poruka.txt'

На слици 77 дат је фајл 'poruka.txt' који се добија шифровањем текста унетог у Memo
контролу. Процедура за шифровање унетог текста приказана је у наставку.

procedure TForm1.btSifrirajClick (Sender: TObject);


var f : TextFile;
s : string;
i, j : integrer;
begin
AssignFile(f, ꞌporuka.txtꞌ);
Rewrite(f);
for i := 0 to Memo1.Lines.Count – 1 do

137
begin
s := Memo.Lines[i]; //kopiranje linije Memo kontrole u string s
for j := 1 to Length(s) do
write(f, succ(s[j])); //succ daje sledeci znak koji se upisuje u fajl
writeln(f); //upisuje eoln
end;
CloseFile(f);
ShowMessage(ꞌFormiran fajl poruka.txtꞌ);
end;

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


из фајла 'poruka.txt' и његово уписивање у Memo контролу.

procedure TForm1.btDesifrujClick (Sender: TObject);


var f : TextFile;
s : string;
ch : char;
begin
AssignFile(f, ꞌporuka.txtꞌ);
Reset(f);
Memo1.Clear;
while not eof(f) do
begin
s := ꞌꞌ;
while not eoln(f) do
begin
read(f, ch);
s := s + pred(ch);
end;
Memo1.Lines.Add(s);
readln(f);
end;
CloseFile(f);
ShowMessage(ꞌDesifrovani fajl poruka.txtꞌ);
end;

66. Датотеке (утврђивање)

Утврдити знање из дате теме одговорима на питања и израдом задатака коришћењем


текстуалних датотека.

Питања:
• Шта је датотека?
• Из чега је састављена текстуална датотека?
• Како се означава крај линије, а како крај датотеке?
• Како се означава декларација датотечне променљиве?

138
• Која је процедура за повезивање датотечне променљиве са датотеком?
• Како се врши отварање датотеке за упис, а како за читање?
• Како се завршава рад са датотеком?

Задатак
Дат је текстуални фајл 'in.txt'. У свакој линији налазе се пређене дневне километраже
у току једне недеље. Претпоставља се да се у току недеље ауто не мора возити сваки дан. На
пример:

250 300 90 170


145 130
99 75 150

Написати програм којим се формира нови фајл 'out.txt' у чијим ће линијама бити
дневни просеци за сваку недељу. У свакој линији Memo контроле треба приказати пређене
километраже у току једне недеље и њихов дневни просек (слика 78).

Слика 78. Изглед Memo контроле

Процедура којом се за унете вредности из текстуалног фајла израчунавају просечне вре-


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

procedure TForm1.btRacunajClick (Sender: TObject);


var f, g : TextFile;
p, x : real;
i : integrer;
s : string;
begin
AssignFile(f, ꞌin.txtꞌ);
Reset(f);
AssignFile(g, ꞌout.txtꞌ);
Rewrite(g);
Memo1.Clear;
while not eof(f) do

139
begin
p := 0;
i := 0;
s := ꞌꞌ;
while not eoln(f) do
begin
read(f, x);
p := p + x;
s := s + FloatToStr(x) + ꞌꞌ;
i := i + 1;
end;
readln(f);
p := p / i; //prosek
Memo1.Lines.Add(s + ꞌ-> Prosek =ꞌ + Format(ꞌ%0.2fꞌ, [p]));
writeln(g, p : 10 : 2); //upis u fajl
end;
CloseFile(f);
CloseFile(g);
end;

Пре писања процедуре потребно је у Notepad-у направити текстуалну датотеку 'in.


txt', из које се врши учитавање дневних и седмичних километража, и сачувати је у истом
фолдеру у ком се чува апликација.

67. Закључивање годишњих оцена (систематизација)

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

140
3. СТАНДАРДИ УЧЕНИЧКИХ ПОСТИГНУЋА
Наставни програми општеобразовних предмета у Србији, и на основношколском и на
средњошколском нивоу, до сада су дефинисали образовне циљеве за појединачне наставне
предмете, али не и на нивоу компетенција као исхода учења које се формирају и подржавају
заједничким радом више појединачних школских дисциплина. Досадашња пракса познаје ко-
ординисан и симултан рад две или више дисциплина при обради једне теме (корелација међу
предметима). У овом документу дефинисане су нове области, релевантне за лични, профе-
сионални и социјални развој и функционисање појединца, у којима се компетентност стиче
флексибилним и динамичним интегрисањем и применом предметних знања.
Многи фактори који делују у националном и међународном образовном и јавном про-
стору дефинишу потребу да се образовни систем реструктуира мењањем садржаја, обла-
сти примене знања и приступа настави и учењу. Неки од најважнијих фактора су: глобална
оријентација ка компетенцијама; утицај нових технологија, интернета и медија на учење,
природу послова и приватни живот појединца; растућа социјална мобилност и растућа
конкурентност на тржишту рада. Идентификовање широко дефинисаних кључних компе-
тенција и реформисање школских програма у складу с њима започето је 2006. године када
је Европска унија усвојила Европски оквир кључних компетенција за целоживотно учење
(European Reference Framework of Key Competences for Lifelong Learning). Знања, вештине и
ставови који су у овом документу препознати као кључни са становишта развоја поједин-
ца – кључни су и за развијање иновативности, продуктивности, а тиме и конкурентности
сваког друштва. Динамика промена које доносе нове технологије у свету рада и социјалне
промене постављају пред образовни систем захтев да се развијају компетенције за нове и
промењене послове, али и компетенције за прихватање промена и прилагођавање њима.
Овако схваћене компетенције излазе из оквира традиционалних школских предмета и
ангажују школска знања на припреми ученика да буду конкурентни и функционални у са-
дашњем и будућем образовном и професионалном простору и да компетентно и активно
реализују своје грађанске улоге. Оријентација образовног процеса ка међупредметним ком-
петенцијама не значи увођење нових предмета нити додатних часова тематски посвећених
одређеној компетенцији. Основна промена коју доноси оријентација ка општим и међу-
предметним компетенцијама и компетенцијама уопште огледа се у динамичнијем и ангажо-
ванијем комбиновању знања, вештина и ставова релевантних за различите реалне контексте
који захтевају њихову функционалну примену. То се постиже сарадњом и координацијом
активности више наставника, односно предмета, и иновирањем начина рада на часу. Сваки
час је прилика да се ради и на међупредметним компетенцијама, а амбијент који их подржава
подразумева:
• стављање ученика у ситуације које траже истовремену употребу предметних и међу-
предметних компетенција (то се дешава увек када од ученика очекујемо да неко знање
примени у ситуацијама које нису реплике или једноставне модификације ситуације у
којој је знање усвојено, већ нове, различите ситуације);
• активности истраживања и стварања нових продуката;
• стварање баланса између индивидуалних и групних активности, тако да се развије лич-
на одговорност према обавезама и користе потенцијали групе;
• активно и конструктивно учествовање у животу локалне заједнице; иницирање хума-
нитарних активности и активности које доприносе подизању квалитета живота и соли-
дарности у локалној заједници.
141
Значај општих и међупредметних компетенција за будући живот младог човека није тешко
документовати, али је важно питање који је простор у процесу наставе и учења резервисан за
рад на овим компетенцијама. У суштини, рад на општим и међупредметним компетенцијама
није конкурентан раду на садржајима и компетенцијама које су непосредно везане за одређе-
не предмете. Напротив, међупредметне компетенције представљају корак више у разумевању
градива и примени наученог, а одговорност за њихово развијање носе сви наставници у шко-
ли, без обзира на предмет. То значи да подржавање општих и међупредметних компетенција
тражи заједничко планирање на нивоу школских тимова, примену интерактивних и активних
облика учења, као и већу аутономију школе и наставника у реализацији образовних исхода.
Очигледан и најједноставнији пример рада на међупредметним компетенцијама представља
употреба информационо-комуникационих технологија у учионици (дигитална компетен-
ција): различити начини презентовања градива и организације информација, разноврсни
извори информација, селекција података и провера њихове релевантности... Применљиви су
у свим предметима и готово на сваком часу, укључујући и проверу усвојености градива.
Основни критеријум за селекцију општих и међупредметних компетенција јесте да оне
буду потенцијално релевантне и корисне за све, као и усаглашене са етичким, економским
и културним вредностима и конвенцијама у друштву. Са становишта појединца, опште и
међупредметне компетенције омогућавају интеграцију у различите социјалне контексте и
мреже, укључујући и оне које сада не познајемо, уз изградњу аутономије у просуђивању и
доношењу одлука.
Имајући на уму ове околности и критеријуме, као и карактеристике образовног система
у Србији и контекста у којем он функционише у овом тренутку, издвојене су следеће опште
и међупредметне компетенције као најрелевантније за адекватну припрему ученика за
активну партиципацију у друштву и целоживотно учење:
1. Компетенција за целоживотно учење;
2. Комуникација;
3. Рад с подацима и информацијама;
4. Дигитална компетенција;
5. Решавање проблема;
6. Сарадња;
7. Одговорно учешће у демократском друштву;
8. Одговоран однос према здрављу;
9. Одговоран однос према околини;
10. Естетичка компетенција;
11. Предузимљивост и оријентација ка предузетништву.
У овом документу опште и међупредметне компетенције дефинисане су као обавезне,
али због специфичног положаја у наставном процесу очекивани исходи одређени су само на
основном, базичном нивоу. То, наравно, не значи да се током средњошколског образовања
ове компетенције неће појавити у комплекснијем и развијенијем облику на нивоу појединог
ученика или школе, већ се очекује да се оне подрже на систематичан начин на нивоу образов-
ног система у целини. Такође, стандарди дефинисани у овом документу нису критеријуми
за школске оцене. Различити облици формативног оцењивања најприкладнији су начин за
праћење индивидуалног напретка ученика и усмеравање њиховог даљег развоја. За потребе
мерења и оцењивања, школски тимови развијају тестове и успостављају критеријуме пола-
зећи од очекиваних исхода дефинисаних у овом документу.

142
Компетенција за целоживотно учење

Лични и професионални развој појединца превасходно почива на његовој способности


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

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

Комуникација

Ученик влада различитим модалитетима комуникације и користи их на сврсисходан и


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

Ученик:
• активно доприноси неговању културе дијалога, уважавању и неговању различитости и
поштовању основних норми комуникације;
• познаје специфичне карактеристике различитих модалитета комуникације (усмена и пи-
сана, непосредна и посредована комуникација, нпр. преко телефона, преко интернета);

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

Рад с подацима и информацијама

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

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

Дигитална компетенција

Ученик је способан да користи расположива средства из области информационо-кому-


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

144
ИКТ средство и да га користи на одговоран и креативан начин у активностима које ради тога
спроводи (комуникација; сарадња; учешће у животу заједница; учење; решавање проблема;
трансакције; планирање, организација и управљање самосталним и заједничким активно-
стима; стварање, организација, обрада и размена информација), а да истовремено приступ
решавању проблема прилагоди могућностима технологије. Приликом коришћења ИКТ-а
свестан је ризика за сопствену и туђу сигурност и добробит и одговорним поступањем себе
и друге штити од нежељених последица.

Ученик:
• уме да претражује, процењује релевантност и поузданост, анализира и систематизује
информације у електронском облику користећи одговарајућа ИКТ средства (уређаје,
софтверске производе и електронске услуге);
• изрaжaвa сe у електронском облику кoришћeњeм oдгoвaрajућих ИКТ средстава, укљу-
чујући мултимедијално изражавање и изражавање са елементима формално дефини-
саних нотација карактеристичних за коришћена ИКТ средства (нпр. адресе, упити,
команде, формуле, процедуре и сл. изражене у одговарајућој нотацији);
• помоћу ИКТ уме да представи, оргaнизуje, структуира и форматира информације ко-
ристећи на ефикасан начин могућности датог ИКТ средства;
• приликом решавања проблема уме да одабере одговарајућа ИКТ средства, као и да при-
лагоди начин решавања проблема могућностима тих ИКТ средстава;
• ефикaснo кoристи ИКТ зa кoмуникaциjу и сaрaдњу;
• препознаје ризике и опасности при коришћењу ИКТ-а и у односу на то одговорно
поступа.

Решавање проблема

Ученик ангажује своје индивидуалне капацитете (знање из различитих предмета, искуство


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

Ученик:
• испитујући проблемску ситуацију, идентификује ограничења и релевантне карактери-
стике проблемске ситуације и разуме како су оне међусобно повезане;
• проналази/осмишљава могућа решења проблемске ситуације;
• упоређује различита могућа решења проблемске ситуације преко релевантних крите-
ријума, уме да објасни шта су предности и слабе стране различитих решења и да се
определи за боље решење;
• припрема примену изабраног решења, прати његову примену усклађујући је са новим са-
знањима која стиче током примене датог решења и успева да реши проблемску ситуацију;
• вреднује примену датог решења, идентификује његове добре и слабе стране и форму-
лише препоруке за наредно искуство са истим или сличним проблемским ситуацијама.

145
Сарадња

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

Ученик:
• конструктивно, аргументовано и креативно доприноси раду групе, усаглашавању и
остварењу заједничких циљева;
• доприноси постизању договора о правилима заједничког рада и придржава их се током
заједничког рада;
• активно слуша и поставља релевантна питања поштујући саговорнике и сараднике, а
дискусију заснива на аргументима;
• конструктивно доприноси решавању разлика у мишљењу и ставовима и притом по-
штује друге као равноправне чланове групе;
• ангажује се у реализацији преузетих обавеза у оквиру групног рада на одговоран,
истрајан и креативан начин;
• учествује у критичком, аргументованом и конструктивном преиспитивању рада групе
и доприноси унапређењу рада групе.

Одговорно учешће у демократском друштву

Ученик је способан да активно, компетентно, критички и одговорно учествује у живо-


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

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

Одговоран однос према здрављу

Ученик прикупља информације о темама у вези са ризицима, очувањем и унапређењем


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

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

147
Одговоран однос према околини

Одговоран однос према околини подразумева познавање и непосредан доживљај приро-


де; увиђање значаја који природа има за одржавање живота на Земљи; разумевање међузави-
сности живог света, природних ресурса и климатских услова за одржање живота; очување
његове разноврсности, еколошких станишта и климатских услова; активно учествовање у
неговању здравих заједница. Ученик познаје како људске активности могу да унапреде или
угрозе животну средину и одржив развој. Спреман је да се укључи у активности усмерене
ка очувању окружења у којем живи, ради и учи.

Ученик:
• разуме концепт здравог и безбедног окружења (вода, ваздух, земљиште) за живот људи и
спреман је да се активно ангажује у заштити и унапређењу квалитета живота у заједници;
• показује разумевање и спремност за ангажовање у заштити природе и управљању ресур-
сима тaкo дa сe нe угрoжaвa мoгућнoст будућих гeнeрaциja дa зaдoвoљe свoje пoтрeбe;
• процењује ризике и користи од употребе неких супстанци по околину и здравље људи и
одговорно поступа са њима (правилно их складишти и одлаже отпад);
• познаје факторе који утичу на загађење земљишта, воде и ваздуха, разуме и предвиђа
последице њихове употребе;
• увиђа предности и недостатке коришћења различитих извора енергије;
• разуме значај и користи могућности рециклирања.

Естетичка компетенција

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

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

148
Предузимљивост и предузетничка компетенција

Кроз образовање за предузетништво, ученик се учи организационим вештинама и спо-


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

Ученик:
• разуме важност личне активације и показује иницијативу у упознавању са карактери-
стикама тржишта рада (захтеви појединих радних места, начин функционисања инсти-
туција, позиционирање у свету бизниса);
• разуме принципе функционисања тржишта рада и схвата неопходност сталног усавр-
шавања у складу са развојем тржишта и захтевима послодаваца;
• уме да идентификује и адекватно представи своје способности и вештине („јаке стра-
не”); уме да напише CV и мотивационо писмо;
• уме да искаже и заступа своје идеје и да утиче на друге, кроз развој вештине јавног го-
вора, преговарање и решавање конфликата;
• способан је да постави адекватне и реалне циљеве процењујући и прихватајући ризике;
планира ресурсе и управља њима (знања и вештине, време, новац, технологије и други
ресурси) и усредсређен је на постизање циљева;
• зна да комуницира с послодавцима; уме да преговара; спреман је да обавља праксу и
волонтира поштујући договоре.

149
4. ХОРИЗОНТАЛНА, ВЕРТИКАЛНА И
ДИЈАГОНАЛНА КОРЕЛАЦИЈА

Појам корелације у настави има више значења. Једно од основних је оно којим се озна-
чава повезивање основних елемената наставе у складну целину да би ученици формирали
јединствен поглед на свет. У наставној пракси корелација се углавном схвата као повези-
вање сродних садржаја из сродних предмета, а сврха јој је да наставу учини ефикаснијом,
рационалнијом и економичнијом, али и да мотивише и анимира ђаке за обрађивање теме.
Корелација наставног предмета може бити: хоризонтална, вертикална и дијагонална.
Хоризонтална корелација подразумева повезаност садржаја различитих наставних пред-
мета на нивоу једног разреда. Под вертикалном корелацијом се подразумева међусобно
повезивање садржаја једног предмета на нивоу више разреда. Дијагонална корелација под-
разумева повезивање истих садржаја који се јављају у више наставних предмета на нивоу
више разреда.
Из хоризонталних, вертикалних и дијагоналних корелација наставних предмета изра-
ста корелационо-интеграциони наставни систем, у којем се сједињују и повезују наставни
садржаји различитих наставних подручја појединих предмета. Тако је могућа корелација
Рачунарства и информатике са свим наставним предметима, зависно од градива које се про-
учава. Најчешће су везе с предметима из подручја природних наука (Математика, Физика,
Хемија, Биологија), али једнако су важне и честе корелације са Енглеским језиком, Исто-
ријом, Географијом, Ликовном културом итд.
У наставном плану Рачунарства и информатике за трећи разред гимназије у највећој се
мери уочавају хоризонтална и дијагонална корелација са наставним садржајем Математике
и вертикална корелација са наставним садржајем другог и четвртог разреда, али и са неким
темама из првог разреда.

Математичка логика и скупови (I разред). Логичко-скуповни садржаји су исказ, фор-


мула, логичке и скуповне операције, основни математички појмови, логичко закључивање
и доказивање тврдњи, релације и функције. Овде се лако уочава дијагонална корелација са
наставним јединицама Изрази и наредба доделе, Приоритет операција, Логички тип пода-
така, Наредба условног преласка. Поменуте наставне јединице су и вертикалном корела-
цијом повезане са наставном јединицом Табеларна израчунавања која се изучава у другом
разреду, као и select реченицама у тематској целини Базе података за четврти разред.

Реални бројеви и дељивост бројева (I разред). Постоји дијагонална корелација са на-


ставном јединицом Типови података, раздвајање броја на цифре, Конверзија једног типа
броја у други, Конверзија једног бројевног система у други. Такође се уочава вертикална
корелација ових наставних садржаја са Функцијама за рад са табелама и SQL-ом, као и са
наставном јединицом Представљање података (I разред).

Рационални алгебарски изрази. Ђаци кроз алгебарске изразе треба да продубе знање и да
се спреме за предстојеће озбиљније задатке.

Линеарне једначине и неједначине. Градиво се надовезује на претходну тему и примењује


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

150
Хомотетија и сличност. Ова област Математике једна је од примењиваних у свакоднев-
ном животу, а у Информатици је такође заступљена у трећој години у програму за рад са
прозорима.

Степеновање и кореновање (II разред). Постоји дијагонална корелација са коришћењем


функција у програмским језицима, коришћењем математичких функција, у оквиру пакета
обрађиваног програмског језика. Уочава се и вертикална корелација са наставном једини-
цом Елементарне функције (II разред).

Квадратна једначина и квадратна функција. Уочава се дијагонална корелација са Разгра-


натим програмским структурама.

Експоненцијална функција, логаритамска функција, елементи тригонометрије. При-


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

Вектори и аналитичка геометрија у равни (III разред). Постоји хоризонтална корела-


ција у изради задатака у више наставних јединица.

Низови (III разред). Уочава се хоризонтална корелација са наставном темом Низови и


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

Елементи статистике (IV разред). Постоји дијагонална корелација (израда програма из


различитих области).

151
5. НАСТАВНЕ ТЕХНИКЕ, МЕТОДЕ И ОБЛИЦИ
Рачунарство и информатика је у односу на друге наставне предмете веома специфично,
јер је више проблемски оријентисано. Фазе решавања проблема у информатици могу се кла-
сификовати на следећи начин:
1. Постављање проблема.
2. Разумевање проблема и прикупљање података.
3. Избор методе решавања.
4. Решавање проблема.
5. Анализа решења кроз интерпретацију и дискусију, што нас често може навести на
избор другачијег начина решавања.
Наставне методе које ће наставник применити на часу ради бољег усвајања градива зави-
се од садржаја наставне јединице, циљева наставног часа и облика рада који се на том часу
примењују. Циљеви наставног часа могу бити образовни (материјални), функционални и
васпитни.

Образовни циљеви су трајни и не подлежу краткорочном временском утицају, па пред-


стављају подлогу за целоживотно образовање. Под њима се подразумевају:
• очекивано знање и разумевање које ученици треба да усвоје на наставном часу;
• информатички концепти (појмови и својства), терминологија и симболика.

Функционални циљеви су вештине и способности за које се очекује да ће их ученици


развити током наставног часа. Вештина представља вежбом (учењем) стечено умеће довољ-
но прецизног и довољно брзог (рутинског) извођења операција са циљем решавања постав-
љеног задатка, док се способност развија учењем, а зависи од психофизичких предиспози-
ција ученика. Функционалне циљеве потребно је конкретизовати на нивоу целог наставног
предмета, нпр.:
• развој логичког, аналитичког и процедуралног (алгоритамског) мишљења;
• развој вештина и способности решавања проблемских задатака (проблема);
• развој вештине процењивања (решења проблема или најефикаснијег приступа реша-
вању проблема);
• вештина успешне употребе конкретне информационе технологије (хардвера и софтвера).
Васпитни циљеви су вредности, ставови и сличне позитивне особине личности за које се
очекује да ће их ученици развити током наставног часа, а то су: концентрација, способност
за истрајан и предан рад, тачност, прецизност и уредност у раду, организацијске вештине,
комуникација у групи или пару, усмена и писмена комуникација, поверење у властите спо-
собности, уважавање информатике као подручја људске делатности, способност самопро-
цене, етичке и естетске вредности, толеранција према другима и другачијем мишљењу.
Образовни садржај се преображава у свести ученика и утиче на њихову личност за-
хваљујући примењеним наставним методама. Ако се има у виду циљ, онда одговарајућа ме-
тода служи као средство рада наставника са ученицима да би се постављени циљ остварио.

152
Наставни процес је врло комплексан и одликује се бројним разноврсностима, непрестаним
тражењем нових методичких решења, складним односом свих основних форми. Он пред-
ставља јединство рада ученика и наставника, мишљења, сазнања, васпитања и образовања.
Најзаступљеније методе у настави Рачунарства и информатике су:
• предавачке методе, у којим наставник излаже, а ученик слуша (час се не сме свести
само на ову методу);
• метода дијалога, коју одликује заједнички рад наставника и ученика који се одвија у
облику питања и одговора. Овом методом подстичу се мисаоне активности ученика и
захтева се њихова потпуна пажња. Јавља се у различитим облицима, као хеуристички
разговор, катихетички разговор, дискусија;
• демонстрациона метода, која је заснована на показивању и посматрању. Примерена
је код обраде готових информатичких производа, а показује се на примеру уз помоћ
пројектора прикљученог на рачунар;
• метода рада са текстом, која подразумева самосталан рад ученика са литературом;
• метода самосталних вежби, код које ученик самостално изводи постављени задатак,
нпр. на рачунару или у слободно време остварује неки рад (домаћи, семинарски) који
наставник прегледа и усмерава га у даљем раду. Ова метода захтева и велики труд на-
ставника, јер се често ради о садржајима који су шири него наставно градиво, а посебно
је погодан за више разреде основне школе и средњу школу;
• пројектна настава, која је оријентисана ка производу, а захтева самоорганизацију и
властиту одговорност;
• откривачка метода, која подстиче ученике на активнију улогу у процесу учења и у коме
се обраћа пажња на контекст и искуство ученика (наставник поставља питања како би
ученика усмерио на разумевање концепта пре него што се исти искаже).
Облици наставе проистичу из постављених општих и специфичних циљева и задатака.
Најзаступљенији су: фронтална настава, рад у пару, тимски рад, групни рад, индивиду-
ални рад и програмирана настава. У току једног часа може се променити неколико облика
рада. Постоје и посебни облици наставе који се обавезно изводе – додатни и допунски рад.
Припремни и допунски рад се, према Закону о средњем образовању и васпитању (члан
24), организује ако се у току школске године укаже потреба за таквим облицима рада. При-
премни рад се реализује за ученике који полажу разредни или поправни испит и за ванред-
не ученике. Допунски рад се организује за ученике који стално или повремено заостају у
савлађивању образовно-васпитних садржаја у редовној настави.
Задаци допунског и припремног рада су:
• ближе одређивање програмског садржаја у којима ученик не постиже добре резултате;
• омогућавање да се савладавање овако утврђених садржаја усклади са потребама и
могућностима ученика за које се организује овакав рад;
• пружање помоћи ученицима да се лакше уклопе у редовну наставу и праћење њиховог
напредовања.
Садржаји за допунски и припремни рад прописани су наставним планом и програмом.
Избор, ширина и дубина обраде, као и дидактичко-методички поступци, у овим облицима
рада су, више него обично, под утицајем индивидуалних карактеристика укључених у такав
рад.

153
Пре издвајања ученика за допунски рад треба утврдити узроке и тешкоће које имају у
савладавању градива. У препознавању ученика за допунски рад учествују предметни на-
ставник, одељењски старешина, педагошко-психолошка служба и родитељ, па се допунским
радом у највећем броју случајева обухватају:
• ученици који долазе из других школа, посебно из оних где се програм разликује (учени-
ци из иностранства);
• ученици који су због болести, породичних и других оправданих разлога дуже одсуство-
вали са наставе;
• ученици који перманентно заостају и тешко савлађују наставно градиво;
• ученици који у току наставне године више пута у континуитету добију негативну оцену,
а посебно ако су у претходном разреду показали недовољан успех или ишли на поправ-
ни испит;
• ученици који у недовољној мери познају језик на ком се обавља настава.
Допунски рад се организује у току читаве школске године, с тим што за неке ученике
или групе ученика може да траје дуже или краће време, што зависи од узрока заостајања и
времена потребног за савладавање одређеног наставног садржаја, док се припремни рад ор-
ганизује у августовском испитном року. Организује се са групом ученика из једног или више
одељења једног разреда или са појединим ученицима. Број ученика не треба да буде већи од
10, а најбољи ефекти се постижу у мањим групама или, уколико услови дозвољавају, инди-
видуално. Уколико се организује допунски рад у групама, онда посебну пажњу треба обра-
тити на то да групе обухватају ученике који имају исте проблеме и тешкоће. Допунски рад се
може одржавати једном или два пута у току недеље, а час може трајати краће или дуже од 45
минута, што у највећој мери зависи од способности ученика. Пракса је показала да највећи
успех на допунској настави има рад са једним учеником, јер је тада ученик најслободнији да
каже и да и по неколико пута тражи да се решавању одређеног проблема приступи на раз-
личите начине и у различитим ситуацијама како би могао да усвоји неки део градива.

Циљ додатног рада је да омогући одабраним и талентованим ученицима да прошире и


продубе своја знања и вештине из неких наставних области и предмета у складу са својим
интересовањима, способностима и склоностима, као и да подстиче ученике на самостални
рад, развој логичког, стваралачког и критичког мишљења и да допринесе њиховом оспо-
собљавању за даље самообразовање.
Задаци додатног рада су:
• задовољавање индивидуалних особености ученика, склоности, интересовања, способ-
ности за учење;
• подстицање индивидуалног развоја ученика, пре свега њихових интелектуалних карак-
теристика, што омогућава брже напредовање ученика;
• проширивање и продубљивање обима и садржаја из области за које ученици показују
интересовање и способности;
• груписање ученика према способностима и интересовањима, чиме се стварају услови за
индивидуализацију додатног рада;
• идентификовање обдарених и талентованих ученика.

154
Садржаји додатног рада полазе од редовног плана и програма, али се, сходно интересо-
вањима и потребама ученика, продубљују и допуњују новим садржајима и као такви важе
само за ученике обухваћене додатном наставом. Ти садржаји су индивидуализовани, како у
односу на ученике, тако и у односу на наставника, па би било добро да наставници из струч-
ног већа Рачунарства и информатике у договору између себе поделе области предвиђене
додатним радом (према сопственим способностима и афинитетима). Додатним радом треба
обухватити ученике који постижу изузетне резултате у савладавању садржаја програма,
који показују интересовање за проширивање и продубљивање знања и вештина, који су
обдарени и талентовани за одређене области.
Програм додатног рада треба планирати и организовати у оквиру недељног распореда
часова образовно-васпитног рада. Часови могу да трају краће или дуже од 60 минута, зави-
сно од садржаја који се остварују. Треба настојати да се часови додатног рада организују у
супротној смени, за време радних субота и слично, а према могућностима школе и времену
које одговара наставницима и ученицима. С обзиром на функцију додатног рада, настав-
ник треба да препоручи најразноврсније облике, методе и поступке рада који ће ученицима
омогућити да њихове креативне способности и интересовања максимално дођу до изражаја
(индивидуални и групни облик, проблемска и индивидуализована настава и други облици
наставног рада). Наставник треба да упућује ученике да се самостално служе литературом,
приручницима, да траже материјал из области за коју су заинтересовани на интернету и да
на тај начин долазе до нових идеја где би и како могли да искористе своје знање, да праве
записе, анализе, закључке и сл.
Због велике специфичности самог предмета Рачунарство и информатика и интересовања
ученика за нове технологије, могуће је направити велики број секција, које могу да похађају
ученици различитих разреда који имају афинитета према одређеној теми, нпр.:
• Секција за програмирање;
• Секција за архитектуру рачунарског система;
• Секција за рачунарску графику;
• Секција за рачунарске мреже;
• Секција за обраду звука;
• Секција за обраду видео-записа;
• Секција за веб-дизајн...

155
6. НАСТАВНА СРЕДСТВА
Наставним средствима сматрају се сва материјална средства за остваривање захтева која
наставнику или ученику служе за успешно и разумно обликовање и извођење образовног и
васпитног процеса. Наставна средства су увек везана за тему наставног часа и градиво које
се обрађује. Могу се поделити на:
• текстуална: уџбеник, збирка задатака, радна свеска, наставни листићи и други штам-
пани материјали;
• визуелна, аудио-визуелна и аудитивна: цртежи, слике, фотографије, дијаграми, плака-
ти, таблице, модели, макете, апарати, ЦД-и, филмови, ТВ емисије, рачунарске презента-
ције, интернет презентације...
Наставна средства не треба поистовећивати са наставним помагалима, јер она немају ди-
ректне везе са наставним градивом. Наставним помагалима сматрају се техничка помагала
која су неопходна за употребу наставних средстава и реализацију часа, а то су: табла и креда,
рачунар, пројектор, фото-апарат, камера...
Под текстуалним наставним средствима у оквиру Рачунарства и информатике за трећи
разред подразумева се уџбеник који је одабрало стручно веће. Уџбеник има две функције:
наставнику служи као основни материјал да припреми, одмери количину градива и обли-
кује наставни садржај за час који припрема, а ученицима као помоћ у савладавању обрађе-
ног градива. Поред уџбеника, користе се и наставни листићи које припрема наставник за
реализацију појединих наставних јединица. У њима су најчешће дати задаци које треба ура-
дити на часу и задаци за самостални и домаћи рад, како би ученици што боље усвојили
градиво и увежбали неку област.
Што се осталих наставних средстава тиче, због саме природе предмета, највише се кори-
сте рачунарске и интернет презентације за одговарајући наставни садржај, а могу се наћи
готово за сваку тему. Наставник има одговорност да пажљиво прегледа филмове које би
приказао ученицима (да одабере најадекватније и за њих се пажљиво припреми). Филм
је, свакако, најинтересантнији, пошто омогућава непосредно доживљавање и мотивисање
ученика. Најважније дидактичке функције филма су у томе што он: приближава стварност
која није доступна у процесу учења, буди интересовање према предмету сазнања, развија
способност опажања, активност, машту и мишљење. Може се користити у свим фазама на-
ставног процеса, као и за остваривање различитих циљева и задатака.
Смишљена употреба наставних средстава изграђује прецизна опажања, трагања, уоча-
вање проблема, као и различите интелектуалне операције, а пре свега функционално
мишљење. Различита знања која су ученици стекли уз помоћ наставних средстава подстичу
их на поређења, закључивања и уопштавања. Правилном употребом наставних средстава
може се утицати на рационализацију рада наставника и ученика, а тиме и на повећање успе-
шности наставе. Наставна средства олакшавају наставнику рад на припремању наставе,
ослобађају га сувишног излагања материје и омогућавају ефикаснију индивидуалну помоћ у
раду, док ученицима појачавају концентрацију на процес учења.

156
7. ОЦЕЊИВАЊЕ УЧЕНИКА
Основна сврха оцењивања је да унапређује квалитет процеса учења. Оцењивање је са-
ставни део процеса наставе и учења којим се стално прати остваривање прописаних циље-
ва, исхода, стандарда постигнућа ученика и стандарда квалификација, као и напредовања
ученика у развијању компетенција у току савладавања школског програма. Оцењивање
је континуирана педагошка активност којом се код ученика развија активан однос према
учењу, подстиче мотивација за учење, развијају радне навике, а ученик се оспособљава за
објективну процену сопствених постигнућа и постигнућа других ученика, при чему развија
одређени систем вредности.
Како би се омогућила ефикасност учења, наставник се руководи следећим принципима
при оцењивању:
• поузданост: означава усаглашеност оцене са утврђеним, јавним и прецизним крите-
ријумима оцењивања;
• ваљаност: оцена исказује ефекте учења (оствареност исхода, ангажовање и напредо-
вање ученика);
• разноврсност начина оцењивања: избор одговарајућих и примена различитих метода и
техника оцењивања како би се осигурала ваљаност, поузданост и објективност оцена;
• редовност и благовременост оцењивања: обезбеђује континуитет у информисању уче-
ника о њиховој ефикасности у процесу учења и ефекат оцене на даљи процес учења;
• оцењивање без дискриминације и издвајања по било ком основу;
• уважавање индивидуалних разлика, образовних потреба, узраста, претходних пости-
гнућа ученика.
Применом ових принципа наставник обезбеђује да оцена буде објективан показатељ
постигнућа ученика.
Праћење развоја и напредовања ученика у достизању исхода и стандарда постигнућа
у току школске године обавља се формативним и сумативним оцењивањем. Форматив-
но оцењивање је прикупљање релевантних података о напредовању ученика, постизању
прописаних исхода и циљева. Ово оцењивање наставнику даје повратну информацију за
даље креирање процеса учења, а ученику препоруку за даље напредовање и евидентира се
у педагошкој документацији наставника. На основу података прикупљених формативним
оцењивањем могу се извести оцене које се уносе у дневник рада. Подаци за формативно
оцењивање су подаци о знањима, вештинама, ангажовању, самосталности и одговорности
према раду. Сумативно оцењивање је вредновање постигнућа ученика на крају програмске
целине, модула или за класификациони период. Ове оцене су по правилу бројчане и уносе
се у дневник рада, а могу бити унете и у педагошку документацију. Обе врсте оцењивања
део су јединственог процеса оцењивања заснованог на унапред утврђеним критеријумима.
Оцена је јавна и саопштава се и образлаже ученику одмах по спроведеном поступку
оцењивања.

157
Оценом се изражава:
• оствареност циљева и прописаних, односно прилагођених стандарда постигнућа, до-
стизање исхода и степена развијености компетенција у току савладавања програма
предмета (процењује се на основу овладаности појмовном структуром и терминоло-
гијом; разумевања, примене и вредновања научених поступака и процедура и реша-
вања проблема; рада са подацима и информацијама; интерпретирања, закључивања и
доношења одлука; вештина комуникације и изражавања у различитим формама; овла-
даности моторичким вештинама; извођења радних задатака);
• ангажовање ученика у настави (активно учествовање у настави, одговоран однос према
постављеним задацима, сарадња са другима и показано интересовање и спремност за
учење и напредовање);
• напредовање у односу на претходни период (приликом оцењивања уважава се остваре-
на разлика у достизању критеријума постигнућа);
• препорука за даље напредовање ученика (јасно указује ученику на то шта треба да по-
бољша у наредном периоду и саставни је део повратне информације уз оцену).
Оцењивање успеха ученика из наставног предмета је сталан образовно-васпитни посту-
пак који има више функција. Оцена нарочито треба:
• да буде објективна и поуздана мера напредовања ученика у савладавању наставног пла-
на и програма;
• да ученика редовно обавештава о постигнућу;
• да подстиче ученика на активан однос према настави, другим облицима образовно-
-васпитног рада и учења;
• да ученика оспособљава за објективну процену сопствених и постигнућа других уче-
ника;
• да је показатељ ефикасности рада наставника и школе.
Оцена је конкретизација једне комплексне ситуације и никада није једноставна конста-
тација. Да би била што објективнија, наставник је обавезан да у процесу оцењивања води
рачуна о циљевима наставе, претходном искуству и активностима ученика, да дефинише
активности и методологију спровођења тих активности и да води рачуна о интеракцији у
учионици. Да би се оцењивање ваљано спровело и било у функцији наставе, мора се водити
рачуна и о потребама ученика.
Улоге наставника и потребе ученика у процесу оцењивања дате су следећом табелом4:

4
Д. Бјекић, Ж. М. Папић, Тестови знања: израда и примена у средњој школи, Чачак, 2006.

158
Улоге наставника Потребе ученика
• јасно одредите чему треба да поучите • Потребно ми је да знам шта се од мене
Циљеви
наставе

ученике; очекује.
• размотрите са ученицима постављене
циљеве;
• одредите учениково претходно • Потребно ми је да знам шта радим
искуство; добро, а шта не радим добро.
активности
Претходно
искуство и

• одредите идеје и информације које • Желим да побољшам своје постигнуће.


треба усвајати;
• обликујте задатке у складу са прет-
ходним искуством и способностима
ученика;
• планирајте тестове и друге технике; • Потребно ми је да поставим неке
краткорочне и оствариве циљеве.
Активности и

• омогућите свима богату и разноврсну


методологија

средину за учење; • Потребно ми је да развијем стратегију


• помажите ученицима да схвате сврху која би ми помогла да учим ефикасније.
израде задатака и сврху процеса учења; • Потребно ми је да се оспособим
• размотрите како сваки ученик да процењујем и евалуирам своје
приступа учењу; вредности и свој рад.

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


Интеракција
у учионици

подршку у учионици; свог постигнућа, али да га и други


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

Критеријуми оцењивања успеха ученика из наставног предмета су: врста, обим и ниво
усвојених знања, умења и вештина у односу на прописане наставним планом и програмом
за предмет, разред, образовни профил, односно врсту школе.
Врста знања, умења и вештина одређују се као основна, проширена и продубљена у одно-
су на њихов значај за остваривање циља и задатака предмета. За довољну оцену неопходна
су основна знања. За већу оцену од довољне неопходна су проширена, односно продубљена
знања, умења и вештине ученика.
Обим знања, умења и вештина утврђује се зависно од количине усвојених садржаја про-
писаних за одређени предмет. Ниво знања, умења и вештина утврђује се зависно од квали-
тета усвојеног садржаја: сложености усвојених знања, умења и вештина; степена схватања и
разумевања усвојених садржаја и оспособљености за њихову примену.
Успех ученика у учењу изражава се оценом: одличан (5), врло добар (4), добар (3), довољан
(2) и недовољан (1).
Оцену одличан (5) добија ученик који:
• примењује знања, укључујући и методолошка, у сложеним и непознатим ситуацијама,
самостално и на креативан начин објашњава и критички разматра сложене садржинске
целине и информације; процењује вредност теорија, идеја и ставова;
• бира, повезује и вреднује различите врсте и изворе података;

159
• формулише претпоставке, проверава их и аргументује решења, ставове и одлуке;
• решава проблеме који имају више решења, вреднује и образлаже решења и примењене
поступке;
• изражава се на различите начине (усмено, писмено, графички, практично и др.), укљу-
чујући и коришћење информационих технологија и прилагођава комуникацију и начин
презентације различитим контекстима;
• самостално извршава сложене радне задатке поштујући стандардизовану процедуру, по-
казује иницијативу и прилагођава извођење, начин рада и средства новим ситуацијама;
• доприноси групном раду продукцијом идеја, иницира и организује поделу улога и задата-
ка, уважава мишљења других чланова групе и помаже им у реализацији њихових задата-
ка, посебно у ситуацији „застоја” у групном раду; фокусиран је на заједнички циљ груп-
ног рада и преузима одговорност за реализацију продуката у задатом временском оквиру;
• утврђује приоритете и ризике и на основу тога планира и организује краткорочне и
дугорочне активности и одређује потребно време и ресурсе;
• континуирано показује заинтересованост и одговорност према сопственом процесу
учења, уважава препоруке за напредовање и реализује их.
Оцену врло добар (4) добија ученик који:
• логички организује и самостално тумачи сложене садржинске целине или информације;
• повезује садржаје и концепте из различитих области са ситуацијама из живота;
• пореди и разврстава различите врсте података према више критеријума истовремено;
• заузима ставове на основу сопствених тумачења и аргумената;
• уме да анализира проблем, изврши избор одговарајуће процедуре и одговарајућег
поступка у решавању нових проблемских ситуација;
• изражава се на различите начине (усмено, писмено, графички, практично, ликовно и
др.), укључујући и коришћење информационих технологија, и прилагођава комуника-
цију задатим контекстима;
• самостално извршава сложене радне задатке према стандардизованој процедури;
• планира динамику рада, организује активности у групи, реализује сопствене задатке
имајући на уму планиране заједничке продукте групног рада;
• планира и организује краткорочне и дугорочне активности, утврђује приоритете и
одређује потребно време и ресурсе;
• континуирано показује заинтересованост за сопствени процес учења, уважава препо-
руке за напредовање и углавном их реализује.
Оцену добар (3) добија ученик који:
• разуме и самостално објашњава основне појмове и везе између њих;
• разврстава различите врсте података у основне категорије према задатом критеријуму;
• уме да формулише своје ставове, процене и одлуке и објасни на који је начин дошао до
њих;
• бира и примењује одговарајуће поступке и процедуре у решавању проблемских ситу-
ација у познатом контексту;
• уме јасно да искаже одређени садржај у складу са захтевом и на одговарајући начин
(усмено, писмено, графички, практично и др.), укључујући коришћење информационих
технологија;

160
• самостално извршава рутинске радне задатке према стандардизованој процедури;
• извршава додељене задатке у складу са циљевима, очекиваним продуктима и планира-
ном динамиком рада у групи; уважава чланове тима и различитост идеја;
• планира и организује краткорочне активности и одређује потребно време и ресурсе;
• показује заинтересованост за сопствени процес учења, уважава препоруке за напредо-
вање и делимично их реализује.
Оцену довољан (2) добија ученик који:
• познаје и разуме кључне појмове и информације и повезује их на основу задатог крите-
ријума;
• усвојио је одговарајућу терминологију;
• закључује директно на основу поређења и аналогије са конкретним примером;
• способан је да се определи и да искаже став;
• примењује одговарајуће поступке и процедуре у решавању једноставних проблемских
ситуација у познатом контексту;
• уме јасно да искаже појединости у оквиру садржаја, држећи се основног захтева и на
одговарајући начин (усмено, писмено, графички, практично и др.), укључујући и ко-
ришћење информационих технологија;
• уз инструкције извршава рутинске радне задатке према стандардизованој процедури;
• извршава додељене задатке искључиво на захтев и уз подршку осталих чланова групе;
уважава чланове тима и различитост идеја;
• планира и организује краткорочне активности на основу задатих услова и ресурса;
• повремено показује заинтересованост за сопствени процес учења, а препоруке за
напредовање реализује уз стално праћење.
Оцену недовољан (1) добија ученик који не испуњава критеријуме за оцену довољан (2) и
не показује заинтересованост за сопствени процес учења, нити напредак.

У поступку оцењивања успеха ученика наставник уважава и личност ученика – његове


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

161
недеље. Распоред и промене распореда утврђује одељењско веће на препоруку педагошког
колегијума. Наставник је дужан да обавести ученике о наставним садржајима који ће се
проверавати према распореду најкасније пет дана пре провере.
Провера и праћење постигнућа ученика обавља се на сваком часу. Ученик у току часа може
да буде само једанпут оцењен након провере постигнућа. Оцена добијена после писмене про-
вере постигнућа уписује се у дневник рада у року од осам дана од дана провере. Ако после пи-
смене провере постигнућа више од половине ученика једног одељења добије недовољну оце-
ну, писмена провера се понавља за ученика који је добио недовољну оцену и за ученика који
није задовољан оценом. Оваква провера се понавља једанпут и може да буде организована на
часу допунске наставе. Пре организовања поновљене провере, наставник је дужан да орга-
низује допунску наставу, односно да организује допунски рад. Ученик и родитељ имају право
на образложење оцене, као и право увида у рад ученика (писмене радове, контролне задатке,
тестове знања, производе практичног рада и др.) на основу кога је оцена дата.
Наставничко и одељењско веће и стручна већа планирају, прате и анализирају оцењи-
вање и предлажу мере за унапређивање квалитета оцењивања и постигнућа ученика.
Закључну оцену из предмета утврђује одељењско веће на предлог предметног наставника.
Закључна оцена је бројчана и утврђује се на основу свих оцена од почетка школске године и
сагледавања развоја, напредовања и ангажовања ученика и прикупљених података у педа-
гошкој документацији наставника. Ученику који има мање од три оцене у току полугодишта
не може се утврдити закључна оцена. Предметни наставник који није утврдио прописан
број оцена у току полугодишта обавезан је да за ученика који редовно похађа наставу, а нема
прописани број оцена, спроведе оцењивање на редовном часу или часу допунске наставе у
току полугодишта (у току последње недеље наставе) уз присуство одељењског старешине,
члана стручног већа, стручног сарадника (педагога или психолога) или групе ученика. Ако
предметни наставник, из било којих разлога, није у могућности да организује овакав час,
школа је дужна да обезбеди одговарајућу стручну замену.
Одељењски старешина је у обавези да сарађује са предметним наставницима у праћењу
развоја и напредовања ученика, прати оцењивање и подстиче наставнике да редовно оцењују
ученике.
У околностима када два или више наставника предлажу јединствену оцену, предлог
закључне оцене се утврђује на основу усаглашавања њиховог мишљења у односу на утврђе-
не критеријуме. Не може се предложити позитивна оцена из предмета уколико наставник
једног дела предмета предлаже недовољну оцену.
Закључна оцена за успех из предмета може изузетно да буде и највећа појединачна оце-
на уписана у дневник, добијена било којом техником провере постигнућа, а не може бити
мања од:
• одличан (5), ако је аритметичка средина свих појединачних оцена најмање 4,50;
• врло добар (4), ако је аритметичка средина свих појединачних оцена од 3,50 до 4,49;
• добар (3), ако је аритметичка средина свих појединачних оцена од 2,50 до 3,49;
• довољан (2), ако је аритметичка средина свих појединачних оцена од 1,50 до 2,49.

Закључна оцена за успех из предмета је недовољан (1) ако је аритметичка средина свих
појединачних оцена мања од 1,50.

162
Одељењско веће може да промени предлог закључне оцене предметног наставника
искључиво уз образложење према критеријумима утврђеним Правилником, а утврђује се
гласањем, евидентира се у напомени, а у записнику одељењског већа шире се образлаже.
Закључна оцена утврђена на одељењском већу уписује се у дневник рада у предвиђену ру-
брику.
Уколико ученик има недовољну закључну оцену на крају првог полугодишта, наставник
је дужан да организује допунску наставу за припрему ученика и спроведе оцењивање у вези
са поправљањем оцене уз присуство одељењског старешине или стручног сарадника или на
часу допунске наставе у току полугодишта.
Оцена на испиту се утврђује на основу прописаних циљева, исхода, стандарда пости-
гнућа ученика и стандарда квалификација већином гласова укупног броја чланова комиси-
је, у складу са Законом. Оцена комисије је коначна. Ученик може дневно да полаже испит
само из једног предмета.
Одељењски старешина је у обавези да благовремено, а најмање четири пута у току школске
године, на примерен начин обавештава родитеље о постигнућима ученика, напредовању,
мотивацији за учење и напредовање, владању и другим питањима значајним за образовање
и васпитање.

163
8. ЛИТЕРАТУРА
Бјекић, Д., Папић, Ж., М. (2006): Тестови знања – израда и примена у средњој школи, Чачак:
ПАП.
Вујиновић, С. (2015): Рачунарство и информатика – Приручник за наставнике рачунар-
ства и информатике за други разред гимназије, Београд: Klett.
Марић, Ф. (2016): Информатика 3, уџбеник за трећи разред гимназије, Београд: Klett.
Мркаљ, З. (2014): Методичка слагалица 7, Београд: Klett.
Трнавац, Н., Ђорђевић, Ј. (1995): Педагогија, Београд: Научна књига.
Чабаркапа, М. (2014): Рачунарство и информатика за 3. разред гимназије, Београд: Круг.
Чабаркапа, М. (2006): Рачунарство и информатика – збирка задатака за IV разред гимна-
зије, Београд: Завод за уџбенике.
Чабаркапа, М. (2004): Рачунарство и информатика за трећи разред гимназије, Београд: Круг.

Закон о средњем образовању и васпитању, „Службени гласник РС”, бр. 55/2013.


Закон о основама система образовања и васпитања („Сл. гласник РС”, бр. 33/99 и 108/2003).
Правилник о наставном плану и програму за гимназију („Сл. Гласник РС – Просветни гла-
сник”, бр. 5/90 и „Сл. Гласник РС – Просветни гласник”, бр. 3/91, 3/92, 17/93, 2/94, 2/95,
8/95, 23/97, 2/2002, 5/2003, 10/2003, 11/2004, 18/2004, 24/2004, 3/2005, 11/2005, 2/2006,
6/2006, 12/2006, 17/2006, 1/2008, 8/2008, 1/2009, 3/2009, 10/2009, 5/2010, 7/2011 и 18/2013.).
Правилник о оцењивању ученика у средњем образовању и васпитању („Сл. Гласник РС”, бр.
82/2015).

Корисни линкови
www.math.pmf.unizg.hr/~bruckler/mni2.ppt (Методика наставе информатике, РowePoint пре-
зентација),
www.dmi.uns.ac.rs/site/dmi/download/master/GordanaStankovic.pdf (Корелација наставе ма-
тематике и информатике у средњим школама)

164

You might also like