- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
- •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) Тізбектелген, циклдық, тармақталу
- •Мазмұны
- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
2.4. Оқытушы жетекшілігімен жүргізілетін студенттердің өзбетіндік жұмысы
№1 жұмыс
Тақырыбы: Алгоритм қасиеттері.
Тапсырмалар:
Алгоритмдердің барлық қасиеттерін жазып, қысқаша сипаттама беру.
Алгоритмдердің негізгі түрлерін атап, әр түріне өмірден мысал келтіру.
Картопты тазалаушыға командалар жүйесін ойлап шығару.
Төмендегі тізбектерде әр келесі элемент қатаң алгоритммен алынған. Алгоритмді тауып, қатарды жалғастыру:
а, в, д, ё, з, й;
1, 2, 4, 8, 16, 32;
1, 4, 9, 16, 25;
1, 1, 2, 3, 5, 8, 13, 21, 34;
1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1;
победа, обеда, беда, еда;
о, д, т, ч, п, ш, с, в, д, д.
5. Қара жәшіктің жұмыс алгоритмін табу.
Сөз алгоритмдерінде орыс алфавиті "ё" әрпісіз, яғни 32 әріп қолданылатынын есепке алу керек.
1-мысал.
Кіріс |
А |
1 |
3 |
7 |
5 |
Шығыс |
Не могу |
2 |
4 |
8 |
6 |
Кіріс |
16 |
23 |
34 |
42 |
57 |
Шығыс |
15 |
22 |
35 |
41 |
58 |
2-мысал.
Кіріс |
Пар |
Коля |
Кркркркрк |
Ru |
Тrue |
Шығыс |
3 |
4 |
9 |
2 |
4 |
3-мысал.
Кіріс |
23 |
5 |
12 |
21 |
132 |
56 |
9 |
20 |
100 |
24 |
Шығыс |
47 |
11 |
25 |
43 |
265 |
113 |
19 |
41 |
201 |
49 |
4-шығыс.
Кіріс |
23 |
5 |
12 |
21 |
132 |
56 |
9 |
20 |
100 |
24 |
Шығыс |
45 |
9 |
23 |
41 |
263 |
111 |
17 |
39 |
199 |
47 |
5-мысал.
Кіріс |
Корона |
Село |
Винт |
Молоко |
Революция |
Шығыс |
2 |
1 |
0 |
3 |
1 |
Әдістемелік нұсқау:
Қара жәшік деп құрылғысы мен алгоритмі белгісіз объект қарастырылады. Оның алгоритмін түсіну үшін бірнеше тәжірибе жасау – кіріске ақпарат беріп, оның өңделген шығысын зерттеу керек. Бірнеше тәжірибе негізінде қара жәшіктің жұмысы алгоритмі туралы гипотеза шығаруға болады. Гипотезаны жаңа тәжірибелермен тексеріп, бекіту керек. Олар ұзақ немесе әртүрлі болуына байланысты гипотеза не бекітіледі, не бекітілмейді.
Мысалы, бүтін сандармен, орыс және латын әріптерімен және алфавиттегі әріп орындарымен бірнеше ондық алгоритмдер жасайтын Орындаушы бар делік. Алдымен алгоритм номері таңдалады. Содан кейін экспериментатор Орындашыға бірнеше кіріс ақпаратын беріп, оның жұмыс алгоритмін тануға тырысады.
Орындаушы тәжірибе аяқталғаннан кейін шығыс ақпаратын немесе екі хабардың бірін береді.
Түсінбеймін – егер кіріске басқа типті ақпарат берілсе (мысалы, кіріске әріптер беріліп, алгоритм сандарды өңдейтін не керісінше болса).
Мүмкін емес – егер Орындаушы берілген ақпаратпен алгоритмді орындау алмаса (мысалы, Орындаушы санды 2-ге бөлетін болып, ал оған 3 саны берілсе, өйткені алгоритм тек оң бүтін сандармен жұмыс жасайды).
әдебиет:
Негізгі – 1, 4, 8-9
Қосымша - 4
№2 жұмыс
Тақырыбы: Қадамдық құрылымы.
Тапсырмалар:
Берілген тақырыптың негізгі түсініктерін жазу.
Бағдарламаның әр қасиетіне қысқаша сипаттама беру (дұрыстығы, сенімділігі, оқымдылығы, пайдалылығы, әмбебаптылығы, тасымалданушылығы).
Сұрақтарға жауап беру:
Есепті қалай өрнектеу керек?
Алгортим құрғанда неге назар аудару қажет?
Есепті бөлшектенудің әр қадамында қарастыру.
1-мысал: Нүктенің бірқалыпты айнымадлы қозғалысындағы t жылдамдықты, s жолын анықтау программасын құру.
Жылдамдық пен жолды есептеудің жоғарыда келтірілген құрылымын қарастырайық. Табу керек:
1. Қандай объектілер белгілі.
2. Олардың арақатынасы қандай.
3. Олармен қандай әрекет жасауға болады.
4. Не табу керек.
Жауаптары:
1. 0 — бастапқы уақыт мезетіндегі жылдамдық (t= 0), а — қозғалушы нүктенің үдеуі және t —уақыт.
2. t — t мезетіндегі жылдамдық және s — t уақытта жүрген жол, vt = v0 + at и s = v0t + at2/2 өрнегімен беріледі.
3. Арифметикалық.
4. t және s.
Алгоритм құру кезінде:
1.Қолданылатын объектілерді анықтау (0, а, t, t, , s ).
2. Оларды бастапқы, қосымша (ағымдық, аралық) және ізделінді деп топтау керек. (0, а, t- бастапқы, t – қосымша шама бола алады, t және s –ізделінді шамалар).
3. Бастапқы объектілерге мән беріледі: (0 = 7 м/с, а =0.6 м/с2, t = 10 с).
4. Ізделінді нәтижеге жетелейтін әрекеттер тізімін көрсету (vt = v0 + at, s = vQt + at'2/2).
Алдымен «ірі» командалардың алгоритмін құру керек (бұл жерде Орындаушының мүмкіндігінен тыс командалар болуы мүмкін):
алгоритм Жылдамдық және жол
деректерді жариялау
басы
енгізу бастапқы деректер
шығару есептің тақырыбы және бастапқы деректер
жылдамдықты есептеу
жолды есептеу
шығару шығыс деректерінің тақырыбы және нәтижелері
соңы
Бөлшектеудің екінші қадамынан кейін жобаның жаңа нақты түрін келтіреді:
алгоритм Жылдамдық және жол
заттық айнымалылар
басы
енгізу 0, a, t
шығару жылдамдық пен жүрген жолды есептеу
бастапқы деректер:
0 = 7 а = 0.6 t = 10
t 0 + at
s 0 t + at2/2
шығару Жауабы:
жылдамдық = цц.ц
жол= ццц.ц
соңы
жолды табудың нәтижелі алгоритмін құруға болады. Қазір 0 t + at2/2 мәнін есептеу сегіз операциямен жүргізіледі. Олаордың санын (0 + vt) t/2 түрінде жазып, екі есе кемітеміз. Және бөлу операциясын көбейту оперциясымен алмастырып, жол (vo + vt)t х 0.5 болатынын аламыз.
2-мысал. h сағат, m минут, s секундта ұшып, ауада t секунд болған ұшақтың қону уақытын анықтау. Келесі тәулікке өту мүмкіндігін ескеру қажет. (сағат, минут, секунд)
3-мысал. Екі күн арасындағы уақытты анықтау) мысалы, 1969 жылдың 1-қарашасы мен 2069 жылдың 1-қарашасы арасындағы күнді).
Әдістемелік нұсқау:
Алгоритм құру шығармашылық жұмыс болып табылады және эрудицияны қажет етеді. Программалау – нәтижесі белгілі бір бағытқа бағытталған нақты жауап болатын құрылымдық процесс.
Жобаны жасақтау кезінде қадамдық бөлшектеу әдісі қолданылады. Алгоритм әруақытты жетілдіріліп отыратын объект болып қарастырылады: бастапқы түрінен (қысқа болатын) тізбектік өзгертулер арқылы жоғарыда аталған қасиеттерге сай түрге өтеді.
Келесі екінші қадамда алгоритмнің жеке бөліктерін нақтылайды: «деректерді нұсқау» орнына айнымалыларды жазады, бұндағы айнымалылар тізімі анықталмаған; енгізу командасын нақтылайды, сәйкесінше бекіту және шығару командаларын жазады.
Бөлшектеудің үшінші қадамында айнымалыларды атайды. Орындаушыға түсінікті командалардан тұратын алгоритм аламыз.
Сонымен, кез келген, тіпті қарапайым есепті шешу үшін оны абстракция деңгейлеріне, яғни «логикалық қабаттарға» бөлуді және тізбектік жаңарту әдісін қолдануды
әдебиет:
1. Негізгі – 1-2, 6
2. Қосымша – 3
№3 жұмыс
Тақырыбы: Ішкі ақпаратты тасушы берілгендер түрі. Кодтау. Программаны орындау.
Тапсырмалар:
№3 дәріспен танысу. Берліген есепті шешудің әр қадамына мысал келтіру.
Интерпретатор мен транслятор арасында параллель жүргізу.
Тексеру (отладка) дегеніміз не және ол не үшін қажет?
Енгізу/шығарудың қандай форматтары бар?
Мысал: Нүкте бірқалыпты айнымалы қозғалғандағы t жылдамдық пен s жолды анықтау программасын есепті қадамдап шығару бойынша құру(СРСП №2).
1 қадам. Есептің қойылымы.
Берілгені: 0 — бастапқы жылдамдық(t= 0), а — қозғалушы нүктенің үдеуі және t — уақыт. Ізделінді нәтиже t — t мезетіндегі жылдамдық және s — t уақытта жүрген жол.
2 қадам. Математикалық модель құру.
Бастапқы деректер мен нәтиженің арақатынасы vt = v0 + at және s = v0t + at2/2.
3 қадам. Алгоритм құрылымы
алгоритм Жылдамдық және жол
заттық айнымалылар
басы
шығару 0, a, t
шығару Жылдамдық пен жүрген жолды есептеу
Бастапқы деректер
0 = 7 а = 0.6 t = 10
t 0 + at
s 0 t + at2/2
шығару Жауабы:
жылдамдық = цц.ц
жол= ццц.ц
соңы
4 қадам. Жобаны тексеру
өрнегін
өрнегіне қоямыз, сонда
,
ол бірқалыпты айнымалы қозғалыс кезінде
нүктесі жүріп өтетін
жолды есептейді. Есепке ыңғайлы
кейбір
мәндерінде алгоритм жұмысын
кезінде бақылауға болады (сонда
,
)
(мысалы,
,
онда
,
).
Ерекше жағдай:
.
Есепте
берілген мәндермен де тексеруге болады:
(онда
,
).
5 қадам. Кодтау – алгоритмды программалау тілінде жазу.
Program Fizika;
Var 0, a, t, t, s:real;
Begin
Writeln(‘Бастапқы деректерді енгізіңіз’);
Readln(0, a, t);
t :=0 + a*t;
s:=0* t + a*sqr(t)/2;
writeln(‘жылдамдық=’, t:5:3, ‘қашықтық=’, s:5:3);
end.
6 қадам. Программаны орындау.
turbo.exe файлы қосылады. Мәзірді F10 немесе Alt+мәзірдің ерекше әрпі арқылы қолдануға болады. Мәзірден шығып, редактор терезесіне өту үшін Esc пернесі қолданылады. Ең қажетті командалар: түзетілген мәтіндік файлды сақтау (үнсіз келісім бойынша.pas) - F2; файлды редактор терезесіне шығару- F3; қарапайым программаны тексеру - Alt+F9 немесе F9; программаны жүргізу - Ctrl+F9; программа нәтижесін экранда көру - Alt+F5 (IDE экранға қайтару үшін кез келген символдық перне); қадамдық жүру - F7 немесе F8; айнымалы атын ағымдық мәнін көру терезесіне енгізу - Ctrl+F7 (бұл терезе редактор терезесін жаппау үшін Window пунктінен Cascade таңдауға болады); IDE-ден шығу - Alt+X.
Әдістемелік нұсқау:
IDE қосылғанна кейін экранда мәзір мен мәтін редакторы терезесі пайда болады. Жиі қолданылатын командалар орнына пернелер жиынтығын қолдануға болады.
Файл атын өзгерту үшін FileSave_as қолданылады.
IDE өзгертулерін басқа қолданушыларға кедергі келтірмес үшін өз каталогында сақтау керек. Ол үшін алғашқы сақтау кезінде OptionsSave_as, ал келесі жолы OptionsSave қолдану керек.
Программалар мысалдарын қолдану үшін оларды IDE буфері арқылы көшіру қажет. Ол үшін мысалды ерекшелеп (Shift+ немесе Shift+Page_Down), буферге көшіріп(Ctrl+Insert), өз терезеңізге өтіп (F6), буферден қою (Shift+Insert) және блок түсін өзгерту (Ctrl+K,H) керек.
әдебиет:
1. Негізгі – 1,2 6
2. Қосымша – 3
№4 жұмыс
Тақырыбы: Шартты циклдер. Алғышартты және соңғышартты цикл.
Тапсырмалар:
№4 дәріс мазмұнымен танысу.
Алғышартты және соңғышартты циклдар арасынан параллель жүргізу.
Соңы 0 болатын натурал сандардың бос емес тізбегі берілген. Осы тізбектегі ең кіші элементтің нөмірін анықтайтын программа құру.
Екі теріс емес санның ең үлкен ортақ бөлгішін (ЕҮОБ) табу программасын құру.
Берілген натурал сан полиндром болатынын, яғни ондық жазбасы оңнан солға және солдан оңға бірдей оқылатын тексеретін программа құру.
5-тен үлкен бүтін сандардың қосындысын табу.
Бүтін сан цифрларының үлкенін табу.
Алғышартты циклдың кез келген операторын шартты оператор және соңғышартты оператордың көмегімен жазуға болатыны көрсету.
1-мысал. Алғышартты цикл. П натурал саны берілген. Берілген санның цифрлар санын есепеңіз.
Шешуі. Цифрлар санын есептеуді санның соңынан бастаймыз. Цифр есептегішін бірге арттырамыз. Санды 10-ға бөлу арқылы санның соңғы цифрынан арыламыз, кейін алынған сағы осы әрекет тізбегін сан нөлге тең болғанға дейін қайталаймыз.
Program Example;
Var m, n: Longint;
k: Integer; { цифр есептегіші}
Begin
Writeln('Бүтін сан енгізіңіз'); { n бүтін санын енгіземіз}
Readln(n);
m:=n;
k:=0;
While m<>0 Do {m<> 0 болғанда орындалады (Do)}
Begin
Inc(k); {немесе k:=k+l;}
m:=m Div 10; {санның соңғы цифрын азайтамыз}
End;
Writeln('В числе',n,' - ',k,' цифр !'); {цифрлар санын шығару} Readln;
End.
Программа барысы
Программаны 65387 саны үшін қадамдап қарастырайық, программа нәтижесінде экранда келесі сөйлем шығады:
