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. Наброј ги фазите низ кои минува програмата при преведувањето


No comments: