Информатика ( лекциялар )



Мазмұны

1.лекция. Кіріспе 4
2.лекция. Тілдің элементтері 10
3.лекция. Құрылымдық программалау концепциясы. 16
4.лекция. Модульдік программалау концепциясы 17
5.лекция. Объектіге бағытталған программалау концепциясы. 18
6.лекция. Негізгі түсініктер мен енгізу ортасы және программаларды орындау механизмі 22
7.лекция. Деректердің негізгі типтері 26
8.лекция. Программаларды ұйымдастыру және құрылымдардың негізгі принциптері. 28
9.лекция. Жариялау. 30
10.лекция. Енгізу.шығару. Кітапхана, енгізу.шығару функциялары. 32
11.лекция. Операторлар 37
12.лекция. Қадамдап қайталау (цикл) операторы, шарты алдындығы қайталану операторы, шарты соңындағы қайталану операторы. 41
13.лекция. Жалғасу операторы, ауыстырғыш.операторы, ажырау операторы, көшу операторы, қайтару операторы. 43
14.лекция. Деректерді өңдеудің негізгі құралдары 45
15.лекция. Стандартты функциялар және процедуралар. 47
16.лекция. Программалық құралдар 51
17.лекция. Нәтижелі программаларды жазудың алгоритмдік негіздері 52
18.лекция. Тізбектерді өңдеудің негізгі алгоритмдері 57
19.лекция. Сілтеме (сілтеуіш) тип. 59
20.лекция. Модульдік программалау 61
21.лекция. Программалық интерфейс негізгі принциптері және ұйымдастыру құралдары. 68
22.лекция. Жадыны ұйымдастыру және Си тілінің көрсеткіштері. 76
23.лекция. Программалау жүйелері 77
24.лекция. Интегралданған программалау жүйелері: олардың міндеті және компоненттері. 80
25.лекция. Функциялар 83
26.лекция. Программаны құрудың негізгі принциптері 85
27.лекция. Виртуалды машинға арналған ассемблер тілі 88
28.лекция. Графика 90
29.лекция. Енгізу.шығару 97
30.лекция. Ерекше жағдайларды өңдеу. 103
Әдебиеттер 106
1-лекция. Кіріспе
Жоспар:
1. Алгоритм түсінігі.
2. Программа түсінігі.
3. ¤ңделетін информация түсінігі.
4. Программаларды өңдеу технологиясы, оларды алгоритмдік тілдерде іске асыру.

Алгоритм түсiнiгi – информатикадағы орталық түсiнiктердiң бiрi болып табылады. Алгоритм сөзi, негiзiнде, тәсiл, рецепт және т.б. сөздердiң синонимi болып табылады. Бұл мағынада өзiнiң коэффициенттерiмен берiлген квадрат теңдеудiң түбiрiн табу алгоритмi, немесе натурал санды қарапайым көбейткiштерге жiктеу алгоритмi, т.с.с. туралы айтуға болады. Бұл алгоритмдердiң негiзiнде, сандармен берiлген қарапайым математикалық операциялар жатыр. Мұндай алгоритмдердi сандық деп атайды. Көбiнесе сандық емес алгоритмдердi де қарастырылады. Мысалы, бастапқы мәлiметтер мен нәтижелер ретiнде – тексттер, формулалар және т.б. символдар тiзбегi болуы мүмкiн, ал операциялар ретiнде: бөлу, көбейту және т.с.с. операциялар емес, керiсiнше бiр қатарды екiншiсiне жатқызу, кейбiр кестелерде бiр символдарды екiншiсiне алмастыру операциялар қарастырылады. Геометрияның мектептiк курсында циркуль мен сызғыштың көмегiмен түрлi есептердiң шешуi қарастырылады. Бұл есептерде тәсiлдi немесе басқаша айтқанда бастапқы мәлiметтер бойынша фигураны тұрғызу алгоритмiн көрсету қажет. Бұл түрде бастапқы мәлiметтер мен нәтиже ретiнде ніктелер, сызықтар, шеңберлер жиынтығы болады, ал операциялар ретiнде – тiке сызықтар мен шеңберлердi бейнелеу болады.
Сонымен, көзделген мақсатқа жетуге бағытталған әдiстiң нұсқаулар түрiндегi толық және дәл сипаттамасын алгоритм деуге болады.
Әсiресе кәзiргi кезде техника, экономика, ғылыми зерттеулерде компьютердi қолдану мүмкiндiгiнiң арқасында, алгоритмдер үлкен қызығушылық тудырып отыр, өйткенi кәзiргi қоғамдағы адам қызметiнiң әр түрлi салаларында ЭЕМ-нiң соншалық жедел еңгiзiлуi, оның бесаспаптығы, түрлi информацияны арнайы бiр мақсатқа сәйкес өңдей алу қабiлетi себепшi болып отыр. ЭЕМ жұмыс iстеу барысында тек программа түрiнде жазылған нұсқауларды орындайды, ал программаның өзi де арнайы кодтар арқылы жазылған алгоритм болып табылады. Тиiстi белгiлеулер жүйесiн программалау тiлi деп атайды. Дәлiрек айтсақ, программалау тiлi – бұл алгоритмдi компьютер үшiн қолайлы түрде беретiн құралдар мен ережелердiң жиынтығы.
Әрбiр алгоритм – бұл әрекеттер тiзбегi, олардың орындалу барысында алгоритм орындаушысы бастапқы шамалардан iзделiнетiн қорытынды нәтижеге жету ережелерi көрсетiледi. Мұндай әрекеттер тiзбегiн алгоритмдiк процесс деп, ал әрбiр әрекет оның қадамы деп аталынады.
Кез келген есептi шешу – берiлгендерi бойынша қорытынды нәтиженi табуды талап етедi, яғни алгоритм бастапқы мәлiметтердi нәтижеге түрлендiретiн әрекеттерiнiң және олардың орындалу кезектiлiгiнiң сипаттамасы деп айтуға болады. Есептi шешудiң алгоритмiн құру – оны кезекпен орындалатын қадамдарға бөлудi бiлдiредi. Мәселенi шешу процесiн сипаттайтын әрекеттердiң дәл келтiрiлген кезектiлiгi – алгоритм болып табылады.
ЭЕМ процессорына арналған алгоритмдердi құру кезiнде, олардың орындалуы қажеттi қасиеттерге әкелетiн бiрқатар талаптарды ескеру қажет:
Бастапқы берiлгендердi енгiзу нұсқауы бар болуы.
Қорытынды нәтижелердi баспаға шығару нұсқауы бар болуы.
Анықтылық - алгоритм, кез келген нұсқаулармен және олардың орындалу реттiлiгiн қалай болса солай тісiнудi болдырмайтындай бiр мағыналы болуы тиiс.
Әдептiлiк – алгоритм есептiң дұрыс шешiмiн беруi керек.
Нәтижелiлiк - алгоритм қамтитын процесс, мiндеттi түрде белгiлi-бiр қадамдардансоң нәтиженiң алынуына немесе есептi шешудiң мүмкiн еместiгi туралы хабарға әкелуi керек.
Көп мәндерге бiрдейлiгi –әртүрлi бастапқы мәлiметтермен бiр типтес есептердi бiр алгоритм негiзiнде жүзеге асыруға болады.
Әдебиеттер

1. Б.Н.Березин, С.Б.Березин. Начальный курс C и C++. M., 1998.
2. Б.Керниган, Д.Ритчи. Язык программирования Си. M., 1992.
3. А.А.Цимбол, А.Г.Майоров, М.А.Козодан. Turbo C++. Язык и ero применение. M., 1993.
4. В.В.Подбельский. Язык Си ++. М.,1995.
5. В.Кучеренко. Язык программирования C++ для начинающих и не только. M., 2001.
6. А.В.Крячков и др. Программирование на C и C++. Практикум. M., 2000.
7. А.И.Голуб. Си и C++. Правила программирования. M., 1996.
8. Н.Н.Костюкова. Программирование на языке Си. Новосибирск, 2003.
9. П.Стивен, Тимоти C. MOHK. B примерах Borland C++ . Минск, 1996.
10. П.Стивен. Язык программирования C++. M., С-П., Киев, 2003.
11. У.Тождо, Л.Гемпел. Язык Си. M., 1997.
12. Б.Н.Прокофьев и др. Графические средства Turbo C, ,- Turbo C++. M., 1992.
13. М.И.Болски. Язык программирования Си. M., 1988.
14. О.Камардинов. Информатика, 2-бөлім. Ш., 2000.
15. О.Камардинов. Информатика. A., 2005.
16. В.В.Собоцинский Практический курс Turbo C++, М.,1993.
17. Д.Рассохин От Си к Си++. M., 1993.
18. И.В.Ашарина Основы программирования на языках C и C++. M., 2002.
19. В.А.Скляров. Программирование на языках C и C++. M. : Высшая школа, 1996.
20. П.Нортон, П.Иао. Программирование на Borland C++ для Windows95.KHeB 1996.
21. Н.Культин. C/C++ в задачах и примерах. С-П., 2004.

