Лекции

Информатика и компютърни науки Информатика Лекция

Програмиране
гл. ас. д-р Николай Касъклиев
Учебни материали http://bell.uni-plovdiv.bg/
1

Лекция 1. Езици за
програмиране и
програми
“Как да накараме ком-
пютъра да ни служи?”
2

Дефиниции
•Език:
Система от знаци, използвани за комуникация
•Език за програмиране (programming language)
(1) Система от знаци, използвана от човека при комуникация, която
позволява определянето и записването на задачи (по-точно алгоритми) по
недвусмислен начин с такава степен на детайлизация, че те да могат да
бъдат интерпретирани (изпълнявани) автоматично т.е. от компютър
(2)Език за програмиране (ЕП) е система от означения за описание на
изчисленията във форма, която може да се прочете от машината и от
човека
•Изчисление (computation)
Всеки процес, извършван от компютъра (математически изчисления, обра-
ботка на данни, текстообработка, запазване и извличане на информация ...)
•Програма (program, code)
Спецификация на изчислението
3

Програми
Програмата специфицира обработката на данните
За да може компютърът да изпълни определена обработка е
необходимо да получи поредица от разбираемикоманди
За решаване на различните задачи се подават различни поредициот
команди
Поредицата от команди (наричат се още инструкции) за решаване
на определена задача от компютъра се нарича програма
Процесът на създаване на програми се нарича програмиране
Множеството от команди (инструкции), с помощта на които се
записват програмите формира т.н. език за програмиране
Всеки компютър има свой собствен език нарича се машинен език
4

Програми
Програматапредставлява:
ПРОГРАМА=ДАННИ+АЛГОРИТЪМ
•Данни -от изключителна важност са типовете на
данните
•Алгоритъм –последователност от операции върху
данните решаващи поставената задача
5

ДАННИ
Данни –тип
•Числови (парични суми, брой….)
•Символни (имена на стоки, кодове на стоки …)
•Логически(да/не, пр. Пол)
Операции –в зависимост от типа (аритметични за
числовите, сравнение на низовеза символните…)
Преобразуване на типове –много често прилагана
операция от програмиста
6

АЛГОРИТЪМ
Дефиниции
•Рецепта
•Поредица от елементарни действия описващи
изпълнението на дадена задача (изчисление)
Видове
•Линейни
•Разклонени
•Циклични
7

Елементи на ЕП –примери
Всеки език, включително българския и машинния език има два
аспекта –синтаксиси семантика, които го определят
•“свдррг” –не може да бъде дума от българския език, защото
нарушава неговите правила за формиране на думи (не е
синтактично правилна)
•“ранижен” –синтактично правилна, но семантично празна,
защото не означава нищо
•“Безцветни зелени идеи спят разярено” (Ноам Чомски) –
изречение, което е синтактически правилно, но семантично не е
8

Характеризиращи елементи на ЕП
•Както всеки писмен език, така и езикът за програмиране се
основава на азбука:
Азбукатае винаги крайно множество от символи
•Правилни изреченияна даден език представляват
последователности от символите на азбуката, конструирани по
т.н. синтактични правилана езика (синтаксис, syntax)
•Правилните изречения написани на някой от езиците за
програмиране се наричат програми
•Разбирането, което се влага в така конструираните правилни
изречения, т.е. програмите и техните съставни части, се определя
от т.н. семантични правилана езика (семантика, semantics)
•Взети заедно, азбуката, синтаксисът и семантиката определят
езика за програмиране (ЕП)
9

Синтаксис и семантика на ЕП
•Строго определен набор от правила на ЕП
•Необходимост:
за да бъде програмистът сигурен в правилността и ефективността на
програмата, която пише
програмата да бъде "разбрана" от компютър и от всеки, който я чете
•Синтактичнитеправила определят как:
–програмите се изграждат като последователност от символи
–думите (речникът) на езика могат да се обединяват, за да се получат пра-
вилни изречения(да се покаже взаимовръзката им/структурата на
изречението)
•Семантичнитеправила:
–приписват смисъл и значение на комбинациите от думи
–т.е. семантиката е смисълът на градивните елементи на езика и връзката
с означените обекти
Синтаксисът определя формата на програмите, а семантиката -
техния смисъл
10

Синтаксис и семантика на ЕП –
примери
•Синтаксис:
–изречение,подлог,сказуемо,допълнение,предложенизраз,
съществително,глагол,прилагателно,ит.н.сасинтактичниконцепциив
българскияезик
–програма,начало,декларация,тяло,команда,израз,идентификаторит.н.
сасинтактичниконцепциивпрограмнитеезици
–inta=2есинтактичноправилнотвърдениенаС++(тоспазва
правилатазаобразуваненатвърдениявС++)
•Семантика:
–inta=2;запрограмистанаС++тоозначавадасенамериновомясто
впаметтаидасезапазивнегочислотодве
11

Видове езици за програмиране
ЕП най-често се класифицират според:
•областта на приложение
•нивото на абстракция
•програмната парадигма заложена в основата на
реализацията им
12

Видове ЕП според областта на
приложение
•УниверсалниЕП–пригоднизаописаниенапроизволни
алгоритмиаковсяказадача,коятоможедасерешискомпютър,
иманякакворешениеикоетоможедасеизразистозиезик
•СпециализираниЕП –създадени за специфиченвид обработка
Примери:
–PRGза генериране на доклади
–Logoза графика
–SQLза управление на база данни
13

Видове ЕП според нивото на
абстракция –I и II поколение
Разглеждат се четири поколения ЕП, всяко от които е стъпка по
посока на писането на програми чрез термини, които представят
човешката интерпретация на задачата и резултатите
•Първо поколение(50-те) –машинни езици
Азбуката, синтаксисът и семантиката на машинните езици се определят
изцяло от вида и начина избрани за вътрешното представяне на
алгоритмите в компютъра. Всяка команда съответства пряко на едно-
единствено действие на машината
•Второ поколение(до 1954) –езици за асемблиране (комплектоване)
–позволяват задаване на символни и относителни адреси, както и на
потребителски дефинирани команди (макроси)в примитивна форма (напр.
Add A Bвместо 101101010011101001011010). Програма, наречена
асемблерпревежда всеки символ от програмата на езика за асемблиране и
връща символ от машинен език. Като се съберат всички символи от
машинния език, асемблерът извежда програма на машинен език
14

Видове ЕП според нивото на
абстракция –III поколение
•Третото поколение (1954 -1970) –ЕП от високо ниво
Абстракцията в техните семантични правила е доста развита, а
синтаксисът им е близък до този на естествените език (напр. позволява да
пишем изрази от типа a = 1 + 1)
Примери: FORTRAN I, Algol 58, Flowmatic (те са базирани на
математически изрази), FORTRAN II (въвежда подпрограмите,
отделното компилиране), ALGOL 60 (въвежда блоковата
структура), COBOL (въвежда структурирането на данните, а
обработката на файлове е вградена в самия език), APL (за научни
изчисления), LISP (функционално програмиране за изкуствен
интелект), PL/I (на IBM), Pascal (наследник на ALGOL 60),
SIMULA (класове, абстракции от данни, обектно-ориентирано
програмиране)
15

Видове ЕП според нивото на
абстракция –IV поколение
•Четвъртото поколение(1970-80) –ЕП, които се
характеризират с промяна в семантиката
Позволяват на програмистите да изразяват идеите си за нещата по начин
естествен за човека, чрез понятия, които не съответстват на никоя
компютрна концепция
Примери:Smalltalk (ООП), C (системно програмиране), Prolog
(изкуствен интелект), Modula-2 (модули: капсулиране, скриване на
информация, абстрактни типове данни, базиран на обекти), Ada (пакети:
капсулиране, скриване на информация, абстрактни типове данни,
поддръжка на паралелизъм), C++, Object-Pascal, Modula-3 (добавят
обектно-ориентиранивъзможности към съществуващите езици).
Най-мощните от съществуващите езици за програмиране са Visual BASIC,
Borland Delphi, Visual C++ (езици за лесна разработка на ГПИ), Perl, Awk,
Sed, Tk-Tcl (скриптови езици), Java (уеб-програмиране)
16

Видове ЕП според парадигмата на
програмиране–Процедурно
(императивно) програмиране
Това е стандартният (традиционен) програмен стил, в който
програмите се раздробяват на отделни стъпки (части, наречени
процедури), чрез които се описват изчисленията
•ХарактеристикинапроцедурнитеЕП:
базиранинафонНоймановатаархитектура
изпълнениетонапрограмитеепоследователно
променливитепредставятопределениместавпаметта
запромянастойносттанапроменливитесеизползва
операциятаприсвояване
•Примери:Pascal,C,Ada
17

Видове ЕП според парадигмата на
програмиране–Функционално
(апликативно) програмиране
Функционалният стил на програмиране се основава на теорията на
математическите функции. Функциите са основните градивни
блокове на програмата. Изпълнението на програмата
представлява изчисляване на стойности чрез изразии функции.
Те могат свободно да бъдат предавани като параметри, както и да
бъдат конструирани и връщани като параметри -резултат на
други функции
•ХарактеристикинафункционалнитеЕП:
функциитесеприлагатвърхустойности,кактоивърхудруги
функциизасъздаванетонапо-сложнифункции
предаваненапараметри
липсвапонятиетопроменлива
нямацикли,ноширокосеизползварекурсията
•Примери:Lisp,Miranda,ML,Haskell
18

Примерна програма на Miranda
output = title ++ captions ++ concat (map line [1..20])
title = cjustify 60 "A TABLE OF POWERS" ++ "\n\n"
captions = format "N" ++ concat (map caption [2..5]) ++ "\n"
caption i = format ("N^" ++ shownum i)
format = rjustify 12
line n = concat [format (show(n^i)) | i<-[1..5]] ++ "\n"
19

Видове ЕП според парадигмата на
програмиране–Логическо
(декларативно) програмиране
Този стил изисква декларативно описание на задачата, вместо
задаване на отделните стъпки на алгоритъма на задачата.
Декларативните програми са по-близки до спецификацията,
отколкото традиционното програмиране
•ХарактеристикиналогическитеЕП:
тесабазиранинаформалнаталогика
нямацикли
програмите се състоят от аксиоми (факти), правила за правене
на заключения и цел
програматаописвакоеевярнопоотношениенаочаквания
резултат
изпълнениетонапрограматапредставляваправененаизвод
•Примери:PrologиClips(езицибазиранинаправила)
20

Примерна програма на Prolog
get_answer( A ) :-
ratom( X ), name( X, String ),
valid_resp( String, A ), !.
valid_resp( [H|T], A ) :-type_ans( H, A ).
type_ans( X, A ) :-([X] = "y"; [X] = "Y"), A = yes.
type_ans( X, A ) :-([X] = "n"; [X] = "N"), A = no.
type_ans( X, A ) :-([X] = "w"; [X] = "W"), A = why.
?-print('\nYou can start animal by typing "help.<CR>"\n' ).
valid_resp( [], A ) :-
print('\nPlease try to give me a yes or no answer.'),
get_answer( A ), !.
valid_resp( [H|T], A ) :-valid_resp( T, A ).
21

Видове ЕП според парадигмата на
програмиране–Обектно-ориентирано
програмиране
При обектно-ориентирания стил на програмиране се набл

Преглед на първите от 28 страници - останалите след изтегляне

Описание

Програмиране C++

0 коментара

Все още няма коментари. Бъдете първият, който ще коментира.

За да коментирате, трябва да сте влезли в профила си.

Влезте