94
1. ПРОГРАМИРАЊЕ ВО C++ Клучни зборови • Интерпретер • Изворна програма • Извршна програма • Дебагирање • Тестирање • Индентација • Исказ • Променлива • Тип на променлива • Идентификатор • Декларирање • Иницијализација • Алгоритам • Блок дијаграм • Псевдо код • Кодирање • Разгранување • Циклус • Програма • Програмирање • Програмски јазик • Интегрирана околина за програмирање • Преведувач (компајлер)

ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

  • Upload
    others

  • View
    18

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

1. ПРОГРАМИРАЊЕ ВО C++

Клучни зборови

• Интерпретер• Изворнапрограма• Извршнапрограма• Дебагирање• Тестирање• Индентација• Исказ• Променлива• Типнапроменлива• Идентификатор• Декларирање• Иницијализација

• Алгоритам• Блокдијаграм• Псевдокод• Кодирање• Разгранување• Циклус• Програма• Програмирање• Програмскијазик• Интегриранаоколиназапрограмирање

• Преведувач(компајлер)

Page 2: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

88

4.1  Поим за алгоритми и програми

4.1.1 АлгоритмиКогарешаваменекоја задача, користимелогика,искуства, знаењаиинтуиција.

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

Пр. 4. 1. Алгоритамзакористењенаавтоматзакафе:Чекор1.Воценовникотпрочитајјаценатанасаканиотнапиток;Чекор2.Воотворотзапариуфрлипариспореднаведенатацена;Чекор3.Притиснигокопчетодоиметонанапитокот;Чекор4.Акосакашнапитоксошеќер,притиснигокопчетодонатписот„шеќер“;Чекор5.Почекајнапитокотдасеподготвиичашатадасенаполни;Чекор6.Земијачашатасонапитокот.Соваквитеупатствасесреќавамевосекојдневниотживот,самонегинарекуваме

алгоритми.Така,например,рецептзаподготвувањенанекоејадење,упатствозаракувањесонекојапаратилимашина,упатствозаоднесувањевослучајназемјотрес,упатствозаизработканаучилиштенпроектимногудругиупатстваилиправилазаоднесувањепретставувааталготритам.Соалгоритмитечестосесреќавамеивоматематиката.Секојаформулаисекојапостапказарешавањенанекоја задачапретставуваалгоритам.Но,вистинскотозначењенапоимоталгоритамсенаоѓавоинформатикатакадетојдобивазначење на прецизна низа од инструкции дадени на компјутерот. Алгоритамот седефиниранаследниовначин:

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

За љубопитните:ЗбороталгоритамдоаѓаодзборотAlchwarizmiилиKovarezmaштоепрекарнаперсискиот писател, математичар и астроном од 9-иот век Muhammeda ibnMusealKhowarizmi.Тојвосвојотучебникпоматематикаприкажалрешенијананекоиаритметичкипроблемивоформанаупатствакоисесостоелеодточноодреденичекори.

Прекуалгоритмитерешавањетоназадачитесесведувананивноторасчленувањеинарешавањенаповеќеедноставнизадачикоимеѓусебносеповрзанивоеднацелина.Алгоритмитетребадасенедвомислени, јасниипрецизни.Секојаоперацијатребадае јасно определена, треба прецизно да е утврден редоследот на извршувањето наоперациитеитребадаеразбирливзасекого,независнокојгонапишал.Многузадачиможатдасерешатнаповеќеначиниизанивноторешениеможатдасенапишатповеќеалгоритми.Секогаштребадасестремиконнајбрзото,најефективнотоинајсигурноторешение.

Зад. 4. 1. НапишиалгоритамзапраќањенаСМСпорака!

Page 3: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

89

Секојалгоритамможедасезапишенаприроденјазик(македонскиот,англискиоти др.), како што тоа е направено во претходниот пример. Ќе разгледаме уште еденпример:

Пр. 4. 2. Алгоритам за пресметување на цена за такси услуга претставен соприроденјазик:

Чекор1.Внеси(прекутастатура)вредностизавлезнитеподатоци:почетнатаценаS,ценатапокилометарКибројотнапоминатитекилометриL;

Чекор2.ПресметајјаценатазатаксиуслугатаспоредформулатаС=S+К∙L;Чекор3.Прикажија(намонитор)ценатаС.Восекојалгоритамморајаснодабидатдефиниранивлезниподатоци(вопримеров

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

примеровС).Алгоритамот мора да биде составен од конечен број чекори кои укажуваат на

редоследнаоперациитештотребадасеизвршатврзвлезнитеподатоцизадаседобиерезултат. Секој чекор се опишува со инструкција (во примеров дефинирај, прочитај,пресметај,прикажи).

Карактеристикинаалгоритамсе:• Конечност – алгоритамот мора да доведе до решение по конечен број на

чекори.• Дефинираност и недвосмисленост–секојалгоритамскичекорморадабиде

еднозначно дефиниран, треба да се предвидат сите случаеви за различнивлезниподатоци.

• Влез–алгоритамотможенонеморадаимаеденилиповеќевлезниподатоци.• Излез–алгоритамотморадаимаеденилиповеќеизлезниподатоци.• Ефикасност–алгоритамоттребададоведедорешениевоштопократковреме

соприменанаштопомалкучекори.• Остварливост –алгоритамотморадабидеостварливнакомпјутер.Зад. 4. 2. Напиши алгоритам за пресметување на плоштина на правоаголник!

Коисевлезниподатоцинаалгоритамот?Штоерезултатнаалгоритамот?Споредкојаформулаќејапресметашплоштината?

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

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

Најчестосекористатследниведваначина:• графички приказ• псевдо јазик

Претставување на алгоритам со графички приказГрафичкиот приказ на алгоритмите се врши со тнр. блок дијаграм (flowchart).

Воблокдијаграмотсекористатпосебниграфичкисимболизаодреденидејства.Ќегинаведемесамосимболитекоинајчестосекористат:

Page 4: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

90

Почеток Крај

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

Сеопишувавлез,односночитањенаподатоци.

Сеопишуваизлез,односноприкажувањенарезултатите.

Сеопишуваатвлезно-излезнивеличини.Вопонововремесоовојсимболсезаменуваатпретходнитедвасимболасокоисеопишуваатвлезиизлез.

Седефинираобработканаподатоци,напр.пресметувањеилидоделувањенавредностнанекојапроменлива.

не

да

Седефинирапроцеснаодлукаилипроверка,односноразгранување.Горниотврвевлез,адватаизлезисеозначенисозборовите„да“и„не“.Акоусловоткојезапишанвосимболотеисполнет,алгоритамотпродолжувасоизвршувањеначекорипоизлезотозначенсо„да“,аакоусловотнееисполнеталгоритамотпродолжувасоизвршувањеначекорипоизлезотозначенсо„не“.

Сеповрзуваатделовиодблокдијаграмот.

Симболитесецртаатвонизаодгорекондолуимеѓусебносеповрзуваатсолинии.Оваанасокаелогиченредоследнаслучувањата.Линиитекоиозначуваатнекојадруганасока,напр.оддолуконгореилинаназад,задолжителносеозначуваатсострелки.

Пр. 4. 3. Алгоритам за пресметувањена цена за такси услуга претставен со блокдијаграм:

Сл. 4. 1 Блок дијаграм за пресметување на цена за такси услуга.

Пр. 4. 4. Алгоритамзанаоѓањенапоголемиот од два броја претставен соблокдијаграм:

Сл. 4. 2 Блок дијаграм за наоѓање на поголем од два броја.

Графичкиот приказ на алгоритмите е попрегледен и олеснува пронаоѓање нагрешкидоколкугиима.Но,акосеработизасложенизадачи,блокдијаграмможедастанезамрсенамрежакојазафаќаповеќестраницивокојатешкосеснаоѓаме.

Зад. 4. 3. Прикажи го графички алгоритамот за пресметување на плоштина направоаголник!

Page 5: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

91

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

јазик освен што користи помал број на точно определени зборови и е прецизен инедвосмислен. На пример, псевдо јазикможеда содржи зборови какошто се читај,пресметај,печати,извршувај,повторувај,ако,тогаш,инакуитн.,какоисимболи,напр.+,-,*,/,=.Оваковјазикедоволноедноставениразбирливзачовекот,аоддругастранаепогодензатрансформирањенаалгоритамвопрограма.

Пр. 4. 5. Алгоритамот запресметувањенацената за таксиуслугапретставен сопсевдојазик:

почеток читајS,К,L;пресметајC=S+K*L;печатиС;крај

Пр. 4. 6. Алгоритамот за наоѓање на поголемиот од два броја претставен сопсевдојазик:

почетокчитајa,b;акоa>bтогашпечатиaинакупечатиb; крај Вака запишаниоталгоритамсенарекувапсевдо код (лаженкод).Ова сѐ уште

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

Зборовите кои одредуваат инструкции се нарекуваат клучни или резервирани зборови.Ниввопсевдокодотќе гипишувамесозадебеленибукви.Инструкциитесеодделуваатсознакотточкаизапирка(;).Запоголемапрегледностнапсевдокодотсекористиначинназапишувањенареченназабување–одредениделовиодинструкциисепишуваатмалкувовлеченокондесно.

Зад. 4. 4. Прикажигосопсевдојазикалгоритамотзапресметувањенаплоштинанаправоаголник!

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

чекоривоалгоритамот.Секојалгоритамможедасепретстависокористењенаеднаодтритеосновниструктури:

• редоследнаструктура(секвенца)илилинискаструктура• структуразаизбор(селекција)илиразгранетаструктура• структурасоповторување(итерација)илицикличнаструктура.

Линиска (линеарна) структураЛиниската алгоритамска структура подразбира извршување на алгоритамските

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

Page 6: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

92

Разгранета структураСо разгранетата алгоритамска структура е овозможенорешавањена проблеми

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

Циклична структураПонекогаш е потребно некои алгоритамски чекори да се повторат, односно

да се извршат повеќе пати. Такви алгоритамски чекори претставуваат циклуси, аалгоритамскитеструктурикоисодржатциклусисенарекуваатцикличниалгоритамскиструктури.

Можниседвеситуации:• Однапредсезнаеколкупатициклусотќесеповтори(напр.наполни10шишиња

совода);• Бројотнаповторувањатазависиоднекојусловитојбројнееоднапредпознат.

Притоаусловотможедабиде:- напочетокотнациклусот(напр.додекаецрвеносветлонепоминувајпрекуулица)или- накрајотнациклусот(напр.печатикопиидодекаималистови).

РезимеАлгоритам претставува постапка од конечен број на прецизно формулиранидејства со точно зададен редослед на нивното извршување. Дејствата од коисе состои алгоритамот се нарекуваат алгоритамски чекори. Карактеристикитена алгоритамот се: конечност, дефинираност, влез, излез, ефикасност ирезултативност.За претставување на алгоритмите најчесто се користат графичкиот приказ ипсевдојазикот.Графичкиотприказнаалгоритмитесевршисотнр.блокдијаграм.Секојалгоритамможедасепретстависокористењенаеднаодтритеосновниструктури:линискаструктура,разгранетаструктураицикличнаструктура.

Прашања:1. Штоеалгоритам?2. Навединеколкуалгоритмизарешавањеназадачиодсекојдневниотживот!3. Каквиособиниморадаимасекојалгоритам?4. Коисекарактеристикинаалгоритамот?5. Какосепретставувааталгоритмите?6. Штоеблокдијаграм,аштоепсевдокод?7. Набројгииобјаснигиосновнитеструктуринаалгоритмите!8. Наведипримеризасекојаодосновнитеалгоритамскиструктури!

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

одреденовремеседвижелсоодреденасреднабрзина!Штоевлез,аштоеизлезнаовојалгоритам?

Page 7: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

93

2. Алгоритамотодзадачата1претставигособлокдијаграмисопсевдокод!3. Нацртајблокдијаграминапишипсевдокодзаалгоритамсокојќесереши

линеарнатаравенкаax+b=0!

4.1.2 Улога на програмите во компјутеротИнтуитивноимамепретставазатоаштоепрограма,веќесмеработелевомногу

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

Програмаеначинна записнаалгоритамвоформаразбирлива закомпјутерот.Алгоритмитесепоопштиипоапстактниодпрограмите.Еденалгоритамможедабидерешен од човек или машина, или од двете. Програмата мора да биде извршена одкомпјутер.Врскатапомеѓупрограма,алгоритамиподатоциедаденавоформулата:

Програма=Алгоритам+ПодатоциПрограмите ги пишува човек и ги внесува во меморијата на компјутер преку

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

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

Наредбаетемеленелементнаеднапрограма.Сонаредбитеточноедефинираношто и како компјутерот треба да направи. Со правилна употреба на програмитекорисникотуправувасокомпјутерот.Компјутеритеможатдаизвршуваатнајразновиднипрограмиикорисникотлеснопреоѓаодеднанадругапрограма.Натојначинпрограмитеобезбедуваатповеќекратнанаменанахардверотзаразличнипотреби.

Програмитеседелодсофтверот.Софтверотгосочинуваатпрограмикоиодеднастрана ја контролираат функционалноста на сите хардверски делови на компјутерот(системскиот софтвер), а од друга страна извршуваат обработка на податоци(апликативниотсофтвер).Натојначинсофтверотпретставуваврскапомеѓукорисникотикомпјутерот.

КориснициАпликативен

софтверСистемскисофтвер Хардвер

Сл. 4. 3 Улога на софтверот како врска помеѓу корисникот и хардверот

Системските програми ги пишуваат стручните тимови во големите софтверскикомпаниикакоштосеMicrosoft,IBMидруги,додекаапликативнитепрограмиможедагинапишеипоединецспоредпотребитенакорисникот.

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

Поголемиотделодкорисницитенакомпјутеритекористатвеќеготовипрограмикоисеинсталиранивокомпјутерот.Когапрограмаќесепокренеоднекојанадворешна

Page 8: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

94

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

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

Програма Податоци

Излез

Компјутер

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

РезимеПрограмаенизаоднаредбикоисеизведуваатпоточноодреденредоследисоточнодефиниранацел.Наредбаеосновенелементнапрограмаипретставуваинструкцијадокомпјутеротдаизвршиодреденидејства.Софтверот го сочинуваат програми кои, од една страна, ја контролираатфункционалностанаситехардверскиделовинакомпјутерот(системскисофтвер),аоддругастранаизвршуваатобработканаподатоци(апликативенсофтвер).Влезот во компјутерот го сочинуваат две компоненти: програма и податоци.Компјутерот ги следи инструкциите дадени со наредби во некоја програма иизвршувадејстваврзподатоците.Податоцитепретставуваатвлеззапрограма.

Прашања:1. Штоепрограма?2. Штоетемеленелементнапрограма?Зошто?3. Којаезадачатанапрограмитевокомпјутерот?4. Далипрограмитеседелодсофтверот?5. Опишијаулогатанасофтвероткаковрскапомеѓукорисникотихардверот!6. Опишијаврскатапомеѓукомпјутерот,програматаиподатоците!

4.2  Програмирање и програмски јазици

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

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

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

Page 9: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

95

Забелешка:Вештачкитејaзицисејазицикоисенаправениодпоединецилиодгрупалуѓезакомуникацијапомеѓулуѓекоинезборуваатсоистјазик,какоизакоминикацијапомеѓулуѓетоимашинатаилипомеѓудвемашини.

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

• нижипрограмскијазиции• вишипрограмскијазици.

Главните особини на нижите програмски јазициГлавната карактеристика на нижите програмски јазици е што тие семашински

ориентирани,т.е.зависатодмашинанакојасеизведуваат.Засекојвиднапроцесорпостоипосебеннижипрограмскијазик.Ситеовиејазицисеразликуваатмеѓусебно.Акосенапишепрограмазаеденпроцесор,неесигурнодекатаапрограмаќеработиинадругпроцесор.

Првитепрограмскијазицикоисепојавилесемашински јазици (machinelanguage,machine code). Програма пишувана намашински јазик е единствената програма којакомпјутерот јаразбира,пазатоасекојадругаформанапрограмаморадасепреведена машински јазик. Наредбите во машинскиот јазик се изразуваат со бинарен запис(низаоднулииединици).Таковзаписзалуѓетоемногутежокзаразбирање.Пишувањенапрограмавомашинскиот јазикесложеноибарадобропознавањенаградбатанакомпјутерот.

Набргусеразвиениновипрограмскијазицинаречениасемблериилисимболички јазици. Програмите пишувани во симболички јазик се поблиски до човекот, секојабинарна наредба е претставена со мнемоник (збор кој лесно се памти и подсетувананешто), односно со симболразбирлив за човек. Така, собирање сепретставува сомнемоникотADD,преместувањенаподатоцисепретставувасомнемоникотMOVитн.Сооваеолеснетопишувањеичитањенапрограми,носѐуштеепотребнонакомпјутеротдаседадатинајмалиупатствазасекојаоперација.

Типичнанаредбавосимболичкијазикизгледавака:ADD X Y ZОваанаредбазначи:Бројот зачуванвомеморискаталокација соиметоXда се

додатенабројотзачуванвомеморискаталокацијасоиметоYирезултатотдасезачувавомеморискаталокацијасоиметоZ.

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

0110100110101011Наредбитезапишанивосимболичкијазикразличносепреведуваатнамашински

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

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

проблемзарадинепреносливот,аосвентоазалуѓеенеразбирливиетежокзаучење.

Page 10: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

96

Решениенаовојпроблеменајденововишитепрограмскијазицикоисотекнавремелуѓетогиосмислувалеиразвивале.Денеспостојатмногувишипрограмскијазици,некоиоднивсе:BASIC,Pascal,C,C++,C#,Java,Prolog,SmallTalk,Modula2,FORTRAN,LISP,ADA.

Главните особини на вишите програмски јазици се можност да се извршатна компјутери со различни процесори и разбирливост бидејќи се доста слични соприродниот(англискиот)јазик.Напр.закомпјутеротдасобередвабројаирезултатотдагозапомнинанекоетретоместовомеморијата,сепишуванаредбаодтипC=A+Bштозначи:соберигиброевитештосезапишанивоAиB,арезултатотзачувајговоC.

Евекакоизгледапрограмазасобирањенадвацелиброевивонекоиодвишитепрограмскијазици:

QBASIC:INPUT AINPUT BC=A+BPRINT CEND

LOGO:TO SOBERIMAKE ”A READMAKE ”B READMAKE ”C :A+:BPR :CEND

PASCAL:program soberi;var a, b: integer;beginreadln (a);readln (b);c:=a+b;writeln (c);end.

C:#include <stdio.h>main (){int a,b,c;scanf (”%d,%d”, &a, &b);c=a+b;printf (”%d”, c);}

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

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

јазици,меѓутоа,компјутеортможедаизвршисамопрограманапишананамашинскијазик.Преведувањетонапрограмитевомашинскијазиксеизведуванадваначини:

• сопомошнапрограмитезапреведувањеприштосекреираизвршнаверзијанапрограма

• сопомошнапрограмитезаинтерпретирање.

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

програма или изворен код (source code). Програма која ја извршува компјутерот сенарекува извршна програма или извршен код (executable code). Претворањето наизворниоткодвоизвршенкодсевршиводвачекорасопомошнапосебнисистемскипрограминареченипреведувачииповрзувачи.

Page 11: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

97

Значи, процесотнапишувањенапрограмата е сложенпроцес кој се состоиодчетирифази:

1.пишувањенаизворенкод,2.преведувањенаизворенкод,3.поврзувањевоизвршенкод,4.тестирањенапрограма.

Пишување на изворен кодПрвата фаза е пишување на изворен код или кодирање. Откако ќе се заврши

пишувањенаизворниоткод,тојсезачувуваводатотеканаизворниоткоднадискот.Наоваадатотекаобичноѝседаванекоеописноимеиѝседоделуванаставкасоодветнасопрограмскиотјазиквокојепишувана.ЗадатотекитепишуванивопрограмскиотјазикC++обичноимседоделуванаставката.cpp,напримерsobiranje.cpp.

Преведување на изворен кодВтората фаза е преведување на изворниот код со помош на програмите

преведувачи или компајлери (compilers). Преведувачот ја проверува синтаксата наизворниоткодивослучајнавооченигрешкииспишувасоодветнипоракизагрешките.Овиегрешкисенарекуваатсинтаксни грешкиилигрешки при преведување(compile-timeerrors). Синтаксните грешки сеоднесуваатнанеправилнонапишани зборовиодпрограмскиот јазик, неправилно користени или испуштени интерпункциски знаци,неправилнокористењеназаградиисл.

Подобивањетопоракизагрешки,програмеротсеобидуваиститедагипоправииповторно го преведуваизворниот код.Дури кога сите грешки ќебидатотстранети,процесотнапреведувањеможеуспешнодасереализира.Сопреведувањенаизворенкодседобивадатотекаодобјектен код(objectcode)којавообичаенојаиманаставката.oили.obj(вонашиотпримерsobiranje.obj).

Поврзување во извршен кодПо преведувањето следува третата фаза – поврзување на објектни кодови во

извршен код со помош на програмите поврзувачи (linkers). Објектниот код добиенсо преведување треба да се поврзе со постоечките датотеки во кои се наоѓаат веќепреведени мали програми кои често се користат во програмите. Овие датотеки сенарекуваатбиблиотеки(libraries).

Акокодотнеможедасеповрзесопотребнитебиблиотеки,поврзувачотќејавипораказагрешкаиизвршниоткоднемадасекреира.Овиегрешкисенарекуваатгрешки при поврзување (link-time errors). Програмерот мора да ги исправи овие грешки иповторнодасеобидедаизвршиипреведувањеиповрзување.Соуспешноповрзувањеседобиваизвршенкод,односнодатотеканакојаѝседоделуванаставката.exe.Извршнадатотекаможедасекористисамостојнонакојбилокомпјутер.

ОбјектенкодИзворенкод ИзвршенкодПреведувач Поврзувач

Сл. 4. 5 Шематски приказ на процес на изработка на програма

Тестирање на програмаДобивањенаизвршнадатотекасѐуштенеегаранцијадекапрограматаќеработи

онакакакоштотоаезамислено.Затоасеизведуваипоследнатафаза–тестирањена

Page 12: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

98

програмата.Грешкиоткриенинаовојначинсенарекуваатгрешки при изведување(run-timeerrors)илилогички грешки.

Овие грешкисепоследицанапогрешноизработеналгоритамикомпјутеротнеможе да ги открие. Затоа програмерот треба да ја тестира програмата за различниподатоцииваквитегрешки(доколкугиима)дагивоочиидагипоправи.Поисправањенагрешкитецелатапостапкатребадасеповториодпочеток:поправањенаизворниоткод→преведување→поврзување→тестирање.

Пр. 4. 7. ПримерзасинтакснаизалогичкагрешкаАко формулата за пресметување на периметар на правоаголник се запише наследниотначин:L=2*(а+bнаправенаесинтакснагрешка–недостасувазаграданакрајотодизразот.Оваагрешкапреведувачотќејаоткриеиќенијавипорака.Но,акоформулатасезапишекако:L=2*(а-b)направена е логичка грешка – формулата не е точна и нема да даде точенрезултат. Во овој случа нема синтаксна грешка и преведувачот нема да дадепредупредување.

Забелешка: Оваесамопримеродкојтребадавоочишразликапомеѓусинтакснаилогичкагрешка.Повеќезасинтакснитеизалогичкитегрешкиизанивнотооткривањеќезборувамеподоцна.

ИнтерпретериПонекогашизворниоткодсеизвршувабезтојдасепреведевоизвршенкод.За

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

РезимеЛуѓетокоипишуваатпрограмисенарекуваатпрограмери.Постапкатаназапишу-вање на инструкции преку наредби на некој програмски јазик се нарекувапрограмирање.Програмитесепишуваатвопосебнивештачкијазициосмисленииконструиранизакомуникацијапомеѓучовекикомпјутер–програмскијазици.Програмскитејазицигиделименанижипрограмскијазициинавишипрограмскијазици.Нижите програмски јазици се машински ориентирани. Прво се појавиле ма-шински јазици во кои програмите се пишувани со бинарни цифри, набргу серазвиениновипрограмскијазицинаречениасемблериилисимболичкијазици.Програмитепишуванивоасемблерсепоблискидочовекот.Вишитепрограмскијазициможатда сеизвршатнакомпјутерисоразличнипроцесории седостасличнисоприродниотјазик.

Page 13: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

99

Правиласокоисеопишуваначинотнаконструирањенанаредбисенарекуваатсинтаксатанајазикот.Компјутеритеразбираатиможатдаизвршатсамопрограмикоисенапишанина машински јазик. Програмата која ја извршува компјутерот се нарекуваизвршнапрограмаилиизвршенкод.Програматанапишанананекојодвишитепрограмскијазицисенарекуваизворнапрограмаилиизворенкод).Процесотнаизработканапрограматасесостоиодчетирифази:1.пишувањенаизворенкод,2.преведувањенаизворенкод,3.поврзувањевоизвршенкоди4.тестирањенапрограма.

Прашања:1. Какосенарекувапостапканаизработканапрограми?2. Какосенарекуваатјазицивокоисепишуваатпрограми?3. Какоседелатпрограмскитејазици?4. Коисенижипрограмскијазици?5. Навединеколкувишипрограмскијазици!6. Направиспоредбапомеѓунижитеивишитепрограмскијазици?7. Штоесинтаксанапрограмскијазик?8. Какосенарекувапрограманапишанананекојодвишитепрограмскијазици?9. Какосенарекувапрограматакојајаизвршувакомпјутерот?

10. Одкоифазисесостоипостапкатазакреирањенаизвршнаверзијанапрограма?11. Накраткоопишигифазитевопостапкатазакреирањенаизвршнаверзијана

програма!12. Којаеулоганапрограмитезапреведување?13. Каквадатотекаседобивапопроцесотнапреведување?14. Којаеулоганапрограмитезаповрзување?15. Штосебиблиотеки?16. Штосесинтаксни,аштоселогичкигрешки?17. Штотребадасенаправипокорекцијанагрешките?18. Најдисинтакснаилогичкагрешкавоформулатазапресметувањенасредна

вредностнадваброја:sv=a-b)/2.19. Обидиседанаправишблокдијаграмзапроцесотнаизработканапрограма!20. Штоеинтерпретер?21. Којаеразликатапомеѓупреведувањенапрограмасопомошнапреведувачии

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

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

посебнипрограмивокоипишувањетонапрограмитеемногуолеснето.Денесвоглавносекористатпрограмивокоисевграденииповрзани:едиторизапишувањенаизворенкод,програмизапреведување(компајлирање),библиотекинаготовипрограмиипрограмиза наоѓање на грешки (дебагирање). Ваквите програми се нарекуваат интегрирани развојни околини(IDE–integrateddevelopmentenvironment)запрограмскијазик.

Page 14: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

100

За секој програмски јазикпостојатнеколкуинтегрираниразвојниоколини.НиеќепрограмирамевопрограмскиотјазикC++,акакоинтегриранаразвојнаоколинаќејакористимепрограматаCodeBlocks.

Програмските јазици C и C++ се едни од најпопуларните праграмски јазици заопштанамена.Овиејазициимаатголемиможности,делотворнисеиприлагодливи.

Инсталирање на програмата Code BlocksCodeBlocks ебесплатнаоколина заC++ соотворенкодво која сеинтегрирани

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

ПрограматаCodeBlocksможедасепреземепрекулинкот:http://www.codeblocks.org/downloads/binaries/.ВомоментнапишувањетонаучебниковпоследнатаверзијанапрограматазаоперативниотсистемWindowsе: codeblocks-10.05mingw-setup.exe,a заоперативниотсистемLinux:codeblocks-10.05-1-debian-dbg-i386.tar.bz2.

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

Сл. 4. 6 Инсталација на развојната околина Code Blocks (чекор 1)

Изберипрограматаведнашдасестартува:

Сл. 4. 7 Инсталација на развојната околина Code Blocks (чекор 2)

Накрај,означијапрватаопцијаикликнинакопчетоОК:

Page 15: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

101

Сл. 4. 8 Инсталација на развојната околина Code Blocks (чекор 3)

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

работнатаоколина:1 ТргнигознакотзапотврдаодопцијатаShowtipsatstartupикликнинакопчето

Close;2 ЗатворигопрозорецотScriptingConsole;3 КликниназнакотХдокопчетоStartHere;4 ВоменитоViewвоопцијатаToolbarsоставигознакотзапотврдасамонаCompiler.

1

2

3

Сл. 4. 9 Почетен прозорец на програмата Code Blocks

Сегаработнатаоколинаопфаќа:1 Менисонаредби,2 ЛентатаManagement,3 Текстедиторзавнесувањенаизворниоткод,4 Прозорецзаиспишувањенапоракизагрешки.

Page 16: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

102

1

2

3

4

Сл. 4. 10 Прилагодена работна околина на програмата Code Blocks

Креирање, преведување и извршување на програмаПрограмитевоC++можат,нонеморадабидатделодпроект.

Креирање проектНовпроектвоCodeBlocksсекреирасонаредбатаFile→NewProjectпоштосеотвора

прозорецотNewfromtemplate.1 ОдбериConsoleApplicationи2 кликнинакопчетоGo.

1

2

Сл. 4. 11 Креирање на нов проект (чекор 1)

Во следниот прозорец кликни на копчето Next, потоа одбери C++ и повторнокликнинакопчетоNext.

Сл. 4. 12 Креирање на нов проект (чекор 2)

Page 17: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

103

ВнесиименапроектотвополетоProjectTitle,потоакликнина копчетоBrowse(означеносотриточки)ивопрозорецотBrowseforFolderизберилокацијакадеќегозачувашпроектот.Останатитеполињаќесенагодатавтоматски.

КликнинакопчетоNext,проверидалиполетоCompilerjaсодрживредноста“GNUGCCCompiler”,икликнинакопчетоFinish.

Сл. 4. 13 Креирање на нов проект (чекор 3)

Кога ќе се креира нов проект тој содржи датотекаmain.cpp. Во левиот дел наекранот,отвориWorkspace,потоатвојотпроект,паSourcesиотворијадатотекатаmain.cpp(сокликнувањедвапатиналевотокопчеодглушецот,илисокликнувањенадеснотокопчеодглушецотиOpenmain.cpp).Тоаепрограмакојастандарднојапишуваатситекоизапочнуваатсоучењенапрограмирање.

Сл. 4. 14 Датотеката main.cpp

Креирање на нова датотека на изворен кодНовадатотекаможедасекреираворамкитенапостоечкипроектилисамостојно.

Еден од начините за креирање на нова датотека на изворен код е преку наредбатаFile→New→File.ВопрозорецотNewfromtemplate

1 избериFiles,2 потоаизбериготипотнадатотекаC/C++source,и3 кликнинакопчетоGo.

321

Сл. 4. 15 Креирање на нова датотека на изворен код (чекор 1)

Сепокренувапомошник за креирањенановадатотека.Доколкуне сакашовојпрозореципонатамудасепојавувапотврдијаопцијатаSkipthispagenexttimeикликнинакопчетоNext.

Page 18: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

104

Сл. 4. 16 Креирање на нова датотека на изворен код (чекор 2)

ВоследниотпрозорецизберигојазикотC++икликнинакопчетоNext.

Сл. 4. 17 Креирање на нова датотека на изворен код (чекор 3)

Потоа кликни на копчето Browse (означено со три точки) пошто ќе се појавипрозорецотSaveas...Изберилокацијакадеќејазачувашноватадатотекаидајѝименадатотеката.НакрајкликнинакопчетоFinish.

Сл. 4. 18 Креирање на нова датотека на изворен код (чекор 4)

Сооваекреиранановадатотекасоиметоprva.cpp:

Сл. 4. 19 Креирање на нова датотека на изворен код (чекор 5)

Совет: Креирај посебен фолдер во кој ќе ги чуваш твоите програми напишани војазикотC++.

Page 19: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

105

4.2.4 Преведување и извршување на програмаКогаекреиранадатотеканаизворниоткод,можедасепочнесопишувањена

програма. Програмата се пишува во едитор. Препиши ја следнава содржината надатотекатанаизворниоткод:

// mojata prva programa#include<iostream>using namespace std;int main(){ cout<<”Ti posakuvame uspeh vo ucenjeto!”<<endl; return 0;}

Овдеенула

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

Сл. 4. 20 Изворен код во едиторот на програмата Code Blocks

Линиитесеозначенисоброевиипредсебеимаатжолтавертикалналинија.Toaзначидекатиелиниисѐуштенесепреведени.Преведенителииниипредсебеимаатзеленавертикалналинија.Оваeодкористкогасеправатизменивопрограма.

Откакоќесенапишеизворнадатотекатаатребадасепреведеидасеповрзевоизвршенкод.ТоасепостигнувасонаредбатаBuild→Build(КратенкаCtrl+F9).

Сл. 4. 21 Наредба за градење на извршна верзија

Забелешка: Фазитепреведувањеиповрзувањесеодвивааткакоеднафазакојасенарекувапреведувањеиликомпајлирање.Ако постојат синтаксни грешки или предупредувања, тие ќе се испишат во

посебнарамка(Buildlog)водолниотделнапрозорецот.Грешкитетребадасеисправат

Page 20: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

106

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

Сл. 4. 22 Порака за успешно преведена програма

НакрајотпрограмататребадасеизвршисонаредбатаBuild→Run(кратенкаCtrl+F10).

Какопоследицанацелиотпроцес,вопапкатаиматридатотеки:

Сл. 4. 23 Икони за изворна, за извршна и за објектна датотека во C++

Важно! Програматаможедасеизвршисамоакопредтоаепреведена.

Извршнатадатотекасеизвршувавопосебенпрозорец:

Сл. 4. 24 Прозорец во кој се извршува програма

Нашата програма го испишува текстот „Ti posakuivame uspeh vo ucenjeto!“.Текстот„Pressanykeytocontinue“гогенерирасамиоткомпјутерисотоанеизвестувадекапрограматаеизвршенаидека сопритискањенабилокоекопчеод тастатуратапрозорецотќесезатвори.

Забелешка:Запобрзпристапдонаредбитеможатда секористаткопчињатаBuild,RunиBuildandRunодлентатасоалаткизапреведување:

РезимеПрограмитевокоисевграденииобединетипрограмизапишувањенаизворенкод,програмизапреведување,програмизаповрзувањеипрограмизанаоѓањегрешки се нарекуваат интегрирани развојни околини. Ние за програмскиотјазик C++ ќе ја користиме програмата Code Blocks. Кога е креирана датотеканаизворниоткод,можедасепочнемесопишувањенапрограма.Програмасепишувавоедиторот.

Page 21: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

107

Откакоќе сенапише,изворнатадатотека требада сепреведеида сеповрзевоизвршенкод.Когапреведувањетоуспешноезавршено,програмататребадасеизврши.Програматасеизвршувавопосебенпрозорец.Какопоследицанацелиотпроцес,вопапкатаиматридатотеки:изворна,објектнаиизвршнадатотека.

Вештини што треба да ги усовршиш:Дакреирашновадатотека.Дакористишедиторзапишувањенаизворенкод.Дапреведешизворнадатотекавоизвршнадатотека.Дапокренешизвршувањенапрограма.

Прашања:1. Штоеинтегриранаразвојнаоколина?2. ЗакоиразвојниоколинизапрограмскиотјазикC++сислушнал/а?3. ИнсталирајјапрограматаCodeBlocksиподесијаработнатаоколина?4. СокојанаредбасекреирановаизворнадатотекавоCodeBlocks?5. Кадесепишуваизворенкод?6. Сокојанаредбасепреведуваизворнадатотека?7. Коидатотекисекреираатпопреведувањето?8. Какознаешдекапрограмаеуспешнопреведена?9. Сокојанаредбасеизвршувапрограма?Кадепрограматасеизвршува?

Задача:1. Напиши,преведииизвршиедноставнапрограмасокојаќесеотпечатипорака

потвојизбор!Колкуикаквидатотекисекреиранивотвојатапапка?

4.2.5 Извршување и изглед на готови пример програмски кодовиПогледни го кодот на програмата prva.cpp. Дали разбираш некои зборови и

реченици?Далитиејасноштоработипрограмата?Далипрепознавашнаредбакојанакомпјутеротмукажувадаиспишесоодветентекстнамониторот?

Дагоразгледамеианализирамеизворниоткоднапрограматаprva.cpp:

Оваееднаоднаједноставнитепрограми,носепакгисодржиосновнитеделовикоисекојапрограманапишанавоC++морадагиима.

Изворниоткодзапочнувасоследнивелинии: #include<iostream> using namespace std; int main() {

Page 22: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

108

азавршувасолиниите: return 0; }

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

#include <iostream>

Линиите кои започнуваат со знакот „#“ преведувачот не ги преведува и тие сенарекуваат претпроцесорски наредби. Овие наредби на преведувачот му кажуваатпред преведувањето да вклучи и некоја додатна датотека. Наредбите во C++ сеорганизирани во посебни датотеки, кои се нарекуваат библиотеки. Со изразот#includeнапреведувачотмусенајавуваодкоибиблиотекиќесекористатнаредби.Преведувачот тие библиотеки ќе ги вклучи во програмата пред да започне сопреведувањето.Иметонабиблиотекасеставапомеѓузнаците„<>“.Библиотекатаio-stream е стандардна библиотека која овозможува внесување на податоци прекутастатураииспишувањенарезултатипрекумонитор.

using namespace std;

Постојатмногубиблиотекипаможедасеслучиводверазличнибиблиотекидасенајдатнаредбисоистоимеасоразличнинамени.СитеелементинастандарднитеC++библиотекиседеклариранивопросторотштосенарекуваnamespace(просторсоимиња).Сооваанаредбанапреведувачотмусекажувадекаќесекористатнаредбиодпросоторотstd,штоекратенкаодstandard.

int main ()

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

mainеимезаглавнатафункцијакојаморадајаимасекојаC++програма.СооваафункцијазапочнуваизвршувањенаситепрогрмивоC++.Позборотmainстојатзагради()штозначидекасеработизадефиницијанафункција.

{

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

return 0;

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

}

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

cout << “Ti posakuvame uspeh vo ucenjeto!“<<endl;Оваеединственаталинијакојавонашатапрограмапроизведувавидливефект.

Таа во C++ претставува исказ илинаредба. Со овој исказ на мониторот се испишувапораката„Tiposakuvameuspehvoucenjeto!“.

Важно!Посекојизказсеставазнакотточкаизапирка„;“штоезнакдекаисказоттуказавршува.Претпроцесорскитенаредбинезавршуваатсознакотточкаизапирка.Истотака,иполинијатаintmain()несеставазнакотточкаизапирка.

Page 23: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

109

Изглед на програма – индентација ВоC++немастрогиправилапокоисекојисказморадасепишувавоновалинија.

Такаможедасенапишеи: int main () {cout<<”Ti posakuvame uspeh vo ucenjeto”<<endl; return 0;}

Запреведувачотоваалинијаеисправнабидејќизакрајнаисказотсесметазнакот„;“,анекрајотналинијата.Исказитесепишуваатвоновилиниизапрограмитедабидатпопрегледни.Одтиепричиниовиеисказисемалкувовлеченивоодноснапочетокотинакрајотнафункцијата.Ваквататехниканавовлекувањенасеквенциодисказикоисочинуваатлогичкацелинасенарекуваиндентација.

Зад. 4. 5. Следниоткоднапишиготакадабидеполесензачитање.Испишигонаповеќелинииикористииндентација! #include <iostream> using namespace std; int main () {int x;cout<<”Bravo”;return 0;}

Пр. 4. 8. Препишигокодотизачувајјадатотекатасоиметоvtora.cpp:

Преведијаиизвршијапрограмата.Наекранотпрвоќејадобиешпораката„Kolkugodini imas?“.Воновиотред,наместотонакурсорот,внесигобројотнатвоитeгодиниипритиснигокочетоEnter.Сегаимашваковизгледнаекранот(црвенатастрелкапокажуванатекстотштокорисникотговнесува):

Забележувашдекавоисказотcout<<”Kolku godini imas?”<<endl; едодаденизразотendl(скратеноодendline)штопредизвикувапоминувањенакурсоротвоновред.Истотака,сејавуваиновисказ:cin>>god;

Овојисказприфаќаподатоцивнесенипрекутастатурата.Воовојслучајтоаебројот15.

Забелешка: Изразите cout и cin се декларирани во библиотеката iostream во рамки напросторот std. Тие сепричинаштоморада се користатпрвитедвелиниивопрограмата.

Page 24: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

110

ЌеразгледамеуштееденисказкојчестосекористивоC++програмитеsystem (”PAUSE”);

Со овoj исказ на компјутерот му се укажува да застане и да чека додека несе притисне некое копче на тастатурата. За да ја разбереш оваа наредба изврши јапрограматаprva.exeпрекуиконатаодтвојатапапка;ќезабележишдекапрозорецотвокојсеизвршувапрограматаведнашќесезатворипреддајавидишпораката.

Овојисказсепишувапредисказотreturn 0;изанеговокористењеморадасевклучибилиотекатаcstdlibпрекупретпроцесорскатанаредба#include <cstdlib>.Библиотекатаcstdlibебиблиотеканастандарднинаредби.

Пронаоѓање и исправање грешки – дебагирањеВоизработканапрограмичестосејавуваатгрешкикоиепотребнодасепронајдат

идасеисправат.Компјутерскитегрешкисенарекуваатбагови(buggs),патакаипроцесотна пронаоѓањеи на исправањена грешки се нарекува дебагирање (debugging).Овојпроцесенеопходенвоситеновипрограмиичестоепотребнодасеповториповеќепати.Современитепрограмисесостојатодголембројнаредбиичестосеслучувагрешкитедасеоткријатдурикајкрајнитекорисници.Одтиепричиникомпаниитекоипроизведуваатсофтвериздаваатпробни(бета)верзиинапрограмитепредпрограматадајапуштатвопродажба.

Даразгледамештоќесеслучиаковопрограмскиоткоднапрограматаprva.cppсенаправинекојагрешка.Напишигокодотбезпоследнатаголемазаграда:

Припреведувањето,преведувачотќевоочидекафункцијатаmain()нееправилнозатворенаивопосебнарамка(Buildmessages)ќеиспишепораказагрешка:

Сл. 4. 25 Порака за грешка

Вооваапоракабројот8укажувадекагрешкатасејавилаволинијатасореденброј8.Поракатапозборот„error“никажувазакаковвиднагрешкасеработи.

Забелешка:Во пораки за синтаксна грешка бројот на линија укажува на линија во којапреведувачотјазабележалгрешката,честотоаелинијапоилипредисказотвокојгрешкатаенаправена.

Page 25: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

111

Зад. 4. 6. Во програмата prva.cpp избриши ја отворената голема заграда инабљудувајштоќесеслучи.Истотонаправигосомалитезаградиисонаводниците.

Синтакснитегрешкиможатдагиоткријатпрограмитезапреведувањезаштоќенеизвестат.Додеканесеотстранатситесинтакснигрешкипрограматанемадасепреведе.

Логичкитегрешкинастанувааткакопоследицанапогрешноизработеналгоритамисепричинапрограматаданејаизвршувазадачататочно.Програмеротморасамиотдаоткриепостоењеналогичкигрешки.Компјутероттуканеможедамупомогне,бидејќитој„незнае“којазадачапрограмеротсакадајареши.

Забелешка:Заоткривањеналогичките грешки се користат програминареченидебагерикоиовозможуваатизвршувањенапрограматалинијаполинијаистопирањенанејзинотоизвршувањенаодредено„сомнително“место.

Пр. 4. 9. АкопрограмеротвопрограмскиотјазикC++исказотзапресметувањенаплоштинанакруггонапишевоследнатаформа:

P=r+r*3.14тојќејадобиеследнатапораказасинтакснагрешка:„Infunction’intmain()’error:expected’;’before...“, бидејќинакрајотнанаредбатанегоставилзнакотточкаизапирка.Акопрограмеротјаисправигрешкатаинапише:P=r+r*3.14;тој нема да добие порака за грешка бидејќи наредбата синтаксно е исправна.Меѓутоа, со оваа наредба плоштината на круг нема точно да се пресмета(формулатазапресметувањенаплоштинанакругеP=r*r*3.14).Логичка исправност на програмите се обезбедува со проверкии со тестирање.

Програматавоглавносетестиразавлезнитеподатоцизакоиоднапредепознатрезултатотилизакоирезултатотможелеснодасепроверинадругначин(рачнопресметување).Притоатребадасеводисметкапрограматадасетестиразаразличниподатоци.

Пр. 4. 10. Соследнавапрограмасевнесуваатдвабројаисепресметуванивниотколичник:

Page 26: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

112

Преведијаиизвршијапрограмата.За деленикот внеси вредност 10,а за делителот внеси вредност 0.Програмата нема да даде точенрезултат.

Причиназатоаештоделењетосо0неедефинираноипрограматанезнаекакодасеоднесувавотојслучај.Програмеротнаправилпревидвоалгоритамотинегопредвиделовојслучај.Примеризалогичкигрешкисе:акозадолжинатанастрананагеометрискафигура

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

РезимеЛиниитекоизапочнуваатсознакот„#“преведувачотнегипреведуваинивгинарекувамепретпроцесорскинаредби.Соизразот#includeнапреведувачотмунајавуваме од кои библиотеки ќе користиме наредби. Библиотека iostream естандарднабиблиотекакојаовозможувавнесувањенаподатоципрекутастатураииспишувањенарезултатипрекумонитор.Соисказотusingnamespacestd; напреведувачотмукажувамедекаќекористименаредбиодпросоторотstd,штоекратенкаодstandard.mainеименаглавнатафункцијакојаморадајаимасекојаC++програма.Исказикоијасочинуваатфункцијатаmainсеставаатпомеѓуголемитезагради„{“и„}“.Секојисказзавршувасознакотточкаизапирка„;“.Исказотreturn0;епоракадооперативниотсистемдекапрограматауспешноеизвршена.Техникатанавовлекувањенасеквенциодисказикоисочинуваатлогичкацелинасенарекуваиндентација.Процесотнапронаоѓањеинаисправањенагрешкисенарекувадебагирање.Когапреведувачотќевоочисинтакснагрешка,тојвопосебнарамка(Buildmessages)ќеиспишепораказавидотнагрешкатаизалинијатавокојагрешкатаевоочена.Логичкитегрешкигиоткривапрограмеротпрекутестирањенапрограмата,воштоможатдамупомагаатпосебнипрограминареченидебагери.

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

Прашања:1. Сокоилиниизапочнува,асокоилиниизавршувапрограмскиоткодвоC++?2. Какосенарекуваатлиниитекоизапочнуваатсознакот#?Какопреведувачотсе

однесуваконовиелинии?3. Заштосекористиизразот#include?4. Како се нарекува стандардна библиотека која овозможува внесување на

податоцииприкажувањерезултати?

Page 27: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

113

5. Којаеулогатанаисказотusing namespace std;?6. КакосенарекуваглавнатафункцијавоC++?7. Какосеодвојуваатисказитееденоддруг?8. Како оперативниот систем ќе знае дека програмата успешно завршила со

работа?9. Зашто се користи исказотsystem (”PAUSE”);?Дали е задолжително овој

исказдасекористивопрограмите?10. Далиморасекојисказвопрограматадасепишувавоновалинија?11. Штоеиндентација?12. Зоштопрограмеритејакористаттехникатанаиндентација?13. Штоедебагирање?

Задачи:1. Пополнигипразнитеместавоследниоткод:

#include <_________> _________ <cstdlib> using ____________ std; int _____() { cout<<”Zdravo!”___endl; ____<<”Kako si?”<<endl; system(”______”); return __; }

2. Уредигоследниоткоднаначинтојдабидепрегледенилесензачитање: #include <iostream> #include <cstdlib> using namespace std; int main() {int god; cout<<”Hello world!”<<endl; cout<<”I’m C++”<<endl; system(”PAUSE”); return 0; }

3. Даливоследнатапрограмаенаправенасинтакснаилилогичкагрешка?Најдијагрешката!

#include <iostream> #include <cstdlib> using namespace std; int main() { cout<<”Za 100 evra mozes da dobies ”; cout<<100/61.5<<” denari!”<<endl; system(”PAUSE”); return 0; }

4. Најдигигрешкитевоследнавапрограма: #include <iostream> #include <cstdlib> using namespace std; int main()

Page 28: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

114

{ Cout<<”Kako si?”<<endl; cout<<”Mislis deka programiranjeto e tesko?”>>endl; cout<<”Ne grizi se!; cout”Nabrgu ke razberes mnogu poveke”; system(PAUSE); return(O) }

4.3  Програма со редоследна структура

4.3.1 Основни елементи на програмскиот јазик

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

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

Програмскитeјазици,какоиприроднитејазици,имаатсвојаазбука.АзбукатанајазикотC++есоставенаод:

- големитеималитебуквинаанглискатаабецеда: |A|B|C|D|E|F|G|H|I|J|K|L|M|N|0|P|Q|R|S|T|U|V|W|X|Y|Z| |a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|- арапскитецифри: |0|1|2|3|4|5|6|7|8|9|- специјалнитезнаци: |+|-|*|/|=|(|)|{\}\[|]\<|>|‘|“|!|#|\|%|&||||_| |^|¸|~\,\;|:|?|- изнакотзапразноместо||.Честосекористатисложенисимболи,односнодвознациитризнаци,напр.:|+=|-=|*=|/=|%=|<<|>>|++|==|/*|*/|&&|!=|<<=|>>=|идруги.Соовиезнацисепишуваатситеконструкцииодкоипрограмеротспоредточно

одредениправилатаградиискази(наредби).Тиеконструкциипретставуваатградбени делови на програмскиот јазик.Тоасе:

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

Резервирани зборовиНекоиодзборовитекоисекористатвопрограмитеоднапредседефинирании

преведувачотточнознаештотиезначат.Овиезборовисенарекуваатклучни зборовиинивнотозначењенеможедасеменува.НекоиодклучнитезборовивојазикотC++се:delete,int,return,if,then,else,do,while,true,false.

Page 29: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

115

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

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

зборовиилиидентификатори.Постојатнекоиправилаприформирањенаидентификаторите:- име се состои од еден или од повеќе знаци кои можат да бидат букви оданглискатаабецеда(a-z,A-Z),цифри(0-9)изнакотдолнацрта(_)(иметонесмеедасодржидругиспецијалнизнацинитузнакотзапразноместо),

- првиотзнаквоиметоможедабидебукваилидолнатацрта,- сеправиразликапомеѓумалии големибукви (напр. Zbir, zbir и ZBIR се триразличниидентификатори).

- резервиранитезборовинесмеатдасекористаткакоидентификатори.Пр. 4. 11. ПравилнозапишаниимињавоC++се:

Broj, BrojVoDnevnik, reden_broj, plostina1, Ime1_1, Sobiraj,

Пр. 4. 12. НеправилнозапишаниимињавоC++се:ime i prezime содржипразноместо100procenti започнувасоцифрата1sto% содржиспецијалензнак%ученик содржибуквиодќирилицатаreturn резервиранзбор

Совет: Иако не е пропишано како правило, добра пракса е да се користат имињакоиполесноќегизапомнишиќеимаатнекоезначење.Например,подоброедакористишимињакакоштосеparalelka,volumen_na_prizma,MestoNaRag-janjeисличнонаместоa1,a2,a3,xyитн.Оваеособенозначајнозаснаоѓањево програмите. Ако некој друг, или самиот автор по подолго време, ја читапрограмата,полесноќеразберезаштовонеасеработи.

Оператори Операторите(+,-,*,/,=,%,++,--,&&,||,+=,*=идр.)секористатзаозначување

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

Интерпукциски знациИнтерпукциските знаци (во кои спаѓа и знакот празно место) се користат за

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

Page 30: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

116

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

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

Досегасесретнавмесокоментарот: // mojata prva programa

Когапреведувачотќедојдедодвојнатакосацрта,тојќегозанемаритекстотштоследувасѐдокрајотнатаалинијаипреведувањетоќегопродолживоследнаталинија.Познакот//можедасенапишекоментарсамовоедналинија.Подолгитекоментари(напр.возаглавиетонапрограматаможедасенапишеупатствозакористење,лиценцаислично)воC++сепишуваатпомеѓузнаците/*и*/.Например: /* So programava se presmetuva perimetarot i plostinata na pravoagolen triagolnik */

Основни елементи на програмскиот јазик C++ВотабелаваседадениосновнитеелементинапрограмскиотјазикC++:

Типовиподатоци int, float, char

Константи 0, 123.6, ”Hello”

Променливи i, sum

Декларации int x; float a; int fun(int);

Изрази sum + i

Искази(наредби) sum = sum + i; while, for, if-else, switch, break

Функции main(), Hello()

Модули datoteka

Наследнатасликаедаденпримернапрограмасокојасепресметуваплоштинанакруг.ВеќекажавмедекапрограматаCodeBlocksразличниелементинапрограматагиприкажувасоразличнибои.

Сл. 4. 26 Изглед на C++ програма

Претпроцесорскитенаредбисеприкажанисозеленатабоја.

Page 31: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

117

Операторите(<<, >>, *)сеприкажанисоцрвенатабоја,идентификаторите(main,P, r)ирезервиранитезборови(cout, cin)сеприкажанисоцрнатабоја,константите(3.14, 0)сеприкажанисовиолетоватабоја.

Декларациите,закоиподоцнаќезборуваме,(int, float)сеприкажанасотемносинатабоја.

ФункцииВо повеќето програми постојат делови од кои сочинуваат една целина и кои

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

Вопрограмитеможатдасекористатвеќепостоечкифункциикоисезачуванивобиблиотекитеилиможатдасекреираатсопственифункциикоиподоцнаќесекористат.Овасепосложенизадачисокоинемадасезапознаешнаованивонапрограмирање.Ќејакористишсамофункцијатаmain()закојавеќезборувавме.

Функцијата main ()ТоаеглавнафункцијанасекојаC++програмаиозначуваделнапрограмакојтреба

дасеизврши.Таасодржисеквенцаодискази(еденилиповеќеискази)коисепишуваатпомеѓу големите загради { и }. Секвенците од искази се пишуваат вовлечено зарадипрегледност.

Структура на програма во C++Сезапознавмесоосновнитеелементикоисочинуваатструктуранапрограмаво

програмскиотјазикC++.Структуратанаеднапрограмаизгледавака:

/*коментаривозаглавието*/претпроцесорскинаредби…декларациинапроменливиintmain(){….искази(извршнинаредби)….return0;}

РезимеПрограмските јазици се состојат од точно одредена група зборови коипрограмеротспоредодредениправилагиподредувавоискази.Градбените делови на програмскиот јазик се: резервирани зборови,идентификатори,оператори,интерпункцискизнациикоментари.Резервираните зборови неможеме да ги користиме за имиња кои ние ќе гиформираме за да опишеме величини (променливи и константи), функции ислично. Имињата што ги формира програмерот се нарекуваат корисничкидефиниранизборовиилиидентификатори.Постојатправилаприформирањенаидентификаторите.Основнитеелементинапрограмскиот јазикC++се:типовиикласи,константи,променливи,декларации,изрази,искази,функцииимодули.

Page 32: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

118

Прашања:1. ОдкоизнациесоставенаазбукатанапрограмскиотјазикC++?2. НаведигиградбенитеделовинапрограмскиотјазикC++!3. Штосерезервиранизборови?4. Зошто резервираните зборови не можат да се користат за формирање на

корисничкитеимиња?5. Штосеидентификатори?6. Коиправиламорадасепочитуваатприформирањенаидентификаторите?7. Коиоднаведенитеимињанесеидентификаториизошто?

tocno? 10SoKromid Vozrast noviot_avtomobil

a+b AAa x[1] programski jazik

8. Штосекоментари?9. Далипреведувачотгипреведувакоментарите?Зошто?

10. КакосепишувааткоментаривоC++?11. КоисеосновниелементинапрограмскиотјазикC++?12. КојафункцијаморадајаимасекојапрограмавопрограмскиотјазикC++?13. Којаеулогатананаредбатаinclude?14. Колкуmainфункцииможедаимавопрограма?

4.3.2 Искази. Исказ за приказ на екранВопрограматаprva.cppговидовмеисказот

cout << “Ti posakuvame uspeh vo ucenjeto!“;

сокојтекстот„Tiposakuvameuspehvoucenjeto!“сеприкажуванаекранот.Дагианализирамесоставнитеделовинаовојисказ:• cout –функцијакојанасочуваподатоциконизлезот,најчестотоаемонитор,• <<–операторотнаиспишувањекојпораката”Tiposakuvameuspehvoucenjeto!”

јапраќаконизлезот,• ””–сештоеставеновонаводициепоракакојасеприкажуванаекранот,• ;–означувакрајнаисказ(неналинија).Сокористењенаисказотзаприказ,намониторотможедасеприкажат(отпечатат)

каквибилоподатоци.Мониторотестандарднаизлезнаединица.Примеризаприменанаисказотзаприказ:

cout<<25; ќесеприкажебројот25 cout<<”a”; ќесеприкажевредностбукватаа

cout<<a; ќесеприкажевредностнапроменливатаa

cout<<2*a;ќесеприкажедвојнатавредностнапроменливатаa

cout<<”Tekst”; ќесеприкажетекстот„Tekst“

