- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
- •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) Тізбектелген, циклдық, тармақталу
- •Мазмұны
- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
27 Дәріс тақырыбы: Программалаудың кейбір фундаментальді әдістері. Программаны құрастырудың технологиясы және таралуы.
Дайын программаны талдау кезінде көбінесе әзірлеушілердің оған қалай келгені анық емес. Осы Дәрісда программалау технологиясындағы жалпы сәттер туралы айтылады.
Программаны жобалаудың осы заманғы тәсілі өз кезегінде абстракцияларды пайдалануға негізделген есептердің декомпозициясына негізделген. Демкомпозициялау кезіндегі мақсат шағын, салыстырмалы дербес программалар болып табылатын, бір бірімен жақсы анықталған және қарапайым ережелер бойынша өзара әрекеттесетін модульдер құру болып табылады. Егер осы мақсатқа қол жеткізілген болса, онда кейбір модульдерді әзірлеу бір біріне тәуелсіз әртүрлі адамдармен жүзеге асырылуы мүмкін, бұл ретте біріктірілген программа дұрыс жұмыс жасайтын болады.
Абстракцияны параметрлеу арқылы және спецификация арқылы айырады. Параметрлеу арқылы абстракцияның мәні мынада, бір алгоритммен түрлі бастапқы деректермен ерекшеленетін және түрлі параметрлері бар есептерді шешуге болады. Спецификация арқылы абстаркцияның мәні түрлі алгоритмдермен бір және ізделетін нәтижені алуға болатынында. Бұл ретте программа жұмысының нәтижелері суреттеледі, программаға қатынау мәні программаның текстінің өзін емес, оның ерекшелігін талдау арқылы анық болады.
Кез келген программаны немесе программалық жүйені әзірлеу пайдаланушылардың нақты жиынтығы үшін оған қойылатын талаптарды анықтаудан басталады және жүйені осы пайдаланушылардың іске қосуынан аяқталады.
Алгоритмдер мен программалар әзірлеудің түрлі тәсілдері мен технологиялары бар. Программалау едәуір дәрежеде өнер болса да, жинақталған кәсіби тәжірибені жүйелеуге және қорытуға болады. Қазіргі көзқарас тұрғысынан программалау мен программа әзірлеуді бірқатар тізбектелген кезеңдерге бөлген орынды:
1) міндет қою;
2) программаны жобалау;
3) модель құру;
4) алгорит әзірлеу,
5) алгоритмді іске асыру;
6) алгоитм мен оның күрделілігін талдау;
7) программаны тестілеу,
8) құжаттау.
Осы кезеңдердің әрқайсысына қысқаша тоқталайық.
Ірі компьютерлік программалар үшін міндет қою кезінде келесідей жұмыстарды жүргізу қажет:
• проблеманы шешу немесе мақсатқа жету үшін (негізінен бұл қызмет сараптамалық сипатта болады) қажетті талаптар әзірлеу (қасиет, сапа және мүмкіндік);
• программаның мақсатынан;
• шекті шарттардан тұратын ерекшеліктер әзірлеу;
• енгізіп-шығаратын деректердік ерекшеліктері;
• верификациялық талаптар (тестілік жағдайлар белгілеу);
• құжаттардың типтері мен саны.
Осы жұмыстың барысында жүйе ақырғы түрінде ие болуы тиіс қасиеттер анықталады (пікір), жүйенің функциялары, интерфейстің сипаттамалары суреттеледі.
Есепті шешуге кірісу үшін оны дәл тұжырымдау қажет. Бірінші кезекте бұл бастапқы және соңғы деректерді анықтау, яғни мынадай сұрақтарға жауап беру:
а) не берілді? б) нені табу қажет. Міндет қоюды одан әрі талдау мынадай мазмұндағы бірқатар сұрақтарға жауап беру болып табылады:
• шешімді қалай анықтау керек;
• қандай деректер жетіспейді, олардың барлығы да керек пе;
• қандай кемшіліктер жіберілді және т.б..
Программаны жобалау. Алдыменпрограммалық жүйенің архитектурасын жобалау жүргізіледі. Бұл жобалаудың бастапқы (жалпы) сатысы болып табылады және ерекшелікті жүйенің құрылымына декомпозициялаудан аяқталады. Әдетте әрбір модуль бойынша модульдық деңгейде модульдің ерекшелігі жасақталады:
• аты/мақсаты – модульге ат және формальды параметрлері бар модульдің функциялары туралы ұсыныс беріледі;
• формальды емес суреттеу – модульдың әрекетін шолу;
• сілтемелер – оған қандай модульдер сүйенеді және қандай модульдер осы модульге сүйенеді;
• енгізу/шығару – формальды және нақты параметрлер, ауқымды, жергілікті және байланысқан (бірқатар модульдер үшін ортақ) айнымалылар;
• ескерту – модуль жөніндегі жалпы сипаттағы пайдалы түсініктер.
Келесі қадам егжей-тегжейлі жобалау болып табылады. Осы кезеңде программаны процедуралық суреттеу, әрбір модульді іске асыру үшін алгоритмді таңдау және бағалау жүреді. Жобалау үшін бастапқы ақпарат жүйені талаптары мен ерекшеліктері болып табылады.
Программаларды жобалау үшін әртүрлі тәсілдер мен әдістер бар. Жобалаудың осы күнгі тәсілі өз кезегінде абстракцияны пайдалануға негізделген декомпозицияға негізделген. Декомпозициялау кезіндегі мақсат бір бірімен анықталған және қарапайым ережелер бойынша өзара әрекеттесетін модульдер құру болып табылады. Декомпозиция программаны кейін біріктірілуі мүмкін компоненттерге бөлу.
Архитектураның жобалау әдістері екі топқа бөлінеді:
1) өңдеуге бағдарланған және
2) деректерге бағдарланған.
Өңдеуге бағдарланған әдістер мынадай ортақ идеялардан тұрады:
а) Модульдық программалау.
Негізгі тұжырымдамалар:
• әрбір модуль жалғыз тәуелсіз функцияны іске асырады;
• енгізу/шығарудың жалғыз нүктесіне ие болады;
• модульдің өлшемі минимумдалады;
• әрбір модуль басқа модульдерге тәуелсіз әзірленеді;
• жүйе тұтастай модульдерден тұрғызылған.
Осы принциптерге сүйене отырып әрбір модуль жеке жеке тестіленеді, одан кейін кодтағаннан және тестілегеннен кейін оларды интеграциялау жүреді және барлық жүйе тестіленеді.
б) Функциональдық декомпозициялау.
«Бөл және басқар» стратегиясына ұқсас. Қадамдық нақтылау формасындағы және жасырын ақпараттар концепциясын декомпозициялау болып табылады. Әрбір модуль жобалаушының субъективті шешімімен сипатталады, байланыс жақсы ұйымдастырылған интерфейстердің көмегімен жүзеге асырылады.
в) Деректер ағынын пайдалана отырып жобалау.
Деректер ағыны программаны жобалаудың басты желісі ретінде пайдаланылады. қадамдық нақтылауы бар жоғары-төмен құрылымдық жобалаудың элементтерінен тұрады:
• деректер ағынан сараптау және деректер ағынының графасын бейнелеу;
• элементтердің кірістік, орталық және шығыстық түрлендіргіш деректер ағыны;
• программаның иерархиялық құрылымын қалыптастыру;
• программаның құрылымын детализация және оңтайландыру.
г) Жобаны құрылымдық талдау технологиясы.
Жүйелер объектілері арасында иерархиялық функционалдық байланыстар құрудың арнайы графикалық құралдарын пайдалана отырып құрылымдық талдауға негізделген. Диаграммалар қарапайым және оқылатын болған кезде жүйе құрудың бастапқы сатыларында тиімді.
Деркетер құрылымын пайдалануға негізделген жобалау әдістері төменде суреттелген:
а) Джексон методологиясы .
Бұл жерде деректер құрылымы – жоба жасаудағы өзекті элемент. Программаның құрылымы өңдеуге жататын деректер құрылымымен анықталады. Программа көмегімен кіріс деректер шығыс деректерге өзгертілетін механизм ретінде беріледі. Әдісте мыналар қарастырылады:
• кіріс және шығыс деректер құрылымын әзірлеу және бейнелеу;
• осы құрылымдық элементтердің бейнелерін біріктіру арқылы программаның құрылымын бейнелеу,
• құрылымдық деректермен жасалатын дискреттік операцияларды анықтау;
• деректер құрылымын өңдеу алгоритмдерін құру.
б) Уорнер методологиясы.
Алдыңғыға ұқсас, бірақ жобалау процедурасы барынша талданған. Жобаны берудің келесідей түрлері қолданылады:
• деректер ұйымдастыру диаграммалары (кіріс және шығыс деректерді суреттейді);
• логикалық қолдану диаграммалары (осы деректердің логикалық ағыны);
• нұсқаулар тізімі (жобада қолданылатын командалар);
• псевдокод (жобаны суреттеу);
• жүйенің кіріс деректерін анықтау;
• иерархиялық құрылымға кіріс деректер ұйымдастыру;
• кіріс файлдың элементтері форматын талдап анықтау;
• кіріс деректерге рналған сияқты;
• программаның ерекшелігі: оқу, тамақталу, есептеу, шығыстар, кіші программаны шақырулар;
• нұсқаудың логикалық тізбегін көрсететін диаграмма жасау (блок-схема типі бойынша)
в) Иерархиялық диаграммалар әдісі
Бұл әдісте кіріс және шығыс деректер және жүйені иерархиялық декомпозиция (детализациясыз) көмегімен өңдеу процесі арасындағы байланыс анықталады. Шын мәнінде үш элемент қолданылады: кіру, өңдеу, шығу.
Осы әдіс бойынша жобалау алгоритмі мынадай қадамдардан тұрады:
• кіру, өңдеу, шығуды анықтай отырып, абстракцияның ең жоғарғы деңгейінен бастау;
• кіріс пен шығыстың әрбір элементін сәйкес өңдеумен біріктіру;
• диаграмманы пайдаланып жүйенің әрбір элементін құжаттау;
• 1-3 қадамдарды пайдаланып, диаграмманы талдау.
г) Жобалаудың объектілік –бағдарланған әдістемесі.
Ақпараттар мен деректердің абстрактілі типтерін жасыру концепциясына негізделген. Объектілер ретінде деректерді, модульдер мен жүйелерді қарастырады. Әрбір объект осы деректермен қалай жұмыс жасау керектігін білетін процедуралар жиыны бар деректердің бірқатар құрылымынан тұрады. Осы әдістеме бойынша берілген проблемалық сала бойынша абстракция құрылады:
• проблеманы анықтау;
• жүйеге қойылатын талапты қанағаттандыратын формальды емес стратегияны дамыту;
• стратегияны формализациялау;
• объектілер мен олардың атрибуттарын құру;
• объектілермен жасалатын операцияларды анықтау;
• интерфейстер орнату;
• операцияларды орындау.
Модельдер құру көп жағдайда күрделі есеп болып табылады. Моделдеуде тәжірибе жинау үшін барынша көп белгілі және сәтті модельдерді зерделеу қажет.
Модельдер құру кезінде негізінен, екі принцип пайдаланылады: дедуктивті (жалпыдан жекеге) және индуктивті (жекеден жалпыға).
1-сурет. Дедуктивті тәсіл кезінде модель құру схемасы
Дедуктивті тәсіл кезінде (1-сурет) жалпы белгілі фундаментальды модельдің жеке жағдайы қаралады. Бұл жерде берілген болжамдарда белгілі модель модельденетін объектінің шартына бейімделеді. Мысалы, Ньютона та = mg – Fсопр белгілі заңы негізінде еркін құлайтын дененің модельін құруға және рұқсат етілген жақындау ретінде аз уақыт аралығы үшін тең жылдамдатылған қозғалыстың модельін қабылдауға болады.
2-сурет. Индуктивті тәсіл кезінде модель құру схемасы.
Индуктивті тәсіл (2-сурет) гипотез жылжытуды, күрделі объектіні декомпозициялауды, талдау, содан кейін синтезді ұйғарады. Бұл жерде жүенің реті туралы болжам түріндегі қандай да бір заңдылықтарды қалыптастыру мақсатында ұқсас модельдеу, ойша пайымдаулар кеңінен қолданылады.
Индуктивті тәсіл кезінде модельдер құру технологиясы:
1) эмпирикалық кезең;
• ойша пайымдау;
• интуиция;
• болжам;
• гипотеза.
2) модельдеу үшін міндет қою;
3) бағалар; сандық және сапалық суреттеу;
4) модель құру.