Мазмұны

1-лекция. Кіріспе 4
2-лекция. Тілдің элементтері 10
3-лекция. Құрылымдық программалау концепциясы. 16
4-лекция. Модульдік программалау концепциясы 17
5-лекция. Объектіге бағытталған программалау концепциясы. 18
6-лекция. Негізгі түсініктер мен енгізу ортасы және программаларды орындау
механизмі 22
7-лекция. Деректердің негізгі типтері 26
8-лекция. Программаларды ұйымдастыру және құрылымдардың негізгі
принциптері. 28
9-лекция. Жариялау. 30
10-лекция. Енгізу-шығару. Кітапхана, енгізу-шығару функциялары. 32
11-лекция. Операторлар 37
12-лекция. Қадамдап қайталау (цикл) операторы, шарты алдындығы қайталану
операторы, шарты соңындағы қайталану операторы. 41
13-лекция. Жалғасу операторы, ауыстырғыш-операторы, ажырау операторы, көшу
операторы, қайтару операторы. 43
14-лекция. Деректерді өңдеудің негізгі құралдары 45
15-лекция. Стандартты функциялар және процедуралар. 47
16-лекция. Программалық құралдар 51
17-лекция. Нәтижелі программаларды жазудың алгоритмдік негіздері 52
18-лекция. Тізбектерді өңдеудің негізгі алгоритмдері 57
19-лекция. Сілтеме (сілтеуіш) тип. 59
20-лекция. Модульдік программалау 61
21-лекция. Программалық интерфейс негізгі принциптері және ұйымдастыру
құралдары. 68
22-лекция. Жадыны ұйымдастыру және Си тілінің көрсеткіштері. 76
23-лекция. Программалау жүйелері 77
24-лекция. Интегралданған программалау жүйелері: олардың міндеті және
компоненттері. 80
25-лекция. Функциялар 83
26-лекция. Программаны құрудың негізгі принциптері 85
27-лекция. Виртуалды машинға арналған ассемблер тілі 88
28-лекция. Графика 90
29-лекция. Енгізу-шығару 97
30-лекция. Ерекше жағдайларды өңдеу. 103
Әдебиеттер 106

1-лекция. Кіріспе

Жоспар:
1. Алгоритм түсінігі.
2. Программа түсінігі.
3. ¤ңделетін информация түсінігі.
4. Программаларды өңдеу технологиясы, оларды алгоритмдік тілдерде
іске асыру.

Алгоритм түсiнiгi – информатикадағы орталық түсiнiктердiң бiрi болып
табылады. Алгоритм сөзi, негiзiнде, тәсiл, рецепт және т.б. сөздердiң
синонимi болып табылады. Бұл мағынада өзiнiң коэффициенттерiмен берiлген
квадрат теңдеудiң түбiрiн табу алгоритмi, немесе натурал санды қарапайым
көбейткiштерге жiктеу алгоритмi, т.с.с. туралы айтуға болады. Бұл
алгоритмдердiң негiзiнде, сандармен берiлген қарапайым математикалық
операциялар жатыр. Мұндай алгоритмдердi сандық деп атайды. Көбiнесе сандық
емес алгоритмдердi де қарастырылады. Мысалы, бастапқы мәлiметтер мен
нәтижелер ретiнде – тексттер, формулалар және т.б. символдар тiзбегi болуы
мүмкiн, ал операциялар ретiнде: бөлу, көбейту және т.с.с. операциялар емес,
керiсiнше бiр қатарды екiншiсiне жатқызу, кейбiр кестелерде бiр символдарды
екiншiсiне алмастыру операциялар қарастырылады. Геометрияның мектептiк
курсында циркуль мен сызғыштың көмегiмен түрлi есептердiң шешуi
қарастырылады. Бұл есептерде тәсiлдi немесе басқаша айтқанда бастапқы
мәлiметтер бойынша фигураны тұрғызу алгоритмiн көрсету қажет. Бұл түрде
бастапқы мәлiметтер мен нәтиже ретiнде ніктелер, сызықтар, шеңберлер
жиынтығы болады, ал операциялар ретiнде – тiке сызықтар мен шеңберлердi
бейнелеу болады.
Сонымен, көзделген мақсатқа жетуге бағытталған әдiстiң нұсқаулар
түрiндегi толық және дәл сипаттамасын алгоритм деуге болады.
Әсiресе кәзiргi кезде техника, экономика, ғылыми зерттеулерде
компьютердi қолдану мүмкiндiгiнiң арқасында, алгоритмдер үлкен қызығушылық
тудырып отыр, өйткенi кәзiргi қоғамдағы адам қызметiнiң әр түрлi
салаларында ЭЕМ-нiң соншалық жедел еңгiзiлуi, оның бесаспаптығы, түрлi
информацияны арнайы бiр мақсатқа сәйкес өңдей алу қабiлетi себепшi болып
отыр. ЭЕМ жұмыс iстеу барысында тек программа түрiнде жазылған нұсқауларды
орындайды, ал программаның өзi де арнайы кодтар арқылы жазылған алгоритм
болып табылады. Тиiстi белгiлеулер жүйесiн программалау тiлi деп атайды.
Дәлiрек айтсақ, программалау тiлi – бұл алгоритмдi компьютер үшiн қолайлы
түрде беретiн құралдар мен ережелердiң жиынтығы.
Әрбiр алгоритм – бұл әрекеттер тiзбегi, олардың орындалу барысында
алгоритм орындаушысы бастапқы шамалардан iзделiнетiн қорытынды нәтижеге
жету ережелерi көрсетiледi. Мұндай әрекеттер тiзбегiн алгоритмдiк процесс
деп, ал әрбiр әрекет оның қадамы деп аталынады.
Кез келген есептi шешу – берiлгендерi бойынша қорытынды нәтиженi табуды
талап етедi, яғни алгоритм бастапқы мәлiметтердi нәтижеге түрлендiретiн
әрекеттерiнiң және олардың орындалу кезектiлiгiнiң сипаттамасы деп айтуға
болады. Есептi шешудiң алгоритмiн құру – оны кезекпен орындалатын
қадамдарға бөлудi бiлдiредi. Мәселенi шешу процесiн сипаттайтын
әрекеттердiң дәл келтiрiлген кезектiлiгi – алгоритм болып табылады.
ЭЕМ процессорына арналған алгоритмдердi құру кезiнде, олардың орындалуы
қажеттi қасиеттерге әкелетiн бiрқатар талаптарды ескеру қажет:
Бастапқы берiлгендердi енгiзу нұсқауы бар болуы.
Қорытынды нәтижелердi баспаға шығару нұсқауы бар болуы.
Анықтылық - алгоритм, кез келген нұсқаулармен және олардың орындалу
реттiлiгiн қалай болса солай тісiнудi болдырмайтындай бiр мағыналы болуы
тиiс.
Әдептiлiк – алгоритм есептiң дұрыс шешiмiн беруi керек.
Нәтижелiлiк - алгоритм қамтитын процесс, мiндеттi түрде белгiлi-бiр
қадамдардансоң нәтиженiң алынуына немесе есептi шешудiң мүмкiн еместiгi
туралы хабарға әкелуi керек.
Көп мәндерге бiрдейлiгi –әртүрлi бастапқы мәлiметтермен бiр типтес
есептердi бiр алгоритм негiзiнде жүзеге асыруға болады.
Үздiктiлiк – алгоритм анықтаған есептеуiш процестi жекелеген кезеңдерге,
қарапайым операцияларға бөлуге болады.
Информацияны өңдеудiң алгоритмiн турлi жолдармен құру мүмкiн. Олардың
iшiнде негiзгiсi болып: алгоритмдi ауызша сипаттау, графиктiк тәсiл және
арнайы алгоритмдiк тiлде бейнелеу табылады. Алгоритмдердi ауызша жазу
тәсiлi дегенiмiз – берiлген информацияны өңдеудiң кезектi кезеңдерiн
сипаттау нұсқаулары күнделiктi пайдаланатын сөздермен, табиғи тiлде қалай
болса солай сипаттауымен берiледi және ең, аз формалданған болып табылады.
Бұл алгоритмдердiң көп мәндi тісiнiлетiн нұсқаулары болуы мүмкiн, сондықтан
информацияны өңдеуде оларды қолану тиiмсiз болады. Алгоритмдердi
сипаттаудың графикалық тәсiлi жоғары дәрежелi көрнекiлiгiмен ерекшеленедi.
Схема деп алгоритмдi көрнекi графиктiк бейнелеуi аталады, Бұл кезде
алгоритмнiң жекелеген әрекеттерi (нұсқаулары) әртүрлi геометриялық
фигуралардың көмегiмен бейнеленедi, ал кезендер (әрекеттердiң орындалу
кезектiлiгi) арасындағы байланыс, осы фигураларды бiрiктiретiн
бағыттағыштар көмегiмен көрсетiледi.
Схема алгоритмнiң құрылымын көрнектi кескiндеуiне мүмкiндiк бередi.
Дербес жағдайда, алгоритмдi Бұл түрiнде бейнелеуде циклдiк құрылымдардың
ұйымдастыруын жақсы көруге болады ( цикл –дегенiмiз – ол бiрқатар
әректтердiң тiзбегi, олардың соңғысы орындарғаннан кейiн, тiзбек басына
қайта оралу жузеге асырылады), схемада олар алгоритмнiң туйық бөлiктерi
турiнде көрсетiледi. Схемалар әдетте алгоритмнiң аралық варианттарын
бейнелеу үшiн падаланылады. ЭЕМ – орындаушыға арналған алгоритмнiң
түпкiлiктi варианты – алгоритмдiк тiлде жазылған болуы керек.
Алгоритмнiң графикалық көрiнiсi информацияны өңдеудегi әрекеттердiң
кезегiн бейнелейдi және түрлi геометриялық фигуралар түрiндегi МЕСТ-те
бекiтiлген символдардан құралады (1 сурет).
Неғөрлым жиi қолданатылатын шығыр-символдары:

Орындауға жiберу, тоқтату, алгоритмнiң басы мен
1 соңын бiлдiретiн шығыр және де көмекшi
программаларда кiру немесе шығу;
Процесс – меншiктеу немесе арифметикалық есептеудi
2 бiлдiретiн шығыр;
Құжат – шығару, натиженi баспаға немесе экранға
3 шығару әрекетiн белгiлейдi;

4 Еңгiзу – берiлгендердiң мәндерiн еңгiзудi
белгiлейдi;
Шешiм – логикалық шартты тексеретiн шығыр (шарттың
5 орындалуына байланысты алгоритмнiң орындалу бағыты
таңдалынады);
Байланыстырушы – блок-схеманың сызықтары бөлiнгенде
6 қолданылады;
Басынан белгiлi процес – көмекшi программа бойынша
7 немесе стандартты программа бойынша есептеудi
белгiлейдi;

Алдын ала келiсiм бойынша шығыр-символдардың белгiлi бiр тұрақты мәнi
бар және олар түрлi әрекеттер-дiң орындалуын белгiлейдi. Бұл символдар бiр-
бiрiмен бағдарша арқылы қосылады (ағынның бағыты) және де бiр әрекеттен
келесi әрекетке көшу бағытын көрсетедi. Мысалы, ромб түрiндегi символды
белгiлi бiр шарттың орындалуын тексеруге немесе шамаларды салыстыру үшiн
пайдалануға болады, ал тұртбөрыш түрiндегi символ барлық турдегi есептеу
операцияларын бiлдiредi дейiк.
Сонымен, алгоритмнiң келесi қасиеттерiн атап кетуду жөн санаймыз:
Есептiң шешу жолын бiр мағыналы түрде анықтау;
Мүмкiндiгiнше есептiң әртүрлi варианттарын шығаруға жағдай туғызу;
Қолданылу барысында белгiлi бiр заңдылық бойынша есептеу нәтижесiне
мiндеттi түрде жеткiзу.
Қарастырылған есепте бастапқы берiлгендер - квадрат теңдеудiң a, b, c
–коэффициенттерi, ал нәтижелiк х1 мен х2 болып саналады, сондықтан Бұл
мысалдың алгоритмнде кiрiс шамалар ретiнде a, b, c-параметрлерiнiң мәндерi
және де шығыс параметрлерi болып х1 мен х2 мәндерi алынады.
а) Б)


с)

...

Сурет. Қадамдық толық талқылау әдiсiн пайдаланып құрастырған алгоритм

Тендеудiң коэффициенттерi нақты сандар және де бәрi де 0-ге тең емес деп
аламыз.
Сонымен, Бұл есептiң алгоритмi алғашында а) суретiнде көрсетiлгендей
болып құрылады, келесi қадамында ”квадрат теңдеуiн шешу” блогының әрекетi
б) суретiнде көрсетiлгендей тағы да үш әрекетке бөлiнедi, олар – a,b,c
бастапқы мәндерiн еңгiзу; x1, және x2 анықтайтын формула; және x1, мен x2
мәндерiн баспаға беру. Келесi қадамда талдауды одан әрi жалғастырып с)
суретiнде көрсетiлген алгоритмге келуге болады. Бұл жерде “x1, және x2
анықтайтын формула” блогының әрекетi келесi нұсқаулардың орындалуына
келтiредi – дискриминантты есептеп, кейiннен оның мәнiне байланысты, егерде
d0 болса теңдеудiң екi тібiрi, егерде d0 теңдеудiң тібiрi жоқ, ал d=0
болса теңдеудуң бiр бiрiне тең болатын екi тібiрi бар деген информация
баспаға берiледi. Талдауды әрi қарай жалғастырып, квадрат теңдеудiң тібiрiн
анықтайтын формулаларымен және қорытынды нәтиженi баспаға беру блоктарымен
алгоритмдi толықтыру керек.
Жоғарыда құрастырылған алгоритм тек “жақсы” коэффициенттерi бар квадрат
теңдеулердi шешуге жарайды. Ал егерде a,b,c коэффициенттерi кез келген
нақты сандар болса, онда олардың кейбiр мәндерiнде (мысалға а=0) жағымсыз
жағдайлар туындауы мүмкiн (нолге бөлу). Сапалы алгоритм мұндай жағдайларды
алдын ала ескеретiн болуы керек (әдептiлiк қасиетi бойынша). Әрқашан
алгоритмнiң тұрақтылығы сақталу тиiс, яғни бастапқы берiлгендердiң қандай
да болмасын мәндерiнде алгоритмнiң жұмысы әдептi аяқталып, есептеу
нәтижесiне келтiру керек. Сондықтан, жоғарыда қойылған мәселенiң алгоритмiн
құрастыруды әрi қарай қадамдық талдау арқылы жалғастыруға болады.
3 түрлi алгоритмдiк құрылымдарды құрастыруға болады, олар iлесу
(сызықтық), тармақталу (айырық) және қайталау деп аталады.
iлесу құрылымы – ретiмен орындалатын шығырлар. Оның жеке түрiнен
құрылған алгоритмдi сызықтық алгоритм деп атайды. Бұл орындау ретi табиғи
деп атанады. Сызықтық құрылымдарда әрекеттер бiр рет және бiр кезекпен
орындалады. Мысалы:
Егер де есептеу процесiнiң орындалу барысы қандай да бiр шарттың
орындалуына байланысты болса, онда Бұл процесс тармақталу есептеу процесi
болып табылады. Ал Бұл есептеу процесiнiң алгоритм тармақталу құрылымды
және де әрекеттердiң бағыты олардың тармақтары деп аталады.мысалы:
Алгоритмнiң көп рет қайталап орындалатын бөлiктерiн цикл деп, ал
қайталану әрекеттер тiзбегiн цикл денесi деп атайды.
Бағдарламалық жүйе құру – көп еңбекті қажет ететін жұмыс болып табылады.
Әсіресе, қазіргі қарапайым бағдарламалық жабдықтың өзі жүз мыңдаған
операторлардан тұратын кезеңде мұндай еңбектің ауқымдылығы бірден сезіледі.
Бағдарламалық жабдықтар (БЖ) құру саласындағы болашақ маман бағдарламалық
жүйелерді талдау, жобалау, пайдалану және тестілеу әдістерінен хабардар
болуы, сондай-ақ, бұрыннан бар технологиялар мен көзқарастар ағымында
бейімделе алуы тиіс.
Бағдарламалау – ғылым мен техниканың салыстырмалы түрде жас және
қарқынды дамушы саласы. Нақты жобаларды дайындау және қолданыстағы
бағдарламалық, сондай-ақ техникалық құралдарды жетілдіру тәжірибесі әрдайым
қайта қаралып жатады. Соның арқасында әлдеқайда жетілдірілген БЖ дайындау
құралдары болып табылатын жаңа әдістер, әдістемелер мен технологиялар пайда
болады. Олар өз кезегінде бағдарламалық жабдық құрудың жаңа құралдарына
негіз болып табылады. Жаңа технологиялардың құрылу процесін зерттеу және
олардың негізгі тенденцияларын анықтау барысында осы технологияларды
бағдарламалардың даму деңгейімен, сондай-ақ, бағдарламалаушының қолындағы
бағдарламалық және аппараттық құралдардың ерекшеліктерімен салыстыра отырып
жүргізген тиімді.
Бағдарламалау технологиясы деп – бағдарламалық жабдық құру процесінде
қолданылатын әдістер мен құралдардың жиынтығын айтады. Кез-келген басқа
технология сияқты бағдарламалау технологиясы да келесі құрамдағы
технологиялық ережелер жиынтығынан тұрады:
• технологиялық операциялардың (амалдардың) орындалу тізбегін көрсету;
• қандай да бір операцияның орындалу шарттарын анықтау;
• әрқайсысының бастапқы мәліметтері, нәтижелері, нормативтері,
стандарттары, бағалау критериилері мен әдістері және т.с.с. анықталған
операциялардың өзін сипаттау.

Әдістемелік материалдар, ережелер,
нормативтер мен стандарттар,
бағалау критерийлері

Стандартты түрде
Стандартты түрдегі
берілген бастапқы
нәтижелер
мәліметтер

Орындаушылар, бағдарламалық
және технологиялық құралдар

Технология амалдар тобы мен олардың тізбегінен басқа жобаланатын жүйенің
сипатталу тәсілін, дәлірек айтқанда, жобаны құрудың нақты кезеңінде
қолданылатын модельдерді де анықтайды. Технологиялардың мынадай екі түрі
кездеседі:
• жобалаудың нақты кезеңінде немесе осы кезеңнің жекелеген мәселелерін
анықтау үшін қолданылатын технологиялар;
• бірнеше кезеңді немесе жобалау процесін түгел қамтитын технологиялар.
Біріншісінің негізінде әдетте нақты мәселені шешуге мүмкіндік беретін,
шектеулі түрде қолданылатын әдіс жатады, ал екіншісінің негізінде
жобалаудың түрлі кезеңдерінде қолданылатын әдістер жиынтығын анықтайтын
базалық әдіс немесе көзкарас (әдістеме) жатады.
¤ткен ғасырдың орта кездерінде есептеуіш техника саласында күрделі
өзгерістер болып, Фортран, Бейсик, Паскаль және т.б. көптеген жоғары
деңгейлі программалау тілдерінің жарықка шықканы белгілі. Кітапта
оқырмандар ол тілдердің кейбірімен бастапкы түрде болса да таныс деп
есептелген.
1972 жылы AT&T атаулы Американың корпорациясы жаңа C (Си) программалау
тілін дайындап шықты. Ол — құрылымдық және алгоритмдерді басшылыққа алып
дайындалған процедуралық жоғары деңгейлі тіл.
Тілге жылдам орындалатын, жеке биттермен операция жасайтын операторлар
да енгізілген. Олар арқылы байланыс порттарын, магниттік дискілерде
жинақтауыштарды және т.б. аппараттық құралдарды басқаруға мүмкіндік
жасалды. Ал, алғашқы кездерде жеке типті компьютерлердің аппараттық
құралдарына қол жеткізе алатын машиналық командалармен жұмыс істейтін
төменгі деңгейлі ассамблер тілі ғана болатын.
Кітапта Си тілінің ОБП сияқты жұмыс істеу ерекшеліктері қарастырылмаған.
Мұнда 1990, 1992 жылдары жарыққа шыққан Турбо Си 2.0 және Турбо Си ++ 3.0
нұскаларымен жұмыс түрлері таныстырылып, жиі қолданылатын программалар
құрылған. Олар тілдің ANSI C нұскасына негізделгендікген C++ тілінің түрлі
нұскаларында да еркін орындалады.
Әдетте, жоғарыдағы аталған тілдер MS DOS жүйесінің NC (Norton Commander)
қабықша программасына енгізіліп қойылады. Онымен жұмыс істеу үшін алдымен
берілетін негізгі командалар:
- сәйкес каталогтан tc.exe файлын іске қосу. Мәзірлер енгізілген жүйе
терезесі ашылады;
- F10 пернесін басып, курсорды мәзірдің File пунктіне жылжыту және File
- New командасын беру (Турбо Си ++ тілі тышканмен жұмыс істейді, сондықтан
мәзірмен тышқан арқылы жұмыс істей беруге болады);
- экранда программа терілген соң, компиляциялау: Alt + F9;
- программаны сақтау (save): F2;
- программаны іске қосу (run): Ctrl + F9;
- жүйеден шығып, NC-ке өту: Alt + X.
Алғашқы рет дайындалған программа мәтіні Си тілінде бастапқы код деп
аталады. Программа компиляцияланған соң, синтаксистік қателер санын
көрсетіп, қосымша сұхбаттық терезе шығады. Қателерді жөндеп, Run командасын
беру керек. Команда берілген соң автоматты түрде орындалатын жұмыстар:
- программаның жеке бөліктерін (модульдерді) компиляциялау. Объектілік
файлдың алғашқы нұсқасы құрылады.
- компиляцияланған модульдерді бір программаға біріктіру (объектілік
модульдерден жүктеуші модуль дайындалады). Бұл кезде программаға стандартты
кітапханалар қосылады да, .obj кеңейтілуі бар орындалатын файл құрылады.
Қажет болса, алгоритмін талдау арқылы программаны қосымша дұрыстап
(программаны тестілеп), қайта сақтау.
Осыдан соң сақталған файл программаньщ орындалатын коды делінеді.
Ескерту. 1. Си тілінде анықтамалық тек ағылшын тілінде жазылған. Оны
орыс тіліне аудару үшін 'Socrat' не сол сияқты аудару программасын
пайдалануға болады.
2. Программа ішінде қазақ алфавитін пайдаланып, қазақша мәтін енгізу
үшін алдын ала NC панелінде жазылған kazega.com файлын іске қосып қою
керек. Программа ішінде оны теру үшін осы файлды іске қосу командасы: SHIFT
+ SHIFT. Латын алфавитіне қайтып өту үшін осы команданы кайта берсе
болғаны.
3. Турбо Си жүйесінде құрылған программаны Turbo C++ жүйесінде де
пайдалануға болады. Бірақ, программа соңына return 0; операторын кірістіріп
қойса болғаны.
4. Программа Си тілінде .C толықтыруымен, C++ тілінде .CPP толықтыруымен
сақталады.

Бақылау сұрақтары
1. Алгоритм деп не айтылады?
2. Сезу мағынасындағы және математикалык формадағы алгоритмдерге мысалдар
келтiрiңiз.
3. Тағамды, дәрiнi және т.с.с. дайындау алгоритмдерi қандай алгоритмдерге
жатады?
4. Қандай алгоритмдердi елiктеушiлер деп атайды?
5. Қандай алгоритмдер эмпиристiк деп аталады?
6. ЭЕМ ушiн жазылған программаларды алгоритм деу дұрыс па?
7. Алгоритмнiң өқыптылығы ненi бiлдiредi?
8. Алгоритм Бұл басқару құралы деген пайымдама дурыс па?
9. ЭЕМ-ға арналған информацияны өңдеу алгоритмдерiнiң ерекшелiктерi.
10. ЭЕМ-ға арналған алгоритмдердiң ерекшелiктерi мен қасиеттерi.
11. Алгоритмнiң көпшiлiкке бiрдейлiгi қасиетiне мысалдар келтiрiңiз.
12. Алгоритмнiң үздiктiлiк қасиетiк ашатын мысалдар келтiрiңiз.
13. Алгоритмдердi сипаттаудың ауызша тәсiлiнiқ кемшiлiктерi мен
артықшылықтарын атаңыз.
14. Алгоритмдердi сипаттаудың графиктiк тәсiлiнiң кемшiлiктерi мен
артықшылықтарын атаңыз.
15. Алгоритмнiң анықтылық қасиетiн ашатын мысалдар келтiрiңiз.