Пр. 4. 13. Извршијаследнатапрограма!

Page 33: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

119

Забележувашдекаречениците„Zdravo!“и„JassumC++programa!“сеприкажанивоедналинијаисеприлепениеднасодруга.Какоќегиразделишсоеднопразноместо?По испишување на податоци наведени во исказот cout, курсорот останува воистаталинијаиследнотоиспишувањенаподатоципродолжуватука.Пр. 4. 14. Заиспишувањевоновалинија,секористиизразотendl (кратенкаод

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

Воисказотcout<<”Zdravo!”<<endl<<”Jas sum C++ programa.”;сенаведениповеќеоператоринаиспишување.Вотојслучајподатоцитесеиспишуваатодлевокондесно.

Воопштслучајисказотcoutсекористинаследниотначин: cout<<podatoci[<<podatoci];

приштоподатоцитеможатдабидатконстанти,променливи,изразиилинивнатакомбинација.

Забелешка: Деловитенаисказикоинесезадолжителниќегиставамевосреднизагради.

Page 34: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

120

Техника на редоследно извршување Воглавнатафункцијаимадваисказизаприказнаекран:

cout<<”Zdravo!”; cout<<”Jas sum C++ programa.”;

Којисказќесеизвршипрв?Штоќесеслучиаконаисказитеимсезаменатместата?Пр. 4. 15. Програматаодпримерот5.14можедасенапишеивака:

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

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

Пр. 4. 16. ОтвориновадатотекаидајѝимеC++.Препишигокодот:

Преведијаиизвршијапрограмата!Зад. 4. 7. Напишииизвршипрограмасокојанаекранотќесеприкажетвоетоиме

напишаносопомошнаѕвездички!

Page 35: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

121

РезимеИсказилинаредбаодредувакоидејстваепотребнодасеизвршатзададобиемерезултат.Секојизказморадазавршисознакотточкаизапирка.Заприказнаекран го користимеисказот cout. Воопшт случај исказот cout гокористиме на следниот начин: cout<<podatoci[<<podatoci]; при штоподатоците можат да бидат константи, променливи, изрази или нивнатакомбинација.coutефункцијакојанасочуваподатоциконизлез,најчестотоаемонитор,<<е оператор на испишување кој пораките ставени во наводници ги праќа конизлезот.Исказикоисеизвршуватточнопоонојредоследпокојсенапишанипретставуваатсеквенцаодисказиилинапластениискази.Пишувањетоисказивопрограмскиоткод кои се извршуваат сите и редоследно се вика техника на редоследноизвршување.

Вештини што треба да ги усовршиш:Дапознавашструктуранаисказотзаприкажувањенаекран(cout).Правилнодагоупотребувашисказотcoutиоператорот<<.Дагокористишизразотendlвоисказотзаприкажувањенаекран.Данапишешедноставнапрограмасокористењенаисказитеcoutитехникасонапластениискази.

Прашања:1. Штоеисказ?2. Којисказсекористизаприказнаекран?3. Воисказотзаприказнаекранот,штоозначуваоператорот<<?4. Воисказотзаприказнаекранот,којизразсекористизадакурсоротпомине

воновред?5. Штосеозначувасоизразотнапластениискази?6. Како се нарекува техниката на пишување искази кои се извршуваат сите и

редоследно?7. а)Штоќесеприкаженаекранотсоследниовисказ? cout<<”J”<<endl<<”A”<<endl<<”N”<<endl<<”A”<<endl;б)Штоќесеприкаженаекранотсоследнавасеквенцаодискази? cout<<”J”<<endl; cout<<”A”<<endl; cout<<”N”<<endl; cout<<”A”<<endl;

Задачи:1. Напишипрограмасокојаќегодобиешследниовприказнаекранот: Zdravo! Kakovprekrasenden! Odamnaprosetka.

Page 36: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

122

2. Напишипрограмасокојаќесеотпечатитвоетоименаследниовначин: I M E3. Напишипрограмасокојаќесеотпечатитвоетоименаследниовначин: I M E4. Напишипрограмасокојанамониторотќесеприкажесликапотвојизборсо

помошнаѕвездички!

4.4  Променливи и искази за доделување

4.4.1 Аритметички операции и изрази Пр. 4. 17. Напишијаиизвршијаследнавапрограма:

На екранот се прикажува „5+2“. Овде изразот „5+2” e низа од знаци која сеприкажуванаистиотначинкакоштотааенапишанавонаводниците.Напишијаистатапрограма,носегатргнигинаводниците!

Програматагисобираброевите5и2ирезултатот,којвослучајове7,гоприкажувана екранот. Изразот 5+2 претставува аритметички израз кој има своја бројнавредност.Зад. 4. 8. Напишипрограмасокојанаекранотќесеприкаже5+2=7!Аритметички израз ебројнавредностилизаписоддвеилинаповеќебројни

вредностииматематичкиоператор(и)меѓунив.ОператоривопрограмскиотјазикC++се:плус(+)заоперацијатасобирање,минус(-)заоперацијатаодземање,ѕвездичка(*)

Page 37: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

123

заоперацијатамножење,косацрта (/)заоперацијатаделењеимодул (%)заостатокприделењенадвацелиброја.ОвасесамонекоиодоператоритекоисекористатвопрограмскиотјазикC++.

Аритметичкитеизразисеградатнаистначинкакоивоматематиката.Примеризааритметичкитеизразисе:2*3+8, 7-2, (15-5)*100, 2/a, a-b. Овдеброевитекакоштосе2,3,100итн.секонстанти,додекаaиbсепроменливи.

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

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

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

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

Воматематикатаиводругитенаукисесреќавашсомногупроменливи,напр.a,b,c–странинатриаголник,Р–плоштина,t–температураитн.Наситеовиепроменливиимседоделуватразличнивредности.Например,натемпературатаможедаѝседоделивредност-15,алии23,17,32итн.

Напроменливитеимседоделувавредностсопомошнаоператор за доделување.Операторотзадоделувањеезнакотеднакво(=).

Важно!Знакот еднакво (=) овде не означува еднаквост како во математиката. Сооператорзадоделувањенапроменливата од левата странанаоператоротѝседоделувавредност на изразот од десната странанаоператорот.Одтиепричинипроменливатанакојаѝседоделувавредностморадабидеодлеватастрананаоператоротзадоделување.Неточноенапр.5=аилиа+b=с;

Примеризадоделувањевредностинапроменливиседаденивоследнаватабела:

x = 5;

напроменливатаxѝседоделувавредност5.Овавсушност,значидекавомеморискаталокацијакојаеозначенасосимболичкоимеxќесезачувабројот5илидекабројот5есодржинанапроменливатаx.

a = 20; напроменливатаaѝседоделувавредност20.

a = b*3;помножигисодржинатанапроменливатаbибројот3ипроизводотзачувајговопроменливатаa.

x = x+3;насодржинатанапроменливатаxдодајброј3избиротзачувајговопроменливатаx.

x=c=b=5;

напроменливатаbѝседоделувавредност5,напроменливатаcѝседоделувасодржинатанапроменливатаb,напроменливатаxѝседоделувасодржинатанапроменливатаc.Конеченрезултатнаовојисказе:содржинатанаситетрипроменливиеистаиееднакванабројот5.

Page 38: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

124

Дајаразгледамеследнавасеквенцаодискази:

Исказ Содржинанапроменливатаa b zbir

a = 3; 3 ? ?b = 7; 3 7 ?a = a+1; 4 7 ?zbir = a+b; 4 7 11

Поизвршувањенаоваасеквенцаодисказипроменливатаaќеимавредност4,променливатаbќеимавредност7ипроменливатаzbirќеимавредност11.

Посебно внимание ќе му обрнеме на исказот a=a+1; Во математиката ваковисказ не е точен, но во програмскиот јазик C++ знакот = нема исто значење како воматематиката.Предовојисказ,напроменливатаaѝедоделенавредност3(соисказотa=3;).Соисказотa=a+1;вредностанапроменливатаa(бројот3)сесобирасо1избирот(бројот4)седоделуванапроменливатаa.Тоазначидекавомеморискаталокацијакојае означена какопроменливаa претходната содржина (бројот 3) ќе се избрише, а нанејзинотоместоќесезачувановатасодржина(бројот4).

Сѐуштенеможемеданапишемепрограмавокојаќесекористатпроменливи.Обидиседајаизвршишследнавапрограма:

Преведувачотќејавигрешкидекапроменливитекоисекористатвопрограматанеседекларирани:

Очигледноедекапреведувачотбарадаседекларираат(најават)променливикоиќесекористатвопрограмата.Заовадаможедасенаправи,првоќесезапознаемесопоимоттипнапроменлива.

4.4.2 Типови на променливиКомпјутеротмораоднапреддазнаекаквиподатоциќесечуваатвопроменливите.

Причината е едноставна – потребно е повеќе место за зачувување на на пр. еднареченицаотколкузазачувувањенаедензнак.Значи,компјутероттребаоднапреддазнаеколкавпросторвомеморијатаќерезервиразасекојапроменлива.

Page 39: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

125

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

- цели броеви–броевикоинемаатдецималендел,- реални броеви–броевикоиимаатцелидецималендел,- знаци–билокојзнакодазбукатанаC++,- логички податоци–точноилинеточно,односно0или1.

Типот на променлива е одреден со типот на податокот кој во неаможе да сезачува.Насекојпроменлива,освенсимболичкоиме,морадаѝседоделииознака за типкојникажуваколкупросторвомеморијататребадасерезервира,колкавеопсегotнадозволенитевредностинаподатокот,коиоперациисеможнисотојподатокислично.

Вотабелатаседадениделодосновнитетиповиподатоциинивнитеознаки,какоивредноститекоиможатдаседоделатнапроменливаодсоодветентип:

Ознака Опис Големина Опсегнавредности

char знаковнапроменлива 1бајт 256знаци

int целобројнапроменлива 4бајти 0-4294967295илиод-2147483648до2147483647

bool логичкапроменлива 1бајт trueилиfalse

float реалнапроменливасо 4бајти соточностдо7децималниместа

doubleреалнапроменливасодвојнапрецизност 8бајти соточностдо15децималниместа

Целобројнитетиповиможатдабидатсамопозитивниилиипозитивниинегативни.Аковонекојацелобројнапроменливатребадасезачуваатсамопозитивнивредности,тогашпредознакатаintсеставаознакатаunsigned.Постоииознакаsigned,нотаасеподразбира,панеморадасепишува.

Ќеспомнемеуштеедентипподатоцикојнесевбројувавоосновнитетипови,новомногуработитакасеоднесуватака.Тоаенизаодзнаци(карактери)илистрингсокојавеќесезапозна(“Dobarden”,“C++”итн.).Засегаедоволнодазнаешдеканизаодзнацисепишувапомеѓунаводници.Ознаказаовојтипподатоциеstring.

За љубопитните:КомплетнататабеласоситеосновнитиповиподатоциможешдајапогледнешвододатокотА,накрајотнаучебникот.

Декларирање на променливиСекојапроменливакојаќесекористивопрограмаморадасенајави,односнода

седекларира.Притоатребадасеимапредвидследнивекарактеристики:- секојапроменливаимасвоеиме- секојапроменливаиматип- секојапроменливасодрживредносткојаѝседоделуванајчестосооператоротзадоделување.

Page 40: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

126

Когаседеклариранекојапроменлива,првосенаведуваознаказатип,апотоаименапроменливата:tip imenapromenliva [imenapromenliva];

Поедентипможедасенаведатиповеќепроменливиодвоенисозапирка.Такасоисказотint i, j;сенајавувадекаќесекористатдвецелобројнипроменливи,нивнитеимињасеiиj,нанивможедаимседоделивредносткојаќебидецелброј.

Примеринадекларирањенапроменливи:

int a; декларацијанацелобројнапроменливаafloat broj; декларацијанареалнапроменливаbrojchar bukva; декларацијаназнаковнапроменливаbukvaint b,c,d; декларацијана3целобројнипроменливиb,cиd

Пр. 4. 18. Сегаимамесѐштоепотребнозадасенапишепрограмасокојаќесесобератвредностинадвепроменливи.Преддасекористатпроменливи,тиетребадаседекларираат:

Наместоисказотcout<<c<<endl; подоброедасенапишеcout<<”c=”<<c<<endl; соштонаекранотќесеотпечати„c=7“.Натојначинкорисникотзнаенаштосеоднесуварезултатотштоеприкажаннаекранот.Истиотизлез ќе сеприкажеиако сенапишеcout<<”c=”<<a+b<<endl;Воовојслучајможедасеизоставиисказотc=a+b;. Зошто?Пр. 4. 19. Соследнатапрограмаќесеотпечати„с“наместо7.Зошто?

Page 41: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

127

Требадасевнимавакогаседоделуваатвредностинапроменливите.Преведувачотнемаданеизвестиаконанекојапроменливаѝседоделуваподатокоднесоодветентип,програматаќесепреведенонемадададеточенрезултат.Дагопогледнемеследниотпример.

Пр. 4. 20. Нацелобројнатапроменливаaѝседоделувареаленброј:

Воовојпримерсоизразотa=2.5; напроменливатаaнемадаѝседоделиреаленброј2.5.Тааедеклариранакакоцелобројнапроменливапавонеасезачувувасамоцелиотделоддоделенатавредност(2).Зад. 4. 9. Во претходниот пример на променливатаa додели ѝ податок од тип

знак,например a=’2’;(знацитесепишуваатпомеѓуапострофи).Преведијаиизвршијапрограмата!Штосеслучува?

Иницијализација на променливиПреддасезапочнесокористењесокористењенанекојапроменлива,неопходно

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

Напроменливитеможедаимседоделатвредноствоистиотисказсокојтиеседекларираат.Таканаместо: int a; a = 5;

можедасенапише int a = 5;

Пр. 4. 21. Плоштинанаправоаголникотсостранитеa=8иb=3:

Page 42: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

128

Пр. 4. 22. Заменанавредностинадвепроменливи:

Заменанавредностинадвепроменливичестосекористивопрограмите.Променливатаt се користи како привремена променлива во која ќе се зачувавредностанапроменливатаaпреддаѝседоделиновавредностсоисказотa=b;.Соисказотb=t; напроменливата b ѝседоделувавредностаодпривременатапроменливаtштовсушностепретходнатавредностнапроменливатаа.

a b t

int a = 8; 8 ? ?int b = 3; 8 3 ?t = a; 8 3 8a = b; 3 3 8b = t; 3 8 8

а8

t8

8b

33

1

2

3

Сл. 4. 27 Графички приказ на замена на вредности на променливи

Важно!Ако на променливите не им се додели некоја вредност тие сепак ќе имаатнекојаслучајнавредносткојапреведувачотавтоматскиќеидодели.Линиитеа=5;иb=2;ставигикакокоментари,преведијаиизвршијапрограмата.Ќевидишдекапрограматаќеработипоинаку,односноќедаденекојпроизволенрезултат.Секогаш доделувај вредности на променливи!

КонстантиОсвенпроменливите,воC++секористатиконстанти.Соконстантитевопрограмите

сеизразуваатодреденивредности.Какоипроменливите,иконстантитесеразликуваатспоредтипотнаподатоксокојнејзинатавредностеизразена.Такаима:

- целобројни константи(15,100,-50)- реални константи(2.34,105.5,-12.2)- знаковниконстанти (‘a’,‘M’,‘+’,‘$’)- логички константи(true/false,1/0) - стринговниконстанти(“Dobarden”,“C++”).

Page 43: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

129

Забележувашдеказнаковнитеконстантисезапишуваатпомеѓуапострофи,додекастринговнитеконстантисезапишуваатпомеѓунаводници.

Иконстантитеможатдаседекларираатнасличенначинкакоипроменливите.Единственатаразликаевотоаштосекористиклучниотзборconst.Напр.: const float DDV = 0.18; const float BRZINA_NA_SVETLINATA = 2.997925e8; const char ZNAK=’$’;

РеалнатаконстантаDDVеприкажанасодецималнаточка,аконстантатаBRZINA_NA_SVETLINATA, којаистотакаереална,еприкажанасо т.н.научноозначување.Воовојначиннаозначувањесекористималатаилиголематабуква„е“ сокојасеозначуваекспонентотнабројот 10. Со 2.997925e8 епретставенбројот 2.997925∙108.

Забелешка:Програмерите имињата на константите вообичаено ги пишуваат со големибуквииакотаквосинтаксноправиловојазикотC++непостои.

Пр. 4. 23. Следнавапрограмапресметуваплоштинатанакругсорадиусотr=2.5:

ВопрограмавасекористиреалнатаконстантатаPIнакојаѝседоделувавредност3.14.

РезимеАритметички израз е бројна вредност или запис од две или повеќе бројнивредностииматематичкиоператор(и)меѓунив.ОператоритевопрограмскиотјазикC++се: + -*/и%. Секојапроменливаиликонстантакојаќесекористиво програма мора да се најави, односно декларира. Под ова се подразбираодредувањенаиметиинатипотнапроменливата.На променливите им се доделува вредност со помош на операторот задоделување(=).Аконапроменливитенеимдоделимевредност,тиесепакќеимаатнекојаслучајнавредносткојапреведувачотавтоматскиќеѝјадодели.Основни типови и ознаки на променливите и на константите се: целобројни,реални,знаковниилогичкипроменливи.Доделувањенапочетнатавредностнапроменливасенарекуваиницијализацијанапроменлива.

Вештини што треба да ги усовршиш:ДапишувашидакористишаритметичкиизразивоC++.Дадоделувашвредностинапроменливисопомошнаоператорот=.

Page 44: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

130

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

Прашања:1. Штоеаритметичкиизраз?Напишинеколкуаритметичкиизрази?2. Коивеличинисекористатвопрограмскитејазици?3. Направиразликапомеѓуконстантиипроменливи?4. Штосеподразбираподдекларацијанапроменлива?5. Далиеможноповеќепроменливидаседекларираатсоеденисказ?Акое,

наведипример!6. Којаоднаведенитедекларацииеисправна? a)int n=-10; б)unsigned int i =-10; в)signed int = 3.8;7. Наведипримеризасекојодтиповитенаконстанти!8. Штоќесеприкаженаекранотсоследниотпрограмскикод?

char a,b,c; a=’b’; b=’c’; c=a; cout<<a<<b<<c;

9. Штоќесеприкаженаекранотсоследниотпрограмскикод? bool x=2>1;

cout<<x;

Задачи:1. Аковопрограмасекористатпроменливитеintkolicina=24иfloatcena=12.5,со

наредбатаcoutиспишиги:а.нивнитеимињаб.нивнитевредностив.извештајвоформа„kolicina=x,cena=y“,такаштонаместоxиусеиспишуваатвредноститенапроменливитеkolicinaисena.

2. Напишипрограмазапресметувањенаплоштинанаправоаголниксостранитеа=8.5иb=3.2!Излезотдасеприкаженаекранотвоследнаваформа:

Plostinata na pravoagolnikot so stranite a=8.5 i b=3.2 iznesuva 23.4.3. Напиши програма за пресметување на плоштина на круг со радиус r = 2.5!

Излезотдасеприкаженаекранотвоследнаваформа: Plostinata na krugot so radiusot r = 2.5 iznesuva 19.625.4. Напишипрограмасокојаќепресметашплоштинаипериметарнаквадратсо

