- •1 Модуль. Алгоритмдеу және программалауға кіріспе
- •1 Тақырып. Кіріспе
- •1 Лекция
- •1.1 „Автоматтандыру есептерін программалау" курсының мақсаттары мен міндеттері.
- •1.2 Есептеуіш техника құралдарын пайдаланып ақпаратты өндеу және басқару жүйелерін әзірлеу. Компьютерлік жүйелердің ақпаратты өндеу және басқару әдістері мен міндеттері
- •2 Тақырып.Дербес компьютерді (дк) программалауды автоматтандырудың программалық құралдары
- •2 Лекция
- •2.1 Дербес компьютердің программалық қамтамасыз етілуі туралы
- •2.2 Программалауды автоматтандыру әдістері. Алгоритмдік тілдер және оларға қойылатын талаптар.
- •2.3 Процедуралы–бағытталған тілдер және объектке–бағытталған программалау туралы түсінік.
- •3.1 Программаларды құру құралдары
- •3.2 Программалаудың біртұтас жүйелері.
- •3.3 Техникалық есептер
- •3 Тақырып. Есептерді алгоритмдеу негіздері.
- •4 Лекция
- •4.1 Алгоритм анықтамасы. Алгоритмдерді бейнелеу тәсілдері.
- •4.2 Алгоритмдердің блок-схемаларын безендіру ережелері.
- •4.3 Алгоритм құрылымдарының түрлері.
- •4 Тақырып Негізгі процедураға бағытталған алгоритмдеу тілінде программалау
- •5 Лекция
- •5.1 Оқылатын алгоритмдеу тілінің негізгі түсініктері
- •5.3 Тілдің негізгі объектілерін жазу ережелері
- •5.4 Деректердің типтері
- •5.5 Деректердің стандартты типтері
- •6 Лекция
- •6.2 Өрнектер. Арифметикалық және логикалық өрнектер
- •7 Лекция Құрылымды деректер (типтер)
- •7.1 Массивтер
- •7.2 Жиындар
- •7.3 Жазбалар
- •Модуль 2 Алгоритмдік тілдерде программалаудың арнайы мәселелері
- •5 Тақырып Программадағы басқару құрылымдар
- •8.1 Алгоритмдік тілдің операторлары.
- •8.3 Басқару операторлары. Құрама және бос операторлар
- •8.4 Деректерді енгізу-шығаруды ұйымдастыру
- •8.5 Программаның құрылымы. Алгоритмнің схемасынан программаға өту
- •9 Лекция
- •9.1 Сызықты құрылымды алгоритмдерді программалау
- •9.2 Тармақталған құрылымды алгоритмдерді программалау
- •9.3 Таңдау операторы (case)
- •10 Лекция
- •10.1 Циклдік құрылымды алгоритмдерді программалау. Кейінгі шартты цикл операторы (repeat)
- •10.2 Алдынғы шартты цикл операторлары (while)
- •10.3 Параметрлі цикл операторлары (for)
- •10.4 Ішкі циклдерді құрастыру (массивтерді өндеу, массив компоненттерін реттеу есептерінің мысалдары негізінде)
- •11 Лекция
- •11.1 Жолдық деректер
- •Var s: string;
- •Var s1: string[40];
- •11.2 Символдық және жазбалар түріндегі деректерді өндеу есептерін программалау
- •12 Лекция
- •12.1 Пайдаланушының ішкі программалары (процедуралар) классификациясы. Ішкі программаларды рәсімдеу тәсілдері және оларды программа құрамында пайдалану.
- •13 Лекция
- •13.1 Сыртқы сақтауыш құрылғыларын (файлдық шамаларды) және динамикалық жадыны пайдалану арқылы программалау
- •14 Лекция
- •14.1 Тілдің графикалық мүмкіндіктерін пайдалану
- •Initgraph(var gd:integer, var gm:integer, pt:string);
- •15 Лекция
- •15.1 Объектке-бағдарлы программалау (обп) негіздері
- •15.2 Объекттер және олардың негізгі қағидалары
- •15.3 Объекттерді құру және оларды пайдалану
- •15.4 Өткен материалға шолу
- •15.5 Алған білімдердің студенттің алдағы оқу барысында және болашақ инженерлік тіршілігіндегі тәжірибелік мағынасы. Программалау тілдері мен технологиялардың даму перспективалары.
- •Өрнектер – тұрақтылар. Паскаль өрнектер-тұрақтыларды пайдалануға мүмкіндік береді. Ол өрнекті программаны орындау қажеттіліксіз компилятор орындайды. Өрнектер-тұрақтылардың мысалдары:
- •Түсініктемелер (комментарий)
- •6 Лекция
- •6.1 Блоктар, локальділік және амал жасау облысы
- •6.5 Типтердің үйлесімділігі
- •7.1 Ординалды типтер
- •7.2 Құрама құрылымдар
- •10.4 Жалғау операторы (with)
15.2 Объекттер және олардың негізгі қағидалары
Паскальдағы Объект – ол жазба (record) құрылымын жалпылайтын түрлі типті деректердің өрістерін және әдістердің тақырыптарын қамтитын деректер құрылымы:
<ҰрпақтыңАталуы>= objесt<ТегініңАталуы> өріс;… әдіс;…. әдіс; end;
Жазбаға қарағанда өбъекттің өрістері деректермен қатар осы деректерді өндейтін әдістер де бола алады.
Әдіс – ол объеттің сипаттау бөлімінде жарияланған процедуралар немесе функциялар:
procedure <Тақырып>(<Параметр1>, <Параметр2>:integer);
Әдіс объекттің деректер өрістерін оған параметрлер түрде жіберуді талап етпей оларға қол жеткізе алады. Объектілі типтің жариялау бөлімінің ішінде әдісті жариялау тек тақырыпты қамтиды. Әдістің тұлғасы объекттен тыс анықталады. Оның тақырыбы әдісті қамтитын объекттің аталуын қамтуы тиіс. Мысалы:
procedure <ОбъектТипі.Әдіс>
(<Параметр1>, <Параметр2> : integer);
begin
….
end;{Әдіс}
Әдістерді статикалық және виртуалдыларға жіктейді. Виртуалды әдістің статикалықтан айырмашылығы оны жүзеге асырушы код орындалатын программаға компиляциялау үрдіс барысында емес орындалу барысында қосылады, ол кеш байланыстыру деп аталатын үрдіс арқылы жүзеге асырылады. Бұл әдістерінің атаулары бірдей бырақ әртүрлі кодтар арқылы жүзеге асырылатын объекттердің иерархиясын құруға мүмкіндік береді:
procedure <Әдіс> (<Параметр1>, <Параметр2> : integer) : virtual;
Кәдімгі процедуралар мен функциялар қатар Паскаль әдістердің екі арнайы типтерін жүзеге асырады:
конструктор – виртуалды әдістерді қамтитын объектті инициализациялайтын арнайы әдіс, ол constructor сөзі арқылы жарияланады; конструктор объект пен виртуалды әдістерді жүзеге асырушы кодтардың адрестерін қамтитын виртуалды әдістердің арнайы кестесі арасындағы байланыстарды орнату арқылы объектті инициализациялайды; конструктор сонымен қатар объекттің деректер өрістерін инициализациялау үшін де пайдаланылуы мүмкін;
деструктор – ол жадыны «үйінділерді» динамикалық объекттерден босататын арнайы әдіс, ол destructor сөзі арқылы жарияланады.
Объекттің негізгі ерекшеленетін қасиеттері:
инкапсуляция – жазбаларды осы жазбалармен жұмыс жасайтын процедуралар және функциялармен біріктіру;
мұрагерлік – объектті беру, одан кейін оны туындылаған объекттер иерархиясын құру үшін пайдалану, туындылаған әр объект тегінің кодына және деректеріне қол жеткізуге мұрагерленеді;
полиморфизм – объекттер иерархиясы бойынша жоғарыға және төменге беріле беретін амалға бір атау беру, бұл амал иерархиядағы әр объектке сәйкес болатын тәсіл арқылы жүзеге асырылады.
Аталған қасиеттердің әрқайсысының мағынасын дисплейдің экранында түрлі түсті нүктелерді (жұлдызды аспанды) құру мысалында қарастырайық.
Инкапсуляция. Есепті шешудің негізі X және Y координаталары арқылы сипатталатын жеке нүктенің экранда орналасқан орнын (позициясын) беру болып табылады. Координаталарды беру үшін «жазба» тип лайықты:
Pozition = record
X, Y: integer;
end;
Одан кейін координаттардың мәндерін беру қажет болуы мүмкін (мұндай процедура инициализациялау деп аталады). Сәйкесінше процедураны құрайық:
procedure Init(CoordX, CoordY : integer);
begin
X: = CoordX;
Y: = CoordY;
end;
Одан кейін координаттардың нақты мәндерін беру қажет. Ол үшін екі функцияны ендіреміз:
function GetX: integer;
begin
GetX : = X;
end;
function GetY:integer;
begin
GetY : = Y;
end;
Біздің ойымыз бойынша Init процедура және GetX пен GetY функциялары тек Pozition жазбаның өрістерімен ғана жұмыс жасауы тиіс. Объекттерді ендіру өрістерді де оларға қолданылатын амалдарды да бірыңғай конструкцияда жариялап, осы ережені бекітуге мүмкіндік береді:
Pozition = object
X, Y: integer;
procedure Init(CoordX, CoordY: integer);
function GetX: integer;
function GetY: integer;
end;
Init процедура және GetX пен GetY функциялары Pozition объекттің әдістері болып табылады. Pozition типті экземплярды инициализациялау үшін ол жазбаның өрісі болғандай оның әдісін шақыру жеткілікті:
var
FirstPozition : Pozition;
….
FirstPozition.Init(10,15);
Әдіс дәл процедура сияқты модульде беріледі: объекттің ішінде тақырып жазылады (модульдің Interface секциясындағы сияқты); бұл кезде әдіс пайдаланатын барлық өрістер әдісті жариялаудың алдында болуы тиіс. Әдісті анықтау (амалда расшифровкалау) объектті жариялаудан тыс орындалады. Әдістің аталуы оны қамтитын объект типінің аталуынан басталуы тиіс, екеуінің арасына нүкте қойылады. Мысалы:
procedure Pozition.Init(CoordX, CoordY: integer);
begin
X: = CoordX;
Y: = CoordY;
end;
Әдістің формальды параметрлерінің атаулары объекттің деректер өрістерінің атауларымен сәйкес болмауы мүмкін емес.
Модуль тұтынушыдан процедураларды жүзеге асыру детальдарын жасыратындай объект те өз өрістері мен әдістерін жасыра алады. Ол үшін private (дербес) кілттік сөз пайдаланылады. Дербес өрістер мен әдістерге тек объекттің ішінен ғана қол жеткізуге болады. Жариялау түрі келесідей:
type
ObjectName=object
өріс;… өріс; әдіс;… әдіс;
private
өріс;… өріс; әдіс;… әдіс;
end;
Мұрагерлік. Координаталары X және Y болатын нүктені қарастырайық. Оны көрінетін немесе көрінбейтін етуге болады, оған түс беруге, оны жылжытуға болады. Осындай мүмкіндіктерге ие болатын объектті құрайық:
Point=object
X,Y: integer;
procedure Init(CoordX, CoordY: integer);
function GetX: integer;
function GetY: integer;
Visible: Boolean;
Color: Word;
procedure Init(CoordX, CoordY: integer; initColor: word);
function Is Visible: Boolean;
procedure Show;{нүктені көрсетеді}
procedure Blind;{нүктені өшіреді}
procedure Jump(NextX, NextY : integer);{нүктені жылжытады}
end;
Бырақ, X,Y өрістері мен GetX, GetY әдістері Pozition объекттің сәйкесінше өрістері және әдістерімен дерлік сәйкес болатындығына назар аударайық. Паскаль мұндай жағдайды ескеруге мүмкіндікті ұсынады. Point объекттің типі Pozition типінен туындылаған деп санау керек, оны келесі түрде жазып:
Point=object(Pozition)
Visible:Boolean;
Color:Word;
procedure Init(CoordX, CoordY: integer; InitColor: Word);
function Is Visible: Boolean/procedure Show;
procedure Blind;
proceduro Jump(NextX, NextY: integer);
end;
Point объектті енді Pozition объекттің қасиеттерін мұра етеді. X,Y өрістері Point-та айқын түрде берілмеген, бырақ мұрагерліктің арқасында Point оларға ие болады, демек: Point.X:=17 деп жазуға болады. Объектіге-бағытталған программалаудың мағынасы объекттің өрістерімен оның әдістері арқылы жұмыс жасауда.
Полиморфизм. «дөңгелек» объектті құру керек болсын дейік. Жаңа объект Point объекттің барлық қасиеттеріне ие болып оған тегі ретінде ие болуы тиіс екендігі айқын, сонымен қатар, ол өлшемі бойынша үлкендеу болуы тиіс. Бырақ, нүкте мен боялған шеңберді бірдей бір командалар арқылы «жарықтандыру» мүмкін емес екендігі анық. Турбо-Паскаль аналық әдістің аталуын «үстінен жауып» ұрпаққа сақтауға рұқсат етеді. Аналық әдісті «үстінен жабу» үшін оның аталуын өзгертпей, бырақ басқа тұлғамен (кодпен) және қажет болса параметрлердің басқа жиынтығымен беру керек. Мұндай әдіс виртуалды болады және оның жариялануына virtual сөзі қосылады. Виртуалды әдістерді пайдалану резервтелген constructor сөзі арқылы жазылуы және ортақ Init атауға ие болуы тиіс болатын инициализациялау процедураларына шектеулер қояды. Объекттің әр жеке экземпляры конструкторды жеке жақыру арқылы инициализациялануы тиіс. Динамикалық таралған объекттерді тазалау және жою үшін арнайы destructorDone процедурасы бар. Деструктор «үйіндідегі» жадыны босату қадамын кейбір басқа есептермен құрамдастырады. Деструктордың әдісі бос болуы мүмкін, себебі жұмысты тек кодтың тұлғасы ғана емес резервтелген destructor сөзіне қайтарым ретінде Турбо-Паскаль генерациялайтын код та орындайды.