- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
- •1. Пәннің оқу бағдарламасы - syllabus
- •1.1. Оқытушы жөнінде мәліметтер:
- •1.2. Пән бойынша мәліметтер:
- •1.3. Осыған дейінгі пәндер тізімі: Информатика, Математикалық талдау, Алгебра және геометрия, Математикалық логика.
- •1.4. Шектес пәндер тізімі: Сандық әдістер, Бағдарламалау тілі, Компьютерде тәжірибе
- •1.5. Пән мақсаты:
- •1.6. Пән бойынша берілген тапсырмаларды орындау және тапсыру графигі
- •11. Рашбаев ж.М. Массивті реттеу алгоритмдерін программалау. Оқу және методикалық әдебиеттер жөніндегі Республикалық баспа кабинеті. Алматы-1991 ж.
- •1.8. Бағалау ақпараттары
- •1.9. Курс саясаты және процедурасы
- •2. Пән бойынша оқу-әдістемелік кешен материалдары
- •2.1. Курстың тақырыптық жоспары
- •2.2. Дәріс сабақтар
- •1 Дәріс тақырыбы: Алгоритмдер. Алгоритмдерді талдау. Алгоритмдер құру.
- •2 Дәріс тақырыбы: Программа құру тілі. Программа құрылымы. Енгізу және шығару командалары.
- •3 Дәріс тақырыбы: Есептің қойылымы. Математикалық моделін тұрғызу. Алгоритмін құру. Есепті компьютерде шешу. Проектіні тексеру.
- •4 Дәріс тақырыбы: Циклдік алгоритм. Цикл түрлері. Цикл құрылымы.
- •5 Дәріс тақырыбы: Берілгендердің символдық типі. Жолдық тип.
- •6 Дәріс тақырыбы: Берілгендердің фундаментальді типі. Массив, жазба және жиынның қойылымы.
- •7 Дәріс тақырыбы: Рекурсивті алгоритмдер.
- •Мұндай рекурренттік қатынас п- факториалды санының рекурсивтік есептеу алгоритмін шамалайды.
- •8 Дәріс тақырыбы: Қосалқы программа. Функция. Процедуралық тип.
- •9 Дәріс тақырыбы: Ақпараттық құрылым. Сызықты тізім.
- •10 Дәріс тақырыбы: Ақпараттық құрылымдар. Стектер, кезектер.
- •1 Сурет
- •2 Сурет
- •4 Сурет
- •5 Сурет
- •11 Дәріс тақырыбы: Тізбекті үлестіру. Байланысқан үлестіру.
- •12 Дәріс тақырыбы: Бірбағытталған және екібағытталған байланысқан тізімдер. Көрсеткіштер.
- •13 Дәріс тақырыбы: Ақпараттық құрылым. Ағаш. Ағаштардың қойылымы.
- •14 Дәріс тақырыбы: Көпбайланысқан құрылымдар. Жадыны динамикалық бөлу.
- •15 Дәріс тақырыбы: Ішкі сұрыптау алгоритмдері: таңдау, қосу. Тікелей таңдауға талдау.
- •16 Дәріс тақырыбы: Ішкі сұрыптау алгоритмдері: Екілік қосылымға талдау жасау.
- •17 Дәріс тақырыбы: Көпіршікті және шейкерлік сұрыптауды талдау.
- •18 Дәріс тақырыбы: Бөліп алу көмегімен сұрыптау.
- •19 Дәріс тақырыбы: Медиананы табу.
- •20 Дәріс тақырыбы: Сызықты іздеу.
- •21 Дәріс тақырыбы: Екілік іздеу.
- •22 Дәріс тақырыбы: Қатарда іздеу. Кнут - Моррис - Пратт алгоритмі.
- •23 Дәріс тақырыбы: Қатарда іздеу. Боуер-Мура алгоритмі.
- •24 Дәріс тақырыбы: Жолды өңдеу алгоритмі. Рабин алгоритмі.
- •25 Дәріс тақырыбы: Қайталанбалы алгоритм.
- •26 Дәріс тақырыбы: Қайталанбалы алгоритм. Аттың жүрісі туралы есеп.
- •27 Дәріс тақырыбы: Программалаудың кейбір фундаментальді әдістері. Программаны құрастырудың технологиясы және таралуы.
- •28 Дәріс тақырыбы: Есептеуді тиімдеу. Программаны жөндеу және тестілеу әдістемесі.
- •29 Дәріс тақырыбы:
- •30 Дәріс тақырыбы: Объектіге-бағытталған программалау.
- •2.3. Зертханалық сабақ жоспарлары
- •Алгоритм. Қасиеттері. Алгоритм қойылымы.
- •2.4. Оқытушы жетекшілігімен жүргізілетін студенттердің өзбетіндік жұмысы
- •Орындаушы тәжірибе аяқталғаннан кейін шығыс ақпаратын немесе екі хабардың бірін береді.
- •65387 Санында – 5 цифр !
- •Тақырыбы: Ағаш. Ағашты қалыптастыру. Қалыпты ағашты құру.
- •Ноталардың дыбысталу жиілігі
- •Студенттердің өзбетіндік жұмыс жоспары
- •Тақырыбы: Берілгендер. Берілгендер типі, тұрақты және айнымалы. Өрнектер.
- •Тақырыбы: Динамикалық ақпаратты құрылым. Ағаш.
- •Тақырыбы: Ішкі жолдарды іздеу. Текстке сөз енгізу.
- •Тақырыбы: Ішкі сұрыптау алгоритміне программа құру.
- •Тақырыбы: Сұрыптау алгоритмі
- •Тақырыбы: Массивті сұрыптау алгоритмінің таралымы
- •Тақырыбы: Файлдық тип. Тексттік файлдар.
- •Тақырыбы: Файлмен жұмыс
- •Тақырыбы: Кіру және шығу файлдарымен жұмыс.
- •Тақырыбы: Файлдарды сұрыптау және последовательностей
- •Тақырыбы: Кнут-Морис- Пратта алгоритмін қолдану
- •Тақырыбы: Поиск подстроки в строке
- •Тақырыбы: Манипулирование строками
- •Тақырыбы: Рекурсивті алгоритмдердің таралымы. Лабиринт есебі.
- •Тақырыбы: Рекурсивті алгоритмдер құрастыру.
- •2 Мысал:
- •Тақырыбы: Мәтіндік режимде экранды басқару. Crt модулін қою.
- •2 Мысал: Күн жүйесінің динамикалық моделі.
- •2.6. Курс бойынша жазба жұмыстарының тақырыптамалары
- •Курстық жұмыс және проектілер тақырыптамалары
- •Алгоритм дегеніміз -
- •B) Тізбектелген, циклдық, тармақталу
- •Мазмұны
- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
30 Дәріс тақырыбы: Объектіге-бағытталған программалау.
Объектіге-бағдарланған программалау (ОБП) бағыт ретінде 60 жылдардың соңында пайда болды. ОБП алғаш рет Симула-67 тілінде іске асырылды (немесе «Симула кластарымен»). ОБП негізгі ұғымы класс және объекті болып табылады. Класс деп программист құрастыратын жаңа күрделі типті айтады. Объекті-бұл класстың жеке данасы, іс жүзінде ол класс айнымалысын білдіреді. Турбо Паскалда класс объектілік тип немесе «объект» типі, ал объектілер осы типтің айнымалылары болып табылады. ООП негізгі идеясы – деректерді (өрістерді) және осы деректермен жасалатын амалдарды (әдістерді) бір тұтасқа біріктіру, яғни Объект = өріс + әдістер.
Мұндай біріктіру ОБП жасайды, жекелеп алғанда, конструкциялау кезінде қолайлы құрал АТД.
«Объект» типінің анықтамасы мынадай:
type
TObj = object
P1; P2; …; Pn;
M1; M2; …; Mk;
end;
мұнда TObj – типтің аты, P1; P2; …; Pn – объекті өрісінің сипаттамасы, ол жазба өрісінің сипаттамасына ұқсас, M1; M2; …; Mk – объекті өрісінің тақырыптары, кіші программаның тақырыбына ұқсас. Әдістердің толық анықтамасы объектілік типтен кейін орналасады және әдеттегі кіші программалардың анықтамасын еске салады. Бірақ соңғысынан айырмашылығы әдістің атының алдында қосымша пайда болады: TObj. Әдістің аты. Сондай-ақ әдеттегі процедуралар мен функциялардан басқа ерекше әдістер болады- олар конструкторлар және деструкторлар. Объектінің өрістері мен әдістердің көрінетін саласы объектінің барлық әдістерінің денесіне таралады.
«Объект» типті айнымалының өрістері мен әдістеріне қатынау – тікелей және толықтай жазба өрістеріне қатынауға ұқсас, соның ішінде қосу операторының көмегімен қатынау да.
ОБП үшін үш принцип тән: инкапсуляция, иелену және полиморфизм.
Инкапсуляция - өрістер мен әдістерді объектіге біріктіру. Мұнан басқа бұл принцип объекті өрістеріне тікелей қатынауға қарамастан бұл қатынауды пайдалану нашар стиль болып табылатынын ұйғарады. Жақсы стиль өріспен кез келген операция үшін сәйкес әдіс тартылуы тиістігін білдіреді.
Иелену объектілік типтер –тектердің өрістері мен әдістерін иеленетін және жаңа өрістер мен әдістер қосатын типтер-ұрпақтарды конструкциялау мүмкіндігін білдіреді. Бұл жағдайда тип-ұрпақты анықтау келесідей түрде басталады: TNew = object (TOld), мұнда TOld - тип-тектің аты, ал TNew – тип-ұрпақтың аты. Тектің өрістері мен әдістерінің көрінетін саласы әдетте оның ұрпақтарының әдістеріне таралады. Туындайтын объектілік типтер жүйесі ағаштық құрылым түзейді.
Полиморфизм тектердің әдістерін ұрпақтардың бір аттас әдістерімен иелену кезінде «жабу» мүмкіндігін білдіреді. Осылайша, әртүрлі, бірақ ұқсас, көмекші алгоритмдер бір атпен аталатын болады.
Объектінің қажетті әдісін шақыру алдында объектіні әдістермен байланыстыру жүреді. Ерте (немесе статикалық) байланыстыру –ол компиляциялау кезеңінде жүреді және кеш байланыстыру – ол программаны орындау кезеңінде жүреді, болып бөлінеді. Бірінші жағдайда өзінің жабатын әдісін тегінің әдісі арқылы шақыру кезінде дұрыс емес байланыстыру жүреді – жабу әдісі шақырылатын болады. Екінші жағдайда орындау кезеңінде сырттай әдістер кестесі (СӘК) құрылады және оның көмегімен дұрыс байланыстыру жүреді. Кеш байланыстыру кезінде жабу әдістерін сырттай деп виртуальды деп жариялау қажет – тақырыптан кейін virtual түйінді сөзін көрсету қажет; (нүктелі үтір – міндетті!). Статикалық жабылатын әдістердің тақырыптары формальды параметрлердің түрлі жиындарынан тұруы мүмкін, виртуальды әдістер үшін формальды параметрлердің тізімдері бірдей болуы тиіс.
ТВМ құру үшін конструктор деп аталатын арнайы әдіс қажет. Оның жариялануы әдіс-процедуранікіндей, бірақ procedure орнына constructor жазылады. Конструкторлардың мынадай қасиеттері болады:
1) конструктордың денесі бос болуы мүмкін;
2) конструкторлар бірнешеу болуы мүмкін;
3) конструкторлар бір бірін жабуы мүмкін;
4) конструктор еш уақытта виртуальды болмауы мүмкін,
5) конструкторды шақыру объектінің кез келген виртуальды шақыруынан бұрын болуы тиіс. Типтелген константтар-объектілер типтелген констант-жазбаларға ұқсс.
Объектінің әдістері мен өрістеріне қатынаудан басқа бір біріне бір типтес объектілер беруге, сондай-ақ объекті-ұрпақтарды объекті-тектерге беруге рұқсат етілген. Объекті-тектерді объекті-ұрпақтарға беруге тыйым салынған.
Динамикалық объектілерді пайдалануға рұқсат етіледі, бұл ретте объектіге көрсеткіштер үшін беру ережесі объектілердің өздері үшін сияқты. Әдетте динамикалық объектілерді жадыдан алып тастау кезінде деструктор деп аталатын тағы бір арнайы әдіс қолданлады. Ол босатылатын жадының байттары санын дәл анықтауға арналған. Оның жариялауы әдіс-процедуранікі сияқты, бірақ procedure орнына destructor жазылады. Деструкторлар виртуальды болуы мүмкін, олар бірнешеу болуы да мүмкні, олардың денесі бос болуы мүмкін. Динамикалық объектілер үшін New и Dispose процедураларына қатынау синтаксисі кеңейтілген:
var
PObj: ^TObj;
begin
New(PObj, Init(S1, …, Sn));
Dispose(PObj, Done(T1, …, Tm));
мұнда PObj - динамикалық объектіге көрсеткіш, Init – объектінің конструкторына қатынау, а Done –объектінің деструкторына қатынау. Бұл жағдай үшін конструкторды және деструкторды шақыру синтаксисі кеңейтілген: Init және Done функциялар сияқты шақырылады, ал олардың аттарының алдында (PObj^) динамикалық объектінің атын көрсетіп қажет емес өйткені New шақырған кезде динамикалық объекті болған жоқ!