странаa=8.5!5. Напишипрограмасокојаќесенајдеаголотнаврвотнарамнострантриаголник

чијаголнаосноватае30степени!6. Напиши програма со која ќе најдеш решение на линеарната равенка чии

параметрисеa=3,b=-18!

Page 45: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

131

4.5  Дополнителни специфики на јазикот

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

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

ВоC++преземањетонаподатоцисеизвршувасооператорот>>вокомбинацијасоисказотcin.Например,соисказот

cin>>broj;

сеприфаќавредносткојакорисникот јавнесувапрекутастатуратаиѝседоделуванапроменливатаbroj.

Дагианализирамесоставнитеделовинаовојисказ:- cin – функција која „извлекува“ податоци од влезот, стандарден влез етастатурата,

- >>–операторзачитањекојпреземаподатокодвлезотигопраќавосоодветнапроменлива,

- broj – име на променлива на која ѝ се доделува вредност прифатена одтастатурата,

- ;–означувакрајнаисказ(неналинија).Применанаисказотзавнесувањенаподатоци:

cin>>x;Програматаочекувавнесувањенаподатоккојќесезачувавопроменливатаx.

cin>>a>>b;Можноесоеденисказзавнесувањедасевнесатповеќеподатоцикоивопроменливитесезачувуваатпоредоследотодлевокондесно.

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

По внесувањето на податоците, корисникот мора да го притисне кочето Enter,инакупрограматанемадагипреземеподатоцитеинемадапродолжисоработа. cin>>a>>b; еистоштои cin>>a;

cin>>b;

Водватаслучаикорисникоттребадавнеседваподатока,првиотзапроменливатаa и вториот за променливатаb. При тоа, по внесување на секој податокможе да гопритиснекочетоEnter,ноподатоцитеможедагиодвоиисопритискањенакопчињатаSpaceилиTab.

Воопштслучајисказотcinгокористименаследниотначин: cin>>promenliva[>>promenliva];

Page 46: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

132

Пр. 4. 24. Програматазасобирањенадвабројаепреуреденатакаштокорисникотќевнесуваподатоцизапроменливитеaиb.

внесува корисниквнесува корисник

4.5.2 Техника за објаснувања за податоците кои се очекуваат од корисникотПрограматаодпретходниотпримернемагрешки,сепакнештонедостасува.Кога

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

Проблемотможедасеслучииакокорисникотвнесепогрешенподаток.Извршијапрограматаизапроменливатаaвнесинекојреаленброј.Програматаќедаденеточенрезултат.Одовиепричининакорисникоттребадамуседадепојаснувањевовиднапоракаштооднегосеочекува.Предсекојcinисказтребадасенапишеиcoutисказсокојнакорисникотќемусеприкажепоракакаковподатокоднегосеочекува.

Значинаместо cin>>a;

сепишува cout<<”Vnesi cel broj: ”<<endl; cin>>a;

Пр. 4. 25. Програматавокојасекористатпоракизаобјаснувањекаквиподатоцисеочекуваатодкорисникот:

Page 47: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

133

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

РезимеПрограмите каде корисникот може да внесе вредности на променливи и сокоисеприкажуваатрезултатизависноодвлезнитеподатоцинакорисникотсенарекуваатинтерактивнипрограми.ВоC++преземањетонаподатоцисеизвршувасооператорот>>вокомбинацијасо исказот cin. Во општ случај исказот cin се користи на следниот начин:cin>>promenliva[>>promenliva];Предсекојcinисказтребадасенапишеиcoutисказсокојнакорисникотмусеприкажувапоракакаковподатокоднегосеочекува.

Вештини што треба да ги усовршиш:Дагокористишисказотзавнесувањенаподатоцивопрограма(cin).Правилнодагокористишоператорот>>воисказотзавнесувањенаподатоци.Дакористиштехникасокојанакорисникотќемуобјаснишштооднегосеочекува.Да напишеш едноставна програма со исказот за внесување на податоци вопрограма.

Прашања:1. Коипрограмисенарекуваатинтерактивнипрограми?2. Сокојисказсеовозможувавнесувањенавредностизапроменливи?3. Какокорисникотвнесувавредностивопрограма?4. Напишиисказсокојпрекутастатуратасевнесувареаленбројисепридружува

напроменливатаt!5. Зоштоепотребнонакорисникотдамусеприкажепоракапредтојдавнесе

некојавредност?6. Коивредностиќеимседоделатнапроменливитеaиbсоисказотcin>>a>>b;

акокорисникотпоредгивнесеследнивевредности:-1,1?7. Штоќесеприкаженамониторотпоизвршувањенаследниоткод:

int i,j,k; cin>>j>>k>>i; cout<<i<<”, “<<j<<”, “<<k;

акокорисникотпоредгивнесеследнитевредности:1,2,3?

Page 48: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

134

Задачи:1. Напиши програма со која ќе се пресметаат плоштината и периметарот на

правоаголник! Овозможи корисникот да внесе вредности на страните направоаголникот.Пример1:Vnesigistranitenapravoagolnikot:53Plostinatanapravoagolnikote15,anegoviotperimetare16

Пример2:Vnesigistranitenapravoagolnikot:4.52.8Plostinatanapravoagolnikote12.6,anegoviotperimetare14.6

2. Напиши програма со која ќе се пресметаат плоштината и периметарот наквадрат!Овозможикорисникотдавнесевредностнастранатанаквадратот.Пример1:Vnesijastranatanakvadratot:5Plostinatanakvadratote25,anegoviotperimetare20

Пример2:Vnesijastranatanakvadratot:7.2Plostinatanakvadratote51.84,anegoviotperimetare28.4

3. Напишипрограмасокојаќесепресметаатплоштинатаипериметаротнакругсодаденрадиус!Пример1:Vnesigoradiusotr=5Plostinatanakrugote78.5,anegoviotperimetare31.4

Пример2:Vnesigoradiusotr=3.2Plostinatanakrugote32.1536,anegoviotperimetare20.096

4. Напишипрограма која и помагана касиркада пресмета кусур, такаштооднеабарадавнесеценанаартикал,количинанаартикалиизноскојземаодкупувачот!

Пример:Cena:100Kolicina:4.5Iznos:1000Kusur:550

4.5.3 Дополнителни спецификации на јазикот C++ (прв дел)

Операцијата делење со целобројни и со реални променливиДајаразгледамеследнавапрограма:

Page 49: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

135

Гледаме дека операторите работат главно тоа што од нив се очекува, освеноператорот за делење. Наместо очекуваниот резултат 2.5, програмата дава резултат2. Ова се случува затоа што променливите a и b се декларирани како целобројнипроменливипапрограматакакорезултатвраќацелброј(гозанемарувадецималниотделнарезултатот).

Истотоќесеслучииакорезултатотќесезачувавоновапроменливакојаќеседеклариракакореалнапроменлива.Сосеквенцатаодискази: int a = 5; int b = 2; float kolicnik = a/b; cout<<kolicnik;

на екранот ќе се прикаже 2 иако променливата kolicnik е декларирана какореалнапроменлива.

Зад. 4. 10. Воматематикатаизразот1/3*3имавредност1.НапишипрограмасокојаќепроверишкојавредностјаимаовојизразвоC++!Објасни!

ВаковначиннаделењенеегрешканапрограмскиотјазикC++.Вакадефиниранатаоперацијанаделењенацелобројнитеконстантиипроменливисенарекуваатцелобројно делење, а резултатот се нарекува целоброен количник. На пр.: 10/2=5, 10/3=3, 100/75=1, 75/100=0итн.

Зацелобројнитеконстантиипроменливиедефиниранауштееднаоперација–остаток при целобројното делење, за која се користиоператорот „%“ (modul). Така5%2 = 1, бидејќи остатокот на делењето на броевите 5 и 2 е 1,10%2=0, 10%3=1, 100%75=25, 75%100=75итн.

Зад. 4. 11. Напиши програма со која се пресметува количникот и остатокот наделењенадвацелиброја!

Пр. 4. 27. Програмасокојасенаоѓаатцифринададендвоцифренброј:

Зад. 4. 12. Напишипрограма со која ќе го најдеш збирот на цифрите на дадендвоцифренброј!

Page 50: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

136

Претварање на типови податоциВидовмедекаакоиделеникотиделителотсецелиброеви,тогашиколичникотќе

бидецелбројбезразликадалиброевитеседеливиилине.Например,соисказотfloat kolicnik = 5/2;променливатаkolicnikќедобиевредност2(целброј).Секојцелбројможедасезапишекакореаленброј,напр.бројот2можедасе

запишекако2.0илискратено2.Акопретходниотисказсезапишекако float kolicnik = 5./2; илиfloat kolicnik = 5/2.;променливатаkolicnikќедобиевредност2.5(реаленброј)Доволноедецималнататочкадасестависамопослееденоперанд(величинаврз

којасеизвршуваатоперации).

ВоC++едозволенопретварањенатиповиподатоци,тоасеодвиваспоредодредениправила:

- Акооперандитесеодисттип,одтојтипеирезултатот.- Ако операндите се од различнин типови, двата операнди ирезултатот се претвораат во посложениот тип. Така ако еденоперанд е цел број, а друг реален, двата операнди ќе сепретворатвореаленброј,атаковќебидеирезултатот.

Примеринапретварањеразнитиповиподатоци:int a,b; резултатотнаизразотa/b ќебидецелбројint a; float b; резултатотнаизразотa/bќебидереаленброј

int a,b; int c; резултатотнаизразотa*b/c ќебидецелброј

int a,b; float c; резултатотнаизразотa*b/cќебидереаленброј

Пр. 4. 28. Програмакојапресметувададениметривокилометри.

Се поставува прашање како да се постапи за да се изврши делење на двецелобројнипроменливиидаседобиерезултатсодецималниместа.Решениетоевокористењенаоператорот за доделување на тип со којпроменливитепривременосеоднесувааткакопроменливиоддругтип.Такацелобројнатапроменливаавоизразот(float)a сеоднесувакакореалнапроменлива.

Page 51: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

137

Сосеквенцатаоднаредби: int a = 5; int b = 2; float kolicnik = (float)a/b; //ili float kolicnik = a/(float)b;

напроменливатаkolicnikѝседоделувавредност2.5.Соупотребанаоператоротfloat,вредноститенапроменливитеаиbсепретвораат

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

kolicnik = a / b;напроменливатаkolicnikќеѝседоделивредност2.

Редослед на операцииВоматематикатапостоиутврденредоследнаизвршувањеоперации:операциите

сеизвршуваатодлевокондесноакоситеоперациисеодистприоритет.Овојредоследсеменувадоколкуимаоперациикоинесеодистприоритет.Опеарациитемножење,делењеиостатокприделењетоимаатповисокприоритетштозначидекапрвоќесеизвршатовиеоперациипадуритогашќесеизвршатоперациитесобирањеиодземање.Заградите го менуваат приоритетот на начин што прво се пресметува изразот возаградите:

6/3+3 =5 6/(3+3)=1ИстиотредоследеусвоенивопрограмскиотјазикC++.Такасоисказотa=5+7/2

променливатааќедобиевредност8, затоаштооперацијатацелобројноделењеимапредност.

Заa=12,b=3,c=4 вредностананаизразотa/b*c ќебиде12/3*4=4*4=16,додекавредностaнанаизразотa/(b*c)ќебиде12/(3*4) = 12/12 = 1.

Сокојодовиедваизразиепретставенматематичкиотизразabc ?

Совет:Аконесисигурен/накојаоперацијапрваќесеизврши,тоаштосакашдасеизвршипрвоставиговозагради.Наместоа=5+7/2можешданапишешиа=5+(7/2).

Скратување на изрази. Оператори +=, -=, *=, /=, %=, ++, --Честосејавувапотребаодпроменанавредностанаеднапроменлива,заштосе

користатизразивокоисевршинекојаматематичкаоперацијаврзистататаапроменлива.Напр. соизразотa=a-1; вредностанапроменливата a сенамалува за1, соизразотs=s+a; вредностанапроменливатаsсезголемувазавредностанапроменливатаa.

C++поддржувапетоператори(поеденоператорзасекојааритметичкаоперација:+=, -=, *=, /=, %=)коиовозможуваатскратенопишувањенаваквитеизрази.Така,наместоизразотa=a+1;можедасенапишеa+=1;,наместоs=s+a;можедасенапишеs+=a;,наместоa=a*b;можедасенапишеa*=b;итн.Следнаватабелагисодржиситепотребниинформациизаовиеоператори:

Примеризаскратувањенаизрази:

Скратенизраз Еквивалентносоa*=5 a=a*5a/=5-b a=a/(5-b)a*=(b-c)+5 a=a*((b-c)+5))

Page 52: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

138

Пр. 4. 29. Демонстрацијазаскратувањенаизрази:

Операциите зголемување за 1 и намалување за 1 можат да се напишат уштепократко.ВоC++постојатоператорисокоиседефинираниовиеоперации:

• ++–зголемувањеза1(increment)• --–намалувањеза1(decrement)Изразите: a=a+1; a+=1; и a++;

имаатистафункција,ситејазголемуваатвредностанапроменливатаaза1.

За љубопитните:C++годобилиметотокмупооператорот++.

Всушност, овие два операторa (++ и --) можат да се користат на два начинa:како префикс или како постфикс, зависно од тоа дали операторот се наоѓа предпроменливата (++a) или по променливата (a++). И во двата случаи вредноста напроменливатасезголемува,односнонамалуваза1,нокогарезултатотодизразитесекористивонекоиискази,важноедасеобрневниманиенаположбатанаоператоротвоодноснапроменливата.Оператороткакопрефикспрводелуванапроменливатаоднеговатадесна странаи јаменуванејзината вредност, потоа враќанова (променета)вредност.Оператороткакопостфикспрвојавраќапостоечкатавредност,потоаделуванапроменливатаоднеговаталевастранаијаменуванејзинатавредност.

Израз Значење

a++јавраќавредностакојасесодрживопроменливатаа,пајазголемувавредностанааза1

++aјазголемувавредностанааза1,пајавраќавредностакојасесодрживопроменливатаа

a--јавраќавредностакојасесодрживопроменливатаа,пајанамалувавредностанааза1

--aјанамалувавредностанапроменливатааза1,пајавраќавредностакојасесодрживопроменливатаа

Page 53: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

139

Пр. 4. 30. Демонстрацијанаоперацијатаа++:

Пр. 4. 31. Демонстрацијанаоперацијата++а:

РезимеЗацелобројнитеконстантиипроменливиседефинираниоперациитецелобројноделење(/)иостатокприцелобројнотоделење(%).C++подржувапетоператори(поеденоператорзасекојааритметичкаоперација:+=,-=,*=,/=,%=)коиовозможуваатскратенопишувањенаизразисокоисевршипроменанавредностнанекојапроменлива.Операциите зголемување за 1 и намалување за 1можат да се напишат уштепократкосокористењенаоператорите++и--соодветно.Овиедваоператори(++и--)можатдасекористатнадваначини:какопрефиксиликакопостфикс(наставка), зависноодтоадалиоператоротсенаоѓапредпроменливата (++а)илипопроменливата(а++).

Вештини што треба да ги усовршиш:Правилнодајакористишоперацијатаделењесоцелиисореалниброеви.Дакористишоперацијамодул(%)соцелиброеви.Дакористишскратенозапишувањенаизразисооперации.Данапишешпрограмасодосегаизученитетехники.

Page 54: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

140

Прашања:1. Пресметај! а)385/100=___ б)385%10=___

в)385/10%10=____ г)385%100/10= __

2. Штоќесеиспишенаекранотпоследнатасеквенцаоднаредби? а)int a = 4; б) int a = 4; int b = 5; int b = 5; cout<<(a+b)/2; cout<<(a+b)/2.;

3. СледнитеаритметичкиизразинапишигинапрограмскиотјазикC++! 1 a+b

3 2x2(a+b)

4. Колкаваевредностанаизразотa*b/cзацелобројнитепроменливиa,b,c: а)a=9, b=4, c= 6? б)a=10, b=5, c= 4?

5. Зацелобројнитепроменливиa,b,c,кадеa=8, b=12, c=4, d=6пресметај а)a*b/c*d=____ б)a*b/(c*d)=____ в)(a*b)/(c*d)=_____6. Следнивеизразипретставигивоскратенаформа! а)a = a-9; б)x = x/(y+1); в)a=a*((b-c)+5));7. Колкаваќебидевредностанапроменливитеаиbпоизвршувањенаследниве

секвенциодискази? а)a = 1; б) a = 1; b = ++a + 5; b = a++ + 5;

Задачи:

1. Напишипрограмасокојаќепресметашсреднавредностнадвацелиброја!

Пример1:Vnesidvacelibroja:68Srednatavrednostna6i8e7

Пример2:Vnesidvacelibroja:78Srednatavrednostna7i8e7.5

2. Напишипрограмасокојаќегинајдешцифритенададентрицифренброј!Помош:погледнигопрашањето1!

Пример1:Vnesitricifrenbroj:485Nabrojot485prvatacifrae4,vtoratacifrae8,tretatacifrae5

Пример2:Vnesitricifrenbroj:326Nabrojot326prvatacifrae3,vtoratacifrae2,tretatacifrae6

3. Напишипрограмасокојавремедаденовосекундиќесеприкажевочасови,минутиисекунди!

Пример1:Vnesivremevosekundi:10001000sekundise0casovi,16minutii40sekundi

Пример2:Vnesivremevosekundi:2000020000sekundise5casovi,33minutii20sekundi

Page 55: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

141

4.5.4 Дополнителни спецификации на јазикот C++ (втор дел)

Константи и променливи од типот charЗнаковнитеконстантиодтипотcharсепишуваатпомеѓуапострофи,напр. ‘a’,

‘A’, ‘+’, ‘4’итн.Внимавај,‘4’и4несеистиподатоци!Зошто?Зачувањеназнацитeвомеморијатаепредвиден1бајт,штозначидекаможеда

сезачуваат28=256различнизнаци.СитезнацисепретставенивоASCIIтабелапоточноопределенредослед(од0до255)исекојзнакимасвојреденброј.Такабуквата‘A’имареденброј65,буквата‘a’имареденброј97итн.

Препорака:ASCIIтабелатапогледнијанавебстранатаhttp://www.asciitable.com/.

Вознаковнапроменливаможедасезачува:- едензнакзапишанпомеѓуапострофиили- ASCIIвредностнатојзнак(декаднавредност).Примеринадоделувањевредностназнаковнапроменлива:

char bukva1=’A’; char bukva2=65;

Водветепроменливиќесезачуваиставредност,знакот’A’,итоавоформанабројкојпретставуваASCIIвредностназнакот’A’.

Знаковнитeконстантиипроменливиможатдасеспоредуваат: cout<<’a’<’b’ Соовојисказнаекранотќесеприкаже1(точно). cout<<’a’<’B’ Соовојисказнаекранотќесеприкаже0(неточно).Исто така, на знаковните константи и променливи можат да се применат и

математичкитеоперацииштоќеговидимевоследниотпример.Всушност,математичкитеоперациисеизвршуваатврздекаднитевредностиназнакотвоASCIIтабелата.

Пр. 4. 32. Програматагипечатипретходниотиследниотзнакнададениотзнак:

Забелешка:Обрнивниманиенаупотребанаоператоротзадоделувањенатип(char)предизразотznak-1!Зоштоморадасекористиовојоператор?

Page 56: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

142

Константи и променливи од типот stringЗнаковните константи најчесто се користат во низи од знаци или стрингови.

Стринговите се пишуваат помеѓу наводници и до сега ги користевме за испишувањенапоракинаекран.Стрингсоисказотcinможедасевнесепрекутастатуратаидасезачувавонекојапроменлива(когасевнесувастрингпрекутастатурата,тогаштојнесезапишувапомеѓунаводници).

Пр. 4. 33. Програмасокојасечитастрингисезачувувавостринговапроменлива:

Исказотcin неепогодензаприфаќањенастринговикоисесостојатодповеќезборовизатоаштотојчитаподатокдопрвиотзнакбланко(празноместо),паодстринготможедавчитасамоедензбор.Зошто?Вотаквитеситуациисекористифункцијаgetline.

Пр. 4. 34. Внесувањенастринговиодповеќезборови:

Форматирано печатењеВеќесезапознавмесоизразотendlсокојкурсоротпоминувавоновред.Сегаќе

сезапознаемесоуштенекоитехникизаформатиранопечатење.Запоминувањевоновред,воисказотcoutсевклучуваспецијалензнак\n.Пр. 4. 35. Соисказот:

cout<<”Zdravo!\n”<<”Kako se vikas?”;

наекранотќесеприкаже: Zdravo! Kako se vikas?

Заподатоцитедасеприкажаттабеларно,секористиспецијалензнак\t.

Page 57: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

143

Пр. 4. 36. Соследниоткод:

наекранотќесеприкаже:

РезимеЗнаковнитеконстантиодтипотcharсепишуваатпомеѓуапострофи,напр.‘a’, ‘A’, ‘+’итн.Знаковнитеконстантинајчестосекористатвонизиодзнациилистрингови.Исказотcin неепогодензаприфаќањенастринговикоисесостојатод повеќе зборови затоа што тој чита податок до првиот знак бланко, па секористифункцијатаgetline.Заформатиранопечатењесекористатспецијалнитезнаци:\nзапреминувањевоновреди\tзапечатењевоколони.

Вештини што треба да ги усовршиш:Дакористишзнаковниистринговипроменливииконстанти.Дакористишформатиранопечатење.Данапишешпрограмасодосегаизученитетехники.

Прашања:1. Акобуквата‘A’воASCIIкодимареденброј65,којреденбројгоимабуквата

‘D’?2. Сокојтипморадаседекларирапроменливатаx,акосакамедаѝдоделиме

вредност‘2’?3. Објаснизаштосекористатспецијалнитезнаци\nи\t!4. Далиимаразликапомеѓуследнивеискази? cout<<”Dobar den<<endl; и cout<<”Dobar den\n”;

Задачи:1. Напишипрограмасокојаќесевнесеимеипрезиме,аќесеотпечатипрезиме

паиме!Помош:користидвестринговипроменливииисказотcout.

Пример1:Kakosevikas?MitePavlovZdravo,PavlovMite

Пример2:Kakosevikas?JanaKostovskaZdravo,KostovskaJana

2. Напиши програма со која табеларно ќе ги прикажеш оценките на неколкуучениципопредметитеинформатика,математикаифизика!

Page 58: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

144

4.6  СТРУКТУРА ЗА ИЗБОР ОД ДВЕ МОЖНОСТИКаковоживотот,такаивопрограмирањето,многучестотребадаседонесенекоја

одлука.Токму„способностзаодлучување“програмитегиправикорисни.Например,задаработишсокомпјутертребадавнесешлозинка,посебнапрограмајапроверувалозинкатаиакотааеточнадозволуваработасокомпјутерот,воспротивнопристапотдокомпјутеротеоневозможен.Воопштслучај,програматаиспитуванекојусловиакотојусловезадоволенсеизвршуваатедниинструкции.Акоусловотнеезадоволенсеизвршуваатдругиинструкции.

4.6.1 Споредбени изразиОдлукитесеконтролираатсологичките изрази.Наједноставнителогичкиизрази

сеизразивокоисеспоредуваатдвевредности.Таквитеизразисенарекуваатспоредбени изрази.Споредувањесевршисамопомеѓудвевредностиодисттип,напр.можатдасеспоредатдваброја,двазнакаилидвенизиодзнаци.Заградењенаспоредбениизразисекористатоператоризаспоредување:

Оператор Математичкисимбол Опис< < помало<= ≤ помалоилиеднакво> > поголемо>= ≥ поголемоилиеднакво== = еднакво!= ≠ неееднакво

Внимавај!Операторитекоисесостојатоддвасимбола,немаатпразноместопомеѓунив!

Засекојспоредбенизразсекогашможедасеутврдидалитојеточенилиенеточен,односно дали има вредност 1 (точно) или 0 (неточно). Резултатот на споредување еподатокодтипbool.

Примеринаспоредбениизразиинивнитевредности:

Израз Вредност7 >= 5 1(точно)3 + 8 <= 3 0(неточно)5 == 4 - 1 0(неточно)3 != 0 1(точно)

Секако,освенконстанти,можедасекористатиизразисопроменливинакоиимедоделенанекојавредност.Например,заa=2,b=3иc=6:

Израз Вредностa == 5 0,бидејќи2==5нееточноa*b >= c 1,бидејќи2*3>=6еточноb+4 > a*c 0,бидејќи3+4>2*6нееточно

Page 59: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

145

И логичките податоци, како и сите други, можат да се зачуваат во некојапроменлива.Одкојтипќебидетаапроменлива?

Пр. 4. 37. Користењенапроменливаодтипbool:

Сложени логички изразиЛогичките изрази можат да бидат и посложени, а тие се конструираат од

споредбенитеизразисопомошналогичкитеоператориИ,ИЛИиНЕ.ЛогичкиоператоривоC++:

Оператор Ознаказаоператор Математичкисимбол ОписAND(И) && ∧ КоњукцијаOR(ИЛИ) || ∨ Дисјункција

NOT(НЕ) ! ┐ Негација

Таблицитенавистинитостсепознатиодматематиката:

p q p&&q p q p||q p !p0 0 0 0 0 0 0 10 1 0 0 1 1 1 01 0 0 1 0 11 1 1 1 1 1

Приодредувањенавистинитостнанекојсложенизразредоследнаоперациие:негација,коњукцијападисјунција.

Примериналогичкиизрази:

Логичкиизраз Вредност(1&&0)||0 0!((3==3)||2>7) 0!((5>3||2==5)&&2>5) 1

4.6.2 Структура (исказ) избор од две можностиСтруктурата за избор од две можности (разгранета структура) овозможува

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

Разгранувањетоможедабидееднократноидвократно.

Page 60: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

146

Еднократно разгранувањеОваенаједноставнаформанаразгранетаструктура:аконекојусловеисполнетќе

сеизвршинекојанаредба,воспротивнотаанаредбанемадасеизврши.

Псевдо алгоритам за еднократно разгранување:

акоусловтогашнаредба;

Блок дијаграм за еднократно разгранување:

ВопрограмскиотјазикC++заеднократноразгранувањесекористиисказотifкојимаопштоблик:

if (logicki_izraz) iskaz;iskaz_po_razgranuvanjeto;

10

Аковредностаналогичкиотизраз(logicki_izraz)евистинита(true,1),сеизведуваисказотпоизразотif (logicki_izraz).Аковредностаналогичкиотизраз(logicki_izraz)еневистинита(false, 0),исказотпоизразотif (logicki_izraz)сепрескокнуваисеизведуваследниотисказпоразгранувањето.

Соследниовисказсепроверувадалидадениотбројxенегативен: if (x < 0) cout<<”Brojot ”<<x<<” e negativen”;

Акоxиманегативнавредностнапр.-10,логичкиотизразx < 0ќебидеточен,односноќеимавредност1,паќесеизвршиисказот

cout<<”Brojot ”<<x<<” e negativen”;.Наекранотќесеприкаже:„Brojot -10 e negativen“.Акоxнеманегативнавредност,напр.10,тогашлогичкиотизразx < 0ќебиде

неточен,односноќеимавредност0,паисказотcout<<”Brojot ”<<x<<” e negativen”;

немадасеизврши.Наекранотништонемадасеприкаже.Исказотможедасезапишеикако if (x < 0) cout<<”Brojot ”<<x<<” e negativen”;

носезапишуванапретходенначинзарадипрегледност.

Важно! Поизразотif(logicki_izraz)несеставаточкаизапирка(;).Акоовагонаправишпреведувачотќемислидеказнакот;припаѓананаредбакојатребадасеизвршиакоусловотеисполнет,паќеимашнесаканефект.Помеѓуусловотизнакот ;неманишто,папреведувачотгледапразнанаредбаипрограматанемаништодаизврши.

Page 61: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

147

Пр. 4. 38. Со следнава програма се проверува дали променливата delitel ееднаквана0:

Акопроменливатаdelitelимавредност0програматаќенеизвестидекасо0неможедаседели.

Внимавај! Честосеслучувагрешкаинаместооператорот==секористиоператорот=.Оваможе да доведе до неисправно работење на програма. Внимавај овие дваоператориданегимешаш!

Двократно разгранувањеДвократноразгранувањезначи:аконекојусловеисполнетќесеизвршинекоја

наредба,воспротивнотаанаредбанемадасеизвршитукуќесеизвршидруганаредба.

Псевдо алгоритам за

двократно разгранување:

акоусловтогашнаредба1инакунаредба2;

Блок дијаграм за двократно разгранување:

Во програмскиот јазик C++ за двократно разгранување се користинаредбаif-elseкојаимаопштоблик:

if (logicki_izraz) iskaz1;else iskaz2;iskaz_po_razgranuvanjeto;

1

0

Аковредностаналогичкиотизраз(logicki_izraz)евистина(true,1),тогашсеизвршуванаредбатаiskaz1.Откакотааќесеизвршисеизвршуваатнаредбитепоисказотif else.

Аковредностаналогичкиотизразеневистина(false, 0),наредбатаiskaz1сепрескокнуваисеизвршуванаредбатапоelse–iskaz2.Откакотааќесеизвршисеизвршуваатнаредбитепоисказотif else.

Page 62: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

148

Соследниовисказсепроверувадалидаденцелбројепозитивенисеприкажувасоодветнапорака: if (x < 0) cout<<”Brojot ”<<x<<” e negativen”<<endl; else cout<<”Brojot ”<<x<<” ne e negativen”<<endl;

Заx=-8ќесеизвршинаредбатапоifиќесеприкажепораката„Brojot-8enega-tiven“.Заx=8ќесеизвршинаредбатапоelseиќесеприкажепораката„Brojot8neenegativen“.

Важно! Поизразитеifиelseнесеставазнакотточкаизапирка(;).

Пр. 4. 39. Програматазадвададениразличницелибројагопрокажувапоголемиотброј:

Пр. 4. 40. Програматапроверувадалидадениотбројеедноцифрен:

Page 63: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

149

Важно!Проверката дали бројот x е едноцифрен во математиката се запишува како0≤x≤9.Програмскитејазицинедозволуваатваковвидназапишување.Оваседваизразикоиморадасеповрзатсооператорот&&(И).

Блок од искази Важноедасезнаедекаисказотifконтролираизвршувањесамонапрвиотисказ

којсенаоѓаведнашпонего.Веќеследниотисказнееделодисказотifпатојисказќесеизвршинезависнодалиусловотеточенилине.Дагопогледнемеследниотпример: if (x < 0) cout<<”Brojot ”<<x<<” e negativen.”<<endl; cout<<”Negovata apsolutna vrednost e ”<<-x;

Вторатанаребапоисказотifќесеизвршиизапозитивнитеброевипазанивќесеиспишепогрешнаапсолутнавредност.

Овојпроблемсерешавасоградењенаблок од искази.Кога исказот if контролира два или повеќе искази, сите тие се стават меѓу големи загради.

Претходниотпримерисправносезапишуванаследниотначин: if (x <0) { cout<<”Brojot ”<<x<<” e negativen.”<<endl; cout<<”Negovata apsolutna vrednost e ”<<-x; }

Воопштслучајисказотзаеднократноразгранувањесокористењенаблокисказисезапишува:

if (logicki_izraz) { blok_od_iskazi;}iskaz_po_razgranuvanjeto;

1

0

Истслучајеикогаимаблокодисказипоelse.

Воопштслучајисказотзадвократноразгранувањесокористењенаблокодисказисезапишува:

if (logicki_izraz) { blok_od_iskazi;}else { blok_od_iskazi;}iskaz_po_razgranuvanjeto;

1

0

Page 64: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

150

Така,исказотifсокојсеприкажуваапсолутнавредностнабројотxсезапишува: if (x <0) { cout<<”Brojot ”<<x<<” e negativen.”<<endl; cout<<”Negovata apsolutna vrednost e ”<<-x; } else { cout<<”Brojot ”<<x<<” ne e negativen.”<<endl; cout<<”Negovata apsolutna vrednost e ”<<x; }

Совет: Немадазгрешишакосамоеденисказставишпомеѓуголемизагради.Дуривопочетокотбибилодобротоадагоправиш.

Пр. 4. 41. Следнава програма од корисникот бара да внесе корисничко име илозинка.Доколкутиесеисправниќедадесоодветнапорака,воспротивноќедадедругапорака.

Штоќесеслучиаконамето&&ставиш||?

Page 65: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

151

РезимеИзразитевокоиссепоредуваатдвевредностисенарекуваатспоредбениизрази.Операторите за споредувањесе: <, >, <=, >=, ==, !=.Сложенителогичкиизразисе добиваат со поврзување на споредбените изрази со помош на логичкитеоператори&&(И),||(ИЛИ)и!(НЕ).Структурата за избор од две можности (разгранета структура) овозможуваразличен тек на програма зависно од резултатот на поставениот услов. Акоусловотеточенќесеизвршинекојанаредба,ааконееисполнеттаанаредбанемадасеизврши,аможенонеморадасеизвршидруганаредба.Заеднократноразгранувањесекористиисказотif,азадвократноразгранувањесекористиисказотif-else.Когаисказотifконтролирадваилиповеќеискази,тиесеставаатпомеѓуголемитезагради.

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

Прашања: 1. Какосенарекуваатизразитевокоисеспоредуваатдвевредности?2. Коиоператорисекористатзаспоредување?3. Далиможатдасеспоредуваатвредностинапроменливикоинесеодисттип?4. Сопомошнакоиоператорисеградатсложенилогичкиизрази?5. Одредивредностнаследнивеспоредбениизрази: a)9<=17 б)9>=25 в)9==13 г)9!=13 д)9!<256. Одредивредностнаследнивелогичкиизрази: а)14>7&&5<=5 б)4>3||17<=7 в)!(13!=7) г)9!=7&&!07. Какосенарекуваструктуракојаовозможуваразгранувањевопрограма?8. Којисказсекористизаразгранувањевопрограма?9. Напишигисинтакситенаисказитеifиif-else!

10. Какосеозначуваблокодисказикоисекористатвоисказитеifиif-else?11. Штоќесеотпечатисоследнатанаредба?

if (x>10) cout<<”Brojot <<x<<” e pogolem od 10”; else cout<<”Brojot <<x<<” e pomal od 10”;

а)заx=5 б)заx=15.12. Колкаваќебидевредностнацелобројнатапроменливаxпоизвршувањена

следнаванаредба? if (x+2>10) x = x + 1;

а)заx=9 б)заx=5.

Page 66: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

152

13. Којавредностќеимапроменливатаsпоизвршувањенаследнавасеквенцаодискази:

s=0; if (a>0) s=s+a; if (b>0) s=s+b;

а)заa=5,b=3 б)заa=-5,b=3 в)заa=-5,b=-3

Задачи: 1. Напишипрограмакојазададениотцелбројxќепроверидалитојепаренили

непарениќеприкажесоодветнапорака!

Пример1:Vnesicelbroj:12Brojot12eparen.

Пример2:Vnesicelbroj:35Brojot35eneparen.

2. Внесидваразличниброја,потоаопечатигопомалиот,папоголемиотброј!

Пример1:Vnesidvabroja:-37Pomaliotbroje-3,apogolemiotbroje7

Пример2:Vnesidvabroja:3-7Pomaliotbroje-7,apogolemiotbroje3

3. Напиши програма која ќе пресметува периметар на квадрат само аковнесената вредност за страната на квадратот е позитивна! Во спротивно ќедадесоодветнапорака.

Пример1:Strananakvadratot:2.5Perimetarnakvadratote10!

Пример2:Strananakvadratot:-2.5Stranatamoradaepozitivna!

4. Напишипрограмакојаќеодземавомоножествонаприродниброеви!

Пример1:Vnesigoprviotbroj:8Vnesigovtoriotbroj:58-5=3

Пример2:Vnesigoprviotbroj:5Vnesigovtoriotbroj:8Razlikata5-8nepostoivoN

5. Напишипрограмасокојаќесепресметаапсолутнавредностнабројотx!

Пример1:Vnesiedenbroj:8.2Apsolutnatavrednostnabrojot8.2e8.2

Пример2:Vnesiedenbroj:-8.2Apsolutnatavrednostnabrojot-8.2e8.2

6. Напишипрограмасокојасесобираатсамопозитивнитевредностинаброевитеa,bиc!

Пример1:Vnesitribroja:-375ZbirotnapozitivnitebroevieS=12

Пример2:Vnesitribroja:-3-7-5ZbirotnapozitivnitebroevieS=0

7. Напишипрограмасокојаќесенајденајголемоддаденитетриброја!8. Напишипрограмасокојаќесеподредаттрибројапоголемина!9. Напишипрограмасокојасеодредувадалиоддаденитеотсечкисодолжините

a,bиcможедасеформиратриаголник!10. Даденетрицифренприроденброј.Напишипрограмасокојасеодредувадали

бројотепалиндром(акоистосечитаоддесноиодлево)!

Page 67: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

153

4.6.3 Техника на вгнездување на исказиВоблокотодисказиможедасекористатбилокоиискази,патакаиисказотза

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

Вопрограмскитејазицидозволеноедасекористатповеќеifисказивгнездениеденводругбиловоблокотнаисказипоifбиловоблокотодисказипоelse.Овасенарекуватехника на вгнездени искази.

Пр. 4. 42. Вопримерот 4.41можеод корисникотда сепобара корисничкоимеиакокорисничкотоимееисправнотогашсебаралозинка.Акокорисничкотоименееисправнонемапотребадасебаралозинка.

Совет:Запосложенитепрограмикакоштоеоваадоброедасекористиблок-дијаграм.

Page 68: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

154

Резиме:Вопрограмскитејазицидозволеноедасекористатповеќеifисказивгнездениеденводруг,биловоблокотнаисказипоif,биловоблокотодисказипоelse.Овасенарекуватехниканавгнездениискази.

Вештини што треба да ги усовршиш:Дапрепознавашидакористиштехниканавгнездениискази.Данапишешпрограмасокористењенадосегаизученитетехники.

Прашања:

1. Којавредностќејадобиепроменливатаaпоизвршувањенаследнитенаредби: float a = 1.56; if (a < 1) a = a+1; else { a = a+4; a = -a+7; }

