Monday, November 28, 2011

Интегрирана околина

Постапката на изработка на програма може да се подели во неколку чекори :
- пишување на изворен код
- преведување на изворниот код
- поврзување во извршен код
- извршување и проверка на програмата
Постојат посебни програми за секој од наведените чекори.
Наместо користење на посебни програми се користи интегрирана развојна околина ( integrated development environment IDE), која ги обединува горенаведените чекори.
Секоја околина за програмирање е составена од множество програми кои соодветствуваат на различни етапи при решавање на задачата. Тоа се
1. Текст уредувач (внесување на текст од тастатура директно во изворна програма)
2. Преведувач      ( преведува од јазикот на кој е напишана програмата во јазик на компјутерот, проверува и грешки во програмата - синтаксни )
3. Дебагер             ( помага при барање на логички грешки )
4. Уредувач за поврзување

Интегрирана околина




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

Постапка за отварање 
File --> New --> Source File  
Зачувување 
File --> Save as : file name 
              type : C++source file ( *.cpp, *.cc )
Извршување 
Excecute --> Compile and Run

страна 109,111 од учебник
<4 a="" endl="" nbsp="" p="">
Напиши ги програмите.Компајлирај и изврши.  Каков е излезот ( запиши во тетратка)

Tuesday, November 15, 2011

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



Софтверот може да се подели во 2 групи 
Системски програми –  управуваат со работата на компјутерот .
- Оперативни системи
-  Контролни програми
                  -   Услужни програми 
Апликативни програми – програми наменети за извршување на конкретна работа - апликации.

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

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

Програмски јазици

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

Видови програмски јазици
   -  нижи програмски јазици / машински и симболички
   -  виши програмски јазици /високи програмски јазици

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

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

Виши програмски јазици
Програмски јазици напишани на јазик сличен на човечкиот природен јазик.
Се појавиле кон крајот на 50-тите години и до денес се најприфатени за масовно користење во програмирањето.
Изградени се на сличен начин како и природните јазици.
Секој од нив има своја
-  азбука (составена од  букви, бројки, специјални знаци )
- зборови ( се формираат со комбинирање на знаците од азбуката и го сочинуваат речникот на јазикот ): INPUT, READ, STOP
-  наредби (зборовите се комбинираат во јазични конструкции наречени наредби или реченици)
-  граматика ( ги содржи правилата за градење зборови и наредби)
-  синтакса (строги правила по кои се конструираат наредбите )
-  семантика ( значењето - смислата на наредбите )

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

Фази во процесот на изработка на компјутерска програма: 

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

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

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

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

 3. Kодирање на алгоритамот.- пишување на изворен код

Алгоритмот се запишува со елементите на некој програмски јазик и со тоа се добива изворниот код. На датотеката и се доделува некое описно име, а наставката е соодветна на програмскиот јазик во кој е напишан изворниот код. Запишување на алгоритамот како низа од инструкции во избран програмски јазик. Вака запишаниот алгоритам претставува програмски код кој се вика изворна програма.Пр. Во С++ е .cpp.

4. Преведување на изворен код 

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

5. Поврзување во извршен код 

Поврзување на објектните кодови со помош на програмите поврзувачи (linkers). Oбјектниот код добиен со преведување треба да се поврзе со постоечките датотеки во кои се наоѓаат веќе преведени мали програми кои често се користат во програмите. Овие датотеки се нарекуваат библиотеки. Ако кодот не може да се поврзе со потребните библиотеки поврзувачот ќе јави грешка при поврзување (link time errors) и нема да се добие извршен код. Овие се грешки при поврзување и треба да се отстранат. По успешното поврзување се добива извршен код со наставка .ехе. Извршната програма може да се користи самостојно на било кој компјутер. 

6.Тестирање на програмата  

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

Се тестира за да се види дали програмата дава точни резултати. Тестирањето се врши за вредности за кои лесно може да се определи резултатот или за вредности за кои се знае  резултатот. Ако програмата неправилно работи, значи има логичка грешка која може да ја корегира само програмерот. По корекција на грешката процесот се повторува.Логичките грешки обично се викаат багови (bugs) и за нивно откривање се користи програма дебагер која овозможува извршување на програмата линија по линија и стопирање на нејзиното извршување на одредено „сомнително“ место

Пример за синтаксна и логичка грешка

Ова е формула за периметар на правоаголник ако се познати неговите страни:
L=2*(а-b
Синтаксна грешка – недостасува заграда на крајот од изразот.
Логичка грешка – формулата не е точна иако поставање на заградата на крајот е правилно запишана.
a=5
b=”Maja”
c= b-a
Логичка грешка – b е текст и не може да биде намаленик.

Преведувачи и интерпретери


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

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

Изворна програма --> преведувач --> Извршна програма

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


Алгоритми

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

Зборот алгоритам (Algorithmi) е земен од латинскиот јазик и е даден по името на узбекистанскиот математичар од IX век Мухамед Ал Хорезми(Abu Jafar Mohammed Ibn Musa Al Khowarizmi), кој прв ги формирал правилата за извршување 4 основни операции со арапски цифри.

Што ја дефинира секоја постапка ?
- зададени влезни (почетни) податоци
- дефинирана низа операции
- пресметани излезни резултати

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

Во зависност од алгоритамските чекори алгоритмот може да биде
- општ
- детален
Пример1
Да се состави алгоритам за пресметување на плоштина на правоаголник со страни a и b.

Чекор 1. задавање на вредностите на променливите а и b
Чекор 2. пресметување на вредноста на P по формулата P=a∙b
Чекор 3. прикажување на вредноста на променливата P
Чекор 4. крај на алгоритмот

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

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

Кои се карактеристиките на алгоритмите? 
 Конечност ( мора да доведе до решение по конечен број чекори)
 Дефинираност и недвосмисленост (секој чекор мора да е еднозначно дефиниран)
 Влез (може да има еден или повеќе влезни податоци)
 Излез ( мора да има еден или повеќе излезни податоци) 
 Ефикасност ( да доведе до решение во што пократко време)
  Остварливост ( да е остварлив на компјутер)

Претставување на алгоритмите
 

Алгоритмот може да се прикаже на два начини:
 - текстуално ( со псевдо јазик)
 -  графички    ( со блок - дијаграм )

 Пример2 Да се напише алгоритам за наоѓање на најголем број од три внесени броја.


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

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

Својства на алгоритмите

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

Aлгоритмот од пример 2 не е правилен, бидејќи ако бројот а е помал од бројот b, тогаш циклусот ќе се извршува бесконечно и никогаш нема да се добие резултат (решение)


Задачи :

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

општ алгоритам
чекор 1 : задавање на три броја
чекор 2: споредување на кои било 2 броја и наоѓање на поголемиот од нив
чекор 3: споредување на поголемиот број од чекор 2 со третиот број и наоѓање на поголемиот од нив
чекор 4: печатење на резултатот 
детален алгоритам
чекор 1 : задавање на  броевите a, b, c
чекор 2: ако а > b тогаш p = a, ako а < b  тогаш p=b
чекор 3: ako p >c  тогаш n=p  а ако p < c  тогаш n=c              
чекор 4: печатење на n

( за а, b, c  земи конкретни вредности )