2-лекция. Тілдің элементтері

Жоспар:
1. Алфавит.
2. Тұрақтылар.
3. Идентификаторлар.
4. Кілтті сөздер.
5. Арифметикалық операциялар.
6. Қатынас операциялары. Логикалық операциялар.
7. Меншіктеу операциясы.
8. Биттік операциялар.
9. Тернарлық операция.

C және C++ тілдерінде келесі ұғымдар жиі пайдаланылады:
- алфавит;
- идентификатор;
- кілттік сөздер;
- тұрақтылар;
- операторлар мен функциялар;
- символдық массивтер.
Алфавит - программада пайдаланылатын символдар жиынтығы: латын, орыс,
қазақ алфавиттерінің әріптері, араб цифрлары (0, 1, 2, ..., 9), астын сызу
белгісі (_) және т.б. Тілде латын алфавитінің бас және кіші әріптері түрлі
әріптер түрінде кабылданады. Қазақ-орыс әріптері мәтіндерде ғана
пайдаланылады.
Идентификатор - айнымалы, тип, функция және ен-таңба атаулары. әдетте,
айнымалы атауы латын алфавитінің кіші әріптерімен жазылады. Атауға астын
сызу белгісін қосып пайдалануға да болады, мысалы: kv_tendeu. Си, C++
тілдерінде идентификатор үшін саны 8-ден аспайтын мазмұнды символдар
тізбегін алу жеткілікті.
Кілттік (қызметші) сөздер:
1. asm (ассемблер тілінде трансляциялау)
2. auto (класс спецификаторы)
3. break (тоқтату)
4. case (жағдай)
5. char (символ типі)
6. class (класс)
7. const (тұрақты)
8. continue (жалғастыру)
9. deғault (жоқ жағдай)
10. do (орындау)
11. delete (жадты тазалау)
12. double (екі ece жылжымалы нүктелі нақты сан)
13. else(әйтпесе)
14. enum (санап шығу типі)
15. extern (класс спецификаторы)
16. float сан типі (бір ece жылжымалы нүктелі нақты)
17. for (үшін)
18. friend (өзгешеліктерді анықтауыш спецификатор)
19. goto (сөзсіз өту)
20. if (erep)
21. inline (кірістірілген, іске қосылған)
22. int (бүтін сан не символ типі)
23. long (ұзын бүтін сан типі)
24. new (жадтан динамикалық орын дайындау)
25. operator (оператор)
26. overload (асыра тиелу)
27. public (жалпылық)
28. register (класс спецификаторы)
29. short (қысқа бүтін сан типі)
30. sizeof (байтпен есептелетін өлшем)
31. static(класс спецификаторы)
32. switch(ауыстырып қосқыш)
33. this(объектіге нұскама)
34. typedef (типті өзгерту)
35. union(біріктіру)
36. unsigned (оң бүтін сан типі)
37. virtual (виртуальды, барынша дерексіз)
38. void (бос)
39. volatile(өзгергіш)
40. while (әзірше)
Ескеретін жайт: кез келген айнымалы атауы үшін кілттік сөзді пайдалануға
болмайды.

Операциялар Си, C++ тілдерінде пайдаланылатын негізгі операциялар:
арифметикалық, қатыс, логикалық, меншіктеу, биттік және шарт.

Арифметикалық операциялар

Операция Айнымалы типтері
Қосу (+) int, char, float
Азайту (-) int, char, float
Көбейту (*) int, char, float
Бөлу () int, float
Қалдық (%) int

Егер операндтар бір типті болса, алдыңғы үш операция баска алгоритмдік
тілдердегі операциялар сияқты пайдаланылады.
Бүтін типті айнымалылардың мәндерін бөлу ( ) операциясының нәтижесі де
бүтін типті (int), бірақ ерекшелігі - бұл операция нәтижесінде бөліндінің
тек бүтін бөлігі шығарылады да, қалдық алынып тасталады. Мысалы, 173=5;
-173= - 5 . Сондықтан программада кездескен бөлшектермен амал істеу
кезінде оларды float типі арқылы сипаттау керек. Мысалы,
1) float k,y,s; for(k=l; k=3; k++) {y=lk; s=s+y;}
2) float s; s=l.+l.2 +l.3; үзінділерінің нәтижелері бірдей.
Қалдық операциясы да (%) тек бүтін типті сандарды бөлуде қолданылады:
17% 3 = 2; -17% 3 = -2. Мұндай ерекшеліктер төмендегі программада
көрсетілген.
#includestdio.h
#includeconio.h
main() (2)
{ int x, y, zl, z2; clrscr ();
printf("caндap:x,y=?");
scanf("%d%d",&x,&y);
z1=x % y; z2=x y;
рrіntғ("калдық=%d\n", z1);
printf("бөлiндi=%d", z2);
getch (); return 0;
}
Ескерту. Бірнеше айнымалыларды бірден енгізу қажет болса, scanf()
операторында формат спецификаторларын жоғарыдағы сияқты ретімен толық
енгізіп қою керек.

Қатыс операциясы. Логикалық операциялар
Қатыс операциясы салыстыру үшін шарт түрінде жазылатын операция. Си, C++
тілдерінде алты қатыс операциясы, үш логикалық операция бар.
Қатыс операциялары:
Тендікті тексеру ( = = ) Тең еместікті тексеру ( ! = ) Кіші ( )
Кіші не Тең ( = )
Үлкен ( )
үлкен не Тең ( = )
Ескерту. Теңдікті тексеру және баска операциялар шартты тексеруге
арналған iғ операторында пайдаланылады. (== және = операциялары бірдей
емес).
Логикалык операциялар - және, немесе, жоқ шарттары түрінде жазылады.
Жазылу түрлері:
&& - және (and), - немесе (or), ! - терістеу (not).
Мысалдар:
iғ (k50 && j = = 24)
iғ(k=2 k5)
Қатыс және логикалық операциялардың нәтижелері әдеттегідей екеу ақ:
ақиқат (true) не жалған (ғalse). Нәтиже ақиқат болса, мәні=1 деп, жалған
болса, мәні=0 деп белгіленеді.
Ескерту. Логикалық операциялар да iғ, ғor сияқты баскарушы операторларда
пайдаланылады. Тағы бір ескеретін жайт: келесіде Си тілі деп жазылса, Си
және C++ тілдері деп түсіну керек. Егер ол тек Си тіліне қатысты болса,
арнайы ескертіледі.
Берілген екі айнымалының мәндері түрлі болғанда ғана мэні шын болатын
болғызбайтын және (XOR) логикалық операциясы Си тіліне енгізілмеген.

Меншіктеу операциясы
Меншіктеу операторы өрнек мәнін айнымалыға меншіктеу операциясының
соңына ; таңбасын қоюдан тұрады. Меншіктеу операциясы әдеттегідей тендік
(=) таңбасымен белгіленеді. Айнымалы Ivalue (адрестік шама) деп аталады.
Мысалы, y=3*x+5; операторындағы y айнымалысы — Ivalue.
Си тілінде қосарлы меншіктеу операциясы да бар. Мысалы, y = x = a*b+5;
операторында алдымен a*b+5 өрнегінің мәні x айнымалысына меншіктеледі, ал
ол y айнымалысына меншіктеледі.
Си тіліне қосымша меншіктеу операциялары да енгізілген:
+=, -=, *= және %=
Олар - айнымалы мәніне +, -, * не % операциясы қосылған өрнекті бастапқы
Айнымалыға меншіктеу операциялары. Мұндай операцияларды пайдалану тәсілі
төменде көрсетілген. Бірдей операциялар:
m += 10 және m=m+10
m -= 10 және m=m-10
m *= 10 және m=m*10
m %=10 және m=m%10
Мұндағы m+=10 командасы m айнымалысының мәнін 10-ға өсіруді білдіреді,
ал m=m+10 командасы оң жактағы m-нің мәнін орнына койып, және оған 10-ды
қосып, нәтижені m айнымалысына меншіктеуді білдіреді. Олардың ерекшеліктері
жоқ, тек бірінші түрде жазылған команда екінші түрде жазылған командадан
тезірек орындалады.

Биттік операциялар
Процедуралық тілдерде жад ұяшықтары мен байттар бойынша жұмыс істеу
мүмкін екені белгілі. Си тілінде тек байттық ұяшықтармен емес, олардың
биттік разрядтарын өзгерту операциялары да бар:
, , &, I, ^ және ~ .
Разрядттық операциялар бүтін типті шамалардың биттік шамаларын өңдеуге
аналған:
- солға жылжыту операциясы.
Жазылу түрі:
мән биттер саны
Мұндағы мән берілген санның екілік жүйеде жазылуы. Мысалы, х=11012
(=1310) санын 3 битке солға жылжыту керек болсын:
int x = 11012
int y = x 3
Бүтін типті x саны 2 байттық ұяшыққа жазылады:
0
b = 000100102
a & b = 000100102

I - биттік немесе (OR) операциясы. Ол екі екілік мәндердің сәйкес
разрядтық биттерінің біреуі не екеуі де 1-ге тең болса, 1-мен алмастырады:
Мысалы:
a = 100101102
b = 000100102
a & b = 100101102
~ - биттік жоқ (NOT) операциясы. Ол санның 1-лік разрядын 0-мен, 0-дік
разрядын 1-мен алмастырып шығады.
Мысал:
х = 000000112
~х=111111002

C++ тілінде биттік XOR (болғызбайтын және)операциясы да бар. Операция л
символымен белгіленеді. Ол да екі бүтін сан арқылы жаңа сан алады. Орындалу
түрі: екі санның тек бірінің сәйкес разряды 1-ге тең болса, ол 1-мен
алмастырылады, ал сәйкес бірдей 1-лік және 0-дік разрядтар 0 - мен
алмастырылады.
Мысал:
a = 100101102
b = 010101002
a^b = 110000102

Разрядтық операциялардың ақиқаттық кестелері төменде көрсетілген (1.5-
1.8 кестелер).
1.5-кесте
Бірінші бит Және Екінші битНәтиже
1 & 1 1
0 & 1 0
1 & 0 0
0 & 0 0

1.6-кесте
Бірінші бит НЕМЕСЕ Екінші битНәтиже
1 1 1
0 1 1
1 0 1
0 0 0

1.7-кесте
Терістеу Бит Нәтиже
~ 1 0
~ 0 1

1.8-кесте
Бірінші бит XOR Екінші бит Нәтиже
1 XOR 1 0
0 XOR 1 1
1 XOR 0 1
0 XOR 0 0

әдетте, биттік операцияларды операциялық жүйемен жұмыс істейтін мамаңдар
пайдаланады.
Программада биттік операцияларды ондық жүйеде берілген сандарәа
пайдалануға да болады.
Мысал. x = 18 саны үшін yl= x 2 және y2= x 2 операция нәтижелерін
анықтау программасын құру керек.
# include stdio.h
# include conio.h
main() (3)
{
int x, yl, y2; clrscr();
printf"x=?");
scanf("%d",&x);
yl=x2;
y2 = x 2;
printf("yl=%d y2=%d", yl,y2);
getch (); return 0;
Нәтиже: yl=4 y2=72
Тапсырма. 1. Шыққан нәтижелердің дұрыстығын екілік санау жүйесіңде
тексеру керек.
2. x=18 және y=24 үшін z1 = x&y, z2= x I y мәндерін анықтау программасын
құрып, шыққан нәтижелердің орындалу дұрыстығын екілік жүйеде тексеру керек.
3. x=1210 санын терістеп, шыққан нәтижені екілік жүйеге түрлендіру
керек.

?! шарт операциясы
?! шарт операциясы - үш операндтан тұратын жалғыз операция. Оның жазылу
синтаксисі:
өрнек 1 ? өрнек 2 : өрнек 3
Бұл операцияда алдымен өрнек 1 - дің мәні (ақикат не жалған екендігі)
анықталады. Егер ол нөл (жалған) болмаса, онда өрнек 2-нің мәні нәтиже
түрінде қабылданады. Егер өрнек 1-дің мәні жалған (0) болса. Онда өрнек З-
тің мәні есептеледі де, оның мәні операция нәтижесі үшін алынады.
Операцияны орындау үшін алдымен оны кез келген айнымалыга меншіктеп алу
керек.
Сонымен, операцияны орындау кезінде соңғы екі өрнектің бірінің ғана мәні
нәтижеленеді.
Мысалы, max=(xy) ? x : y өрнегі үшін xy болса, max айнымалысына х-тің
мәні, ал xy болса, y-тің мәні меншіктеледі.
Программа:
# includestdio.h
# include conio.h
main() (4)
{
floatmax, x, y; clrscr ();
printf ("x, y=?");
scanf("%ғ%ғ', &x, &y);
max = (xy) ? x : y;
printf ("max=%f', max);
getch (); return 0;
}
Нәтиже: x,y=? 13.2 5.7
max=13.200000
Ескерту. Жоғарғы тақырыптарда Си және C++ тілдерінде түрлі операцияларды
пайдалануға болатыны көрсетілді. Математикалық операциялардың орындалу
басымдылығы белгілі, ал басқа кейбір операциялардың басымдылық реті
мынадай:
1. () — функцияны шақыру,
2. ++, - -,
3. , ,
4. Логикалық операциялар,
5. Жай меншіктеу: = , + -, - = және т.б.

3-лекция. Құрылымдық программалау концепциясы.

Жоспар:
1. Құрылымдық программалау түсінігі.
2. Процедуралық декомпозиция принципі.
3. Қадамдық детализациялау әдісі.

ХХ ғасырдың 60-70 жж. пайда болған құрылымдық көзқарас (бағыт)
бағдарламалық жабдықты құрудың барлық кезеңдерінің орындалуын қамти отырып,
ұсынылған технологиялық тәсілдер жиынтығын анықтайды. Құрылымдық бағыттың
негізінде күрделі жүйелерді кейіннен кішігірім көмекші бағдарламалар
түрінде пайдалану мақсатында декомпозициялау (бөліктерге бөлу) жатады.
Декомпозицияның басқа да принциптері пайда болғандықтан (объектілі,
логикалық, т.б.) аталған тәсіл процедуралық декомпозиция атауын алды.
Құрылымдық көзқарас есепті қарапайым құрылымды ішкі есептер иерархиясы
түрінде сипаттауды талап етті. Енді жобалау жоғарыдан-төменге принципі
бойынша орындала бастады және жалпы идеяны орындай отырып, көмекші
бағдарламалардың интерфейстерін дамыта бастады. Сонымен бір мезгілде
алгоритмдердің құрылымдарына шектеулер енгізілді, оларды сипаттаудың
формальді модельдері ұсынылды, сондай-ақ алгоритмдерді жобалаудың арнайы
әдісі – қадамдық детализациялау әдісі ендірілді.
Құрылымдық бағдарламалау принциптері процедуралық бағдарламалау
тілдерінің негізін қалады. Әдетте олар басқарудың негізгі құрылымдық
операторларынан құралады. Құрылымдық бағдарламалаумен бір мезгілде басқа да
композицияларға негізделген көптеген тілдер дүниеге келді, бірақ олардың
негізгі көпшілігі бәсекеге төтеп бере алмады.
Құралатын бағдарламалық жабдықтың күрделілігі мен өлшемдерінің өсуі
құрылымдық мәліметтердің дамуын талап етті. Осының нәтижесі ретінде
тілдерде пайдаланушы анықтайтын мәліметтер типі пайда болды. Онымен бір
мезгілде сыртқы мәліметтермен жұмыс істеу барысында түрліше қателіктердің
шығуын кеміту үшін ондай мәліметтермен байланысу мүмкіндіктерін шектеу
әрекеттері күшейді. Нәтижесінде модульдік бағдарламалау деп аталатын бағыт
пайда болды және қарқынды дами бастады.

4-лекция. Модульдік программалау концепциясы

Жоспар:
1. Модульдік программалау түсінігі.
2. Модульдік программалау кезеңінің ерекшеліктері.

Модульдік бағдарламалау қандай да бір сыртқы мәліметтерді жеке
компиляциялайтын модульдерде қолданушы ішкі бағдарламалар топтарын
ажыратуға негізделген. Мысалы, графикалық ресурстар модулі (GRAPH), баспаға
шығарушы ішкі бағдарламалар модулі (PRINTER).

Модульдік бағдарламалау құрылымы

Модульдік бағдарламалауды қолдану БЖ-ты бірнеше бағдарламалаушының
дайындауын әлдеқайда жеңілдетті. Енді олардың әрқайсысы басқаларына
тәуелсіз өз модульдерін құра алды. Модульдер арасындағы байланыс аталған
технологияны қолдану барысында арнайы интерфейс арқылы іске асырылды.
Модульдерді басқа БЖ-да өзгеріссіз қолдануға, сөйтіп бағдарламалаушылардың
еңбек өнімділігін арттыруға мүмкіндігі пайда болды. Мұндай технологияны
Pascal, C++, Ada, Modula сияқты тілдер қолданады.
Құрылымдық көзқарас модульдік бағдарламалаумен бірге көлемі 100000
оператордан аспайтын әлдеқайда сенімді бағдарламалар алуға мүмкіндік берді.
Модульдік бағдарламалаудың кемшілігі – көмекші бағдарламаны шақыру
кезіндегі интерфейстік қателер тек қана бағдарламаның орындалуы барысында
анықталады. Модульдер жеке компиляцияланғандықтан, мұндай қателерді бұрын
анықтау мүмкін емес. Бағдарламаның көлемін арттырған кезде, әдетте
модульаралық интерфейстердің күрделілігі де артады, сөйтіп, белгілі бір
уақыттан бастап бағдарламаның жекелеген бөліктерінің өзара әсерлесуін
қадағалап отыру іс-жүзінде мүмкін болмай қалады. Сондықтан, үлкен көлемді
БЖ дайындау үшін объектілі көзқарасты пайдалану қолға алынды.

5-лекция. Объектіге бағытталған программалау концепциясы.

Жоспар:
1. Кластар және объектілер.
2. Инкапсуляция.
3. Модуль түсінігі.
4. Полиморфизм.
5. Мұрагерлік.

Си тілі бірте-бірте дамытылып, қазіргі кезде пайдаланылып келе
жаткан, 1983 жылы дүние жүзі елдері басшылықка алған ANSI C нұсқасы да
жарыққа шықты (ANSI - стандарттардың Америкалық ұлттық институты). ANSI C
тілінің түрлі нұсқаларына енгізілген стандартты кітапханалар да бар. Тілдің
кемшілігі де жоқ емес, ол жүйелік және қолданбалы программаларды дайындауға
бейім, бірақ айнымалыларға рұқсат етілмеген қол жеткізу механизмін
қамтамасыз етпейді және құрылатын класты басқа кластың ішкі класы (мұрагер)
ретінде жариялау мүмкін емес. Мұндай объектілі - бағдарлы программалау
(ОБП) тілдеріне енетін ерекшеліктерді ескеріп, Borland International Inc
фирмасы C тілінің дамытылған жаңа Turbo C (Турбо Си) нұсқасын 1980
жылдардың басында жарыққа шығарды. Кейіннен Turbo C++ 2.0, Turbo C++ 3.0
және олардың кеңейтілген Borland C++ нұсқалары да пайда болды: Borland C++
2.0, Borland C++ 3.0, Borland C++ 3.1, Borland C++ 4.0 және т.б.
Олардың MS DOS, Windows операциялық жүйелерінде жұмыс істеу
мүмкіндіктері жеткілікті.
C++ тілі де процедуралық тіл, бірақ онда ОБП тілінің ерекшеліктері кең
түрде қарастырылған. ОБП тілінде қолданылатын негізгі ұйымдар: класс,
объект, оқиға, қасиеттер мен әдістер. Бұл ұғымдар:
объект - құрылымы класс типі арқылы сипатталатын айнымалы;
оқиға - объект жағдайының өзгеруі; қасиеттер - объект сипаттамалары
(параметрлері); әдіс - класс элементтерін іздейтін команда не процедура,
функция.
класс - пайдаланушы анықтайтын тип. Тип қасиеттер мен әдістерді бірге
қосып сипаттайды. Программада осы кластың жеке даналары дайындалады. ОБП-да
класс үшін мұрагерлік, инкапсуляция және полиморфизм принциптері
енгізілген. Мұрагерлік — программада негізгі класс типінің туынды
иерархиялық класта сақталуы, т.б.
Тілде жадпен жұмыс істеуге арналған арнайы конструктор, деструктор
функциялары да бар. Конструктор класс типті айнымалы үшін жадтан арнайы
орын бөледі, деструктор бөлінген жадты тазалайды.
Мысал үшін фигуралық объектілерді қарастырайық. Мұндағы класс –
геометриялық фигуралар типі. Класс жазық және кеңістіктегі у фигуралар
болып екі ішкі класқа бөлінеді (C тілінде оларды мұрагер типтер деп
атайды). Жазық фигуралар класы төбелері бар (мысалы, үшбұрыш, төртбұрыш)
және төбелерсіз (мысалы, шеңбер, эллипс) болып екі ішкі класка бөлінеді
(олар иерархиялық мұрагер типтер).
Оқиға - фигурамен жұмыс жағдайы.
Объектінің қасиеттері: боялу түсі, ұзындығы, ені және т.с.с. ОБП тілінде
негізгі кластар программа түрінде дайындалған соң, олар арнайы кітапханалық
(каталогтық) файлдарда сақталып қойылады. Мұрагерлік класты пайдаланып
программа құруда негізгі класқа арнайы сілтеме орнатып, программалау
процесін көп жеңілдетуге болады (себебі, ол Турбо Паскальда sin()
функциясына арналған кітапханалық файлды пайдалану сияқты жұмыс істейді).

Бейсик, Паскаль, Си сияқты дәстүрлi программалау тiлдерiнде күрделi, үлкен
программаларды дайындаудың кемшiлiгi – ол үшiн программалаушылар тобының
көп күш жұмсауы қажет болатын. Программалауды жеңiлдету үшiн 80 – жылдары
жаңа объект, класс (оbject, class) ұғымдары енгiзiлiп, объектiлi – бағдарлы
программалау (ОБП) тәсiлi негiзге алынды. ОБП – Турбо Паскальда
қолданылатын процедуралық және құрылымдық программалаудың және модуль
құрудың дамытылған түрi. Ол берiлгендердi белгiлi бiр абстракциялық
деңгейде көрсетiп, модульдiк программалауды пайдаланады. Мысалы, Visual
Basic программалау жүйесi объектiлi программалау негiзiнде визуальды түрде
құрылған. Паскальдың ОБП тәсiлiн пайдаланып құрылған жаңа нұсқасы Object
Pascal (Объектiлi Паскаль) деп аталады. Delphi осы тiлдiң негiзiнде
дайындалған. Объектiлi программалаудың ыңғайсыздығы – онда дәстүрлi
программалау тәсiлдерiн пайдалана бермейдi, бiрақ ондағы көп қиындықтар
арнайы тәсiлдердi пайдалану арқылы тез шешiлген.
ОБП тiлiнiң дәстүрлi программалау тiлдерiнен өзгешiлiгi – типте
өрiстерге қоса, қасиеттер және әдiстер де сипатталады:
өрiстер – Турбо Паскальдағы жазу (record) типiнiң өрiстерi сияқты;
қасиеттер – объект сипаттамалары;
әдiстер – кластың өрiстерi мен қасиеттерiн өңдейтiн процедуралар мен
функциялар.
Kласс – жоғарыда көрсетiлген құрылымды (өрiстер, қасиеттер және
әдiстерден тұратын) тип. Яғни, класс әдеттегi Паскаль типiнiң кеңейтiлген
түрi. Класс типi арқылы сипатталған айнымалы объект (нысан) деп аталады.
Жүйе объект үшiн жадтың динамикалық облысынан арнайы орын қалдырады.
Яғни, шын мәнiнде, объект жай айнымалы емес, ол - жадтың динамикалық
облысының кездейсоқ адресiн сақтайтын көрсеткiш. Бiрақ программада оған
Турбо Паскальда пайданылатын көрсеткiш белгiсi ( ^ ) енгiзiлмей жазылады.
Объект құрылған кезде автоматты түрде конструктор (constructor) деп
аталатын әдiс шақырылып, ол объектiнi динамикалық облыста орналастырады,
динамикалық жадтан объектiнi арнайы деструктор (destructor) әдiсi жояды.
Сонымен, ОБП - да пайдаланылатын объект сөзiнiң екi мағынасы бар:
айнымалы (абстрактты, дерексiз объект) және нақты объект (мысалы, формада
орнатылған компонент, геометриялық дене, т.с.с.). Delphi – де бiрiншi
объект нақты класс данасын анықтайды.
Класқа иерархиялық (бағынышты, жоғарыдан төмен) кластардың енуi де
мүмкiн. Мысалы, геометриялық фигуралар класы жазық фигуралар және кеңiстiк
фигуралары болатын екi iшкi кластық фигураларға бөлiнедi. Ал жазық
фигуралар класы төбелерi бар (үшбұрыш, көпбұрыш) және төбелерсiз (шеңбер,
эллипс) болып екi iшкi класқа бөлiнедi. Объектiлi программалауда барлық
кластар иерархиялық түрде негiзгi TObject класынан тарайды (TObject (
TPersistent ( TComponent ( ...). әдетте негiзгi класты аталық, бағыныңқы
кластарды туынды не сәбилiк кластар деп атайды (TObject – барлық кластардың
арғы атасы, TComponent – барлық иерархиялық компоненттердiң жоғарғысы
(компонент деп TComponent класының мұрагерi болатын класс данасын атайды)).
әр ұрпақ өзiнiң аталық класының мүмкiндiктерiн (өрiстерiнiң, қасиеттерiнiң,
әдiстерiнiң сипаттамаларын) қабылдайды. Мысалы, TObject класының Create
(бастапқы мән меншiктеу (инициалдау)) әдiсi барлық туынды кластарға тиiстi
(TObject класында конструктор Create деп аталады). әр ұрпақ өзiне қосымша
жаңа мүмкiндiктер (сипаттамалар) қосып, келесi ұрпақтарға беруi мүмкiн.

Delphi-де класс атауын T әрпiнен бастау келiсiлген. Формаға енгiзiлген
компонент данасы сандық индекс қосылған класс атауын алады.
Туынды кластың сипатталу түрi:

type туынды класс атауы=class (негiзгi класс атауы);
класс мүшелерiнiң тiзiмi
end;
var объект : класс атауы;

мұндағы класс мүшелерi - өрiстер, қасиеттер және әдiстер.
Мысалы,
type TForm1 = class (TForm)
Button1 : TButton;
Label1 : TLabel;
Procedure Button1Click ( Sender : TObject);
end;
var Form1 : TForm1;

TForm1 = class (TForm) жазуы TForm класының үлгiсiмен құрылатын жаңа
(туынды) TForm1 класын анықтайды. Form1 : TForm1 жолындағы Form1
айнымалысы - класс данасы
Программаны дайындау барысында Delphi модульдiң Interface бөлiмiне
формаға енгiзiлген компоненттер мен оқиғасы таңдалған әдiстердi сипаттауды
автоматты түрде енгiзедi, әдiстердi iске асыру нұсқаулары модульдiң
implementation бөлiмiне қолдан жазылады.
Жалпы, Delphi – де класс деп өзiне ұқсас даналарды дайындау үшiн
үлгi түрiнде алынатын, толық түрде дайындалған программа үзiндiсiн де
атайды. Программалаушы бұрын дайындалған класс данасының көшiрмесiн түрлi
программаларға енгiзiп, программалауды және оның көлемiн көп жеңiлдетуiне
болады.
Delphi құрамына жүздеген дайын кластар енгiзiлген. әр компонент қатаң
түрде тек бiр класқа ғана тиiстi. Мысалы,
Delphi – де форма (TForm) компонентi – Forma класына тиiстi, осы типтi
айнымалы (Form1) – класс объектiсi. Класс бөлiгi ретiнде сипатталып, қажет
болса, модульдiң Implementation (iске асыру) бөлiгiнде жазылатын сәйкес
процедура - әдiс. Мысалы, procedure TForm1.Button1Click – әдiс.
Форма iшiне орналастырылған TEdit компонентiнiң Edit1 данасын
(объектiсiн) екi рет шерткен кезде пайда болатын оқиғаны өңдеуiш әдiсiне
(процедурасына) мысал:

procedure TForm1.Edit1Click(Sender : TObject);
begin
Edit1.Text := ‘Сiз редакциялау өрiсiн екi рет шерттiңiз‘;
end;

Программаны iске қосу командасы берiлген соң компилятор автоматты
түрде негiзгi модульге енгiзiлген төмендегi екi әдiстi орындайды:
Application.CreateForm(TForm1, Form1);
Application.Run;
Бүлардың бiрiншiсi жадта Form1 объектiсiн құрады (объектiнi инициалдайды),
екiншiсi Application объектiсiне қосымшаның негiзгi формасын iске қосуға
нұсқау бередi (Run). Жоғарыда жазылған процедураның орындалу нәтижесiнде
форманың Edit1 өрiсiне оның Text қасиетiне меншiктелген мәтiн жазылады.
Ескерту. Белгiсiз жағдайда программада қасиет орнату командасын
иерархиялық түрде жазу қажет, мысалы:

Form1.Button1.FontSize:=14;

Мүндағы иерархияның бiрiншi объектiсi – форма (Form1), екiншi объект –
формада орнатылған Button1 түймесi, үшiншi объект – түйменiң шрифт қасиетi;
команда – форманың Button1 объектiсiне енгiзiлген FontSize (шрифт өлшемi)
айнымалысына 14 мәнiн меншiктеу. Яғни, объектiлер арасына қойылатын нүкте
сәйкес иерархиялық объектiге сiлтеме.

Мұрагерлiк. Инкапсуляция. Полиморфизм
ОБП – да класс үшiн мұрагерлiк, инкапсуляция және полиморфизм
принциптерi енгiзiлген.
Мұрагерлiк - программада негiзгi класс типiнiң туынды иерархиялық
кластарда да сақталуы. Мысалы, автомобиль жеңiл және жүк машинасы болып
бөлiнедi. Олардың жұмыс iстеу жағдайына байланысты, сипаттамаларына ортақ
және бөлек өрiстер, қасиеттер мен әдiстер енгiзiлуi мүмкiн. Бiрақ, әр
қайсысына жеке – жеке типтi толық анықтау үнемдi емес. Бiрiнiң типiн
аталық етiп қабылдап, екiншiсiне қосымша қасиеттердi енгiзу жеткiлiктi.
Delphi – дiң барлық кластары TОbject класына мрагер.
Инкапсуляция (iшiнде, бiртұтас) – класс өрiстерiн, қасиеттерiн және
әдiстерiн бiрiктiрiп, бiртұтас түрiнде қарастыру мүмкiндiгi. Инкапсуляция
класты программаның қалған бөлiктерiнен бөлiп алып, нақты есептi шешу үшiн
пайдалануға мүмкiндiк туғызатын принцип. Мысалы, TForm класы өз бойында
Windows – терезенi дайындау үшiн барлық қажеттiлердi iшiнде сақтайды
(өзiнде инкапсулдайды).
Полиморфизм (көп түрлiлiк) – мұрагер кластардың аталық класқа
енгiзiлген әдiс атауы бойынша басқа қасиеттер енгiзiлген ұқсас есептi
шешуiне болатындығы, яғни түрлi кластарда әр түрлi әрекеттердi орындайтын
әдiстерге бiрдей атау беру мүмкiндiгi.

Бақылау сұрақтары
1. Объектiлi-бағдарлы программалау дегенiмiз не?
2. Қандай құрылымдық тип класс (class) арқылы сипатталады?
3. Инкапсуляция дегеніміз не?
4. Полиморфизмді қалай түсінесің?
5. Мұрагерлік деп нені айтады?

6-лекция. Негізгі түсініктер мен енгізу ортасы және программаларды орындау
механизмі

Жоспар:
1. Компьютердің логикалық схемасы.
2. Есептеу құралдарының негізгі түрлері.
3. Машиналық тіл және ассембілер тілі туралы түсінік.
4. Операциялық жүйелердің функциональдық қызметі.
5. Программалау, компиляция және программаны орындау ортасы,
модульдерді
қолдану

1.Орындалатын программа ЭВМ жадында сақталады.
2.Барлық информациялар: машиналық командалар, сандар, әріптер, символдар,
ұяшық адрестері т.б. екілік кодтар түрінде орындайды.
3.ЭВМ программаны процессордың негізгі алгоритміне сүйеніп орындайды.
4.Екілік кодтар арасындағы амалдар екілік жүйе ережелеріне сай орындалады.
ЭВМ информацияны (екілік кодтарды) тетіктерге магистральмен жібереді,
адресі бойынша қай ұяшықтан қандай информацияны ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Оқытудағы ақпараттық технологиялар негіздері
Қашықтан окыту жайлы
Жоғары мектеп педагогикасының зерттеу әдістері
Паскаль тілінің операторлары
Программалау тілінде программа құру
Қашықтықтықтан оқыту (қо) технологиясын ұйымдастыру
Жүйелік программалаудың негізгі ұғымдары мен анықтамалары
«Информатиканың теориялық негіздері» пәнін оқыту үрдісінде электронды оқу құралын қолдану
Қазақ этнопедагогикасы пәнінің электронды оқулығын дайындау жайында
Ақпараттық - коммуникациялық технологияны қолдануда пән мұғалімдерін дайындау
Пәндер