Программалаудағы рекурсивті әдіс
Дипломдар мен сертификаттарды алып үлгеріңіз!
1 слайд
Программалауда
ғы рекурсивті
әдіс
Программалаудың модульды әдістері есептерді шешуде
маңызды рөл атқарады. Бұл әдістер есепті блоктарға
бөлу арқылы шешуге мүмкіндік береді. Модульды
әдістердің негізгі түрлері - функционалды абстракция,
объектіге-бағытталған программалау және "жоғарыдан-
төмен" әдісі. Бұл презентацияда осы әдістердің
ерекшеліктері мен қолданылуы қарастырылады.
GA
by Gani Abdumalik
1 слайд
Программалауда ғы рекурсивті әдіс Программалаудың модульды әдістері есептерді шешуде маңызды рөл атқарады. Бұл әдістер есепті блоктарға бөлу арқылы шешуге мүмкіндік береді. Модульды әдістердің негізгі түрлері - функционалды абстракция, объектіге-бағытталған программалау және "жоғарыдан- төмен" әдісі. Бұл презентацияда осы әдістердің ерекшеліктері мен қолданылуы қарастырылады. GA by Gani Abdumalik
2 слайд
Функционалды абстракция
Функционалды абстракция - функцияның міндетін оның іске
асырылуынан ажырататын үдеріс. Бұл әдіс ұжымдық жобаларда
маңызды рөл атқарады, себебі жоба қатысушылары басқа
адамдармен құрастырылған функцияны қолдана алады, оның
алгоритміне мән бермей-ақ. Функционалды абстракция модульді
бағдарламалаудың негізгі принциптерінің бірі болып табылады.
Функцияның міндеті
Функцияның не істейтінін анықтау
Іске асырылуы
Функцияның қалай жұмыс істейтінін анықтау
Ұжымдық жұмыс
Басқалардың функцияларын қолдану мүмкіндігі
2 слайд
Функционалды абстракция Функционалды абстракция - функцияның міндетін оның іске асырылуынан ажырататын үдеріс. Бұл әдіс ұжымдық жобаларда маңызды рөл атқарады, себебі жоба қатысушылары басқа адамдармен құрастырылған функцияны қолдана алады, оның алгоритміне мән бермей-ақ. Функционалды абстракция модульді бағдарламалаудың негізгі принциптерінің бірі болып табылады. Функцияның міндеті Функцияның не істейтінін анықтау Іске асырылуы Функцияның қалай жұмыс істейтінін анықтау Ұжымдық жұмыс Басқалардың функцияларын қолдану мүмкіндігі
3 слайд
Объектіге-бағытталған программалау
Объектіге-бағытталған программалау (ОБП) - модульді әдістердің бір түрі. ОБП-ның негізгі
қасиеттері: берілімдер типі объектілер классы ұғымымен алмастырылады, объектілер жүйедегі
атқаратын міндетіне қарай әрекет ете алады, және объектілер жалпы ортада өзара
әрекеттеседі. ОБП-ның артықшылығы - берілімдердің аксиоматикалық анықтамасы және осы
типке жататын объектілермен орындалатын әрекеттер.
Класс
Ортақ типке ие объектілер
жиынтығы
Объект
Класстың данасы
Инкапсуляция
Объектінің ішінде деректер
мен операцияларды біріктіру
3 слайд
Объектіге-бағытталған программалау Объектіге-бағытталған программалау (ОБП) - модульді әдістердің бір түрі. ОБП-ның негізгі қасиеттері: берілімдер типі объектілер классы ұғымымен алмастырылады, объектілер жүйедегі атқаратын міндетіне қарай әрекет ете алады, және объектілер жалпы ортада өзара әрекеттеседі. ОБП-ның артықшылығы - берілімдердің аксиоматикалық анықтамасы және осы типке жататын объектілермен орындалатын әрекеттер. Класс Ортақ типке ие объектілер жиынтығы Объект Класстың данасы Инкапсуляция Объектінің ішінде деректер мен операцияларды біріктіру
4 слайд
"Жоғарыдан-төмен" әдісі
"Жоғарыдан-төмен" әдісі - есептің бөліктерінің тізбектей төмендеуі
негізінде құралған модульді әдіс. Бұл әдіс бойынша, бастапқы есеп
(М1 модулі) кіші модульдерге бөлінеді (М1.1, М1.2, т.б.), ал олар өз
кезегінде одан да кіші модульдерге бөлінуі мүмкін. Бұл әдіс есепті
жүйелі түрде шешуге және күрделі мәселелерді қарапайым
бөліктерге бөлуге мүмкіндік береді.
1
Бастапқы есеп (М1)
Негізгі мәселені анықтау
2
Бірінші деңгей модульдері (М1.1, М1.2, ...)
Есепті негізгі бөліктерге бөлу
3
Екінші деңгей модульдері (М1.1.1, М1.1.2, ...)
Әр бөлікті одан әрі кіші тапсырмаларға бөлу
4 слайд
"Жоғарыдан-төмен" әдісі "Жоғарыдан-төмен" әдісі - есептің бөліктерінің тізбектей төмендеуі негізінде құралған модульді әдіс. Бұл әдіс бойынша, бастапқы есеп (М1 модулі) кіші модульдерге бөлінеді (М1.1, М1.2, т.б.), ал олар өз кезегінде одан да кіші модульдерге бөлінуі мүмкін. Бұл әдіс есепті жүйелі түрде шешуге және күрделі мәселелерді қарапайым бөліктерге бөлуге мүмкіндік береді. 1 Бастапқы есеп (М1) Негізгі мәселені анықтау 2 Бірінші деңгей модульдері (М1.1, М1.2, ...) Есепті негізгі бөліктерге бөлу 3 Екінші деңгей модульдері (М1.1.1, М1.1.2, ...) Әр бөлікті одан әрі кіші тапсырмаларға бөлу
5 слайд
Рекурсия
Рекурсия - математика мен компьютерлік ғылымының фундаментальды
ұғымы. Бағдарламалау тілдерінде рекурсиялы бағдарламалар деп өз-өзін
шағыратын бағдарламаларды айтады. Рекурсиялы бағдарламаның екі негізгі
ерекшелігі бар: өзін-өзі шақыру және аяқталу шарты. Рекурсия екі түрлі
жағдайда орындалуы мүмкін: рекурсиялы шақыру ("күрделі" берілімдер
жағдайы) және рекурсиялы емес шақыру ("қарапайым" берілімдер жағдайы).
Өзін-өзі шақыру
Функция өзін қайта шақырады
Аяқталу шарты
Рекурсияны тоқтататын шарт
Қарапайым жағдай
Рекурсиясыз шешілетін жағдай
5 слайд
Рекурсия Рекурсия - математика мен компьютерлік ғылымының фундаментальды ұғымы. Бағдарламалау тілдерінде рекурсиялы бағдарламалар деп өз-өзін шағыратын бағдарламаларды айтады. Рекурсиялы бағдарламаның екі негізгі ерекшелігі бар: өзін-өзі шақыру және аяқталу шарты. Рекурсия екі түрлі жағдайда орындалуы мүмкін: рекурсиялы шақыру ("күрделі" берілімдер жағдайы) және рекурсиялы емес шақыру ("қарапайым" берілімдер жағдайы). Өзін-өзі шақыру Функция өзін қайта шақырады Аяқталу шарты Рекурсияны тоқтататын шарт Қарапайым жағдай Рекурсиясыз шешілетін жағдай
6 слайд
Рекурсия мысалдары
Рекурсияның классикалық мысалдары - факториалды есептеу және Фибоначчи сандарын табу.
Факториал функциясы: F(n) = n * F(n-1), егер n > 1; F(n) = 1, егер n = 1. Фибоначчи сандары: Ф(n) = Ф(n-2)
+ Ф(n-1), егер n > 2; Ф(n) = 1, егер n = 1,2. Бұл мысалдар рекурсияның қалай жұмыс істейтінін көрсетеді -
функция өзін-өзі шақырады, бірақ әр қадамда есеп қарапайымдалады.
Функция Рекурсивті анықтама Базалық жағдай
Факториал F(n) = n * F(n-1) F(1) = 1
Фибоначчи Ф(n) = Ф(n-2) + Ф(n-1) Ф(1) = Ф(2) = 1
6 слайд
Рекурсия мысалдары Рекурсияның классикалық мысалдары - факториалды есептеу және Фибоначчи сандарын табу. Факториал функциясы: F(n) = n * F(n-1), егер n > 1; F(n) = 1, егер n = 1. Фибоначчи сандары: Ф(n) = Ф(n-2) + Ф(n-1), егер n > 2; Ф(n) = 1, егер n = 1,2. Бұл мысалдар рекурсияның қалай жұмыс істейтінін көрсетеді - функция өзін-өзі шақырады, бірақ әр қадамда есеп қарапайымдалады. Функция Рекурсивті анықтама Базалық жағдай Факториал F(n) = n * F(n-1) F(1) = 1 Фибоначчи Ф(n) = Ф(n-2) + Ф(n-1) Ф(1) = Ф(2) = 1
7 слайд
"Бөліп ал да басқар" әдісі
"Бөліп ал да басқар" (divide and conquer) әдісі - көптеген алгоритмдерде
қолданылатын рекурсиялы тәсіл. Бұл әдіс бойынша, есеп екі немесе одан да көп кіші
бөліктерге бөлінеді, әр бөлік рекурсивті түрде шешіледі, содан кейін нәтижелер
біріктіріледі. Бұл әдістің артықшылығы - күрделі есептерді шешуде тиімділігі.
Алайда, кейбір жағдайларда бұл әдіс көп есептеу ресурстарын қажет етуі мүмкін.
Бөлу
Есепті кіші бөліктерге бөлу
Рекурсия
Әр бөлікті рекурсивті шешу
Біріктіру
Нәтижелерді біріктіру
7 слайд
"Бөліп ал да басқар" әдісі "Бөліп ал да басқар" (divide and conquer) әдісі - көптеген алгоритмдерде қолданылатын рекурсиялы тәсіл. Бұл әдіс бойынша, есеп екі немесе одан да көп кіші бөліктерге бөлінеді, әр бөлік рекурсивті түрде шешіледі, содан кейін нәтижелер біріктіріледі. Бұл әдістің артықшылығы - күрделі есептерді шешуде тиімділігі. Алайда, кейбір жағдайларда бұл әдіс көп есептеу ресурстарын қажет етуі мүмкін. Бөлу Есепті кіші бөліктерге бөлу Рекурсия Әр бөлікті рекурсивті шешу Біріктіру Нәтижелерді біріктіру
8 слайд
Динамикалық бағдарламалау
Динамикалық бағдарламалау - рекурсиялы есептеулерді оңтайландыру әдісі. Бұл әдістің екі түрі
бар: шығыстағы динамикалық бағдарламалау (bottom-up) және төменнен динамикалық
бағдарламалау (top-down). Шығыстағы әдіс функцияның барлық мәндерін ең кішісінен бастап
есептейді және нәтижелерді жадыда сақтайды. Төменнен әдіс рекурсиялы функцияны
қолданады, бірақ есептелген мәндерді сақтайды. Бұл әдістер есептеу уақытын айтарлықтай
азайтуға мүмкіндік береді.
Шығыстағы әдіс
Ең кіші мәннен бастап есептеу
Төменнен әдіс
Рекурсия + нәтижелерді сақтау
Артықшылығы
Есептеу уақытын оңтайландыру
8 слайд
Динамикалық бағдарламалау Динамикалық бағдарламалау - рекурсиялы есептеулерді оңтайландыру әдісі. Бұл әдістің екі түрі бар: шығыстағы динамикалық бағдарламалау (bottom-up) және төменнен динамикалық бағдарламалау (top-down). Шығыстағы әдіс функцияның барлық мәндерін ең кішісінен бастап есептейді және нәтижелерді жадыда сақтайды. Төменнен әдіс рекурсиялы функцияны қолданады, бірақ есептелген мәндерді сақтайды. Бұл әдістер есептеу уақытын айтарлықтай азайтуға мүмкіндік береді. Шығыстағы әдіс Ең кіші мәннен бастап есептеу Төменнен әдіс Рекурсия + нәтижелерді сақтау Артықшылығы Есептеу уақытын оңтайландыру
9 слайд
Рекурсиялы функциялар теориясы
Рекурсиялы функциялар теориясы программалаудың маңызды математикалық негізі болып табылады. Бұл теория
жартылай рекурсивты, примитивті рекурсивты және жалпы рекурсивті функцияларды қарастырады. Жартылай
рекурсивты функциялар примитивті функцияларды қолданады және кейбір аргументтер үшін анықталмауы мүмкін.
Примитивті рекурсивты функциялар қарапайым функцияларға рекурсияны қолдану арқылы алынады. Жалпы
рекурсивті функциялар барлық жерде анықталған жартылай рекурсивты функциялар болып табылады.
1
Жартылай рекурсивты
функциялар
Примитивті функцияларды
қолданады, кейбір аргументтер
үшін анықталмауы мүмкін
2
Примитивті рекурсивты
функциялар
Қарапайым функцияларға
рекурсияны қолдану арқылы
алынады
3
Жалпы рекурсивты
функциялар
Барлық жерде анықталған
жартылай рекурсивты
функциялар
9 слайд
Рекурсиялы функциялар теориясы Рекурсиялы функциялар теориясы программалаудың маңызды математикалық негізі болып табылады. Бұл теория жартылай рекурсивты, примитивті рекурсивты және жалпы рекурсивті функцияларды қарастырады. Жартылай рекурсивты функциялар примитивті функцияларды қолданады және кейбір аргументтер үшін анықталмауы мүмкін. Примитивті рекурсивты функциялар қарапайым функцияларға рекурсияны қолдану арқылы алынады. Жалпы рекурсивті функциялар барлық жерде анықталған жартылай рекурсивты функциялар болып табылады. 1 Жартылай рекурсивты функциялар Примитивті функцияларды қолданады, кейбір аргументтер үшін анықталмауы мүмкін 2 Примитивті рекурсивты функциялар Қарапайым функцияларға рекурсияны қолдану арқылы алынады 3 Жалпы рекурсивты функциялар Барлық жерде анықталған жартылай рекурсивты функциялар
10 слайд
Программалау дағдылары
Программалауда белгілі бір тілді жеткілікті түрде меңгеру үшін бірнеше маңызды аспектілерді білу
қажет. Бұларға алгоритмдер мен берілімдер құрылымын түсіну, программалау парадигмаларын білу,
тілдің синтаксисі мен оның операциялық және дедуктивті жүйесін меңгеру, программалау құралдарын
жасау технологияларын игеру және программалаудың психологиялық аспектілерін түсіну жатады. Бұл
дағдылар программистке тиімді және сапалы код жазуға мүмкіндік береді.
Техникалық дағдылар
Алгоритмдер, берілімдер
құрылымы, программалау
парадигмалары
Құралдар мен тілдер
Программалау тілдері, IDE,
технологиялар
Психологиялық аспектілер
Мәселелерді шешу,
шығармашылық ойлау
10 слайд
Программалау дағдылары Программалауда белгілі бір тілді жеткілікті түрде меңгеру үшін бірнеше маңызды аспектілерді білу қажет. Бұларға алгоритмдер мен берілімдер құрылымын түсіну, программалау парадигмаларын білу, тілдің синтаксисі мен оның операциялық және дедуктивті жүйесін меңгеру, программалау құралдарын жасау технологияларын игеру және программалаудың психологиялық аспектілерін түсіну жатады. Бұл дағдылар программистке тиімді және сапалы код жазуға мүмкіндік береді. Техникалық дағдылар Алгоритмдер, берілімдер құрылымы, программалау парадигмалары Құралдар мен тілдер Программалау тілдері, IDE, технологиялар Психологиялық аспектілер Мәселелерді шешу, шығармашылық ойлау