- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
- •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) Тізбектелген, циклдық, тармақталу
- •Мазмұны
- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
20 Дәріс тақырыбы: Сызықты іздеу.
Программалауда ең жиі кездесетін амалдардың бірі – іздеу. Ол түрлі деректер құрылымын олардың пайда болуына қарай байқап көруге болатын жан-жақты есеп болып табылады. Осы «тақырыптың» бірнеше негізгі вариациясы бар және олар үшін көптеген түрлі алгоритмдер құрылған. Алға қарай қарау кезінде біз осындай принципті жорамалға сүйенеміз: берілген элементті іздеу қажетті деректер тобы белгіленген. N элементтердің жиыны мынадай а жиымы түрінде берілген деп есептейміз:
ARRAY [0 .. N - 1] OF item;
Әдетте item типі кілттің рөлін атқаратын кейбір өрісі бар жазбаны суреттейді. Есеп кілті х “іздеу аргументіне” тең элементті іздеуден тұрады. Нәтижесінде алынған a \i\.key = х шартын қанағаттандыратын г индексі табылған элементтің басқа өрістеріне қатынауды қамтамасыз етеді. Өйткені бізді бірінші кезекте, анықталған деректер емес, іздеу процесінің өзі қызықтырады, онда біз item типі тек қана кілттен тұрады, яғниол кілт (key) деп есептейтін боламыз.
Егер ізделіп отырған деректер туралы ешқандай қосымша ақпарат болмаса, онда айқын тәсіл – оның қажетті элемент табылмаған бөлігінде қадам сайын көбейте отырып жиымды тізбекті қарау болып табылады. Мұндай әдіс сызықтық іздеу деп аталады. Іздеуді аяқтау шарты мынадай:
1. Элемент табылды, яғни ai = х.
2. Барлық жиым қаралды және сәйкестік анықталған жоқ.
Бұл бізге сызықтық алгоритм береді:
I:=0
WHILE (i < N) and (a[i] # x) DO i := i+1 END,
Логикалық өрнекте элементтердің реті елеулі мәнге ие болатынына назар аударыңыз. Циклдың иварианты, яғни і индексін әрбір арттырудың алдында орындалатын шарт былайша көрсетіледі:
Ол барлық і-ге қарағанда аз к мәндері үшін сәйкестік болған жоқтығын айтады. Осыдан іздеу циклдың басында шарттың жалғандығы жағдайында ғана аяқталатыны анық, нақты шешім шығаруға болады:
((i = N) OR (аi = x)) &
Бұл шарт тек қана қажетті нәтижені көрсетпейді, одан егер элемент табылса, онда ол ең төменгі мүмкін индекспен бірге табылғаны шығады, яғни бұл мұндай элементтердің бірншісі. i = N теңдігі сәйкестік жоқ екенін куәландырады.
Циклдың соңы кепілдендірілгені анық, өйткені әрбір қадам сайын і мәні артып отырады, демек ол N шегі қадамдарының соңғы санына жетеді; іс жүзінде егер сәйкестік болмаса бұл N қадамдарынан кейін болады.
Әрбір қадамда индексті арттыру және логикалық өрнекті есептеу талап етілетіні анық. Ал осы жұмысты ықшамдауға және осылайша іздеуді тездетуге бола ма? Жалғыз ғана мүмкіндік - логикалық өрнектің өзін ықшамдауға тырысу, өйткені ол екі мүшеден тұрады. Демек, барынша қарапайым шешімге келудегі жалғыз ғана мүмкіндік – біздің күрделіге барабар (немесе тең) қарапайым шарт қалыптастыру. Мұны егер сәйкестік барлық уақытта болатынына кепілдік берсек орындауға болады. Бұл үшін жиымның соңына х мәні бар қосымша элемент орналастырса жеткілікті. Мұндай көмекші элементті барьерлер деп атаймыз, өйткені ол бізді жиымнан тыс шығып кетуден қорғайды. Енді жиым былайша суреттелетін болады:
a: ARRAY [0..N] OF INTEGER
және барьерлі сызықтық іздеу алгоритмі мына түрде көрсетіледі:
a[N] := х; i := 0:
WHILE a[i] <> х DO i := i+1;
Осы инварианттан шығарылған нәтижелегіш шарт, бұрынғыша:
i =0 теңдігі сәйкестік болмағанын (егер барьермен сәйкестікті есептемегенде) болмағанын куәландырады.
