- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
- •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) Тізбектелген, циклдық, тармақталу
- •Мазмұны
- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
7 Дәріс тақырыбы: Рекурсивті алгоритмдер.
Рекурсивті деп өзінің көмегімен анықталатын немесе ішінара тұратын объектіні атайды. Рекурсия тек қана математикада емес күнделікті өмірде де кездеседі. Кім өзінің жеке бейнесі көрсетілген жарнамалық картинканы көрген жоқ?
Математикада рекурсивті анықтау қуатты аппарат болып табылады. Міне, бірнеше жалпыға белгілі мысалдар: натурал сан, ағаш және белгілі бір функциялар.
1. Натурал сандар:
а) 0 наурал сан;
б) натурал саннан кейінгі сан натурал сан болады.
2. Ағаш:
а) 0 ағаш (оны «бос ағаш» деп атайды),
б) егер t1 және t2 — ағаш болса, онда екі төмен орналасқан ағашы бар төбеден тұратын құру да ағаш болады.
3 "Факториал" функциясы п! (теріс емес тұтас сандар үшін):
а) 0! = 1,
б) п >0: п ! = п *(п- 1)!
Рекурсивті анықтаманың қуаттылығы мынада, ол ақырғы айтылымның көмегімен объектілердің ақырсыз жиынын анықтауға мүмкіндік береді. Осыған ұқсас ақырғы рекурсивті программаның көмегімен ақырсыз есептеуді суреттеуге болады, сонымен қатар программада айқын қайталамалар болмайды. Алайда рекурсивті алгоритмдерді өңделетін деректердің құрылымында немесе есептелетін функцияда, шешілетін есепте рекурсия анық бар болған жағдайда қолданған дұрыс. Р рекурсивті программасын жалпы түрде S операторлар жиынының (Р-дан тұрмайтын) және Р-дың өзінің кейбір композициясы ретінде көрсетуге болады:
P=P[S,Р].
Рекурсивті программаларды бейнелеу үшін процедура немесе бағыныңқы программа түсінігінің болуы қажет және жеткілікті, өйткені олар кез келген операторға ат беруге мүмкіндік береді, оның көмегімен оған қатынауға болады. Егер Р кейбір процедурасының өз өзіне айқын сілтемесі болса, онда оны тура рекурсивті деп атайды, егер Р, Р-ға сілтемесі бар (тура және жанама) басқа Q процедурасына сүйенсе, онда Р-ды жанама рекурсивті деп атайды. Сондықтан программаның мәтіні (тексті) бойынша рекурсивтілік барлық уақытта айқын анықталмайды.
Негізінен процедурамен жергілікті (локальды) объектілер жиынын, яғни тек қана осы процедурамен анықталған және одан тыс қолданылмайтын немесе мәні жоқ айнымалылардың, тұрақтының, типтер мен процедуралардың жиынын байланыстырады. Мұндай процедураның әрбір рекурсивті активтенуі кезінде жергілікті байланыстырылған айнымалылардың жаңа жиыны туындайды. Олардың алдыңғы «буынның» төңіректік жиынының сәйкес элементтері сияқты аттары болса да, олардың мәндері соңғысынан ерекше, ал аттар бойынша кез келген қақтығыстар идентификатордың әрекет саласын анықтайтын ережелердің көмегімен шешіледі: идентификатор барлық уақытта айнымалылардың ең соңғы жасалған жиынына жатқызылады. Бұл ереже процедурамен байланысты анықтау бойынша процедуралардың өлшемдері үшін тура болады.
Цикл операторларына ұқсас рекурсивті процедуралар аяқталмайтын есептеулерге жеткізуі мүмкін, сондықтан бұл проблемаға ерекше назар аудару қажет. Жұмыс қай уақытта болса да аяқталуы үшін Р-ға рекурсивті қатынасу қандай да бір уақытта орындалуы тоқтатылатын кейбір В шартымен басқарылуы қажет. Сондықтан рекурсивті алгоритмдердің барынша дәл схемасын келесі формалардың кез келгеніне келтіруге болады:
P=IF B THEN P[S,P],
P= P[S, IF B THEN P].
Кейбір қайталанбалы процестің ақырын дәлелдеудің негізгі тәсілі мынадай:
1. f(x) < 0 – ден циклдың аяқталу шартының ақиқаттығы шығатын (алғы шарты немесе кейінгі шарты бар) f (х) (х —айнымалылар жиыны) функциясы анықталады.
2. Циклдың әрбір өтуі кезінде f (х) азаятыны дәлелденеді.
Осыған ұқсас рекурсияның аяқталуы да дәлелденеді – Р f(x) < 0 –ден ~В шығатын f (х) азайтатыны көрсетіледі. Жекелеп алғанда процедураның аяқталуын қамтамасыз етудің ең сенімді тәсілі – оған кейбір өлшемдер (мән) енгізу, оны п деп атаймыз, және Р-ға рекурсивті қатынау кезінде өлшем ретінде п-1 беру.
Егер бұл жағдайда В ретінде п > 0 қолданылса, онда аяқталуы кепілді. Бұл тағы да екі схемамен бейнеленеді:
Р(п) = IF п > 0 THEN Р [S, Р (п - 1)],
Р(п) = Р [S, IF п > 0 THEN Р (п - 1)].
Практикалық қосымшаларда рекурсияның ең жоғарғы тереңдігі ақырлы ғана емес, сонымен қатар барынша кіші екеніне көз жеткізген дұрыс. Р процедурасын әрбір рекурсивті активтеу оның айнымалыларын орналастыру үшін жады талап етеді. Мұндай төңіректік айнымалылардан басқа Р жаңа активтеуін аяқтағаннан кейін оған қайта оралу мүмкін болуы үшін «есептеулердің ағымдағы жай-күйін» сақтау қажет.
Рекурсивті алгоритмдер өңделетін деректер рекурсия терминдерінде анықталатын есептер үшін ерекше қолайлы. Алайда бұл деректерді мұндай рекурсивті анықтау есептерді шешу үшін рекурсивті алгоритмді сөзсіз қолдануға кепілдік беретінін білдірмейді. Рекурсивті алгоритмдердің тұжырымдамасын бұл үшін қолайсыз мысалдарда шын мәнінде түсіндіру және рекурсияны программалауда қолдануға қарсы кең таралған қате ұғым туғызды; оларды тіпті тиімсіздіктің синониміне айналдырды.
Алгоритмдік п рекурсияға жоламау қажет программаларды олардың құрылымын бейнелейтін бірқатар схемамен сипаттауға болады (ерекшелігі, онда барлық конструкциялардың соңында немесе басында кРв жалғыз қатынасуы бар):
Р= IF В THEN (S; P),
Р = (S; IF В THEN P).
Мұндай схемалар есептелетін мән жай рекурренттік қатынастардың көмегімен анықталатын жағдайларда орынды. Факториалды есептеудің жақсы таныс мысалын алайық
i =0,1,2,3,4,5,...,
fi=1, 1,2,6,24,120,....
Сандардың біріншісі анықталады -fо=1 анық, ал келесісі алдыңғы санның көмегімен рекурсивті түрде анықталады:
Fi+1=(i+1)* f
