- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
- •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) Тізбектелген, циклдық, тармақталу
- •Мазмұны
- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
28 Дәріс тақырыбы: Есептеуді тиімдеу. Программаны жөндеу және тестілеу әдістемесі.
Алгоритм әзірлеу - өте қиын және күрделі процесс, бірақ шығармашылық тұрғыдан өте қызық процесс. Әзірлеу әдісін таңдау міндет қоюға, оның моделіне байланысты. Осы кезеңде алгоритмнің дұрыстығына талдау жүргізу қажет, бұл қиын және күрделі. Алгоритмнің дұрыстығын дәлелдеудің ең ке таралған процедурасы – оны түрлі тестілердің жиынына өткізу. Алайда, бұл «программа жасамайтын» жағдайдың болмауына кепілдік бермейді. Жалпы әдістемеде алгоритмнің дұрыстығын дәлелдеу алгорит қадамдардың тізбегі түрінде суреттелгенін білдіреді. Әрбір қадам үшін барлық лайықты кіріс (осы қадамға дейінгі шарттарда) және шығыс деректер үшін (осы қадамнан кейін шартында) оның дұрыстығының кейбір негіздемесі ұсынылады. Одан кейін нақты бастапқы деректері бар алгоритмнің ақырлығының дәдеді ұсыналады.
Алгоритмді іске асыру кезеңінде алгоритмді конструкциялау және іске асыру жүреді, мыналарды қоса алғанда:
• кодтау;
• интеграция;
• тестілеу (сертификаттау).
Нақты компьютер үшін жобаны программаның формасына ауыстыру, жүйені жинау және жүйенің ерекшеліктеріне сәйкес оның жұмысын растау үшін тестілік және қалыпты жағдайлар кезінде оны өткізу жүргізіледі. Бұл кезең прогарммалаудың қандай тілі таңдап алынғанына, алгорит қандай компьютерде іске асырылатынына байланысты. Деректер құрылымына енгізілетін деректер типін таңдау, қоршаған ортамен байланыс осыған байланысты Интерактивтілікті, транслятор түрін (компилятор немесе интерпретатор), кіші программа кітапханасын, модульдер мен объектілердің бар болуы маңызды.
Алгоритмді және оның күрделілігін талдау ол жұмыс жасайтын компьютерлердің ресурстарын, нақты деректерді өңдеу уақытын, оқшауланған желілер мен телекоммуникацияларда жұмыстағы тетіктерді бағалау үшін қажет. Сондай –ақ осы міндет үшін олардың арасынан ең қарапайымын эәне тиімдісін таңдап алу мақсатында бірнеше алгоритмді салыстыру үшін сандық критерий болғанын қалар едік. Программаны пайдалануды бастар алдында оны жөндеу және тестілеу кезеңі қажет.
Тестілеу –бұл қателіктерді анықтау (табу) мақсатында программаны орындау процесі. Тестілеу – деструктивтік процесс, сондықтан қате табылса тест сәтті болды деп есептеледі. Әлі анықталмаған қатені айқындау ықтималдығы бар тест жақсы деп есептеледі. Сәтті тест деп әлі анықталмаған қателіктерді табатын тест есептеледі.
Программаны тестілеудің түрлі тәсілдері бар.
«Қара жәшік» сияқты программаны тестілеу («қара жәшік» стратегиясы кіріс дерктерді және программаның жұмыс нәтижелерін талдай отырып тестілеуді анықтайды). Толық кірістік тестілеудің критерийі кіріс дерктердің барлық мүмкін жиындарын пайдалану болып табылады.
Программаны «ақ жәшік» ретінде тестілеу программаның логикасын басқару стратегиясынан тұрады, оның ішкі құрылымын пайдалануға мүмкіндік береді. Критерийі программаның барлық бағыттары мен басқраушылық құрылымдарын толық тестілеу болады.
Тестілеудің нақты және саналы стратегиясы - («қара жәшік» пен «ақ жәшіктің» модельдерін үйлестіру.
Тестілеу принциптері:
- шығыс деректердің болжалған мәндерін суреттеу немесе нәтижелер тест жинағының қажетті бөлігі болуы тиіс;
- дұрыс емес және қаралмаған кіріс деректер үшін тестілерді дұрыс және қарастырылғандар үшін сияқты мұқият әзірлеген жөн;
- программаның неге арналғанын орындауын ғана емес, орындауға тиіс емес нәрсені жасап жатпағанын да тексеру қажет;
- қателік табылмайды деген болжаммен тестілеуді жоспарлауға болмайды;
- программаның бөлігінде анықталмаған қателіктердің бар болу ықтималдығы осы бөлікте анықталған қателіктердің санына тепе тең;
- тестілеу – шығармашылық процесс.
Программалар әзірлеу кезінде инспекция және бастан-аяқ қарау негізінде («құрғақ» тестілеу) компьютерсіз «қолмен тестілеу» әдісі өте пайдалы болады.
Инспекция және бастан-аяқ қарау – бұл тексті оқу кезінде қателерді табудың тәсілдері мен процедураларының жиынтығы.
Программалау кезінде кездесетін қателіктердің негізгі типтері:
• мән берілмеген немесе инициализацияланбаған айнымалыларға қатынау;
- индекстердің жиымнан тыс шығып кетуі;
- айнымалы шамалардың типтері мен атрибуттарының сәйкес келмеуі;
- жадыны адрестеудің анық немесе анық емес проблемалары;
- басқаруды қате беру;
- логикалық қателер.
Тестілеу процедурасын жобалау кезінде көпшілік қателерді табудың ең жоғары ықтималдығы бар бірқатар тестілерді қарастырады. Толық тестілеу мақсаты үшін кіріс параметрлерді баламалы бөлу құрылады, сонымен бірге екі топ қаралады: дұрыс кіріс деректер және дұрыс еместер (қате кіріс мәні). Эквиваленттіліктің әрбір тобы үшін өз тестін құрады. Тестілердің эквиваленттілігінің тобы дептестілердің мынадай жиынын айтуға болады, олардың бірінде алгоритмді орындау басқалар үшін өткізудің ұқсас нәтижесін кепілдендіреді.
Шектік шарттардағы тестілерге ерекше назар аудару қажет. Шектік шарттар – бұл эквиваленттіліктің кіріс және шығыс топтарының тікелей жоғары немесе төмен шекараларында пайда болатын жағдайлар (яғни эквивалентті бөлудің шекарасына жақын). Жекелеп алғанда эквивалентті тестілердің тобының мысалы квадраттық теңдеуді шешу алгоритмі үшін келесідей кластар болуы мүмкін: нөлден айырмашылығы бар, нақты а, b, с, сандар жиыны, мынадай bb - 4ас < 0; а =0, b және с нөлге тең емес сандар жиыны; b = 0, а және с нөлге тең емес және т.б.
Тестілеу процесінің өзі қадамдық және/немесе монолиттік болуы мүмкін. Екі жағдайда да кемімелі тестілеу стратегиясы қолданылады, - жоғары, бас модульден бастай отырып, кейін келесі модульдерді қоса отырып (заглушка аппараты) және жекелеген модульдерді тестілеуден бстайотырып өспелі тестілеу.
Программаны жөндеу процесінде өрескел күш әдісі қолданылады, яғни барлық программа бойынша аралық деректер тұжырымын пайдалану (трассировка) немесе автоматты құралдарды пайдалану. Мысалы, Турбо-Паскальда программаны автоматты жөндеудің қуатты аппараты бар (DEBUG режимі).
Программистрдің мынадай айқын ережесі бар - өз программаңды, басқалар қалай жазғанын көргің келетіндей түрде құр. Әрбір соңғы программалық өнімге көмек (help) түрінде, (readme.txt) файлдік текст түрінде құжаттамалық сүйемелдеу қажет.
