Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Dev c++ sekcija OS"N.Tesla" Prnjavor (Brankica Jokic)

1,569 views

Published on

Dev C++ , vjezbe i zadaci za ucenike osnovne skole

Published in: Education
  • Be the first to comment

Dev c++ sekcija OS"N.Tesla" Prnjavor (Brankica Jokic)

  1. 1. Бранкица Јокић ПРОГРАМИРАЊЕ И ПРОГРАМСКИ ЈЕЗИК DEV C++ ИНФОРМАТИЧКА СЕКЦИЈА ОСНОВНА ШКОЛА «НИКОЛА ТЕСЛА» ПРЊAВОР
  2. 2. Бранкица Јокић 1. ПРОГРАМИРАЊЕ И ПРОГРАМСКИ ЈЕЗИК Dev C++  Кључни појмови: Aлгоритам, програм, дијаграм тока. Да би се ријешили одређени задаци потребна су разна знања, искуства па и вјешптине. Рачунар користи само памћење и логичко расуђивање.Зато се задаци које рачунар треба ријешити морају претворити у облик који је разумљив рачунару. Машински језик је бинарни приказ програма за рачунар и једини разумљив рачунару. Машински језик је ипак компликован за писање програма па су уведени виши или симболички програмски језици. Симболички или виши програмски језици су настали како би олакшали програмирање, јер је лакше памтити симболе него бинарне бројеве. Такав облик програма се прије извођења мора превести у машински облик. Програмирање је поступак писиња радњи и наредби програма у одабраном програмском језику. Програм је ограничени скуп наредби које се изводе тачно одређеним редослиједом и с тачно одређеним циљем. Прилагођен је за извођење на рачунару као низ лoгички повезаних инструкција. Свака инструкција представља одређену наредбу или скупину наредби које рачунар може извршити а које представљају најмањи елемент програма. Сваки програмски језик користи властити, ограничен скуп ријечи које имају посебно значење.Такве ријечи називају се кључним ријечима. За сваки програмски језик прописана су строга правила слагања кључних ријечи у наредбе и у програм. Таква правила називају се синтакса. Тек након упознавања сваке наредбе, може се започети комбинујући их писати програм, програмирати. Фазе у програмирању  Анализа проблема,  Израда алгоритма (цртање дијаграма тока),  Писање програмског кода,  Унос програмског кода у рачунар и покретање програма. 1.Програмирање и програмски језик 1.1 АЛГОРИТАМСКЕ СТРУКТУРЕ Алгоритми се користе у рачунарском програмирању као приказ поступка рјешавања неког задатка. Он је најчешће графички приказ тока обраде или скупа инструкција рачунарског програма и тада се прецизније назива дијаграм тока. Постоји више начина приказивања алгоритма: у облику говора, табеларно и дијаграмом тока или тзв. блок дијаграмом. Уобичајен начин приступања креирању алгоритма је цртање дијаграма тока. Алгоритамске структуре могу се подијелити у три основне групе и то:  Линеарне алгоритамске структуре ,  Разгранате и  Цикличне алгоритамске структуре или петље. Дијаграм тока се састоји од симбола повезаних усмјереним линијама (стрелицама), чиме се истиче прегледност и недвосмисленост редослиједа извршења појединих алгоритамских корака. Основне особине алгоритма су:  Дефинисаност- сви кораци морају бити јасни и недвосмислени.  Коначност- извршење алгоритма се мора обавити у одређеном броју корака.  Посједовање улаза и излаз- морају се дефинисати улази којих може бити: ни један, један или више и излази којих мора бити бар један или више.  Ефикасност- алгоритам се извршава у разумном временском интервалу.  Резултативност- алгоритам мора дати рјешење проблема ако нема рјешења онда поруку да рјешење не постоји. ГРАФИЧКИ СИМБОЛИ ЗНАЧЕЊЕ СИМБОЛА ГРАФИЧКА ОЗНАКА ЗА ПОЧЕТАК АЛГОРИТМА УЛАЗНИ АЛГОРИТАМСКИ КОРАК АЛГОРИТАМСКИ КОРАК У КОМЕ СЕ ИСПИТУЈЕ УСЛОВ АЛГОРИТАМСКИ КОРАК ОБРАДЕ ПОДАТАКА ИЗЛАЗНИ АЛГОРИТАМСКИ КОРАК ГРАФИЧКА ОЗНАКА ЗА КРАЈ АЛГОРИТМА 1
  3. 3. 1.Програмирање и програмски језик 2. ИНСТАЛАЦИЈА DEV C++  Кључни појмови: Download Free Dev C++, инсталација програма Бранкица Јокић  У овом кораку бирају се компоненте које треба инсталирати. Пошто је све потребно већ подешено, само се кликне “DALJE” (слика бр.3). C++ је најпопуларнији програмски језик опште намјене за професионалну примјену. Dev C++ има низ предности у односу на друге програмске језике, прије свега, бесплатан је, малих димензија и врло једноставног окружења. Инсталирање се одвија у свега неколико корака:  Пронађе се сљедећи линк на интернету,  Након учитавања програма покреће се инсталација кликом на икону, након чега почиње инсталација програма, уколико није већ инсталиран на вашем рачунару.  У сљедећем кораку бира се језик те кликом на ОК наставља са инсталацијом (слика бр.1). Слика бр.1 Избор језика у Dev C++  Кликом на “PRIHVAĆAM” изјављујете да се слажете са условима програма (слика бр.2). 2 Слика бр.2 Избор језика у Dev C++ Слика бр.3 Избор компоненти у Dev C++  У овом кораку бира се фолдер у који треба инсталирати Dev C++, те кликом на “INSTALIRAJ” наставља се инсталација (слика бр.4). Слика бр.4 Избор компоненти у Dev C++  Слиједе кораци инсталације (слика бр.5). Слика бр.5 Инсталација Dev C++
  4. 4. 1.Програмирање и програмски језик Бранкица Јокић Наставак инсталације приказан је на сликама (слика бр.2- сликабр.7).  3. УВОД у DEV C++  Кључни појмови: Покретање програма, креирање новог пројекта. Као и сви програми, и Dev C++ се покреће избором у Start менију или преко иконе на радној површини. 3.1 КРЕИРАЊЕ НОВОГ ПРОЈЕКТА Слика бр.6 Инсталација Dev C++  Слика бр.9 Креирање новог пројекта Слика бр.7 Инсталација Dev C++  Програм је дио веће цјелине која се назива “Projekat”. Због тога се писање програма започиње креирањем новог пројекта (слика бр.8): 1 Кликнете на Datoteka 2 Изаберете Nova 3 Изаберете Projekat Слика бр.10 Избор типа пројекта Слика бр.8 Крај инсталације Dev C++ Затварањем овог прозора инсталација програма Dev C++ је завршена (слика бр.8). Прије него се уопште упозна изглед програмског прозора и писања кода у истом препоручљиво је отворити нову датотеку у коју се могу спремати пројекти сачињени у Dev C++. Након тога се отвара нови прозор и бира “Novi projekat” и тип пројекта. Најважнији типови су “Windows Application” и “Console Application” (слика бр.10) . Windows Application изводи се унутар класичног windows прозора. Предност је у томе што се добија програм који ће изгледати као сваки други windows програм а недостатак што је на овај начин писање програма сложенији и мање прихватљив за почетнике. 3
  5. 5. 1.Програмирање и програмски језик Бранкица Јокић 4 Console Application, се не изводи унутар класичног windows прозора, већ унутар поједностављене верзије са црном позадином. Недостатак овог начина писања програма је што тај облик прозора има мање могућности од класичног прозора. Предност му је што је једноставан и тиме прикладнији за почетнике у програмирању. Након инсталације програма могу се подесити одређене опције у менију Alati (слика бр.13) и подменију Izgled editora (слика бр.14). 3 5 Слика бр.13 Мени- Алати 6 7 Слика бр.11 Избор датотеке, имена и типа пројекта Избор датотеке у коју се снимају пројекти, Назив пројекта, може се бирати назив,нпр. “prviprojekat” или оставити понуђени назив Projekat1(слика бр.11). 7 Овдје се бира тип пројекта и то је Dev C++. 5 6 3.2 ПРОГРАМСКИ ПРОЗОР DEV C++ Слика бр.14 Подешавања изгледа Едитора 1 2 3 4 5 1 2 3 4 5 6 6 4 Слика бр.12 Изглед програмског прозора Насловна линија Линија менија Алатна линија Прозор пројекта Простор за едитовање Грешке,испис компајлера...
  6. 6. 1.Програмирање и програмски језик Бранкица Јокић Компајлирање и извршење програма Да би се извршио већ унесени програм потребно га је прије свега компајлирати. Kомпалација (енгл.Complile), је процес превођења виших програмских језика у машински, једини разумљив рачунару. У овом програмском окружењу су три битне наредбе за превођење програма: 1 2 Грешке у програму Често се дешава да након написаног програма у најмери да се изврши то не успијева јер су се појавиле одређене грешке. Довољна је и најмања грешка да би било онемогућено извршење и да се појави обавјештење као на сљедећој слици (слика бр.16): 3 1 Kompajliraj- програм преводи али га не покреће. Да би га покренули мора се након тога изабрати опцију 2- Pokreni. 2 Pokreni- Ова опција може се користити само ако је претходно програм преведен, односно компајлиран а жели се поново покренути. 3 Kompajliraj i pokreni- ова опција служи истовремено за превођење и покретање програма. Први пут се увијек користи ова опција. Кликом на Kompajliraj i pokreni започиње процес превођења и покретања програма. Након клика на Kompajliraj i pokreni може се пратити ток превoђења након чега се пограм покреће у новом прозору, као на сљедећој приложеној слици (слика бр.15): Слика бр.15 Извршење програма Програмски задатак је био исписивање површине правоугаоника за уне сене вриједности страница a и b . Текст Press any key to continue... рачунар је аутоматски исписао и њиме обавјештава да је довољно притиснути било који тастер на тастатури и прозор у коме се извршавао програм ће се затворити (слика бр.15). Слика бр.16 Изглед програмског кода са грешком Кад рачунар наиђе на грешку, процес превођења се зауставља и рачунар означава ред у коме је дошло до грешке. Истовремено се отвара прозор у коме се могу видјети додатне информације о уоченој грешци. Ту се може видјети и порука која предочава грешку и начин исправке исте. Означавање позиције грешке је прилично поуздано обзиром да рачунар практично не означава позицију грешке већ позицију на којој је грешка настала.У наведеном примјеру је настала грешка у 11 реду, на крају није унешена тачка зарез, тако да превођење није прешло у 12. ред односно тек у 12-ом реду је грешка примијећена. Означавање редова у којима је дошло до грешке је само груба орјентација а никако прецизан показатељ. Тек након отклоњене грешке може се кликнути на Kompajliraj i pokreni, након чега ће се програм превести и извршити. 5
  7. 7. 1.Програмирање и програмски језик Дакле, за писање изворног кода потребан је editor, за превођење изворног кода у извршни код потребан је kompajler, а да би се откриле грешке у програмском коду потребно је имати debugger. Како приликом писања програма треба користити три различите врсте програма, ти програми су уједињени у један програм и називају се IDE (Integrated Development Environment), интегрисано развојно окружење. 4. ЕЛЕМЕНТИ ПРОГРАМА у DEV C++  Кључни појмови: Изворни код, коментари, подаци и промјењиве, функције, оператори 4.1 ИЗВОРНИ КОД Комбинацијом наредби програмског језика настаје изворни код (engl.source code). Изворни код је могуће писати у било којем програму за уређивање текста (engl.text editor). Изворни код програма C++ спрема се у датотеку изворног кода под одређеним именом и наставком .cpp. Датотека изворног кода, наставка .cpp садржи наредбе које је написао програмер. На рачунару се може извршити само машински или извршни облик (енгл. executable). Резултат успјешно написаног и компајлираног програма је извршна датотека (.exe). Програм који повезује објектну датотеку с библиотекама и другим потребним датотекама назива се повезивач (engl. linker). Библиотеке су датотеке које садрже готове дијелове програма.Такви готови дијелови се могу користити и у другим програмима. Нпр. библиотека формула за израчунавање површине и запремине геометријских тијела. Тада се не морају сваки пут поново уносити формуле, већ их само укључути из по стојећих библиотека. Програмски језици користе имена како би се означиле различите цјелине које чине програм. Осим имена промјењивих овдје спадају и имена функција, типова промјењивих, макроа итд. Име треба да се састоји од једног или више карактера с тим да на првом мјесту не може бити број. Такође, и велика и мала слова се разликују, а не могу се користити ни имена одређених резервисаних ријечи, наредби у програмском језику C++. 6 Бранкица Јокић 4.2 СТРУКТУРА ПРОГРАМА #include<cstdlib> #include<iostream> Ове наредбе се пишу на почетку сваког C++ програма. На почетку програма се указује рачунару које библиотеке наредби треба користити Cstdlibје библиотека стандардних наредби. Постоји много библиотека наредби. Могло би се десити да се у двије различите библиотеке нађу двије наредбе истог назива, а различите намјене. Using namespace std; Овом наредбом се обавјештава преводиоц да ће се користити стандардни називи наредби. Int main() У C програмима је обавезна једна и само једна функција main(). Ова функција означава мјесто на коме почиње извршење програма. Након сваке наредбе стоји знак тачка-зарез (;) који означава крај једне и почетак друге наредбе (слика бр.17). Низ наредби груписаних у једну логичку цјелину представља блок наредби. Блок наредби налази се унутар витичастих заграда { }. cout<<"kolicnik je K="<<K<<endl;  Првом наредбом наређује се рачунару да текст под знацима навода испише на екран рачунара а другом, (<< endl) се наређује рачунару да пређе у нови ред. system("PAUSE"); Ова наредба зауставља програм док се не притисне неки тастер. Слика бр.17 Структура програма
  8. 8. Бранкица Јокић 1.Програмирање и програмски језик Треба напоменути да је организација меморије и кориштење адреса које се односе на податке веома важна за програмере, да би програм био користан мора комуницирати са улазно/излазним уређајима, тастатуром, монитором, диском итд. Сваки програм прима податке путем улазно/излазних токова и предаје резултат помоћу истих. Улазно/излазним токовима се рукује функцијама библиотеке iostream. То је библиотека која садржи низ улазно /излазних функција које омогућавају руковање улазно/излазним токовима. Cin i cout су двије функције које су најчешће у употреби. Слика бр.19 Функција cin  cin>>a>>b>>c>>d; Више улазних података може се уписати у истом реду, одвојени празнинама и тек на крају уноса притиснути Enter. Коментари Коментар је дио описног текста који даје поближе објашњење или неко тумачење, помаже ономе ко чита програм (слика бр.20). Слика бр.18 Функција cout Cout је функција која усмјерава податке на екран монитора. Испис се остварује помоћу оператора исписа (<<) (слика бр.18). Endl, ако се жели прегледнији испис тј. да се након исписа једног податка показивач пребаци на почетак новог реда онда се користи константа endl, која је такође сачувана у библиотеци iostream. Cin, је функција која усмјерава податке са тастатуре на улазни ток. Подаци се на улазни ток умећу помоћу оператора (>>) (слика бр.19). cin>>a>>b; Програм очекује унос са тастатуре који ће бити сачуван у промјењиву a и b. Слика бр.20 Коментари 4.3 ПОДАЦИ И ПРОМЈЕЊИВЕ Сваки програм који нешто ради садржи податке које обрађује. Ти подаци могу бити у облику промјењивих и константи. Промјењиве могу мијењати своју вриједност у току извођења програма. Свакој промјењивој се придружује неко име. Имена промјењивих могу садржати слова, бројеве и знак доње црте ( _ ). На почетку имена се мора наћи или слово или доња црта, а не број. За имена промјењивих се не могу користити кључне ријечи.Промјењиве заузимају одређени простор у меморији што зависи од њиховог типа. 7
  9. 9. 1.Програмирање и програмски језик Свакој се промјењивој, осим симболичког имена мора додијелити и ознака типа податка који ће у њу бити сачуван. По ознаци типа података рачунар “зна” колико мјеста у меморији треба предвидјети, који су распони вриједности те какве су операције с подацима те врсте могуће. Разликују се основни и остали типови података. У основне типове података спадају:  бројеви , цијели и реални,  знакови,  логички подаци,  константе. Ако је податак цијели број, његова је ознака int. Промјењивој означеној са int може се придружити само цио број. За снимање у меморији заузима 4 бајта или 32 бита. 1 Ако је податак реалан број, његова је ознака float. Промјењивој означеној са float може се придружити само реалан број. За снимање у меморији заузима 4 бајта или 32 бита. 2 Ако је податак знак, његова ознака је char. Промјењивој означеној са char може се придружити: 1.један знак унутар једноструких наводника char slovo1= 'A'; 2.ASCII вриједност тог знака char slovo2=65; За снимање у меморију предвиђен је 1 бајт или 8 бита. Бранкица Јокић Декларација података Радну меморију рачунара можете посматрати као дугачак низ једноставних података, бајтова од којих сваки има своју адресу. Декларацијом податка (промјењиве и константе) резервишете одређени простор у радној меморији рачунара, гдје ће бити у бинарном облику смјештена вриједност тог податка. Величина тог меморијског простора зависи о типу податка. Декларисане промјењиве и константе можемо посматрати као именоване меморијске просторе. Декларише се тако да се наведе тип података а након њега запише попис промјењивих одабраног типа одвојених зарезом и на крају тачка- зарез (;). int c,d,e; 4. 4 ОПЕРАТОРИ Оператори су симболи који представљају (замјењују) одређене функције. У C++ је дефинисано неколико скупова оператора:  Аритметички оператори  Логички оператори  Релацијски (оператори поређења)  Остали оператори 1 Аритметички оператори Funkcija + Sabiranje Логички подаци су подаци који могу попримити само једну од двије могуће вриједности. Промјењива која је погодна за снимање логичког податка је типа bool. Такав тип промјењиве може попримити вриједност само true (1) или false (0). 3 Operator Oduzimanje * Množenje / Dijelenje % Ostatak cjelobrojnog dijelenja 2 Константе У програмима се често користе величине чије се вриједности у току програма не смију мијењати. Такве величине се називају константе. Када се у коду користе бројевне константе, снимају се у облику једног од основних бројевних типова података, реални- double а цјелобројни - int. Логички оператори 4 8 Oznaka Funkcija Operator ! Negacija NOT || Logički ILI OR && Logički I AND
  10. 10. 1.Програмирање и програмски језик Бранкица Јокић 3 Релацијски- оператори поређења Подаци се могу поредити, а резултат поређења је податак типа bool. Ако је написани израз истинит резултат поређења је 1(true), а ако није, резултат ће бити 0 (false). Оператори поређења се најчешће користе у наредбама гранања. Operator Funkcija < Manje <= Manje jednako > Veće >= Veće jednako == Jednako != Različito 4.5 МАТЕМАТИЧКЕ ФУНКЦИЈЕ На располагању је много припремљених готових функција разврстаних у одређене библиотеке. Већина математичких функција налази се у библиотеци cmath. Ако желите користити неке од тих функција те библиотеке морате их укључити наредбом #include. Неке од тих функција ће бити неопходне у рјешавању ваших математичких проблема на рачунару, као нпр. Rezultat=pow(x,potencja); степеновање броја Rezultat=abs(x); апсолутна вриједност броја Rezultat=sqrt(x); квадратни коријен броја 5. ПРОГРАМИРАЊЕ У DEV C++  IF,Кључни појмови: -CASE, IF -ELSE, SWITCH GOTO 5.1 ЛИНЕАРНЕ СТРУКТУРЕ   Вјежба 1. алгоритам тока и Нацртајте напишите програм “Zbir” који рачуна суму два унесена броја. Улаз: 5,7 Излаз: Suma brojeva je 12 1 Анализа проблема: У сваком скупу бројева може се извршити рачунска операција сабирања. За било која два унесена броја на излазу ће увијек постојати збир. Збир било која два броја а и b можете писати као: Z=a+b Дакле: Почетак:Требате израчунати збир бројева! Улаз:Нека су вам а и b непознате. Обрада: Z=a+b Излаз:Извршењем програма требате добити испис нпр. (за а=5, b=7) Излаз: 12 Крај: Крај програма! 2 Израда алгоритма: Користећи графичке симболе за изрдау алгоритма направите дијаграм тока рада вјежбе. Серијским повезивање основних алгоритамских корака настаје линијска алгоритамска структура. Сваки корак се извршава само једном, након извршења једног, извршава се сљедећи и тако редом. Линијска структура се састоји од:  Улаза  Обраде и  Излаза ПОЧЕТАК a, b Z=a+b Z Слика бр.21 Функције у програмском коду КРАЈ 9
  11. 11. 1.Програмирање и програмски језик 3 Бранкица Јокић Писање програмског кода: Креирање новог пројекта Раније сте већ упозна ли начин креирања новог пројекта. Потребно је прије свега, креирати једну датотеку, у коју ћете смјештати све ваше пројекте програмиране у Dev C++. Нека се датотека зове “MOJI PROJEKTI” а снимите је у My Documents. Вашем првом пројекту дајте назив “Zbir” (слика бр.22) и (слика бр.23). 1 2 3 #include <cstdlib> #include <iostream> using namespace std; int main() { int a,b,S; cout<<"Unesi sabirak a="; cin>>a; cout<<"Unesi sabirak b="; cin>>b; S=a+b; cout<<"Suma brojeva je S="; cout<<S << endl; cout<< endl; system("PAUSE"); } 4 Компајлирање и 4 извршење програма 5 Слика бр.22 Креирање новог пројекта 7 6 Слика бр.23 Одређивање типа датотеке и снимање Након што сте сачували овај код треба га компајлирати. Кад први пут покрећете програм бирате опцију Kompajliraj i pokreni (F11). Након стартања процеса компајлирања, појављује се прозор са порукама које прате процес компајлирања. Dev C++ даје поруку у случају да наиђе на било какву грешку у програму. У случају да нема грешака ствара се извршна датотека која се назива Zbir.exe. Програм ће се покренути у новом прозору гдје ћете извршити тестирање вашег програма (слика бр.23). Програм је могуће покренути и ван Dev C++ окружења, двоструким кликом на извршну датотеку Zbir.exe. Да бисте се лакше снашли у вашем програму подијелићете га на неколико цјелина. Ово је почетак програма, #include <cstdlib> и ове наредбе писаћете на #include <iostream> почетку сваког вашег using namespace std; програма, касније ћете ту int main() додавати још неке наредбе. { int a,b,S; cout<<" nesi sabirak a=" U ; cin>>a; Овдје је главни дио cout<<" nesi sabirak b=" програма и у њему U ; се одређује шта ће cin>>b; ваш програм радити S=a+b; cout<<" uma brojeva je S=" S ; cout<<S << endl; Ово су наредбе које cout<< endl; представљају крај system("PAUSE" ) ; програма. } 10 Слика бр.23 Извшење програма “Zbir” Отварање постојећег програма у Dev C++ Раније снимљене програме пронаћи ћете избором: Datoteka/Otvori datoteku (слика бр.24), након чега се отвара прозор у коме можете бирати тражени програм. 1 2 Слика бр.24 Отварање постојећег програма
  12. 12. Бранкица Јокић 1.Програмирање и програмски језик  Вјежба 2.  Напишите програм «Pravougaonik» који рачуна и исписује површину и обим правоугаоника. Улаз: 5,7 Излаз: P=35 O=24 #include <cstdlib> #include <iostream> using namespace std; int main() { int a,b,P,O; cout<<"unesi stranicu a="; cin>>a; cout <<"Unesi stranicu b="; cin>>b; P=a*b; O=2*a+2*b; cout<<"P="<<P; cout<<endl; cout <<"O="<<O; cout<<endl; system("PAUSE"); Слика бр.26 Код програма “Krug” Програм се не може извршити нити компајлирати, обавјештава вас да постоји грешка. Потребно је грешку отклонути, односно варијаблама додијелити ознаку float јер ће и рјешење бити реалан број. Покренете ли тај програм добићете исправан резултат. } Слика бр.25 Извшење програма «Pravougaonik» У претходна два случаја промјењиве или варијабле сте означили са int што значи да им је у меморији наредбом cin придружен цијели број. Може ли се написати програм за обим круга а да се варијабле означе са int?  Вјежба 3.  Напишите програм «Obim kruga» који рачуна и исписује обим круга за унесену вриједност полупречника r ако је pi=3.14 Требате имати у виду, да ваш програм децимална мјеста не одваја зарезом него тачком. Значи, ако желите унијети 3,14 онда ћете унијети 3.14 преко тастатуре. Слика бр.27 Код и извршење програма “Krug” У простор формиран int наредбом могу се сачувати само бројеви без децималног зареза (цијели бројеви), а у просторе формиране float наредбом можу се сачувати бројеви са децималним зарезом. Тачка-зарез (;) долази послије сваке наредбе и у противном програм се неби компајлирао и извршио. 11
  13. 13. 1.Програмирање и програмски језик  Вјежба  Напишите4. програм «Kolicnik» који рачуна и исписује колицник два унесена броја. Улаз: 7,5 Излаз: Сума бројева је :3.5 Бранкица Јокић P=pow(a,x);  P- промјењива у коју спремате резултат степеновања,  pow- наредба за степеновање,  а- број који степенујете,  x- степен на који степенујете. #include <cstdlib> #include <iostream> using namespace std; int main() { float a,b,K; cout<<"unesi broj a="; cin>>a; cout<<endl; cout<<"unesi broj b="; cin>>b; K=a/b; cout<<endl; cout<<"kolicnik je K="; cout<<K; cout<<endl; system("PAUSE"); } Слика бр.29 Код и извршење програма «Kоcka» Слика бр.28 Код и извршење програма «Kоlicnik»   Вјежба 6. програм «Dijagonala Напишите Програм можете начинити прегледнијим уметањем празних редова cout<<endl; . pravougaonika» који рачуна и исписује величину дијагонале правоугаоника . Улаз: a=3,b=7 Излаз:d=7,61577  Вјежба 5.  Напишите програм «Kocka» који рачуна и исписује површину коцке . Улаз: a=3 Излаз:P=54 Анализирајући наметнути проблем увидјећете да за површину и запремину коцке можете користити одређене функције. Да би сте их могли користити морате уврстити библиотеку која их садржи. Већина математичких функција налази се у библиотеци cmath наредбом #include. 12 r=sqrt(x);  r-промјењива у коју спремате резултат степеновања,  sqrt-наредба за израчунавање квадратног коријена  x-промјењива у коју спремате број чији коријен желите израчунати d=sqrt(a*a+b*b);-дијагонала правоугаоника
  14. 14. Бранкица Јокић #include <cstdlib> #include <iostream> #include <cmath> using namespace std; int main() { float a; float b; float d; cout<<"unesi stranicu pravougaonika a="; cin>>a; cout<<endl; cout<<"unesi stranicu pravougaonika b="; cin>>b; cout<<endl; d=sqrt(a*a+b*b); cout<<"dijagonala pravougaonika je"<<" "; cout<<d<<endl; return 0; } Слика бр.29 Код и извршење програма «Dijagonala»   Вјежба 7. програм «Apsolutna Напишите vrijednost broja» који рачуна и исписује апсолутну вриједнист унесеног броја. Улаз: -25 Излаз: Апсол. вриј .броја је :25 #include <cstdlib> #include <iostream> #include <cmath> using namespace std; int main() { int x,A; cout<<"unesi neki cio broj x="; cin>>x; cout<<endl; A=abs(x); cout<<"apsolutna vrijednost broja je"<<" "; cout<<A<<endl; return 0; } Слика бр.30 Апсолутна вриједност броја 1.Програмирање и програмски језик 5.2 РАЗГРАНАТЕ СТРУКТУРЕ Слика бр.31 Испитивање услова-доношење одлуке Понекад и није тешко донијети одлуку у избору, игра је увијек добар избор. Али, и школске обавезе чекају, ако поново изаберете игру, па опет игру...лако би могли зарадити и лошу оцјену. Како се и сами у свакодневним својим обавезама нађете у недоумици приликом одређеног избора, тако ће вам се често наметнути и проблем у задатку, гдје је потребно испитати услов, извршити избор, односно донијети одлуку. Условна наредба За рјешавање већине задатака потребне су сложеније програмске структуре код којих редослијед извршавања наредби зависи о вриједностима података који се обрађују. Гранање је програмска структура која омогућава различит ток програма, у зависности о резултату постављеног услова. Ово је веома важна структура јер би без ње могућности рјешавања задатака на рачунару биле јако ограничене. Дијелови програма који се условно изводе групишу се у скупине или блокове наредби. Сваки блок наредби ограничен је паром витичастих заграда ({}). Ако блок наредби има само једну наредбу, заграде се могу изоставити. Блокови наредби се обично пишу увучено због прегледности. 13
  15. 15. 1.Програмирање и програмски језик Бранкица Јокић #include <cstdlib> #include <iostream> using namespace std; Наредбе гранања су:  If,  If-else,  If-else if-else  Switch- case. 5.2.1 Једноструко гранање У овој алгоритамској структури постоје алгоритамски кораци који се једном изврше, а постоје и они који се уопште не изврше. Ако је услов испуњен извршиће се наредба1, а ако услов није испуњен извршиће се сљедећа линија програма (слика бр.30). Услов може бити било који аритметички или логички израз. Блок наредби може имати једну или више наредби. int main() { int x; cout<<"unesi neki cio broj x="; cin>>x; cout<<endl; if (x>0) { cout<<"broj je pozitivan"<<endl; } if (x<0) { cout<<"broj nije pozitivan"<<endl; } return 0; } Слика бр.31 Испитивање цијелих бројева if (наредба) { блок наредби } нарeдба иза блока 5.2.2 Вишеструко гранање  Вјежба  Напишите8.програм «Cijeli brojevi» који испитује а потом исписује да ли је унесени број позитиван . Улаз: -25 Излаз: broj nije pozitivan. Вишеструко условно гранање омогућава испитивање два и више услова. Зависно о испуњења услова изводи се одговарајући блок наредби. Ако је било који услов истинит извршава се блок наредби придружен том услову, док се сви остали блокови наредби прескачу. Дијаграма тока приказан је на слици бр. 32. ПОЧЕТАК ПОЧЕТАК X b b>0 ДА X>0 НЕ ДА ДА pozitivan nije poz КРАЈ Слика бр.30 Разграната алгоритамска структура 14 НЕ позитиван негативан X<0 НЕ нула КРАЈ Слика бр.32 Вишеструка разграната структура
  16. 16. 1.Програмирање и програмски језик Бранкица Јокић if (услов 1) { први блок наредби } else if (услов 2) { други блок наредби } ...................................... else { задњи блок наредби } наредба иза блока 5.2.3 Switch case наредба Ова наредба замјењује низ узастопних IF наредби.Такве примјере треба рјешавати вишеструким гранањем користећи наредбу SWITCH CASE. switch (услов ) { case(константа1): први блок наредби break; case(константа2): други блок наредби break; case(константа3): трећи блок наредби break; ....................... default: задњи блок наредби  Вјежба 9.  Напишите програм “Cijeli brojevi” који испитује а потом исписује да ли је унесени број позитиван, негативан или нула. . Улаз: -25 Излаз: broj je negativan. #include <cstdlib> #include <iostream> using namespace std; int main() { int x; cout<<"unesi neki cio broj x="; cin>>x; cout<<endl; if (x>0) { cout<<"broj je pozitivan"<<endl; } else if (x<0) { cout<<"broj je negativan"<<endl; } else { cout<<"broj je nula"<<endl; } system("PAUSE"); } } За разлику од вишеструког условног гранања код кога је услов аритметички или логички израз, у наредби Switch case услов је цјелобројни израз или цјелобројна промјењива. Резултат израза такође мора бити цијели број. IZRAZ U1 U2 blok 1 blok 2 U3 blok 3 Un blok n inače blok 0 Слика бр.34 Switch case структура Слика бр.33 Вишеструко разграната структура По завршетку извршног блока, наредба break; прекида извршење switch- case блока наредби и наставља програм првом наредбом након switch -case блока. Ако вриједност услова није једнака нити једној од понуђених константи, извршава се блок наредби придружен наредби default: Цјелокупан switch -case блок записује се унутар пара витичастих заграда ({}). 15
  17. 17. 1.Програмирање и програмски језик  Вјежба 10.  Напишите програм «Dani u sedmici» који за унесени редни број од 1 до 7 исписује дан у седмици. Улаз: 1 Бранкица Јокић   Вјежба 11. Напишите програм «Računske operacije» који за унесени знак рачунске операције сабира, одузима, множи или дијели два унесена броја. Излаз: ponedjeljak Улаз: 2,5, + #include <cstdlib> #include <iostream> using namespace std; int main() { int od; cout<<"unesite brojeve 1 do 7"<<endl; cout<<endl; cin>>od; switch (od) { case 1: cout<<"ponedjeljak"<<endl; break; case 2: cout<<"utorak"<<endl; break; case 3: cout<<"srijeda"<<endl; break; case 4: cout<<"cetvrtak"<<endl; break; case 5: cout<<"petak"<<endl; break; case 6: cout<<"subota"<<endl; break; case 7: cout<<"nedjelja"<<endl; break; default: cout<<"greska,morate unijeti brojeve od 1 do 7"<<endl; } system("PAUSE"); } Излаз: 7 #include <cstdlib> #include <iostream> using namespace std; int main() { int a,b; char op; cout<<"unesi brojeve a i b"<<endl; cin>>a>>b; cout<<"unesi znak za rac operaciju"<<endl; cin>>op; switch (op) { case '+': cout<<"zbir je"<<a+b<<endl; break; case '-': cout<<"razlika je "<<a-b<<endl; break; case '*': cout<<"proizvod je"<<a*b<<endl; break; case'/': cout<<"kolicnik je"<<a/b<<endl; break; default: cout<<"samo 4 osnovne racunske operacije,sve ostalo je greska"<<endl; } system("PAUSE"); } Слика бр.34 Код и извршење програма «Dani u sedmici» 16 Слика бр.34 Код и извршење програма «Računske operacije»
  18. 18. 1.Програмирање и програмски језик Бранкица Јокић   Вјежба 12. Напишите програм «Test» који за унесени редни број бодова исписује оцјену. Улаз: 21 Излаз: dovoljan БОД ЛИСТА 0-20, nedovoljan 21-40, dovoljan 41-60, dobar 61-80,vrlodobar 81-100, odlican #include <cstdlib> #include <iostream> using namespace std; int main() { cout <<"Unesite broj bodova (0 - 100): "; int br_bodova; cin >>br_bodova; br_bodova = (br_bodova - 1) / 20; switch (br_bodova) { case 0: cout<< "NEDOVOLJAN"; break; case 1: cout<< "DOVOLJAN"; break; case 2: cout<< "DOBAR"; break; case 3: cout<< "VRLO DOBAR"; break; case 4: cout<< "ODLICAN"; break; } 5.2.4 Наредба безусловног скока GOTO наредба је наредба безусловног преласка на дефинисани ред. Често се користи за услове и тада је условна. Наставља ток програма од линије кода која садржи ознаку као и GOTO наредба. Наредба од које се жели наставити одвијање програма, може бити било гдје у програму.  Вјежба  Напишите13. програм «Skok» који за унесени број испитује и исписује дали је позитиван или негативан . Улаз: 0 Излаз: pogresan unos,ponovi. #include <cstdlib> #include <iostream> using namespace std; int main() { int a; skok: cout <<"unesi broj razlicit od nule" " ";cin>>a; if(a==0) { cout<<"pogresan unos,ponovi!"<<endl; goto skok; } if (a>0) { cout<<"broj je pozitivan"<<endl; } else if (a<0) { cout<<"broj je negativan"<<endl; } cout<< endl, system("PAUSE"); } cout <<endl; system("PAUSE"); } Слика бр.35 Код и извршење програма «Skok» Слика бр.34 Код и извршење програма «Test» 17
  19. 19. 1.Програмирање и програмски језик Бранкица Јокић 5. 3 ПРОГРАМСКЕ ПЕТЉЕ  Кључни појмови: x=pocetak FOR, WHILE, DO -WHILE Често се дијелови програма требају извршити више пута. Структура која то омогућава назива се програмска петља. Програмском петљом дијелови програма се могу понављати унапријед задани број пута или све док одређени услов није испуњен. Петље се у програму остварују наредбама :  for,  while,  do-while. 5.3.1 FOR-бројачкa програмскa петља FOR петља се најчешће користи ако се дијелови програма ( блокови наредби ) понављају унапријед познати број пута. услов није испуњен x<=kraj uslov услов испуњен blok naredbi x=x+korak Слика бр.36 Дијаграм тока бројачке петље for ( x=pocetak ; x<=kraj ; x=x+korak ) 1 овдје се дефинише почетна вриједност промјењиве коју користи for наредба. 2 дио програма ће се извршавати све док је овај услов задовољен. 3 овдје се дефинише начин на који ће се промјењива мијењати. Вриједност бројача ће се повећавати за 1 ако другачије није задано, до вриједности “крај”. У бројачкој петљи критериј за излазак из петље је број понављања циклуса. Кад бројач постане мањи од крајње вриједности излази се из петље. for ( x=pocetak ; x<=kraj ; x=x+korak ) { blok naredbi } #include <cstdlib> #include <iostream> using namespace std; int main() { int k,p,i; cout<<"unesi granicne vrijednosti intervala k i p"<<endl; cin>>k>>p; cout<<"brojevi iz intervala su"<<endl; for(i=k;i<=p;i=i+1) cout<<i<<endl; cout<<endl; system("PAUSE"); return EXIT_SUCCESS; } naredba iza bloka Испитивање услова излаза из петље је на почетку. То значи да постоји могућност да се блок наредби не изведе нити једном.  Вјежба 14.  Напишите програм”Brojacka1" који исписује све бојеве у заданом интервалу. Улаз:3 9 Излаз: 3 4 5 6 7 8 9 18 Слика бр.37 Извршење програма ”Brojacka1" бројачке петље
  20. 20. Бранкица Јокић  Вјежба 15.  Напишите програм”Zbir cifara” који исписује збир цифара из заданог интервала. Улаз:25 39 Излаз: 480 1.Програмирање и програмски језик S=0; for(i>=k;i<=p;i=i+1) if(i%2==0) S=S+i; cout<<S<<endl; cout<<endl; system("PAUSE"); return EXIT_SUCCESS; } #include <cstdlib> #include <iostream> using namespace std; int main() { int p,k,i,s; cout<<"unesi granicne vrijednosti intervala p i k"<<endl; cin>>p>>k; s=0; for(i=p;i<=k;i=i+1) s=s+i; cout<<"suma je"<<" "; cout<<s<<endl; system("PAUSE"); return EXIT_SUCCESS; } Слика бр.39 Извршење програма ”Zbir parnih”  Вјежба 17. Напишите програм”Najveci djelilac”који исписује највећи заједнички дјелилац два унесена броја. Улаз: 12 34 Излаз: 2 #include <cstdlib> #include <iostream> using namespace std; Слика бр.38 Извршење програма ”Zbir cifara”  Вјежба 16.  Напишите програм”Zbir parnih” који исписује збир парних бројева из заданог интервала. Улаз: 2 17 Излаз: 12 int main() { int M,N,i,max; cout<<"unesi cijele brojeve M iN"<<endl; cin>>M>>N; for(i=1;i<=M;i++) if((M%i==0) && (N%i==0)) max=i; cout<<max<<endl; system("PAUSE"); return EXIT_SUCCESS; } #include <cstdlib> #include <iostream> using namespace std; int main() { int k,p,i,S; cout<<"unesi k="; cin>>k; cout<<"unesi p="; cin>>p; cout<<"suma parnih u zadanom intervalu je S="; Слика бр.40 Извршење програма ”Najveci djelilac” 19
  21. 21. 1.Програмирање и програмски језик Бранкица Јокић  Вјежба 18. Напишите програм: 5.3.2 While петља Петља While се најчешнајчешће користи ако број понављања петље није унапријед познат, него зависи о испуњењу заданог услова. Основни облик While петље је: while (услов) { а)”Ispis do n” , исписује све природне бојеве, б)”Suma do n”, рачуна и исписује суму до n. а) Улаз:1 5 б) Улаз:1 5 Излаз: 1 2 3 4 Излаз:S= 15 а) блок наредби } наредба иза блока Код ове врсте петљи услов се испитује на почетку, а блок наредби петље се понавља све док је услов истинит (различит од 0). Када услов постане неистинит (false, 0), програм се наставља првом наредбом иза петље. Услов може бити промјењива, аритметички израз или логички израз. Како се код петље while услов испитује на почетку може се догодити да се блок наредби у петљи не изврши нити једном. #include <iostream> #include <cstdlib> using namespace std; int main() { int i,n; cout<<"Unesi n, n="; cin>>n; i=1; cout<<"brojevi manji od" " " << n <<"" " su:"<<endl; while (i<n) { cout<<i; i++; } return 0; } Слика бр.42 а)Извршење програма ”Ispis do n” б) USLOV NE DA blok naredbi Слика бр.41 Дијаграм тока While петље Пошто петља for и while имају испитивање услова на почетку вриједи да се свака програмска петља for може замијенити петљом while и обрнуто. Када ће се користити која петља зависи од самог програмера и његових навика. #include <iostream> #include <cstdlib> using namespace std; int main() { int i,n,s; cout<<"Unesi n, n="; cin>>n; i=1; s=0; while (i<n) { s=s+i; i++; } cout<<"suma do" " "<<n<<"" "je,S="" " <<s; return 0; } Слика бр.42 б)Извршење програма ”Suma do n” 20
  22. 22. Бранкица Јокић  Вјежба 19.  Напишите програм”Cifre broja” који издваја и исписује цифаре унесеног броја почев од јединица. Улаз:3025 Излаз: 5 2 0 3 #include <iostream> #include <cstdlib> using namespace std; int main() { int i,n; cout<<"Unesi N"<<endl; cin>>n; while (n>0) { i=n%10; n=n/10; cout<<i<<endl; cout<<endl; } return 0; } Слика бр.43 Извршење програма ”Cifre broja”  Вјежба 20.  Напишите програм”Broj parnih” који броји и исписује број парних бројева до унесеног броја n. Улаз:9 Излаз: 4 1.Програмирање и програмски језик while (i<=n) { i=i+2; br=br+1; } cout<<"parnih brojeva ima "" " <<br; return 0; } Слика бр.44 Извршење програма ”Broj parnih”  Вјежба  Напишите 21. програм”Ispisi i br. parnih” који исписује парне бројеве и њихов број до унесеног броја n. Улаз:9 Излаз: 2 4 6 8 Улаз:9 Излаз: 4 #include <iostream> #include <cstdlib> using namespace std; int main() { int i,n,br; cout<<" Unesi N"" " ; cin>>n; i=2; br=0; while (i<=n) { cout<<i<<endl; i=i+2; br=br+1; } cout<<" parnih brojeva ima "" " <<br; return 0; } #include <iostream> #include <cstdlib> using namespace std; int main() { int i,n,br; cout<<"Unesi N"" " ; cin>>n; i=2; br=0; Слика бр.45 Извршење програма ”Ispis i br. parnih” У ова два извршења програма обратите пажњу на начин исписа излазних података наредбом cout<<i<<endl; и cout<<i; . 21
  23. 23. 1.Програмирање и програмски језик 5.3.3 Do-while петља У овој петљи блок наредби се изводи све док је услов испуњен, а извешће се бар једанпут без обзира на тачност услова. Улслов се испитује након извођења блока наредби петље. У овоме и јесте основна разлика између петљи for и while, и петље do while. blok naredbi USLOV NE DA Слика бр.46 Дијаграм тока Do while петље   Вјежба 22. Напишите програм”Suma parnih” који исписује збир парних бројева до броја n. Користите петљу do while! Улаз:9 Излаз: 20 #include <iostream> #include <cstdlib> using namespace std; int main() { int n,i,suma; cout << "Do broja: "<<endl; cin>>n; i=2; suma=0; do { suma+=i; i+=2; }while(i<=n); cout<<"Suma: "<<suma<<endl; return 0; } Слика бр.47 Извршење програма ”Suma parnih” 22 Бранкица Јокић   Вјежба 23. Напишите програм”Najveci broj” који уноси бројеве све док не унесете 0 а потом исписује највећи међу унесеним бројевима. Користите петљу do while! Улаз: Излаз: #include<iostream> #include<cstdlib> using namespace std; int main() { int b,max; cout<<endl<<"Nakon posljednjeg broja unesi 0."<<endl; cout<< "Unesi prirodni broj: "; cin>>b; max=b; do { if(b>max) { max=b; } cout<<"Unesi prirodni broj: "; cin>>b; } while(b>0); cout<<endl<<"Najveci broj je: "<<max<<endl; return 0; } Слика бр.47 Извршење програма ”Najveci broj” У овом програму је потребно унијети n природних бројева, број n није унапријед познат, већ се унос врши све док не унесете 0. Дакле, петља ће се понављати све док се уносе бројеви већи од 0, while(b>0);. По уносу броја 0 петља се завршава а највећи број је снимљен у промјењивој max, како сте и дефинисали у вашем програму.
  24. 24. 1.Програмирање и програмски језик Бранкица Јокић 5.4 НИЗОВИ У програмима се често користе скупови података истог типа који представљају цјелину, нпр. списак ученика једног разреда. Сваком ученику на списку одговара и један редни број, па вас наставник не мора прозвати по имену, једноставно то може учинити и по редном броју у списку, односно у дневнику. Ваш списак ученика има и заједничко име, број разреда и одјељење (9.4). Такав начин организације података у програмирању омогућавају низови (поља). Низ је коначни скуп података истог типа који представља цјелину. Чине га елементи низа.  Положај елемента у низу се приказује индексом,  Индекс је број између 0 и n-1, при чему n означава број елемената,  Индекс може бити цјелобројна константа, цјелобројна промјењива или цјелобројни израз,  Н и з з ау з и м а ко н т и н у и р а н и с к у п меморијских локација у меморији. Низови могу бити: 1 једнодиментионални 2 вишедимензионални. Примјер једнодимензионалног низа niz[0] int niz[5]; niz[0]=4; niz[1]=9; niz[2]=7; niz[3]=5; niz[4]=6; niz[1] 4 9 niz[2] niz[3] niz[4] 7 5 6 Код издвајања чланова низа, индекс члана низа може ити задан као: 1 X[9] цјелобројна константа, 2 X[a] цјелобројна промјењива, 3 X[a*4+1] цјелобројни израз.    Вјежба 24. Напишите програм”Clanovi niza” који исписује све елементе заданог низа. Улаз: int X[6] = {2,34,1,67, 99,7} Излаз:A[0]=2 A[1]=34 A[2]=1 A[3]=67 A[4]=99 A[5]=7 #include <iostream> #include <cstdlib> Једнодимензионални низови using namespace std; Општи облик декларације низа је: tip_niza_ ime_niza[dimenzija] int main () { int i; int A[6]={2,34,1,67,99,7}; for(i=0;i<6;i++) { cout<<"A["<<i<<"]="<<A[i]<<" "; } cout<<endl; return 0; tip_niza- представља један од типова података у C-у (int, float, double,...), ime_niza- представља идентификатор поља, dimenzija- представља дужину поља (број елемената поља). Примјери декларације поља: }   int niz[10]; низа који садржи 10 цијелих бројева  char b[10]; низ b који садржи 10 знакова  float x[20], y[10]; низ x који садржи 20 реалних бројева и низ y који садржи 10 реалних бројева. Слика бр.48 Извршење програма ”Clanovi niza” 23
  25. 25. 1.Програмирање и програмски језик Бранкица Јокић   Вјежба 25.  Вјежба 26. Напишите програм”Niz3” који исписује Напишите програм”Niz2”који исписује n елемената заданог низа . Улаз: n=5 2 7 9 6 3 Излаз: n елемената заданог низа. Улаз:n=5 Unos elemenata niza:5 4 9 7 22 Излаз:5 4 9 7 22 A[0]=2 A[1]=7 A[2]=9 A[3]=6 A[4]=3 #include <iostream> #include <cstdlib> using namespace std; int main () { int i; int A[100],n ; cout<<"Koliko clanova niza n="; cin>>n; for(i=0;i<n;i++) { cin>>A[i]; cout<<endl; cout<<"A["<<i<<"]="<<A[i]<<" "<<endl; } cout<<endl; return 0; #include <iostream> #include <cstdlib> using namespace std; int main() { int niz[100]; int i,x; cout<<"Koliko clanova niza zelite x= "; cin>>x; cout<<"Unos elemenata niza"<<endl; for(i=0;i<x;i++) { cin>>niz[i]; } cout<<"Ispis elemenata niza"<<endl; for(i=0;i<x;i++) cout<< " "<<niz[i]<<" " ; return 0; } Слика бр.50 Извршење програма ”Niz2”   Вјежба 27. програм”Suma” који Напишите исписује n елемената заданог низа. Улаз:n=5 Unos elemenata niza:5 4 9 7 22 Излаз:47 } Слика бр.49 Извршење програма ”Niz2” Дужина декларисаног низа се не може мијењати у току извођења програма, а мора бити већа или једнака броју чланова низа. Ако је декларисана дужина низа већа од броја чланова којима је придружена вриједност, преосталим се члановима придружује вриједност 0. 24 #include <iostream> #include <cstdlib> using namespace std; int main() { int i,x,s; cout<<" x= "; cin>>x; int niz[x]; cout<<"Unos elemenata niza"<<endl; s=0; for(i=0;i<x;i++) { cin>>niz[i]; s=s+niz[i]; } cout<<"S= "<< s; return 0; } Слика бр.51 Извршење програма ”Suma”
  26. 26. Бранкица Јокић   Вјежба 28. Напишите програм”Niz4” који исписује n елемената заданог низа. Испис низа нека буде сортиран растућим редослиједом. Улаз:n=5 Unos elemenata niza:22 7 5 4 9 Излаз:4 5 7 9 22 #include <cstdlib> #include <iostream> using namespace std; int main() { int i,j; int n; cout<<"Unesi broj clanova niza "; cin>>n; int niz[n]; cout<<"Unesel emenata niza"<<endl; for (i=0;i<n;i++) { cin>>niz[i]; } for (i=0;i<n;i++) for (j=i+1;j<n;j++) if (niz[i]>niz[j]) swap (niz[i],niz[j]); cout<<"Niz u rastucem redosljedu"<<endl; for (i=0;i<n;i++) cout<<niz[i]<<endl; system ("PAUSE"); return 0; } 1.Програмирање и програмски језик  Вјежба  Напишите29. програм”Najmanji” који исписује n елемената заданог низа. А потом провјерава и исписује најмањи члан низа. Улаз:n=5, 22 7 5 4 9 Излаз:Najmanji je 4 #include <cstdlib> #include <iostream> using namespace std; int main() { int N,i, j, min; cout<<"Unesi N:"; cin>>N; int niz[N]; cout<< "Unesite clanove niza "<<endl; for(i = 0; i < N; i++){ cin>> niz[i]; } min=niz[0]; // traženje najmanjeg for(i = 0; i < N; i++) if(niz [i] < min){ min = niz[i]; } cout<< " Najmanji je:"<<min<<endl; system ("PAUSE"); return 0; } Слика бр.53 Извршење програма ”Najmanji” У раду са низовима треба имати у виду да Слика бр.52 Извршење програма ”Niz4” Сортирање низова представља операцију која се ослања на интензивном размјењивању позиција појединих елемената низа са циљем њиховог довођења у тражени поредак. Функција “swap” која врши размјену два своја параметра постоји у стандардној библиотеци. (niz[i]>niz[j]) swap (niz[i],niz[j]) C++ не провјерава границе низа приликом приступа елементима низа. Ако се наведе превелик или негативан индекс, преводилац неће јавити грешку и при извршењу програма приступиће се меморијској адреси која није у подручју резервисаном за низ. То би проузроковало неисправан рад програма. Ако се издваја елемент с недозвољеним индексом резултат је случајан број. Ако се вриједност придружује елементу с недозвољеним индексом вриједност ће се снимити у меморију на мјесто предвиђено за друге садржаје што би проузроковало погрешан рад програма. 25
  27. 27. 1.Програмирање и програмски језик 5.5 СТРИНГОВИ- РАД СА ТЕКСТОМ Након бројева, стрингови су сљедећи најчешће кориштени типови података у многим програмима. У C++ програмском језику стринг се посматра као низ знакова типа char с тим да се први знак води као елемент број 0. Да би се радило са стринговима потребно је додати библиотеку <string>. Стрингови садрже ASCII знакове и пишу се под наводницима. За рад с низом знакова може се користити тип string или char. Тип string се користи у случају када се ради с ријечима или реченицама, док тип char само када се ради са једним знаком. Дефинишете ли поље или низ знакова типа char, такође ћете моћи радити с ријечима или реченицама. При раду с типом string на почетку програма потребно је извршити декларацију промјењиве наредбом: string ime_promjenjive; Наредбом string програм ће исписати само једну ријеч унесеног текста.  Вјежба 30. Напишите програм”Rijec” који исписује унесени текст. Улаз:Marko Излаз:Marko Бранкица Јокић Како се наредбом string врши испис само једне ријечи, постоји посебна наредба којом се може исписати читава реченица или дио текста. getline(cin, ime_varijable);  Вјежба 31. Напишите програм”Recenica” који исписује унесени текст. Улаз:Marko Markovic Излаз:Marko Markovic Излаз:Marko  Улаз:Danas je vreo ljetni dan. Излаз:Danas je vreo ljetni dan. #include <cstdlib> #include <iostream> #include <string> using namespace std; int main() { string recenica; /*deklaracija stringa (niza znakova) za promjenjivu recenica*/ cout <<"Unesi recenicu = "; getline(cin,recenica); /*unos rečenice pomoću naredbe getline*/ cout <<recenica<<endl; system ("PAUSE"); return 0; } Улаз:Marko Markovic Излаз:Marko #include <cstdlib> #include <iostream> #include <string> using namespace std; int main() { string ime; /*deklaracija stringa (niza znakova)*/ cout <<"Unesi svoje ime ="; cin >> ime; cout <<"Tvoje ime je "<<ime<<endl; system ("PAUSE"); return 0; } Слика бр.54 Извршење програма ”Recenica” Низ знакова се може дефинисати као једнодимензионални низ чији су елементи знакови char. Знаковни низ се декларише као и сваки једнодимензионални низ, навођењем типа char, имена низа и његове дужине. Код одређивања дужине низа знакова треба водити рачуна о томе да низ знакова завршава nul знаком (0) који заузима једно мјесто низа. Низ се декларише тако да се његов садржај наводи унутар двоструких наводника(" "). char X[] = "Ovo je znakovni niz" А у меморију се спрема: Слика бр.54 Извршење програма ”Rijec” 26 'O' 'v' 'о' ' ' 'j' 'e' ' ' 'z' 'n' 'a' 'k' 'o' 'v' 'n' 'i' ' ' 'n' 'i' 'z' ‘0'
  28. 28. Бранкица Јокић Знак nul (0) који заузима једно мјесто низа, не треба посебно наводити, али га треба узети у обзир у меморији. Са знаковним низовима је могуће изводити различите операције. За већину операција по стоје готове функције у библиотеци cstring. Потребно је само разликовати знакове од знаковних низова.   Вјежба 32. Напишите програм”Broj karaktera” који исписује колико je укупно знакова (карактера) у унешеном тексту? Улаз: Ana voli milovana Излаз: Ima ukupno 17 karaktera. (Један размак у реченици такође предстаља један знак или карактер). #include <iostream> #include <string> using namespace std; int main () { string recenica; cout <<"Unesi recenicu = "; getline(cin,recenica); string str (recenica); cout << "Ima ukupno " << str.length() << " karaktera "<<endl; return 0; } ИЛИ #include <iostream> #include <string> using namespace std; int main() { string s; getline(cin, s); cout << " Ima ukupno: " << s.size() << " karaktera "<<endl; return 0; } 1.Програмирање и програмски језик   Вјежба 33. Напишите програм”Broj slova” који исписује колико има сугласника а колико самогласника у унесеном тексту. Улаз: ana voli milovana Излаз:Samoglasnika:8 Suglasnika: 7 #include <cstdlib> #include <iostream> #include <string> using namespace std; int main() { string recenica, r[50]; //ovdje se deklarise niz int d,i,brsam,brsug ; getline(cin,recenica); //unos recenice d= recenica.size(), brsam=0; brsug=0; for ( i=0; i < d;i++) if (recenica [i]!='a' && recenica [i]!='e' && recenica [i]!='i' && recenica [i]!='o' && recenica [i]!='u' && recenica [i]!='A' && recenica [i]!='E' && recenica [i]!='I' && recenica [i]!='O' && recenica [i]!='U'&& recenica [i]!=' ')brsug++; else if (recenica [i]!=' ')brsam++; cout << "Samoglasnika: " << brsam <<endl; cout<<" Suglasnika: "<< brsug<< endl; system("PAUSE"); return EXIT_SUCCESS; } Слика бр.56 Извршење програма ”Broj slova”   Вјежба 34. Напишите програм”Naopacke” који унесени текст исписује наопачке.. Слика бр.55 Извршење програма ”Broj karaktera” Улаз: ana voli milovana Излаз:anavolim ilov ana 27
  29. 29. 1.Програмирање и програмски језик #include<iostream> #include<string> using namespace std; int main() { int duzina,i; string moj_string; getline (cin, moj_string); duzina=moj_string.length(); for (i = duzina-1;i>=0;i--) cout<< moj_string[i]; return 0; } Слика бр.56 Извршење програма ”Naopacke”   Вјежба 35. Напишите програм”Novi red” који код унесене реченице сваку ријеч исписује у нови ред. Улаз: ana voli milovana Излаз:ana voli milovana #include <cstdlib> #include <iostream> using namespace std; int main() { int d,i; string recenica; getline (cin, recenica); d=recenica.size(); for (i=0; i < d;i++) if (recenica [i]==' ' && recenica [i+1]!=' ') cout << endl; else cout << recenica [i]; return 0; } Бранкица Јокић  Вјежба  Напишите36. програм”Opadajuci” који врши испис на приказани начин: Улаз: marko Излаз:marko mark mar ma m #include <iostream> #include <string> using namespace std; int main() { int i,j; string a; cin >>a; for( i=a.size();i>0;i--) { for(j=0;j<i;j++)cout << a[j]; cout << endl; } return 0; } Слика бр.57 Извршење програма ”Opadajuci”  Вјежба 37.  Напишите програм”Rastuci”који врши испис на приказани начин: Улаз: marko Излаз:marko m ma mar mark marko #include <iostream> #include <string> using namespace std; int main() { int i,d, j; string a; cin >>a; d= i=a.size(); for( i=0;i<=d;i++) { for(j=0;j<i;j++)cout << a[j]; cout << endl; } return 0; }  Слика бр.56 Извршење програма ”Novi red” 28 Слика бр.58 Извршење програма ”Obrnuto”
  30. 30. Бранкица Јокић 1.Програмирање и програмски језик 29
  31. 31. 1.Програмирање и програмски језик 30 Бранкица Јокић
  32. 32. 1.Програмирање и програмски језик Бранкица Јокић  Задатак бр.1 Учитати странице два правоугаоника те испитати који од њих има већу дијагоналу. #include <cstdlib> #include <iostream> #include <cmath>  Задатак бр.2   Учитати три реална броја и написати програм који исписује да ли постоји троугао чије су то странице.  #include <cstdlib> #include <iostream> using namespace std; using namespace std; int main() { float a,b,c,d,D,S; cout<<"unesi stranice prvog pravougaonika" <<endl; cin>>a>>b; cout<<"unesi stranice drugog pravougaonika" << endl; cin>>c>>d; D=sqrt((a*a)+(b*b) ); S=sqrt((c*c)+(d*d) ); if (D>S) { cout<<"Veca je dijagonala prvog pravougaonika"<<endl; } if(S>D) { cout<<"Veca je dijagonala drugog pravougaonika"<<endl; } return 0; } int main() { float a, b, c; poc: cout << "Unesite 3 pozitivna realna broja "<<endl; cin >> a >>b >>c; if (a<=0 || b<=0 || c<=0) goto poc; if (a+b>c && a+c>b && b+c>a) cout << "Postoji trougao sa datim stranicama" << endl; else cout << "Ne postoji trougao sa datim stranicama" << endl; return 0; } 30
  33. 33. 1.Програмирање и програмски језик  Задатак бр.3 Учитати са тастатуре координате три тачке троугла у равни. Написати програм који исписује обим и површину тругла користећи Heronovu формулу за рачунање површине. #include <cstdlib> #include <iostream> #include <cmath> using namespace std; int main() { float x1, y1, x2, y2, x3, y3, a, b, c, O, P, s; cout <<"Koordinate (x, y) prve tacke : "; cin >>x1 >>y1; cout << endl <<"Koordinate (x, y) druge tacke : "; cin >>x2 >>y2; cout << endl <<"Koordinate (x, y) trece tacke : "; cin >>x3 >>y3; a=sqrt((x2-x1)*(x2-x1)+ (y2-y1)*(y2-y1)); b=sqrt((x3-x2)*(x3-x2)+ (y3-y2)*(y3-y2)); c=sqrt((x3-x1)*(x3-x1)+ (y3-y1)*(y3-y1)); O=a+b+c; s=O/2; P=sqrt(s*(s-a)*(s-b)*(s-c)); cout<<endl; cout << "Obim: " << O << endl; cout<<endl; cout << "Povrsina: " << P << endl; return 0; } 31 Бранкица Јокић   Задатак бр.4 који унесену ријеч Напишите програм исписује на следећи начин:ријеч је “марко” марко арко рко ко о #include <iostream> #include <cstdlib> using namespace std; main() { int i,j,p; string s; cin>>s; cout<<endl; int duzina=s.length(); p=0; for(i=0;i<duzina;i++) { for (j=p;j<=duzina;j++) cout<<s[j]; cout<<endl; p=p+1; } return 0; }
  34. 34. 1.Програмирање и програмски језик Бранкица Јокић Задатак бр.5 На извор струје напона U прикључена су три серијски спојена отпорника R1, R2 и R3. Потребно је израчунати укупан отпор R, јачину струје I и поједине падове напона на отпорима :U1, U2 и U3.  #include<iostream> #include<cstdlib> Задатак бр.6 Воз креће из мјеста А према мјесту B брзином v1 km/h, а други, истовремено, у супротном смјеру брзином v2 km/h. Мјеста А и B су међусобно удаљена s km.Израчунати удаљеност од мјеста А на коме ће се возови сусрести и вријеме сусретања.  #include <iostream> #include<cstdlib> using namespace std; using namespace std; int main() int main() { float U,R1,R2,R3,R,I; cout<<"U (V)= "; cin>>U; cout<<endl<<"R1 (om)= "; cin>>R1; cout<<endl<<"R2 (om)= "; cin>>R2; cout<<endl<<"R3 (om)= "; cin>>R3; R=R1+R2+R3; I=U/R; cout<<endl<<"Ukupni otpor R iznosi "<<R<<" oma."<<endl; cout<<endl<<"Jacina struje I iznosi "<<I<<" A."<<endl; cout<<endl<<"Pad napona U1 je "<<I*R1<<" V."<<endl; cout<<"Pad napona U2 je "<<I*R2<<" V. "<<endl; cout<<"Pad napona U3 je "<<I*R3<<" V. "<<endl; return 0; } { float v1, v2, udaljenost; float put1, put2, vrijeme; cout<<"Upisi brzinu prvog voza (u km/h):"; cin>>v1; cout<<"Upisi brzinu drugog voza (u km/h):"; cin>>v2; cout<<"Upisi udaljenost izmedju dva mjesta (u km):"; cin>>udaljenost; //put1/brzina1=put2/brzina2 //udaljenost=put1+put2 put1=udaljenost*v1/(v1+v2); put2=udaljenost-put1; vrijeme=put1/v1; cout<<"Susret ce se dogoditi nakon"<<put1<< " km " <<endl; cout<<"Vozovi ce se susresti nakon "<<vrijeme<<" sati."<<endl; return 0; } 32
  35. 35. 1.Програмирање и програмски језик Бранкица Јокић Задатак бр.7 На столици масе Ms kg сједи човјек масе Mc kg. Колики је притисак на подлогу ако столица има четири ноге чији је пресјек квадрат странице x изражене у cm.   Задатак бр.8 #include<iostream> #include<cstdlib> #include<iostream> #include<cstdlib> using namespace std; using namespace std; int main() int main() { {  Напишите програм који исписује најмањи од три унесена цијела броја. int a,b,c,min; cout<<"Upisi prvi broj:"; cin>>a; cout<<"Upisi drugi broj:"; cin>>b; cout<<"Upisi treci broj:"; cin>>c; min=a; if (b<min) { min=b; } if (c<min) { min=c; } cout<<"Najmanji uneseni broj je " <<min; return 0; float Mc,Ms,Gs,Gc,X,F,S,s1,p; const double g=9.81; cout<<"Upisi masu stolice u kg: "; cin>>Ms; cout<<"Upisi masu covjeka u kg: "; cin>>Mc; cout<<"Unesi iznos stranice kvadrata u cm: "; cin>>X; Gs=Ms*g; Gc=Mc*g; //ukupna sila koja djeluje na podlogu F=Gs+Gc; //povrsina presjeka jedne noge stolce s1=X*X; //ukupna povrsina na koju djeluje sila S=4*s1; S=S/10000; //pretvaranje cm2 u m2 p=F/S; //pritisak u paskalima cout<<"Pritisak kojim covjek mase "<<Mc<<" kg " <<endl; cout<< "koji sjedi na stolici mase "<<Ms<<" kg "<< endl; cout<<"djeluje na pod je "<<p<<" paskala "; return 0; } 33 }
  36. 36. 1.Програмирање и програмски језик Бранкица Јокић Задатак бр.9 Напишите програм који за унесени редни број мјесеца у години исписује колико тај мјесец има дана.Уколико унесете број ван интервала од 1 до 12 програм треба да испише “грешка”.  #include<iostream> #include<cstdlib> using namespace std; Задатак  Напишите бр.10 који исписује да ли програм је унесени број прост или сложен. #include <cstdlib> #include <iostream> using namespace std; int main() { int i; cout<<"Upisi redni broj mjeseca: "; cin>>i; switch (i) { case 4: case 6: case 9: case 11: cout<<i<<". mjesec ima 30 dana."<<endl; break; case 1: case 3: case 5: case 7: case 8: case 10: case 12: cout<<i<<". mjesec ima 31 dan."<<endl; break; case 2: cout<<i<<". mjesec ima 28 dana (ili 29 ako je godina prestupna)."; break; default: cout<<"Greska!"; cout<<" Redni broj mjeseca moze biti od 1 do 12."; } return 0; } int main() { int N,i,br; cout<<"Unesi bilo koji cio broj N="; cin>>N; br=0; for (i=1;i<=N;i=i+1) if(N%i==0) br=br+1; if(br<=2) cout<<"broj je prost"<<endl; else cout<<"broj nije prost"<<endl; system("PAUSE"); return EXIT_SUCCESS; } 34
  37. 37. 1.Програмирање и програмски језик Бранкица Јокић Задатак бр.11  Напишите програм који испитује да Задатак  Написати бр.12 који исписује све програм ли је унесени природни број савршен. Број је савршшен ако је једнак збиру својих дјелилаца осим самог себе. савршене бројеве из интервала од k до p. #include<cstdlib> #include<iostream> #include<cstdlib> #include<iostream> using namespace std; using namespace std; int main() int main() { { int brojac,zbir,N; cout<<"Upisi prirodni broj: "; cin>>N; zbir=0; for (brojac=1;brojac<=(N-1);brojac++) { if(N%brojac==0) { zbir=zbir+brojac; } } if(zbir==N) cout<<"Broj "<<N<<" je savrsen."<<endl; else cout<<"Broj "<<N<<" nije savrsen."<<endl; return 0; } 35 int br,i,k,p, zbir; cout<<"Unesi brojeve k i p "; cin>>k>>p; cout<<"Savrseni brojevi su: "; for(br=k;br<=p;br++) { zbir=0; for (i=1;i<=(br-1);i++) { if(br%i==0) zbir=zbir+i; } if(zbir==br) cout<<br<<" "; } return 0; }
  38. 38. 1.Програмирање и програмски језик Бранкица Јокић Задатак бр.13 Написати програм који исписује све четвероцифрене бројеве чији је произвид цифара једнак унесеном броју S, S<50.  Задатак бр.14 Написати програм који исписује колико цифара има унесени вишецифрени број. #include<cstdlib> #include<iostream> using namespace std; #include<cstdlib> #include<iostream> using namespace std; int main() { int i,pom,j,d,s,S,t; poc: cout<<"Unesi neki prirodan broj manji od 50"<<endl; cin>>S; if(S>50) goto poc; cout<<"Brojevi ciji je proizvod cifara "<<S<< " su: "; for(i=1000;i<=9999;i++) { pom=i; j=pom%10; d=(pom/10)%10; s=(pom/100)%10; t=(pom/1000)%10; if(j*d*s*t==S) cout<<endl<<i; } return 0; } int main() { int br,b; cout<<"Upisi prirodni broj: "; cin>>b; br=0; do { b=b/10; br=br+1; } while(b>0); cout<<"Broj cifara: "<<br<<endl; return 0; } 36
  39. 39. 1.Програмирање и програмски језик Задатак бр.15 Написати програм који исписује највећи од унесених природних бројева. Унос бројева ће се изводити све док не унесте број 0 (бројеви морају бити из скупа N).  Бранкица Јокић Задатак бр.16  Написати програм који исписује суму и аритметичку средину унесених природних бројева. Унос бројева ће се изводити све док не унесте број 0 (бројеви морају бити из скупа N). #include<cstdlib> #include<iostream> using namespace std; #include<cstdlib> #include<iostream> using namespace std; int main() int main() { { 2 int b,max; int b,br,S; upis:cout<<endl<<"Upisi prirodni broj: "; upis:cout<<endl<<"Upisi prirodni broj: "; cin>>b; if (b<=0) goto upis; cin>>b; if (b<=0) goto upis; S=0; br=0; while(b>0) { max=b; while(b>0) { if(b>max) { max=b; } cout<<"Upisi prirodni broj: "; cin>>b; } cout<<endl<<"Najveci broj je: "<<max<<endl; return 0; S=S+b; br=br+1; cout<<endl<<"Upisi prirodni broj: "; cin>>b; } cout<<endl; cout<<"Suma unesenih brojeva je: " <<S; cout<<endl; cout<<endl<<"Aritmeticka sredina je: "<<S/br<<endl; return 0; } } 37

×