Програмски Јазик Пајтон

55
Програмски Јазик Пајтон Студент: Даме Јованоски Професор: Д-р Ѓорѓи Јованчевски 2/7/2012

Upload: spaski91

Post on 29-Jul-2015

323 views

Category:

Documents


16 download

TRANSCRIPT

Page 1: Програмски Јазик Пајтон

Програмски Јазик Пајтон

Студент: Даме ЈованоскиПрофесор: Д-р Ѓорѓи Јованчевски

2/7/2012

Page 2: Програмски Јазик Пајтон

СодржинаВовед..........................................................................................................................................................4

1. Теорија на програмирање..................................................................................................................5

1.1 Програмски јазици и видови.....................................................................................................6

1.2 Програмски парадигми и карактеристики...............................................................................8

1.2.1 Структурно програмирање....................................................................................................9

1.2.2 Објектно-ориентирано програмирање...............................................................................10

1.2.3 Функциско програмирање...................................................................................................11

1.2.4 Логичко програмирање.......................................................................................................12

1.3 Елементи на програмските јазици..............................................................................................13

1.3.1 Лексика.....................................................................................................................................14

1.3.2 Синтакса...................................................................................................................................15

1.3.3 Семантика.................................................................................................................................16

1.3.4 Типови податоци......................................................................................................................17

1.3.5 Контрола на текот на програмата...........................................................................................18

2. Програмски јазик - Пајтон...............................................................................................................19

2.1 Парадигма на програмскиот јазик Пајтон..................................................................................20

2.2 Споредба со други јазици............................................................................................................20

2.3 Намена/користење.......................................................................................................................21

3. Програмска структура......................................................................................................................22

3.1 Типови податоци..........................................................................................................................25

3.2 Декларација на променливи и изрази.......................................................................................26

3.3 Контролни структри.....................................................................................................................29

3.4 Декларации..................................................................................................................................31

3.4.1 Податочни структури...............................................................................................................32

3.4.2 Функции....................................................................................................................................33

3.4.3 Класи и објекти.........................................................................................................................34

3.5 Исклучоци.....................................................................................................................................36

3.6 Библиотеки...................................................................................................................................37

4. Инсталација на Пајтон работната околина....................................................................................37

2

Page 3: Програмски Јазик Пајтон

4.1 Дебагирање..................................................................................................................................40

Заклучок...................................................................................................................................................42

Библиографија.........................................................................................................................................43

3

Page 4: Програмски Јазик Пајтон

Вовед

Со создавањето на буловата алгебра од страна на Џорд Бул се поставуваат темелите на

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

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

луѓето (програмерите) да програмираат во одреден систем се појавило потреба од програмски

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

систем. Таа апстракција се однесува на тоа да програмерот не му е важно кој операции ги

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

креирање на посложени компјутерски апликации.

4

Page 5: Програмски Јазик Пајтон

1. Теорија на програмирање

Денес не би можеле да замислиме ниту една технологија што би функционирала без користење на

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

машините т.е хардверот преку користење на команди (програмски кодови) коишто имаат функција

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

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

повеќе нивоа на апстракција. Тие нивоа се поставени затоа што хардверот работи на машински код

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

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

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

да ја намали апстракцијата помеѓу програмер/хардвер, но сепак е неефиксен за денешните

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

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

при креирањето на комплексни апликации.

Слика 1. Комуникација корисник-харвер.

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

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

јазик е множество од зборови коишто се резервирани за да извршат одредена функција. Овие

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

неможат да се употребат од страна на програмерот за друга нивна намена, пример командите while

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

5

Page 6: Програмски Јазик Пајтон

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

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

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

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

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

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

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

математички модели се:

податоци

начинот на процесирање на податоците

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

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

системска и машинска архитектура за имплементација на програмските јазици.

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

програмски јазик-имплементација на алогоритам во прорамски јазик. Во креирањето на

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

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

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

имплементирани на одредена системска или машинска архитектура.

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

За да можеме да ги разбереме како функционираат програмските јазици треба да ги разбереме

нивните три најважни концепти и тоа:

Податоци

Синтакса

Семантика

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

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

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

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

6

Page 7: Програмски Јазик Пајтон

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

семантиката често поставувани прашања се што типови на елементи се фунцкициите, класите,

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

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

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

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

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

јазици.

Машински јазик претставува јазик на најниско ниво т.е ниво на коешто работи процесорот, а тоа

се одредени инструкции составени од бинарни 1 и 0.

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

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

процесори, микропроцесори и микроконтролери. Тие функционираат на тој начин што податоците

се внесуваат во посебни мемориски локации преку користење на процесорските регистри. Во оваа

група на јазици спаѓаат: x86, MASM, NASM, GAS и други.

Виши програмски јазици се програмски јазици кои при извршувањето користат компајлери за

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

извршуваат одредени операции како проверка на грешки, пред-процесирање, парсирање, анализа

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

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

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

го извршуваат и се побавни од нив. Во оваа група на јазици спаѓаат: Пајтон, Perl, Ruby и други.

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

7

Page 8: Програмски Јазик Пајтон

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

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

C++, Lisp и други.

2 Сликата е превеземена од Wikipedia - http://en.wikipedia.org/wiki/Compiler

8

Page 9: Програмски Јазик Пајтон

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

1.2 Програмски парадигми и карактеристики

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

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

јазик во својот домен. Многу програмски јазици подржуваат повеќе програмски парадигми.

Теминот прадигма најдобро се опишува како “шема или модел”, затоа програмската парадигма

може да се дефинира како шема или модел4 во софтверското инжињерство со цел креирање на

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

најпопуларни се:

Императивно

3 графикот е превземен од http://blog.springsource.org/2009/02/23/programming-language-popularity/4 Pattern – шема (во софтверското инжињерство постои терминот design pattern т.е шеми коишто се дефинирани за да се овозможи подобра апликациска организација и реупотреба на множество на програмски кодови).

9

Page 10: Програмски Јазик Пајтон

o Структурно програмирање

o Објектно-ориентирано програмирање

Функциско програмирање

Логичко програмирање

1.2.1 Структурно програмирање

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

математичари Corrado Boh (Корадо Бох) и Guiseppe Jacopini (Ѓузепе Јакопини), којшто

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

дела и тоа: услови, низи и циклуси. Исто така Edsдer Dijkstra (Едгер Диџстра)5 во едно од

неговите натписи познато под името Go To Statement Considered Harmful ја објаснува важноста на

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

којашто е развиена од програмерот е поделена на помали под-секции6 коишто имаат единствен

влез или излез.

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

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

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

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

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

тип на структурното програмирање може да се наведе и објектно-ориентираното програмирање

којшто ги користи истите карактеристики како дел од објектите и класите.

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

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

Структурното програмирање се изведува преку постепено разградување на функцискоста

#include<stdio.h>

main(){ int n, sum = 0, remainder;

printf("Enter an integer\n");

5 Edsдer Dijkstra – роден во Холандија познат по алгоритмот shortest path-alдorithm6 Под-секции се мисли на функции.

10

Page 11: Програмски Јазик Пајтон

scanf("%d",&n);

while( n != 0 ) { remainder = n % 10; sum = sum + remainder; n = n / 10; }

printf("Sum of digits of entered number = %d\n",sum);

return 0;}

Код 1. Пример за програмска структура во Ц

1.2.2 Објектно-ориентирано програмирање

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

програмирање за разлика од останатите програмски парадигми. Во објектно ориентираното

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

апстранкта слика на предметите од реалниот свет. На пример објектот “рака” кој е дел од нашето

тело има одредени променливи карактеристики и функции. Класите како апстрактно множество

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

карактеристики ( пример. во класата може да има елемент тип на рака). При креирањето на

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

карактеристични за објекто-ориентираното програмирање се:

објекти и класи – класите и објектите претставуваат апстрактни слики на поими од

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

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

карактеристиките на класите.

наследување – преку употребата на наследувањето се овозможува наследување на

карактеристиките на претходно дефинираните класи.

полиморфизам – преку полиморфизмот одредени функции за одредени податочни типови

или класи податоците процесираат ги процесираат на различен начин.

Dynamic binding (динамичко поврзување/обврзување)

7 Објекто-ориентирано програмирање е воведено во 1960 година преку програмата Sketchpad креирана од Ivan Sutherland (Иван Судерланд) кој прв ги дефинирал концептите инстанца (објект) и класа. Simula 67 е првиот програмски јазик кој е создаден во 1960 година во кој се воведени објектите.

11

Page 12: Програмски Јазик Пајтон

енкапсулација – спојување на одредени поими – дефинирање на типот на елементите

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

Програмски јазици кои спаѓаат во оваа програмска парадигма се: C++,C#, PHP, Lua, JavaScript,

Visual Prolog и други.

<?php

class test { public static function run() { print "Works\n"; } } $className = 'test'; $className::run();?>

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

1.2.3 Функциско програмирање

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

на функции. Оваа програмерска парадигма специфицира што треба да се пресмета во апстрактна

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

ги има следниве карактеристики:

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

функциите можат да имаат локални имплементации од други функции ( исто така можат да

бидат и вгнездени),

функциите неможат да имаат несакани последици ( пример. ако на името8 Х му е доделена

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

вредност).

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

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

имаат што е можно помалку грешки),

8 Во функционалната парадигма или функционалните јазици нема променливи, туку постојат дефинирани “имиња” за зачувување на вредностите.

12

Page 13: Програмски Јазик Пајтон

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

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

програмски јазици.

ефикасност на повеќепроцесорски системи.

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

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

процесирање9. Името LISP го добило од “LISt Processing”, затоа што листите биле во главно

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

(defun factorial (N)

"Compute the factorial of N."

(if (= N 1)

1

(* N (factorial (- N 1)))))

Код 3. Пример за програмска структура во LISP

1.2.4 Логичко програмирање

Логичкото програмирање е програмерска парадигма во којашто се прави обид да се овозможи

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

дефинирани иструкции. Овој тип на програмирање е претставена во 1970 од Robert Kowalski

(Роберт Ковалски) и Alain Colmerauer (Алаин Колмерауер). Логичкото програмирање е базирано

на first order predicate логиката. Програмите во логичкото програмирање се базираат на колекции

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

Карактеристични концепти за логичкото програмирање се:

Fакт (единица клаузула): Наједноставен вид на тврдење се нарекува факт во кој се

наведува однос помеѓу објекти

Правило (програмска клаузула)

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

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

13

Page 14: Програмски Јазик Пајтон

Програмски јазици кои спаѓаат во оваа програмска парадигма се: Alma-0, CLACL, Curry, Formula

One, Fril, Janus и други.

proc Factorial(x:<I,yy:.L) iff

if x > 0 then

Factorial(x-1,yy) & yy := yy*x &

if x mod 100 = 0 then {show progress}

Print('\r',x)

end

else

yy := 1

end

Код 4. Пример за употреба на логичкиот програмски јазик Formula One

1.3 Елементи на програмските јазици

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

податоци, но за добро да ги разбереме треба да ги дефинираме подетално што подразбираат овие

карактеристики, и исто така треба да го објаснеме кои се тие елементи од којшто е составен еден

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

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

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

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

Променливи

Услови

Циклуси

Полиња и низи

Функции

Податочни типови

Покажувачи

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

14

Page 15: Програмски Јазик Пајтон

1.3.1 Лексика

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

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

дефинираат правилата на најниско ниво како на пример како правилно се дефинира име на

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

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

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

проверка на лексиката и тоа:

Reдular expressions (регуларни изрази) – препознавање на одредена група на точни изрази

Finite-state automata (FSAs) – претставуваат апстракни машини кои можат да се искористат

за лексичка анализа

Deterministic finite-state automata – преставува апстрактна машина што исто така може да

препознава карактери и да прави нивна анализа.

Преведувачи од FSA во регуларни изрази.

променлива=3+2

Лексичка

Анализа

Знак

sum израз10

= оператор11

6 број

+ оператор12

4 број

Код 5. Пример за лексичка анализа

1.3.2 Синтакса

10 Ова претставува променлива, за ова ќе објаснеме подоцна во програмскиот јазик Python11 Операторот “=” преставува оператор за инициализација на вредност на променлива12 Операторот “+” претставува оператор за собирање

15

Page 16: Програмски Јазик Пајтон

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

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

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

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

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

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

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

програмскиот јазик.

Слика 4. Процес на синтаксна анализа преку користење на парсер.

1.3.3 Семантика

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

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

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

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

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

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

Синтаксата мора да биде одредена пред семантиката бидејќи значење може да му се даде само на

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

предвид проблемите на прагматиката13, бидејќи интеракцијата со корисниците може да се смета во

изрази чие значење веќе е дефинирано.

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

16

Lexical Analyzer

Sourceprogram

Get next token

tokenParser

Rest of front end

Parser

Parsetree

Intermediaterepresentation

Page 17: Програмски Јазик Пајтон

Backus–Naur формализамот обезбедува концизен начин на опишување на можни начини на

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

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

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

(дрвата за синтакса).

<conditional stmt> ::=

if <boolean expr> then

<stmt>

else

<stmt>

| if <boolean expr> then

<stmt>

Код 6. Пример за Backus–Naur форма

Како алтернатива на Backus–Naur форма се употребуваат и синтаксните дијаграми, кои се

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

програмски јазик.

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

1.3.4 Типови податоци

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

големината на податок, значењето на податокот, начинот на којшто типот на податок може да биде

17

Page 18: Програмски Јазик Пајтон

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

подржуваат следниве податочни типови:

inteдers (цели броеви)

booleans (булеан или логички броеви)

characters (карактери)

floatinд point/float (реални броеви)

alphanumeric strinд (алфанумерички низи)

Inteдers или целите броеви претставуваат податочни типови составени од математички вредности

со негативни и позитивни цели броеви. Обсегот на овие типови на множества е следен:

Големина Обсег8 bits -128 .. 12716 bits -32768 .. 3276732 bits -2147483648 .. 214748364764 bits -9223372036854775808 .. 9223372036854775807

Табела 1. Опсег на вредностите на целите броеви

boolean или булеан броевите се податочни типови кои можат да имаат вредност точно или

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

Characters или карактер податочните типови можат да имаат вредност составени од карактери од

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

Floatinд point/float претставуваат податочни типови се всушност исти на реалните броеви од

математиката и опфаќаат вредности кои содржат поместувачка точка (пример 1.34).

Аlphanumeric strinд претставуваат податочни типови којшто всушност се опишуваат како низа на

последователни карактери.

1.3.5 Контрола на текот на програмата

Во програмирањето концептот “контрола на текот на програмата” се однесува на редоследот на

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

има повеќе видови за контрола на текот и тоа:

18

Page 19: Програмски Јазик Пајтон

редоследна или секвенцна

Почеток чекор-А чекор-Б ...крај

Код 7. Псевдокод за редоследна контролна структура

Во контролна структура текот на извршување зависи од редоследот на командите што се наведени.

избор или селекција

Контролните структури за избор и селекција функционираат на тој начин што текот на

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

ако логички израз тогаш чекор-А инаку чекор-Бкрај-ако (логички израз)

Код 2. Псевдокод за контролна структура за избор

повторување или циклус

циклус чекор-А чекор-Б .... чекор-Мкрај_циклус

Код 8. Псевдокод за повторување или циклус

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

команди се додека одреден услов не биде задоволен.

скок

Почеток скок-линија ....

Код 9. Псевдокод за скок

19

Page 20: Програмски Јазик Пајтон

Исто така во минатото се употребувала и наредбата за безусловен скок goto што се сметала дека со

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

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

2. - Програмски јазик Пајтон

Креирањето на програмскиот јазик пајтон е започнато кон крајот на 80тите години, а неговата

имплементација е направена во Декември 1989 од страна на Guido van Rossum (Гвидо Ван Росим)

во институтот за истражување CWI во Холандија. Како наследник на ABC програмскиот јазик,

пајтон имал можност за справување со испади и овозможувал подршка со Amoeba оперативниот

систем. Во Февруари 1991 Ван Росим ја објавил верзијата 0.9.0 којашто ги имала можности во

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

модули кои биле позајмени од програмскиот јазик Modula-3. Името овој програмски јазик го

добило од британскиот филмот Monty Пајтон's Flying Circus.

2.1 Парадигма на програмскиот јазикПајтон

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

интернет страната на the Пајтон Software Foundation, е наведено дека овој програмски јазик е

создаден во програмскиот јазик C, јава базирана верзија на пајтон постои во јython и којакористи

Јава фунцкии. Iron пајтон, претставува C# верзија и е достапна за .Net и Mono платформата со

што на C# програмерите им се овозможува пристап до пајтон. На секоја од овие инстанци,

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

модулите од различни работни околини.

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

Проектот PyPy кој е создададен во 2003 година им овозможи на Пајтон програмерите да можат да

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

open source14 проект, развиен од страна на заедницата на програмери за коишто е достапен за

14 Open source проект или проект со отворен код претставува проект кадешто кодот е јавно достапен за сите, но е заштитен со лиценца за негова продажба.

20

Page 21: Програмски Јазик Пајтон

бесплатен развој и дистрибуција. PyPy исто така е подржан од Европската Унија како Specified

Targeted Research Project15 (STReP), како дел од FP6 фондацијата.

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

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

програмата. Исто така подржува и други видови на парадигми како функциската и структруната.

2.2 Споредба со други јазици

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

перформанси. За пример ќе ја земеме примената на Пајтон во веб апликативното програмирање

во споредба со другите популарни јазици како: PHP, Ruby и Perl.

Слика 6. Мерење на брзината при испишување на Hello World16

На слика 3 ни е прикажано испитувањето на брзината на програмскиот јазик Пајтон при испишувањето на низата карактери Hello World, и како што можеме да забележеме дека овој програмски јазик за прилично брз период го извршува тоа. На десниот дел од графикот ни е прикажано преку која парадигма какви перформански се постигнати т.е преку користење на објектно-ориентираната, структурната и без користење на ниту една парадигма.

15 Проект на Европската Унија наменет за развој на нови технологии.16 Сликата е превземена од http://xodian.net/serendipity/index.php?/archives/27-Benchmark-PHP-vs.-Python-vs.-Perl-vs.-Ruby.html

21

Page 22: Програмски Јазик Пајтон

Слика 7. Мерење потребната меморија при извршување на апликациите17

2.3 Намена/користење

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

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

специфични податоци и секаков тип на податоци или датотеки што сакаме да бидат снимено на

нашиот компјутер. Пребарувачот на Google исто така употребва скрипти во Пајтон за извршување

на дневни операции, YouTube користи Пајтон за дистрибуција на видео записи, а исто така од

поголемите компании што користат Пајтон се NASA и New York Stock Exchange. Овие се само

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

компаниите, државните агенции и непрофитните организации.

Hunch е нов вид на AI филтер, како и систем за детално пребарување како и социеална мрежа.

Hunch користи Пајтон примарно за нивниот интерфејс, како и останатите составни делови

користат фунции во Пајтон кои функционираат како една целина.

ltraseek Server е комерциален пребарувач, во кој е имплементиран пристап со користење на повеќе-

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

Пајтон како на пример HTTP оптимизатор и web crawler19. Овој пребарувач е составен од 11.000

линии од код во Пајтон, а додека корисничкиот интерфејс е составен од 17.000 линии програмски

код.

3. Програмска структура

Пајтон програмскиот јазик припаѓа на групата на интерпретирани програмски јазици, и неговата

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

програмскиот јазик може да се употреби за:

17 Сликата е превземена од http://xodian.net/serendipity/index.php?/archives/27-Benchmark-PHP-vs.-Python-vs.-Perl-vs.-Ruby.html18 Пајтон е подржан од повеќе оперативни системи, и неговите апликации можат да бидат употребувани на скоро сите популарни оперативни системи.19 Web crawler - Претставуваа апликација што се користи за превземање на содржината на одредена наведена страна.

22

Page 23: Програмски Јазик Пајтон

објектно-ориентирано програмирање

функциско програмирање

структурно програмирање

Во зависност од тоа каков вид на програмирање ќе се употреби зависи и структурата на овој

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

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

ќе дадеме пример на апликација во Линукс оперативниот систем за следење на состојбата на хард

дискот (disk-monitoring):

1. Структурно програмирање и неговата програмска структура во Пајтон

from subprocess import Popen, PIPEimport re

def disk_space(pattern="2[0-9]%", message="CAPACITY WARNING:"):

#takes shell command output ps = Popen("df -h", shell=True,stdout=PIPE, stderr=PIPE) output_lines = ps.stdout.readlines() for line in output_lines: line = line.strip() if re.search(pattern,line): print "%s %s" % (message,line)

disk_space()Код 10. Пример за програмска структура во Пајтон со користење на структурното програмирање

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

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

23

Page 24: Програмски Јазик Пајтон

from subprocess import Popen, PIPEimport re

class DiskMonitor(): """Disk Monitoring Class""" def __init__(self, pattern="2[0-9]%", message="CAPACITY WARNING", cmd = "df -h"): self.pattern = pattern self.message = message self.cmd = cmd

def disk_space(self): """Disk space capacity flag method""" ps = Popen(self.cmd, shell=True,stdout=PIPE,stderr=PIPE) output_lines = ps.stdout.readlines() for line in output_lines: line = line.strip() if re.search(self.pattern,line): print "%s %s" % (self.message,line)

if __name__ == "__main__": d = DiskMonitor() d.disk_space()

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

програмирање

При користењето на објектно-ориентираното програмирање во Пајтон се користат објекти

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

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

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

апликацијата, а тоа е __main__. На почетокот на апликацијата се дефинираат кој библиотеки ќе

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

3. Функциско програмирање и неговата програмска структура во Пајтон

from subprocess import Popen, PIPEimport re

def disk_space(pattern="2[0-9]%", message="CAPACITY WARNING:"): #Generator Pipeline To Search For Critical Items ps = Popen("df -h", shell=True,stdout=PIPE, stderr=PIPE) outline = (line.split() for line in ps.stdout) flag = (" ".join(row) for row in outline if re.search(pattern, row[-2])) for line in flag:

24

Page 25: Програмски Јазик Пајтон

print "%s %s" % (message,line)

disk_space()Код 12. Пример за програмска структура во Пајтон со користење на функциско програмирање

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

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

одреден проблем различен од објекно-ориентираното програмирање и структурното. Разликата е

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

составни елементи се користат функциите. На примерот е прикажано како се користи

функциското програмирање и неговата програмска структура.

Слика 8. Работна околина на Пајтон во Windows оперативниот систем

На сликата е прикажана работната околина на програмскиот јазик Пајтон во Windows

оперативниот систем, исто така овој програмски јазик е подржан скоро од сите модерни

оперативни системи како Linux, Windows и Mac, тоа значи дека апликациите во Пајтон без разлика

25

Page 26: Програмски Јазик Пајтон

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

(освен апликациите во кои се користени системски датотеки).

3.1 Типови податоци

Во Пајтон програмскиот јазик постојат повеќе типови на податоци и тоа:

int (integer) – цели броеви float – реални броеви long – големи вредности за броеви или низи complex – комплексни броеви составени од реален и имагинарен дел

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

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

прикажана на претходните страни кадешто е дефинирано општо за сите програмски јазици.

Ц – програмскиот

јазик

Ц# – програмски јазик Пајтон – програмски

јазик

PHP – програмски јазик

int a;

a=2;

int a;

a=2;

a=1 $a=2;

Код 13. Пример за инициализација на променливи спрема типот на променливата

3.2 Декларација на променливи иизрази

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

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

променливите. Примери за иницијализација на променливи:

>>> a=12

>>> print a

12

Код 14. Пример за инициализација на целобројни променливи

26

Page 27: Програмски Јазик Пајтон

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

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

екранот (print).

>>> a=”dame jovanoski"

>>> print a

dame jovanoski

>>>

Код 15. Пример за инициализација на низа на знаци

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

каракетери. Карактерите се ASCII знаци кои се разбирливи за човекот, а имаат и свој код со цел да

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

>>> a=1.2

>>> print a

1.2

Код 16. Пример за инициализација на променливи од реалните броеви

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

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

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

Исто така има и резевирани оператори што можат да бидат искористени на променливите што сме

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

сме употребиле.

Операција Резултат

X+Y Сума на x и y

X - Y Разлика на x и y

X * Y Производ на x и y

X / Y Количник на x и y

X // Y Количник на x и y без остаток

X % Y Остатокот на првиот количник

на x и y

-X Негативно x

27

Page 28: Програмски Јазик Пајтон

+X Позитивно x

abs(x) Абсолутна вредност на x

int(x) Претворање на x во цел број

long(x) Претворање на x во долг број

float(x) Претворање на x во реален

број

complex(re,im) Комплексен број со реален и

имагинарен дел

c. conjugate() конјугат на комплексниот број

c

divmod(x,y) исто е како (x // y, x % y)

pow(x,y) x на степен y

x ** y x на степен y

Код 17. Примери за оператори на променливи и нивна употреба

Како што можеме да видеме на табелата ни се прикажани операндите на проемнливите во Пајтон и

нивната соодветна улога.

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

операторот за печатење е прикажан на пример Код 8.

>>> a=12

>>> print a

12

Код 18. Пример за употреба на операторот за печатење.

За внесување на вредности се користи операторот raw_input и начинот на којшто тој се употребува

е следен:

raw_input(порака што сакаме да се испише на екранот први внесување на вредност)

Код 19. Начин на употреба на операторот за внесување на карактери.

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

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

28

Page 29: Програмски Јазик Пајтон

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

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

користеме.

>>> b=raw_input("Vnesete ime i prezime:")

Vnesete ime i prezime:dame jovanoski

>>> print b

dame jovanoski

Код 20. Пример за употреба за внесување на карактери.

Според примерот Код 10 ние внесуваме одредена низа на карактери, вредност која ќе биде

доделена на променливата b, и со искористуваање на операторот за печатење (операторот за

испишување на екран) ќе ја прикажеме вредноста на променливата што ја имаме внесено.

3.3 Контролни структри

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

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

If изразот

For изразот

break, continue и else изразите

While изразот

Начинот на којшто тие се користат во Пајтон е следен:

1. If изразот

If условот спаѓа во групата на изрази каде доколку е извршен одреден услов се извршуваат и група

на изрази. Пример за негова употреба е прикажано на пример Код 11

>>> a=raw_input("Vnesete eden broj:")Vnesete eden broj:22>>> if a>0:

print "Brojot sto go vnesovte e pogolem od 0"Brojot sto go vnesovte e pogolem od 0

Код 21. Пример за употреба на if условот

29

Page 30: Програмски Јазик Пајтон

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

иницијализација на истата во променлива “a”, потоа со користење на резервираниот збор if

поставуваме одреден услов. Доколку условот е исполнет (како што е случај во овој пример), ќе

биде испишано на екранот “Brojot sto go vnesovte e pogolem od 0” т.е секоја команда што следи

после операторот “:” со којшто се започнува внесување на низа на команди дефинирани да бидат

извршени доколку условот биде исполнет, а доколку условот не биде исполнет се претскокнува

извршување на овие команди т.е командите после операторот “:”.

>>> a=raw_input("Vnesete eden broj:")Vnesete eden broj:22>>> if a>0:

print "Brojot sto go vnesovte e pogolem od 0" elif a==0: print “Brojot sto go vnesovte e ednakov na 0”Brojot sto go vnesovte e pogolem od 0

Код 22. Пример за употреба на if условот

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

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

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

2. For изразот

For изразот спаѓа во групата на изрази каде се извршува множество на изрази се додека одреден

услов не биде исполнет. Употребата на ваквот тип на израз ќе биде прикажано на пример Код 13.

>>> a="dame">>> for x in a:

print xdame

Код 23. Пример за употреба на for циклусот

Преку пример Код 13 ние можеме да видеме како се употребува for изразот т.е преку дефинирање

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

низата на карактери преку одредени итерации наречени циклуси, затоа и for изразот уште го

нарекуваме и цуклус. Тие циклуси се извршуваат се додека не биде извршен одреден услов, а во

30

Page 31: Програмски Јазик Пајтон

овој случај условот е “Извршувај итерации се додека има карактери во ‘a’ “, тоа значи дека

условот во овој пример е бројот на карактери во низата ‘a’.

3. break, continue и else изразите

Break и continue изразите се користат како дел од циклусите со цел прекин доколку одредени

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

со кој наведуваме дали x е еднакво на ‘a’, и доколку е исполнет условот да се прекинат останатите

итерации на циклусот.

>>> a=”dame”>>> for x in a:

if x=="a":print xbreak

aКод 24. Пример за употреба на break изразот во for циклус

Разликата помеѓу break и continue, е таа што кога се извршува break изразот останатите команди

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

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

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

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

не е исполнет.

a = 100if a>0: print "a e polemo od 0"else: print "a e pomalo od 0"

Код 25. Пример за употреба на break изразот во for циклус

4. While изразот

While изразот се користи слично како и for циклусот за извршување на одредени итерации се

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

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

после операторот “:” се дефинираат командите што сакаме да се извршуваат.

>>>а=5>>> b=0

31

Page 32: Програмски Јазик Пајтон

>>> while (b<a):b=b+1print b

12345>>>

Код 26. Пример за употреба на while циклусот

3.4 Декларации

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

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

манипулирање (пресметка на податоците). Со користење на податочни структури всушност

можеме да ги организираме податоците според одредана структура. Преку дефинирање на

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

одредени делови програмски код.

3.4.1 Податочни структури

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

ја прикажеме употребата на стекови и кверија ќе бидат употребени листите со функции

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

>>> a = [66.25, 333, 333, 1, 1234.5]

>>> print a.count(333), a.count(66.25), a.count('x')

2 1 0

>>> a.insert(2, -1)

>>> a.append(333)

>>> a

[66.25, 333, -1, 333, 1, 1234.5, 333]

>>> a.index(333)

1

32

Page 33: Програмски Јазик Пајтон

>>> a.remove(333)

>>> a

[66.25, -1, 333, 1, 1234.5, 333]

>>> a.reverse()

>>> a

[333, 1234.5, 1, 333, -1, 66.25]

>>> a.sort()

>>> a

[-1, 1, 66.25, 333, 333, 1234.5]

Код 27. Листи и нивни фунцкии

На пример Код 17 е прикажано како се дефинираат листи т.е со употреба на ‘[‘ и ’]’ и внесување

на елементите помеѓу овие оператори. Со print a.count(333) се прикажува на која позација се наоѓа

елементот во листата, и доколку го нема елементот т.е доколку не е дел од листата се враќа

вредност 0. За внесување и вадење на елементи од листата се употребуваат фунцкиите insert и

append каде се дефинира (за insert) на кое место се внесува нов елемент, а со append со вредноста

на елементот, се отстранува од листата. За отстравуње на елементи од листите исто така се

користи и remove, кадешто се наведува вредноста на елементот што сакаме да се отстрани. Со

reverse и sort функциите ние можеме да го менување редоследот на листите т.е со reverse

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

последниот елемент на листата. Со sort функцијата ние можеме да ја сортираме листата спрема

вредностите на елементите.

3.4.2 Функции

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

воведува употребата на фунцките. Тие ни овозможуваат преку дефинирање на параметри т.е

аргументи кои ќе бидат процесирани од страна програмскиот код дефинирани во рамките на

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

повикува фунцкијата.

>>> def fib(n):

... "Pecatenje na fibonaci nizata do n."

33

Page 34: Програмски Јазик Пајтон

... a, b = 0, 1

... while a < n:

... print a,

... a, b = b, a+b

Код 28. Фибоначи низата во функција

На пример Код 18 ни е прикажана фунцкија којшто ќе ја дефинира фибоначи низата.

Дефинирнирањето на фунцкиите се врши со резервираниот збор def, потоа наведуваме како ќе се

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

(во овој случај n). Откако сме ја дефинирале фунцкијата ја повикуваме на следниов начин.

... fib(2000)

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

Код 29. Фибоначи низата во функција

Како што можеме да видеме дека со наведување на името на фунцкијата и нејзиниот влезен

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

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

пресметките на екранот.

>>> def fib2(n):

... """Vrakanje na lista koja sodrzi fibonaci nizata."""

... result = []

... a, b = 0, 1

... while a < n:

... result.append(a)

... a, b = b, a+b

... return result

...

>>> f100 = fib2(100) # повикување на функција

>>> f100 # печатење на резултатот

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

Код 30. Фибоначи низата во функција

Од пример Код 20 користење на резервираниот збор return. Во овој пример имаме и употреба на

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

34

Page 35: Програмски Јазик Пајтон

бидат вратени до делот кадешто била повикана оваа функција и исто така ќе бидат

иницијализирани (во овај случај променливата f100).

3.4.3 Класи и објекти

Дефинирањето и користењето на класите и објектите е воведено со подобра организација и

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

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

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

class ИмаНаКласа: <израз-1> . . . < израз -N>

Код 31. Дефинирање на класи

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

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

Дефинирањето на класи во Пајтон е прикажано на пример Код 20, каде со употребата на

резервираниот збор class дефинираме како ќе се вика класата, а потоа следуваат изразите кои ќе

бидат карактеристични за таа класа.

class NekojaKlasa:

Name = " NekojaKlasa"

def __init__(self, arg1, arg2):

self.value1 = arg1

self.value2 = arg2

def display(self):

print self.Name

print self.value1

print self.value2

Код 32. Дефинирање на класи

35

Page 36: Програмски Јазик Пајтон

На пример Код 21 е прикажано како се дефинира класа (во овој случај името на класата е

NekojaKlasa). Со def се дефинирани две функции, од кои со __init__ се дефинира конструкторот

којшто е функција која се повикува автоматски при повикување на класата. Со self резервираниот

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

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

извршува.

A = BaseClass(“Hello”,”World!”)

A.display()

Код 33. Дефинирање на инстанци

На Код 22 примерот, кога креираме објект, наведуваме од која класа ќе биде објектот и кој

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

два аргументи, којшто се всушност аргументи на конструкторот на класата. Следно според

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

екранот.

class ИмеНаКласа(ПретхоноДефиниранаКласа):

Код 23. Наследување во Пајтон

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

употреба во Пајтон е прикжана на пример Код 23.

class NovaKlasa(NekojaKlasa):

Name = " NovaKlasa "

def __init__(self, arg1):

self.value3 = arg1

Код 34. Наследување на класи

Класите кои се декларираат со наследување ги добиваат карактеристиките на нивните родител

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

неа. На пример Код 24 може да се виде дека класата од која што треба да бидат наследени

особинете и наведена после името на новата класа помеѓу операторите ‘(‘ и ‘)’.

3.5 Исклучоци

36

Page 37: Програмски Јазик Пајтон

Исклучоците се воведен со цел справување со грешки, со што би се спречило прекин на работата

на една апликација. Нивната употреба е прикажана на пример Код 25.

>>> while True:

... try:

... x = int(raw_input("Vnesete cel broj: "))

... break

... except ValueError:

... print "Vneseniot broj ne e validen"

Код 35. Исклучоци

На пример Код 25 можеме да забележеме како се применуваат исклучоците и на кој начин тие

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

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

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

ValueError е делот кошто ракува со грешката што се појавила и како резултат на тоа извршува

одреден програмски код којшто е дефиниран после ‘:’.

3.6 Библиотеки

Со Пајтон работната околина има додатни библиотеки коишто можат да се употребат со цел да не

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

библиотеки од страна на програмерот. Начинот на креирање на библиотеки е дефинирање на

фунцкии или класи и истите тие да бидат зачувани во датотека со екстензија .py. Начинот на

повикување на дефинираните библиотеки е дефиниран на пример код 26.

import ИмеНаФолдер.Датотека.ИмеНаФункција

Код 36. Приклучни датотеки

Листа на приклучи датотеки кои се дел од Пајтон програмскиот јазик:

sysconfig – датотека за конфигурација на Пајтон работната околина

poplib – датотека за POP3 протокол за клиент

httplib – датотека за HTTP протокол за клиент

cgi – датотека за подршка на Common Gateway Interface

37

Page 38: Програмски Јазик Пајтон

thread - датотека за употреба на нишки

math – датотека за употреба на математички функции

4. Инсталација наПајтон работнатаоколина

Инсталирањето на работната околина е прилично едноставно. Таа најпрвин треба да биде

превземна од http://www.python.org/getit/ , во завиност од кој оперативен систем го

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

инсталацијата се врши со внесување на команди во командната линија во фолдерот на датотеките

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

python setup.py install

Код 37. Инсталирање на Пајтон во Линукс

Инсталирањето на Пајтон програмскиот јазик во оперативниот систем Windows е исто така

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

нејзино активирање се појавува прозорец во кој се дефинираат локацијата и корисниците за кои ќе

биде инсталирана работната околина.

38

Page 39: Програмски Јазик Пајтон

Слика 9. Чекор 1: Дефинирање на група на корисници кои ќе можат да ја користат работната околина на Пајтон програмскиот јазик

Слика 10. Чекор 2: Дефинирање на локацијата кадешто ќе биде инсталирана работната околина на Пајтон програмскиот јазик

Слика 11. Чекор 3: Дефинирање на датотеките кои се дел од работната околина на Пајтон програмскиот јазик

39

Page 40: Програмски Јазик Пајтон

Слика 12. Чекор 4: Инсталација на работната околина на Пајтон програмскиот јазик

Слика 13. Чекор 5: Нотификација за успешна инсталација на работната околина на Пајтон програмскиот јазик

4.1 Дебагирање

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

детектирање на програски грешки на креираната апликација. Како дел од Пајтон работната

околина е pdb коешто е скратеница од Python Debugger т.е Пајтон дебагер.

40

Page 41: Програмски Јазик Пајтон

python -m pdb scripta.py

Код 38. Дебагирање во Пајтон

На пример Код 28 е прикажано начин на автоматско дебагирање т.е повикување на одредена

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

за грешката што настанала.

>>> import pdb

>>> import mojmodul

>>> pdb.run('mojmodul.test()')

> <string>(0)?()

(Pdb) continue

> <string>(1)?()

(Pdb) continue

NameError: 'spam'

> <string>(1)?()

(Pdb)

Код 39. Дебагирање во Пајтон преку команда линија

На пример Код 29 е прикажан пример на употреба на командната линија на Пајтон дебагерот.

Преку import наведуваме која програма, а потоја преку pdb.run наведуваме која функција сакаме да

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

тоа на која линија е грешката и кој вид на грешка е.

41

Page 42: Програмски Јазик Пајтон

Заклучок

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

одредени операции т.е се направени со одредена цел. Сложеноста на апликациите значително

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

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

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

Facebook, NASA со што се докажува неговиот квалитет во извршување, брзина и точност.

42

Page 43: Програмски Јазик Пајтон

Библиографија1. The C++ Programming Language: Special Edition - Bjarne Stroustrup

2. Programming: Principles and Practice Using C++ - Bjarne Stroustrup

3. Design Concepts in Programming Languages - Franklyn Turbak, David Gifford

4. Основи на програмирање C++ - Д-р Ѓорѓи Јованчевски

5. http://en.wikipedia.org/wiki/Data_type

6. http://www.comsci.us/languages/notes/chap06.html

7. http://www.webber-labs.com/mpl/lectures/pdf-slides/02.pdf

8. http://www.eecs.berkeley.edu/~hilfingr/cs164/public_html/lectures/note2.pdf

9. http://www.cse.iitd.ernet.in/~saroj/L5_Logic_prog.pdf

10. http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00000159.html

11. http://www.codeproject.com/KB/architecture/OOP_Concepts_and_manymore.aspx

12. http://people.cs.aau.dk/~normark/oop-08/html/notes/intro-oop_themes-from-structured-prog-to-

oop-sect.html

13. http://www.wisegeek.com/what-is-a-programming-paradigm.htm

14. http://www.tryfsharp.org/FunctionalProg.aspx

15. http://en.wikipedia.org/wiki/Functional_programming

16. http://www.cs.bham.ac.uk/research/projects/poplog/paradigms_lectures/lecture1.html

17. http://www.landofcode.com/programming-intro/computer-programming-languages.php

18. http://www2.hawaii.edu/~nreed/ics313/lectures/07datat.pdf

19. http://www.giac.org/cissp-papers/97.pdf

20. http://www.cs.cmu.edu/~rwh/plbook/book.pdf

21. http://cs.lth.se/kurs/eda145_programming_language_theory/lectures/

22. http://fileadmin.cs.lth.se/cs/Education/EDA145/2011/docs/1.pdf

23. http://www.cs.swansea.ac.uk/~csjvt/JVTPublications/DSS%28March2006%29.pdf

24. http://www.0chan.ru/u/src/Types_and_Programming_Languages.pdf

25. http://www.cs.toronto.edu/~hehner/aPToP/

26. http://en.wikipedia.org/wiki/Interpreted_language

27. http://en.wikipedia.org/wiki/Interpreter_(computing)

28. http://en.wikipedia.org/wiki/Compiler

29. http://xodian.net/serendipity/index.php?/archives/27-Benchmark-PHP-vs.-Пајтон-vs.-Perl-vs.-

Ruby.html

43

Page 44: Програмски Јазик Пајтон

30. http://www.ibm.com/developerworks/aix/library/au-scripting_to_oo/

31. http://c2.com/cgi/wiki?FunctionalProgramming

32. http://marakana.com/bookshelf/python_fundamentals_tutorial/

index.html#_the_interactive_interpreter

33. http://coopunit.forestry.uga.edu/pymc_otago/chris_notes.pdf

44