2. Штоќесеприкажепоизвршувањенаследнивеискази? int broj = -6; char bukva = ’K’; if (broj < 0) { if (bukva < ’S’) cout<<1; else cout<<2; } else cout<<3;

Задачи:

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

Пример1:Vnesicelbroj:-6Brojot-6enegativen!

Пример2:Vnesicelbroj:7Brojot7epozitivenieneparen!

Пример3:Vnesicelbroj:6Brojot7epozitivenieparen!

2. Напишипрограмасокојаќесенајдерешениеналинеарнатаравенкаax+b=0!Дасеразгледаатиспецијалнитеслачаизаa=0иb=0!

Пример1:a=3b=-21Resenietonaravenkataex=7

Пример2:a=0b=-21Ravenkatanemaresenie

Пример3:a=0b=0Ravenkataimabeskonecnoresenija

3. Дасевнесатдолжининатриотсечкиa,bиcидасепроверидалитиеможатдаградаттриаголник.Акоможат,дасепроверидалитриаголникотерамностран,рамнокрак,илиразностран.Заситеслучаидасеприкажесоодветнапорака!

Page 69: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

155

4.7  Структура за избор од повеќе можности

4.7.1 Повеќекратно разгранувањеДагопогледнемепримеротнапрограмакојаприкажувапоголемоддвададени

броја:if (a>b) cout<<”Brojot ”<<a<<” e pogolem.”<<endl;else cout<<”Brojot ”<<b<<” e pogolem.”<<endl;

Што ќе се случи ако корисник (иако епредупреден)внеседвабројакоисееднакви?Програмата ќе провери дали a>b, и бидејќиовојусловнееисполнет,ќегоизвршиисказотпо else, што нема да биде исправно. Запрограматадабидесосемакоректна,требадасепроверииточностанаусловотa==b.

Соисказотif-elseможедасеизбирапомеѓудвеалтернативиидасеизвршисамоедна од нив, зависно од вистинитоста налогичкиотизраз.Ночестосеслучувадатребадасебирапомеѓутриилиповеќеопциикаково наведениот случај. Тогаш се применуватехника на вгнездување на искази,односносеградиповеќекратна разгранета структура.

if (logicki_izraz_1) { blok od iskazi_1;}else if (logicki_izraz_2){ blok od iskazi_2;}. . . . .else if (logicki_izraz_n){ blok od iskazi_n;}else{ blok od iskazi;}iskaz_po_razgranuvanjeto;

1

1

1

0

0

0

Пр. 4. 43. Примеротзапоголемиотоддвабројаќегопроширимесотоаштоќеседадеможносткорисникотдавнесеидваеднаквиброја:

Програматапроверувадалиеточенизразотa == b,акоеточенќесеисполнинаредбата поделотif (наредбата коментирана со (1)). Акоизразотне е точенпрограматапоминуванаделотпоelseипроверувадалиеточенизразотa > b.Акоовојизразе точенпрограматаќе гоизвршиисказотподелотif (2),инакупоминуванаисказподелотelse(3).

Page 70: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

156

Зад. 4. 13. Напиши програма која за даден цел број проверува дали тој број епозитивен,негативенилиеднаковна0ипечатисоодветнапорака!

Пр. 4. 44. Дапогледнемеуштееденпример.Програматазабројнатаоценка(1-5)печатисоодветенуспех(недоволен-одличен):

4.7.2 Структура за избор од повеќе можностиПовеќекратноторазгранувањеедоброрешениекогасеработизаизбородповеќе

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

Блокдијаграмзаструктуратазаизбородповеќеможности:

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

Page 71: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

157

switch (izraz){ case konst_1: blok_na_iskazi_1; break; case konst_2: blok_na_iskazi_2; break; . . . . case konst_n: blok_na_iskazi_n; break; default: posledniot_blok_na_iskazi;

}

Вредност на изразот се споредува со целобројните константи:konst_1, konst_2, konst_3,итн.Аковредностанаизразотееднаквананекоја од дадените константи, ќе се изврши блокот на искази придруженнатааконстанта.Поизвршувањетонатојблок,исказотbreakгопрекинуваизвршувањетонаswitch-caseисказотипрограматапродолжувасопрватанаредбапоовојисказ.Аковредностанаизразотнеееднаквананитуеднаоддаденитеконстанти,сеизвршуваблокотнаисказипоdefault.

Пр. 4. 45. Програматазауспехнаученикотзапишанасоисказотswitch-case:

Page 72: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

158

Важно!Незаборавајнаисказотbreakпоблоковитенаискази!Доколку тоасеслучи,swich-case исказот нема да се прекине туку ќе продолжи со извршување наблокотодисказипридруженнаследнатаконстанта.Така,соследниоткодќесеотпечатиDvaTriнаместоDva. int x=2; switch(x) { case 1: cout<<”Eden”; case 2: cout<<”Dva”; case 3: cout<<”Tri”; }

Воисказотswitch-caseможедасекористатизнаковниконстанти:Пр. 4. 46. Корисникотвнесувадвабројаизнакзааритметичкаоперацијакојасака

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

Page 73: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

159

Понекогаш е потребно за различни вредности на изразот да се извршат истинаредби.Например,соследниоткодцелобројнатапроменливаbrojдобивавредност1паќесеизвршиисказотcout<<“Lessthan3!”;сокојќесеприкаже:„Pomal od3!“: int broj = 1; switch (broj) { case 0: case 1: case 2: cout << “Pomal od 3!”; break; case 3: cout << “Ednakov na 3!”; break; default: cout << “Pogolem od 3!”; }

Штоќесеприкажеаконапроменливатаbrojнаместо1ѝседоделивредност5? Закоиуштевредностинапроменливатаbroj ќесеприкаже„Pomal od3!“?

Зад. 4. 14. Напишипрограмасокојакорисникотќевнесереденбројнамесецвогодинаисогласноизборотнаекранотќесеотпечатинакоегодишновреметојмесецмуприпаѓа!Вослучајнанесоодветенвлезенподатокдасеприкажесоодветнапорака.

РезимеПосебенслучајнавгнездениусловиекогаусловитесевгнездуваатсамовоблокотнаисказиподелотelse.Овојслучајсенарекуваповеќекратноразгранување.Заизбор од повеќеможности се користи структурата switch-case каде условот еизразчијавредностморадабиденекојацелобројнаконстанта.

Вештини што треба да ги усовршиш:Дапознавашсинтаксананаредбатазаповеќекратноразгранување.Данапишешпрограмасокористењенадосегаизученитетехники.

Прашања: 1. Вокоислучаисеприменуваповеќеразгранетапрограмскаструктура?2. Штоќесеприкаженаекранотпоизвршувањенаследнивеисказизаx=3?

int x; cin>>x; if (x == 1) cout<<”Slabo!”<<endl; else if (x == 2) cout<<”Ne e loso!”<<endl; else if (x == 3) cout<<”Bravo!”<<endl; else cout<<”Pogresen vnes!”<<endl;

Page 74: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

160

3. Далипостоиразликапомеѓуследнитекодови?а)if (znak == 1) broj = 10; else if (znak == 2) broj = 20; else broj = 30;

б) switch (znak) { case 1: broj = 10; break; case 2: broj = 20; break; default: broj = 30;

}

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

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

Пример1:Vnesiredenbrojnadenvosedmica:5Denesepetok!

Пример2:Vnesiredenbrojnadenvosedmica:9Pogresenpodatok!

2. Напишипрограма со која оценкитеA, B, C,D, E се преведуваат вобројнитеоценки5,4,3,2,1!Вослучајнанесоодветенвлезенподатокдасеприкажесоодветнапорака!

3. Напишипрограмасокојакорисникотќевнесереденбројнамесецвогодинаисогласноизборотнаекранотќесеотпечатиколкуденовиимасоодветниотмесец!Дасепредвидиситуацијазапрестапнагодина!Вослучајнанесоодветенвлезенподатокдасеприкажесоодветнапорака!

4. Напишипрограмасокојакорисникотќеизберебројпредхороскопскиотзнакисогласноизборотќедобиекратокхороскоп!Вослучајнанесоодветенвлезенподатокдасеприкажесоодветнапорака!

4.8  Основна структура за повторување

Честопатисејавувапотребаеднаилиповеќеинструкциидасеизвршатповеќепати. На пример: Додека има хартија печати покани, Напиши 100 пати „Никогашповеќенемадазборувамначас“ислично.Ивопрограмирањетомногучестосејавувапотребаодповторувањенаеденистисказ(илинаблокодискази)повеќепати.Заданесеповторувапишувањетонаисказот,вопрограмскиоткодсекористиструктуразаповторувањекојасевикациклус,петелкаилијамка(loop).

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

Секоеповторувањенациклусотсенарекуваитерација.

Page 75: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

161

4.8.1 Структура за повторување на циклус до исполнување на условНаједноставниот од сите циклуси е while циклусот. Во овој циклус прво се

проверувадалинекојусловеисполнет.Акоусловотеисполнет,циклусотсеповторува,акоусловотнееисполнеттогашнесевлегувавоциклусот.

Пр. 4. 47. Сокодот: int i = 1; while (i <= 10) { cout<<i<<”\t”; i++; }

ќесеприкаже:12345678910

Пр. 4. 48. Сокодот: int i = 1; while (i <= 10) { cout<<’A’<<”\t”; i++; }

ќесеприкаже:AAAAAAAAAA

Основнаформанаwhileциклусоте:

while (uslov){ blok_od_iskazi;}iskaz_po_ciklusot;

- Условотвоциклусотможедабидеспоредбенилилогичкиизраз кој може да добие вредност точно (true, 1) илинеточно(false,0).

- Блокот од искази во циклусот се повторува сѐ додекаусловот е исполнет. Бидејќи условот се проверува напочетокотможеда се случи телото на циклусот да не сеизвршинитуеднаш.

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

- Структурата while мора да биде напишана така што воконечен број на повторувања логичкиот израз ќе добиевредност неточно. Така се обезбедува да се излезе одциклусот по конечен број на повторувања. Во спротивноциклусотбисеповторувалбесконечно.

Важно! Поизразотwhile(uslov)несеставаточкаизапирка(;).

Page 76: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

162

Пр. 4. 49. Програматаиспишуваброевинаназад.Корисникотвнесувабројодкојќезапочнеиспишувањето.

Блокотодисказикоигосочинуваатциклусотсеставенивоголемитезагради.Коисетиеискази?Напочетокотнапрограмата,предциклусот,одкорисникотсебарадавнесебројодкојќезапочнеброењетосоштосеопределувадалициклусотќесеповторуваилине.Циклусотќесеизвршисамоакокорисникотвнесебројпоголемод0(тоаеопределеносоусловот(broj>0)).Ако корисникот внесе број 5 циклусот ќе се повтори точно 5 пати. Во секоеповторувањепрограматагоиспишувабројотнаекранот,потоатојбројгонамалувазаедениповторногопроверуваусловот(broj>0).Циклусотќесеповторувасѐдодекабројотепоголемод0.Когабројотќедобиевредност0изразотbroj>0ќеимавредностневистина(false,0)ипрограматаќепродолжисоизвршувањенапрватанаредбапоциклусот.Којаетоанаредба?Давидимештосеслучуваприизвршувањенапрограмата:

n --; (n>0) cout<<n; Бројнаповторувањa5 1 5 14 1 4 23 1 3 32 1 2 41 1 1 50 0

Штоќесеслучиакокорисникотвнесе0илинегативенброј?Циклусотнемадасеизвршинитуеднаш,затоаштопрвосепроверуваусловотивотелотонациклусотсевлегувасамоакоусловотеисполнет,односноакологичкиотизраздаденвоусловотимавредноствистина(true, 1).

Ако бројот во секое повторување не се намалува за 1 тогаш логичкиот израздаденво условот (n>0) секогашќебиде точен (true, 1) ициклусот ќе сеповторувабесконеченбројпати,односнододекапрограматанејаистрошиработнатамеморијасокојарасполага.Коментирајгоисказотn--;ипровери!

Page 77: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

163

Пр. 4. 50. Програматапресметувазбирнапрвитеnприродниброеви.Бројотnговнесувакорисникот.

Пр. 4. 51. Корисниквнесуваnцелиброеви.Дасенајденивниотзбир.

Зад. 4. 15. Изменијапретходнатапрограматакадасесобираатсамопозитивниброеви!Акокорисникотвнесенегативенбројтојнемадавлезевозбирот.

Page 78: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

164

Пр. 4. 52. Корисник внесува броеви, внесувањето се прекинува кога ќе внесебројот0.Дасенајдеаритметичкатасрединанавнесенитеброеви!

Напочетокотнапрограмата,предциклусот,одкорисникот себарада говнесепрвиот број (cin>>broj) со што се определува дали циклусот воопшто ќе сеизврши.Акопрвиотвнесенброје0ќесеприкажесоодветнапорака.

4.8.2 Структура за повторување do-whileВо структурите за повторување кај кои бројот на повторувања на исказите од

циклусотзависиоднекојуслов,условотможедасеиспитаинакрајотнациклусот.Воовојслучај,вопрограмскиотјазикC++секористиdo-whileструктура.Овааструктурапореткосекористиодструктуратаwhile.

Пр. 4. 53. Сокодот: int i = 1; do { cout<<i<<”\t”; i++; } while (i <= 10);

ќесеприкаже:12345678910

Page 79: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

165

Основнаформанаdo-whileциклусоте:

do{ blok_od_iskazi;}while (uslov);

Соструктуратаdo-whileусловотсепроверуванакрајотодциклусот.Акоусловотеисполнет,блокотнаисказивоциклусотќесеповтори,аакоусловот не е исполнет програмата ќе продолжи со следната наредба поциклусот.

Структуратаdo-while мора да биде напишана такашто во конеченброј на повторувања логичкиот израз ќе добие вредност неточно. Такаобезбедувада сеизлезеодциклусотпоконеченбројнаповторувања.Воспротивноциклусотбисеповторувалбесконечно.

Внимавај: Незаборавајпоциклусотdo-whileдаставишточкаизапиркапоусловот.

Пр. 4. 54. Програматаиспишуваброевинаназад.Корисникотвнесувабројодкојќезапочнеиспишувањето.

Page 80: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

166

Истатазадачајарешивмеисоциклусотwhile.Дагиспоредиме!Кајdo-whileциклусот,блокотнаисказиодциклусотќесеизвршибаремеднашнезависнодалиусловотеисполнетилине.Зошто?Блокодисказикоигосочинуваатциклусот,истотака,сеставенивоголемизагради.Тоасеистиисказикаковоwhileциклусот.Напочетокотнапрограмата,предциклусот,одкорисникотсебарадавнесебројодкојќезапочнеброењето.Ако корисникот внесе број 5 циклусот ќе се повтори точно 5 пати. Во секоеповторувањепрограматагоиспишувабројотнаекранот,потоатојбројгонамалуваза еден и повторно го проверува условот (n>0). Циклусот ќе се повторува сѐдодекабројотепоголемод0.Когабројотќедобиевредност0изразотbroj>0ќеимавредностневистина(false, 0)ипрограматаќепродолжисоизвршувањенапрванаредбапотелотонациклусот.Којаетоанаредба?Штоќе се случиако корисникот внесе0 илинегативенброј?Независноод тоакојбројевнесен,блокотодисказивоциклусотќесеизврши,затоаштопрвосевлегувавоциклусот,аусловотсепроверуванакрајотодциклусот.Оваеосновнатаразликапомеѓуwhileиdo-whileструктурата.Акобројотвосекоеповторувањенесенамалуваза1тогашлогичкиотизраздаденвоусловот(n>0) секогашќебиде точен(true,1) ициклусот ќе сеповторувабесконечен број пати, односно додека програмата не ја истроши работнатамеморијасокојарасполага.Пр. 4. 55. Корисник внесува броеви, внесувањето се прекинува кога ќе внесе

бројот0.Дасенајдеаритметичкатасрединанавнесенитеброеви!Акопрвиотвнесенброје0дасеприкажесоодветнапорака.

Page 81: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

167

РезимеСтруктуритезаповторувањеовозможуваатнекојблокодисказидасеизвршиодреденбројпати.Секоеповторувањенациклусотсенарекуваитерација.Воwhileциклусотпрвосепроверувадалинекојусловеисполнет.Акоусловотеисполнетциклусотсеповторува,акоусловотнееисполнеттогашнесевлегувавоциклусот.Исказитеодциклусотможеданесеизвршатнитуеднаш.Во do-while циклусот условот се проверува на крајот од циклусот. Ако условоте исполнет циклусот се повторува, ако условот не е исполнет се излегува воциклусот.Исказитеодциклусотморабаремеднашдасеизвршат.

Прашања:1. Штоовозможуваатструктуритезаповторување?2. Какоуштесенарекуваструктуратазаповторување?3. Штоеитерација?4. Соштоедефиниранбројотнаповторувањатанациклусите?5. Штоќесеприкаженаекранотсоследнитекодови?

a) int i = 2; while (i <= 10) { cout<<i<<” ”; i+=2; }

б) int i = 20; while (i <= 10) { cout<<i<<” ”; i+=2; }

6. Штоќесеприкаженаекранотсоследнитекодови? а) int i = 2; do { cout<<i<<” ”; i+=2; } while (i <= 10);

б) int i = 20; do { cout<<i<<” ”; i+=2; } while (i <= 10);

7. Колкупатиќесеизвршиследниотциклус? а) int x= 13; б) int x= 0;

while (x<= 13) while (x<= 10) { { x++; x+=2; cout<<x; cout<<x; } }

Page 82: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

168

8. Програмата10патигоотпечатизнакот*.Пополнигипразнитеместа: int x=__; while (x<=10) { _____<<”*”; x_____; }

9. Постави ги изразите во исправен редослед (напиши редни броеви нацртичките):___ do___ proizvod = proizvod *x;___ cin<<x;___ while

___ (proizvod <100000);___ {___ proizvod=1;___ }

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

првитеnприродниброеви (1+1/2+1/3+1/4+1/5+ ...+1/n)!Бројотn говнесувакорисникот.

2. Напиши програма со која се пребројуваат и собираат парните броеви воопсеготодmдоn!

3. Корисникотвнесуваnцелиброеви.Напишипрограмасокојаќесепреброиколкуодвнесенитеброевисепозитивни,аколкунегативни!

4. Корисникотвнесуваброевисѐдодеканивниотзбирeпомалод100.Напишипрограмасокојаќесеизброиколкуброевисевнесени!

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

6. Корисникотвнесуваприроденброј.Напишипрограмасокојаќесеотпечататцифритенавнесениотбројпочнувајќиодцифратанаединици!

7. Корисникотвнесуваброеви,внесувањетосепрекинувакогаќевнесе0.Напишипрограмасокојаќесеприкаженајголемиотбројодвнесенитеброеви!

4.9  Останати структури за повторување

4.9.1 Структура за повторување на циклус со броење на циклусите Когаоднапредепознатбројотнаповторувањенациклусотнајчестосекористи

forциклусот.Пр. 4. 56. Кодотсокојсепечататпрвите10природниброевиизгледавака:

for (i = 1; i <= 10; i++) cout<<i<<” ”;

По клучниот збор for следуваат три изрази во заграда кои го контролираатциклусот (i = 1; i <= 10; i++).

Со првиот израз се определува почетната вредност на променливата i(i=1;).Вториотизразелогичкиизразкојкажувадокогациклусотќесеизвршува(додекаi<=10;).Третиотизразкажувазаколкувредностнaпроменливатаiќесепромени.

Page 83: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

169

Исказот кој сеизвршувавоциклусот (cout<<i<<” ”;) следувапоизразотfor.Доколкуимаблокодисказикоисеповторуваатвоциклусот,тиесеставаатпомеѓуголемизагради.

Општаформанаforциклусоте:for (pocetna_vrednost; uslov; promena){ blok_na_iskazi;}

Секој for циклус има своја контролна променлива на којавредностаѝсеменувасосекоеизвршувањенациклусотштоеодреденосовредностанаприрастот(оваавредностможедабидеинегативна).Условотморадабиделогичкиизразкојможедадобиевредностточно(true, 1)илинеточно(false, 0).Блокотодисказикојсенаоѓавоциклусот се извршува додека вредноста на условот е вистина. Когаусловотќедобиевредностневистина,циклусотсепрекинува.

Внимавај! Поизразотforнематочкаизапирка(;),каконитупотретиотизразвнатревозаградите.

C++дозволуваконтролнатапроменливадаседеклариравосамиотforисказ.Например, for (int i = 1; i <= n; i++) cout<<i;

еистоштои: int i; for (i = 1; i <= n; i++) cout<<i;

Зад. 4. 16. Штоќесеотпечатисоследниовкод? for (i = 50; i > 20; i = i - 2) cout<<i<<” “;

Колкаваепочетнатавредностнаконтролнатапроменлива?Колкаваепромената?Докогациклусотќесеизвршува?Ако наместо i=i-2 се напише i=i+2, вредноста на променливата i во секојаитерацијаќесезголемуваза2исекогашќебидепоголемаод20,воовојслучајседобивабесконеченциклус.Ако почетната вредност на променливата i е 5, циклусот нема да се извршибидејќиусловотприпрватапроверкаеневистинит.Пр. 4. 57. Програмасокојасепресметувапроизводнапрвитеnприродниброеви.

Бројотnговнесувакорисникот.

Page 84: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

170

Напроменливатаproizvodѝседоделувапочетнавредност1.Зошто?

РезимеКогаоднапредепознатбројотнаповторувањенациклусотнајчестосекористиforциклусот.Секојforциклусимасвојаконтролнапроменливанакојавредностаисеменувасосекоеизвршувањенациклусотштоеодреденосовредностанаприрастот.Блокот од искази кој се наоѓа во циклусот се извршува додека вредноста наусловотевистина.

Прашања:1. Когасекористиforциклусот?2. Колкупатиќесеповторициклусот? а)for(int i=0;i<10;i++) б)for(int i=0;i<10;i=i+2) cout<<i; cout<<i;

в)for(int i=0;i<=10;i++) г)for(int i=0;i<=10;i=i+2) cout<<i; cout<<i;

3. Којавредностќесеприкажепоизвршувањенаследниоткод? a)int br=0; б)br=0;

for(int a=1;a<=20;a++) for(int a=1;a<=20;) if (a%2==0) if (a%2==0) br++; br++; cout<<br; cout<<br;

4. Штоќесеприкажесоследниоткод? a) for(int i=10;i>8;i--) б)for(int i=5;i>8;i--)

cout<<”Ana”; cout<<”Ana”;

Page 85: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

171

5. Напишигоwhileциклусоткакоforциклус! int i=1; while(i<=10) { if(i<5 && i!=2 ) cout<<’x’; i++; }

6. Напишигоdo-whileциклусоткакоforциклус! int n = 100; do { cout<<’x’; n-=10; } while(n>0);

Задачи:1. Напиши програма со која ќе се прикажат сите трицифрени броеви на кои

последнатацифраиме0!2. Напишипрограмасокојаќесепресметаxn,nеприроденброј!3. Корисник внесува 10броеви.Напишипрограма со која ќе се соопштидали

повеќесевнесенипозитивнитеилинегативнитеброеви!4. Напишипрограмасокојасепребројуваатпарнитеброевивоопсеготодmдо

n!Акоm>nдасезаменатвредноститенапроменливитеmиn!5. Напишипрограмасокојаќесенајдатиприкажатситеделителинаприроден

бројn!

4.9.2 Дополнителни структури за повторување

Вгнездени циклусиПонекогаш е потребно некои активности да се извршат одреден број пати, а

потоаиститетиеактивностидасеповторатуштенеколкупати.Например,ако5играчииграаткарти,насите5играчитребадаимсеподелатпо4карти.Илипрофесортребадапрегледатестовиво3паралелки,восекојапаралелкапрегледуваонолкутестовиколкуученициимавотаапаралелка.Воваквитеслучаевициклуситесевгнездуваатеденводруг.

Например,сокодот

int i,j; for (i=1;i<=3;i++) { for (j=1;j<=3;j++) { cout<<i<<” ”<<j<<”\t”; } cout<<”\n”; }

наекранотќесеприкаже:111213212223313233

Page 86: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

172

Пр. 4. 58. Примерзавгнездениforциклуси.Сопрограматасеприкажуватаблицанамножењеод1до10:

Привлезотвонадворешниотциклус,контролнатапроменливаiдобивавредност1, се проверува условoт на надворешниот циклус (i<=10;), па ако условот еисполнетсевлегувавовнатрешенциклус.Привлезотвовнатрешниотциклус,контролнатапроменливаjдобивавредност1,сепроверуваусловотнанадворешниотциклус(j<=10;),паакоусловотеисполнетсеизвршуваатисказиодвнатрешниотциклус(cout<<i*j<<”\t”;).Исказитеод внатрешниотциклус ќе сеизвршуваат седодека условот (ј<=10;) еисполнет. Кога овој услов нема да биде исполнет, се излегува од внатрешниотциклусиповторнозапочнувадасеизвршуванадворешниотциклус.Вредностaнаконтролнатапроменливазанадворешниотциклуссеменува(i++),сепроверуваусловотнанадворешниотциклус (i<=10;),паакотојеисполнетсевлегувавовнатрешен циклус. Сега се повторува опишаната постапка на извршување навнатрешниотциклус.Сѐ ова се повторува додека условот за надворешниот циклус е исполнет, когаовојусловнемадабидеисполнетсеизлегуваоднадворешниотциклус.Засекојавредност на контролната променлива i на надворешниот циклус се извршувацелиотвнатрешенциклус.

Забелешка:За испишувањето да биде во правилни колони, се користи операторот заформатиранопечатењеsetw(5)сокојсеодредуваколкавпросторќесепредвидизаиспишувањенаподатоците.Овојоператоревклученвобиблиотекатаioma-nip,патаабиблиотекаевклученасонаредбатаinclude.

Исказите break и continueСезапознавмесоситетриструктуризаповторувањевојазикотC++итоаевообичаен

начиннакојовиеструктурисекористат.Сепак,начинотнанивнотоизвршувањеможедасесменисопомошнаbreakиcontinueисказите.

Соисказотbreak сепрекинувапонатамошнотоизвршувањенациклусот во којовојисказсенаоѓа.Соовојисказвеќесезапознавмевоswitch-caseструктурата.

Page 87: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

173

Соисказотcontinueсепрекинуваизвршувањесамонамоментнатаитерацијанациклусотвокојовојисказсенаоѓа(тааитерацијасепрескокнува).

Пр. 4. 59. Примерзакористењенаисказотbreak:

Пр. 4. 60. Примерзакористењенаисказотcontinue:

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

Исказот gotoИсказотgotoеисказзабезусловенскок.Овојисказовозможуваизвршувањето

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

Воопштслучајнаредбатаgotoсекористивоследнатаформа: ime: iskazot_na_koj_se_pominuva; ... goto (ime);

Page 88: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

174

Пр. 4. 61. Примерзакористењенаисказотgoto:

Бесконечен циклусМожедасеслучициклусдасеизвршувабесконечнопатиакоусловвоциклусот

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

Пр. 4. 62. Примернабесконеченциклус: for(i=3;i<5;) cout<<”Beskonecen ciklus”;

Задаодбегнешбесконеченциклус:- водисметкаусловвоциклусотнекогашдаморададобиевредностнеточно,- воисказотfor,возаградите,наведигиситетриизрази,- одбегнувајвоциклусотдаменувашвредностнаконтролнатапроменлива.

РезимеДозволеноециклусидасевгнездуваатеденводруг.Притоапостоивнатрешенинадворешенциклус.Соисказотbreakсепрекинувапонатамошнотоизвршувањенациклусотвокојовој исказ се наоѓа. Со исказотcontinue се прекинува извршување само намоментнатаитерација нациклусот во кој овој исказ се наоѓа.Исказотgoto еисказзабезусловенскок.Овојисказовозможуваизвршувањетонапрограматадапродолжиодизбраниотисказ.

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

Page 89: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

175

Прашања:1. ДалиедозволеновгнездувањенациклусивоC++?2. Когасекористиисказотbreak?3. Когасекористиисказотcontinue?4. Когасекористиисказотgoto?5. Штоебесконеченциклус?6. Какоможедасеодбегнебесконеченциклус?7. Споредигиследнивепримеризакористењенаисказотcontinue:

а)int n=11;while(n>1){ n--; if (n==5) continue; cout << n << ”, ”;}cout << “\nOdbrojuvanje bez brojot 5!”;

Екран:10, 9, 8, 7, 6, 4, 3, 2, 1, Odbrojuvanje bez brojot 5!

б)

int n=10;while(n>=1){ if (n==5) continue; cout << n << ”,”; n--;}cout << “\nOdbrojuvanje bez brojot 5!”;

Екран:10, 9, 8, 7, 6, Odbrojuvanje bez brojot 5!

Зоштововториотпримеродбројувањетоепрекинато?Кадеегрешката?

Задачи:1. Напишипрограмакојаќегиприкажеделителитенаброевитеод10до100!2. Корисниквнесува10броеви.Напишипрограмасокојаќесепребројатиќе

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

Vnesibroj:5Vnesibroj:-2Vnesibroj:10Vnesenenegativenbroj,tojnesebroiinesesobira!Vnesenise2broevi,nivniotzbire15!

3. Напиши програма со која се печатат броеви од 1 до n! Бројот n го внесувакорисникот. Доколку корисникот внесе број помал или еднаков на 1 да сеотпечати соодветна порака и корисникот да се упати повторно да го внесебројотn!

Page 90: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

176

4.10  Примери за посложени алгоритми и програмиПр. 4. 63. Дасепроверидаливнесениотбројепрост!

Објаснување://(1) Ситепарниброевиседелатсо2патиенесепростиброеви.Исклучоке

бројот2којепростброј.Акокорисникотвнесепаренбројкојеразличенод2,веднашможедасеотпечатидекатојбројнеепрост.

//(2)Требадасепроверидаливнесениотбројседелисоуштенекојбројосвенсо1исоn.Бидејќисеработисамосонепарнитеброеви,кандидатизанивнитеделителиможатдабидатсамоброевите3,5,7ит.н.заклучносонајголемиотбројкојепомалодn/2(нитуеденбројнемаделителпоголемодn/2,адатоанеебројотn).Вонекојциклус,напр.воциклусотwhile,можедасепроверидаликандидатитезаделителнавистинаседелителинабројотn(if(n%k==0)).Акоиматаковделител,веднашштомтојќесенајдеможеда се отпечати поракадекабројот n не е прост број и циклусот ќе се прекине(break;).

Зад. 4. 17. Дасенајдатситепростиброевиодбројот1добројотnкојговнесувакорисникот!

Page 91: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

177

Пр. 4. 64. Дасенајденајголемиотзаедничкиделителнадвацелибројаxиy!

Објаснување:АлгоритамотнаЕвклид.ОвојалгоритамезаснованнасвојствотодекаНЗДнадвабројаееднаковсоНЗД

напомалиотоддватабројаинивнатаразлика.Например:НЗД(18,12)=НЗД(12,6)=НЗД(6,6)=6Постапката се повторува сѐ додека не се добијат два еднакви броја, и тој број

претставуваНЗД(while (x!=y)).Поголемиотбројсезаменувасоразликатанапоголемиотсопомалиотброј:Поминување1: x=18,y=12 18>12→x=18-12=6,y=12Поминување2: x=6,y=12 6<12→x=6,y=12-6=6Поминување3: x=6,y=6 6=6→NZD=6

4.11  Задачи за талентираните ученици:

4.11.1 Линеарна структура1. ЗаучилишнаприредбаАнаиМариотребаданаправатзамокод

6штиципоредениеднадодругакаконасликата.Прваташтицаесодолжинаk,вторатаеза20cmподолгаодпрвата,третатаеза20cmподолгаодвтората,четвртатаимаистадолжинасотретата,петтатаимаистадолжинасовторатаишестатаимаистадолжина со прваташтица.Напишипрограма со која за даденадолжинанапрваташтицасепресметувавкупнатадолжинанаситештици.Пример:Влез:50 Излез:420

Page 92: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

178

2. УченицитеодIгодинанаизлеттребаданаправатвисечкимост.Мостотсесостоиоддвепаралелнијажињакоисеврзанизакрајбрежјата.Третотојажетребасојазлидасеприцврстизапрвитедвејажињавоцик-цактакадаформираодреденбројнарамнокракитриаголници.Напишипрограмасокојаќесепресметаколкувкупнојазлитребадасенаправатакотребадасеформираатtтриаголници!Пример:Влез:4 Излез:6

3. Во такси во исто време влегле тројца патници. Кога првиот патник излегол,таксиметаротпокажувалC1денари,когаизлеголвториотпатник,ценатабилаC2денариикогаизлеголтретиотпатникценатабилаC3денари.Колкутребадаплатисекојодпатницитеакосекојплаќапропорционално,т.е.когапрвиотпатникќеизлезе,тојтребадаплатисамотретинаодC1денаризапрвиотделнапатот?Пример:Влез:3050100 Излез:102070

4. Банкоматиздавабанкнотиод1000,500,100,50и10денари.Напишипрограмасо која ќе се пресмета колку вкупно банкноти банкоматот ќе исплати за nденари,акосеисплатувапопринципнанајмалкуисплатенибанкноти.Пример:Влез:3780 Излез:10

4.11.2 Разгранети структури

1. Горансакавоеднасобадапоставимасазабилијард.Собатаимаформанаквадрат со страна содолжинаd, амасатаморадаимаправоаголнаформаиморадаимаодреденидимензииc1иc2.Одмасатадоѕидовитеморадаимаодреденорастојание.Напишипрограмасокојаќесеодредидалимасатаможедајасоберевособата.Вопрограматасевнесуваатследнитеподатоци:димензија на собата d, димензии на масата за билијард c1 и c2, најмалорастојаниенамасатаодѕидовитеm.Пример: Влез:d=4.5c1=2.1c2=2.6m=1 Излез:nemoze Влез:d=6.5c1=2.1c2=2.6m=0.6 Излeз:moze

2. Маријаучиделивостнаброеви.Најлесноѝодиделивостсобројот5,затоаштоедоволнодајавидипоследнатацифрананекојбројзададознаедалитоједеливсо5.ЈанаѝпомаганаМаријатакаштоѝзадавабројx,аМаријаморадапронајденајмалбројделивсо5којепомалодxинајголембројделивсо5којепоголемодx.Напиши програма која ќе ѝ помогне ма Јана да ги провери одговорите наМарија!Примери:Влез:12 Излез:1015Влез:27 Излез:2530Влез:15 Излез:1020

Page 93: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

179

3. Матеј треба да оди во САД на натпревар по информатика. Тој дознал декаАмериканцитепоинакугоприкажуваатвремето,какоштосегледавоследнаватабела:

македонсковреме американсковреме македонсковреме американсковреме00:00 12AM 12:00 12PM01:00 1AM 13:00 1PM02:00 2AM 14:00 2PM03:00 3AM 15:00 3PM04:00 4AM 16:00 4PM05:00 5AM 17:00 5PM06:00 6AM 18:00 6PM07:00 7AM 19:00 7PM08:00 8AM 20:00 8PM09:00 9AM 21:00 9PM10:00 10AM 22:00 10PM11:00 11AM 23:00 11PM

НапишипрограмакојанаМатејќемупомогнедапретворамакедонсковремевоамериканско.Пример: Влез Влез 22 8 Излез Излез 10PM 8AM

4.11.3 Структури со повторување1. Маја треба да направи цветови од хартија. Секој цвет треба да биде со

различнабојаиливчињатанасекојцветтребадабидатсоистабоја.Одеденлистхартијаможатдасеисечат4ливчињазацветови.Напишипрограмасокојазададенбројнацветовиизададениброевиналивчињатанасекојцветсеопределувавкупенбројнапотребнилистовихартија.Влезниподатоци:Прваталинијасодржиненегативенцелбројnкојпретставувабројнацветовикоитребадасенаправат,восекојаодследнивеnлиниисенаоѓаненегативенцелбројкојпретставувабројналивчињавосекојодцветовите.Излезиподатоци:Вкупенбројналистовипотребнизаправењенацветови.Пример.Влез: Излез:5 953946

Page 94: ПРОГРАМИРАЊЕ ВО C++ - gimprilep.edu.mk - C++.pdf · ПРОГРАМИРАЊЕ ВО c++ 91 Претставување на алгоритам со псевдо јазик

ПР

ОГР

АМ

ИРА

ЊЕ

ВО

C+

+

180

2. Во текот на учебната година Јана има работено n тестови поматематика ијаинтересирадалиќеимапетказакрајотнагодината.Јанагизнаепоенитепо ситеn тестовии знаеколкувкупнопоени сепотребнизапетка.НапишипрограмасокојаЈанаќепресметадалиќедобиепетка!Прекутастатуратасевнесуваатследнивеподатоци:- бројнатестови(n)- поениодситетестови- бројнапотребнитепоенизапеткаПример: Влез Влез 3 3 8 10 9 9 6 9 27 8 Излез Излез не да

3. Напишипрограма со која се одредува палиндромнададен природенброј.Палиндромебројкајкојредоследотнацифриеобратен,напр.набројот123палиндромебројот321.Пример:Влез:35472 Излез:27453

4. Горјан ги послужил другарите со чоколадо во форма на правоаголник чиидимензииседаденисоприродниброевиaиb.Тојимкажалнадругаритедакршатсамоквадрати.Другаритееденпоеденоткршувалеквадрати,носекојземалнајголемможенквадрат.Напишипрограмасокојасеодредуваколкудругарисепослужилесочоколадото!Примери:Влез:a=12b=7Излез:6(Вкупно6другарисепослужилесочоколадо,тиепоредземалеквадратисостраните7,5,2,2,1,1.)Влез:a=7b=7Излез:1

5. Воеднагајбасенаоѓаатmкилограмијаболкоиnкилограмикруши(mиnсеприродниброеви).Напишипрограмакојазададенивредностинаmиnќегоприкаженајмалиотможенбројнагајбипотребнизапрепакувањенајаболкитеикрушитетакаштогајбитеќебидатсоистамасаијаболкитеикрушитетребадабидатодвоени.Пример:Влез:m=16n=12 Излез:7