- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
- •"Алгоритмдеу және бағдарламалау негіздері" пәні бойынша
- •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 Мысал: Күн жүйесінің динамикалық моделі.
Program Example_2;
uses crt, graph;
const pi=3.1415;
Var gD,gM: integer;
fi,h,fil,hl: real;
x0, y0, x,y,r,rl: integer;
Begin
gD:=Detect; InitGraph(gD,gM,' ');
h:=5; hi:=1;fi:=0; fil:=0; r:=20;
rl:=100; circle(320,240,10);
repeat
x0:=round(rl*sin(fil))+320;
y0:=round(rl*cos(fil))+240;
x:=x0+round(r*sin(fi)) ;
y:=y0+round(r*cos(fi));
fi:=fi+2*pi*h/360;
fil:=fil+2*pi*hl/360;
putpixel(x0,y0,15);
putpixel(x,y,15);
delay(50);
putpixel(x,y,0);
putpixel(x0,y0,0);
until keypressed;
CloseGraph;
End.
№44-45 жұмыс
Тақырыбы: Рекурсивті алгоритм және графика
Тапсырмалар:
Төмендегі бейне алатын программа құрастыр.
Төменде 1 және 2 дәрежелі Серпин бейнесі бейнеленген. N-ретті Серпин прокладкасының программасын құрастыр.
Серпиннің 1 және 2-ші дәрежелі кілемшесі бейнеленген. N-ретті Серпин кілемінің программасын құрастыр.
әдебиет:
1.Негізгі – 3, 5, 9-12
2. Қосымша - 4
Әдістемелік нұсқау:
Для того чтобы проследить последовательность рисования окружностей при рекурсивных вызовах, можно дополнительно включить в тело процедуры простой цикл, обеспечивающий некоторую паузу перед выводом на экран очередной окружности.
Изменяя в процессе демонстрации работы программы значения kl, kl, n, можно получать множество привлекательных рисунков.
Пример 1. Написать программу построения изображения, представленного на следующем рисунке:
Анализ изображения: на рисунке большая окружность окружена четырьмя окружностями поменьше, каждая из которых в свою очередь окружена четырьмя окружностями с еще меньшим радиусом. Всего изображено четыре уровня окружностей.
Для того, чтобы составить программу построения этого изображения, можно:
• описать процедуру изображения одной окружности с четырьмя окружностями поменьше;
• для изображения каждой окружности следующего уровня использовать эту же процедуру, только с другими значениями параметров — координат центров, величин радиусов и т. д.
Опишем
алгоритм рисования окружности радиуса
r
с
центром в точке (х,у)
с
четырьмя окружностями вокруг. При этом
необходимо знать расстояния (rl)
от точки (х,у)
до
центров окружностей окружения (радиусы
орбиты), которые, очевидно, равны. Пусть
,
где
r'
— радиус
окружности окружения,
.
Procedure Picturel (x,y,r,rl:Integer);
Begin {изобразить окружность с центром (х,у) и радиусом r} ;
{вычислить rl};
For i:=l To 4 Do
Begin {вычислить координаты центра (xl,yl) i-й окружности};
Picturel(xl,yl,<новое значение r>, rl) ;
End;
End.
Таким образом, в описанной процедуре мы осуществляем вызов ее же самой в сачестве вспомогательной.
Как вычислить значения хl, y1? Они зависят от х и у следующим образом: х1 = х + dx, y1 = у + dy. Необходимо выразить значения приращений координат dx, fy. Воспользуемся определениями тригонометрических функций sin и cos:
dx = r1 • cos(cc)
dy
= r1-sin(a),
где
a =
/2,
,
З
/2,
2
.
Если осуществить вызов этой же процедуры из основной программы с началь-шми параметрами, то рекурсивные вызовы никогда не закончатся и программа зудет работать бесконечно. Для того, чтобы этого не случилось, можно ввести в сачестве аргумента процедуры некоторую величину п, которая при каждом новом зызове процедуры будет уменьшаться на 1, а в тело процедуры включить условие, что его операторы должны выполняться только при п > 0, то есть это условие будет играть роль своеобразной «заглушки», ограничивающей число вызовов процедуры.
Ниже приведена программа, полностью решающая поставленную задачу.
В основной программе запрашиваются радиус r самой большой окружности и гасло уровней п, а также задаются значения коэффициентов k1 и k2. Центр самой эолылой окружности располагается в центре экрана.
Program Example_1;
Uses Graph;
Var x, у, n, r, rl,cd,gm:Integer;
kl,k2:Real;
Procedure Picture2 (x,y,r,rl,n:Integer);
Var xl,yl:Integer;
i:Integer;
Begin
If n>0 Then {"заглушка"} Begin
circle(x,у, r);
rl:=trunc(r*k2);
For i:=l To 4 Do
Begin
xl:=trunc(x+rl*cos(pi/2*i)); yl:=trunc(y+rl*sin(pi/2*i)); {координаты центра i-й окружности}
picture2(xl,yl,trunc (r*kl),rl,n-1);
{вызов процедуры с новыми параметрами}
End;
End;
End;
Begin {задание начальных значений n }
Writeln('Введите число уровней.');
Readln(n); x:=600 Div 2; у:=400 Div 2;
Writeln('Введите радиус первой окружности r'); Readln(r);
kl:=0.3; k2:=2;
cd:=detect; gm:=l; {инициализация графики}
initgraph(cd, gm, 'c:\tp7_0\bin'); picture2(x,y,r,rl, n) ;
Readln; {задержка на экране}
closegraph;
End.
2 мысал. Төмендегі бейне салатын программа жазу.
Program Example_2;
Uses Graph;
Var xc,xa,xb,ya,yb,ус:Integer; {үшбұрыш төбесінің координаттары}
n,cd,gm:Integer;
Procedure Triangle(xa, ya, xb, yb, xc, yc, n:Integer);
Var xp, xq, xr, yp, yq, yr: Integer;
Begin
If n>0 Then {«заглушка»}
Begin
xp:=(xb+xc) div 2;
yp:=(yb+yc) Div 2; xq:=(xa+xc) Div 2; yq:=(ya+yc) Div 2;
xr:=(xb+xa) Div 2; yr:=(yb+ya) Div 2;
line(xp,yp,xq,yq); line(xq,yq,xr,yr);
line(xp,yp,xr,yr);
Triangle(xa,ya,xr,yr,xq,yq,n-1);
Ttriangle(xb,yb,xp,yp,xr,yr,n-1);
Triangle(xc,yc,xq,yq,xp,yp,n-1);
End;
End;
Begin {бастапқы мәндерін беру}
хс:=300; ус:=0; xb:=600; yb:=400; ха:=0; уа:=400; cd:=detect; gm:=l;
initgrciph (cd, gm, ' с: \tp7_0\Bin ') ;
line(xa,ya,xb, yb); line(xb,yb,xc,yc); line(xa,ya,xc,yc);
Triangle(xa,ya,xb,yb,xc,yc,6);
Readln; {экранда кідіру}
Closegraph;
End.
