Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмдеу жане багдарламалау негиздери 4 г.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
2.73 Mб
Скачать

Тақырыбы: Рекурсивті алгоритмдер құрастыру.

Тапсырмалар:

Массивтің ең кіші элементін іздеудің рекурсивті программасын жазу.

Геометриялық прогрессияның n мүшесін есептейтін, алғашқы n мүшесінің қосындысын және і-ден к-ға дейінгі мүшелерінің қосындысын табатын рекурсия программасын жаз.

Фиббоначидың санының ең үлкенін есептейтін рекурсия функциясын жаз.

Массивтің ең кіші элементінің нөмірін анықтайтын рекурсия функциясын жаз.

i-шіден j-дейінгі символдар жолының фрагменті палиндром болып табыла ма. осыны тексеретін рекурсивті программа құру.

әдебиет:

1.Негізгі – 3, 5, 9-12

2. Қосымша - 4

Әдістемелік нұсқау: 1-есептеке тоқталайық.

Program Example_1;

Const n=10;

Type MyArray=Array[1..n] Of Integer;

Const a:MyArray=(4,2,-l,5,2,9,4,8,5,3);

Function min (a,b:Integer):Integer;

Begin

If a>b Then min:=b Else min:=a;

End;

Function p_min(n,b:Integer): Integer;

Begin

If n=2 Then p_min :=rnin (n, a [1] )

Else p_min:=min(a[n],p_min(n-1,a[n]));

End;

Begin

Writeln('Минимальный элемент массива -',p_min(n,a[n]));

End.

2 Мысал:

Program Example_2;

Const k=3;

Var a,b,с: Char;

Procedure Rincr(n: Inteaer; a, b, c: Char);

Begin

If n>0 Then Begin

Ring(n-l,a,c,b);

Writeln('кольцо', n, 'c',a, '—>',b, ' ')

Ring(n-1,c,b,a);

End;

End;

Begin

a:='A'; b:='В'; с:='С';

Ring(k,a,b,с);

Readln

End.

41 жұмыс

Тақырыбы: Мәтіндік режимде экранды басқару. Crt модулін қою.

Тапсырмалар:

Экранның жоғарғы бұрышына екі терезені қой және әрқайсысына 'Терезе 1, 'Терезе 2' деген хабарлама енгіз. Хабарлама 3 минут тұрып экран тазалансын.

Magenta түсімен үлкейтетін (кішкентайдан экранға сәйкес келетіндей үлкейетін) терезе құр. Х-координаты = 3, Y-координаты = 1 қадамда.

Magenta түсімен кішірейтетін (экранға сәйкес үлкеннен кішірейтін) терезе құр.

әдебиет:

1.Негізгі – 3, 5, 9-12

2. Қосымша - 4

Әдістемелік нұсқау:

Енгізілген символдың түсін беретін процедура TextColor(Color:byte), Астардың түсін беру үшін – TextBackGround (Color:byte);

LowVideo, NormVideo, HighVideo-айқындықты басқаратын стандартты функциялар.

1 мысал. Мәтін түсі мен астардың түсін өзгертетін Dem_Crt2 программасы.

program Dem_Crt2;

uses CRT; var I,J: integer;

begin

TextBackGround(1);

ClrScr; {Астарды бояу және тазалау}

TextColor(14); {Мәтін түсін қою}

GoToXY(15,3);

Writeln('Пример окна с изменяющимся цветом фона и текста');

for I:= 0 to 7 do begin

Window(5,5,75,20); {терезені ашу}

TextBackGround(I);

for j :=0 to 15 do begin

ClrScr; {Астарды бою және тазалау}

TextColor(14); GoToXY(25,3);

Writeln('Астар түсі = ',!);

TextColor(j); {Шығару түсін таңдау}

GoToXY(25,7);

Writeln('Цвет текста =',J);

TextColor (14);

GoToXY(15,12);

Write('Жұмысты жалғастыру үшін клавишті басу ');

Write('<Enter>');

Readln;

end;

end ;

end.

2 мысал: Экранға көк түсті астармен біртіндеп үлкейетін терезе шығарып, оған 30 с паузадан кейін кездейсоқ түспен, кездейсоқ координатпен 200 "*" символын шығару керек. Экранның төменгі жағына қызыл түспен символдың координаттары шығып тұру керек. Осыдан кейін терезені қара түсті астар жауып, онда ақшыл-жасыл түспен кездейсоқ символдар шғыуы тиіс. Символдарды шығару кез келген пернені басқанда тоқтау қажет.

program Demo_Crt3;

uses CRT;

var I,XI,Yl,X2,Y2: integer;

begin

TextBackGround(Black) ClrScr;

X1 := 39; Y1:= 12;

X2:= 40; Y2:= 13;

TextBackGround(Blue);

for I:= 0 to 12 do

begin

Window(XI,Yl,X2,Y2);

ClrScr; Delay(100);

X1:= Xl-3; Yl:= Yl-1;

X2:= X2+3; Y2:= Y2+1; Window(1, 1, 80, 25)

end;

Randomize;

for I:=l to 200 do

begin

TextColor(LightCyan);

GoToXY(Random(80),Random (25)); XI:= WhereX;

Yl:= WhereY;

TextColor(Random(15)+Blink); Write('*');

TextColor(LightCyan);

GoToXY(70,25); TextColor(LightRed);

Write(Xl:3,Yl:3); {Нүкте координаттарын жазу)

Delay(30);

end;

Window(50,3,75,15); {Терезені ашу}

TextBackGround(Black)

ClrScr;

TextColor(LightGreen)

repeat {Повторять}

GoToXY(Random(25),Random(14));

Write(Chr(Random(255)));

Delay(20);

until KeyPressed; {Пернені басқанда циклды тоқтату}

TextBackGround(Black); {Қара түсті қою және экранды тазалау)

ClrScr;

end.

42 жұмыс

Тақырыбы: Дыбысты басқару. Әуендер генерациясы.

Тапсырмалар:

1. Дыбыстық эффектілерді ұйымдастыру үшін қандай құрылым пайдаланылады?

2. Қандай стандартты процедурамен тексттік режимді тағайындауға болады?

3. Енгізілген символдардың жыпылықтау эффектісін қалай алуға болады?

4. CRT модулінің Sound, NoSound және Delay стандартты процедураларының қызметін ата.

5. Екі дененің хаосты қозғалысын бейнелейтін программа құр.

Үш рет ДО дан Си-ге дейін ойнайтын, яғни ДО, РЕ, МИ, ФА, СОЛЬ, ЛЯ, СИ ноталарын, сәйкес 262, 294, 330, 349, 392, 440, 494 жиілігін қолданып программа құр.

Үш рет Си дан ДО -ға дейін ойнайтын, яғни ДО, РЕ, МИ, ФА, СОЛЬ, ЛЯ, СИ ноталарын, сәйкес 262, 294, 330, 349, 392, 440, 494 жиілігін қолданып программа құр.

6. Дабылдың дыбысы 500..2000 жиіліктерін тізбектеп қуалаумен және кері 2000-ден 500-ге дейін алынатынын біле отырып, жедел жәрдем машинасы дабылын модельдейтін программа құрыңыз. Әрбір жиіліктің дыбыстау ұзақтығы 1 мс, NoSound тең, end операторымен программаны аяқтар алдында ғана қолдану.

Пернетақтадан символ енгізгенде кездейсоқ дыбыспен сүйемелдейтін программа құр. '!' символы программадан шығуға арналған болсын.

әдебиет:

1.Негізгі – 3, 5, 9-12

2. Қосымша - 4

Әдістемелік нұсқау:

Sound, NoSound Delay, Dec, Inc, Random функциясы, Succ стандартты процедураларына қолданғанда олардың жұмыс жасау ерекшеліктеріне мән бер.

1 мысал. Түрлі дыбыстар шығаратын Dem_Music программасы.

program Dem_Music;

uses Crt;

procedure Bird(KindOfBird : Byte; Duration : Word; Pitch : Integer);

var I, J, К : Integer;

begin

I := 1;

case KindOfBird of

1 : begin

while I < Duration do begin Sound(Pitch + I); Inc(I); end;

NoSound;

end;

2 : begin

J := I + (I div 10) ;

while I < Duration do begin Sound(Pitch + I) ; Inc(I); end;

NoSound;

Delay(100);

while I > J do begin Sound(Pitch + I) ; Dec(I); end;

NoSound;

end;

3: begin

К := 1;

while К < Random(20) + 10 do begin

Sound(Pitch); Delay(30);

Sound(Pitch + (Pitch div 10));

Delay(30); Inc(K);

end ;

NoSound;

end;

4: begin

I := Random(5) + 10; К := Pitch + (Pitch div 10);

while I > 1 do begin

J := Pitch;

while J < К do begin Sound(J); Delay(6); Inc(J, 10); end;

NoSound; Delay(40) ; Dec(I);

end;

end;

end; {Case}

end;

begin

Randomize;

repeat {Повторять, пока не нажата любая клавиша}

Bird(Succ(Random(4)),Random(2000)+300,Random(4000)+ 200) ;

Delay(Random(400) + 20); until KeyPressed; NoSound;

end.

43 жұмыс

Тақырыбы: Графика және қозғалыс.

Тапсырмалар:

Тікбұрышты үшбұрыштан тұратын паркет моделі программасын құрастыр.

Тең қабырғалы үшбұрыштан тұратын паркет моделі программасын құрастыр.

Кез келген сүйір бұрышты үшбұрыштан тұратын паркет моделі программасын құрастыр.

Кез келген үшбұрыштан тұратын паркет моделі программасын құрастыр.

Параллелограммнан тұратын паркет моделі программасын құрастыр.

Ромбыдан тұратын паркет моделі программасын құрастыр.

Трапециядан тұратын паркет моделі программасын құрастыр.

Дұрыс көпбұрыштан тұратын паркет моделі программасын құрастыр.

Дөңес көпбұрыштан тұратын паркет моделі программасын құрастыр.

әдебиет:

1.Негізгі – 3, 5, 9-12

2. Қосымша - 4

Әдістемелік нұсқау:

Графикалық программада басқа программа тәрізді қателер болуы мүмкін. Қате кетпес үшін мына екі функцияны қолдану керек: GraphResult және GraphErrorMsg. GraphResult функциясы возвращает значение 0 мәнін қайтарады, егер соңғы графикалық мән қатесіз орындалса немесе -15...-1 аралығындағы сан болса. CloseGraph процедурасы орындалғанда графика драйверіне бөлінген, шрифтілер файлына және аралық берілгендерге жадыны босатады және жұмыс режимі адаптерін қалпына келтіреді. 1 мысал: Жұлдыз.

Program Example_1;

uses crt, graph;

const p=5;

Var gd,gm,i: integer;

r,r2,al,a2,a3,t: real;

Procedure Ugol(xl,у1,х2,у2,хЗ,y3:real;n:integer);

Var k: integer;

a, Lxl,hx2, hyl, hy2 : real;

Begin

hxl:=(x2-l)/n; hx2: = (x3-x2)/n;

hyl:=(y2-yl)/n; hy2:=(y3-y2)/n;

for k:=0 to n do

line(round(xl + k*hxl),round(yl+k*hyl), round(x2+k*hx2),round(y2+k*hy2)};

End;

Begin

gd:=Detect; InitGraph(gd,gm,'');

r:=180; r2:=60; t:= 200 ;

setcolor(green);

for i:=0 to p-1 do Begin

al:=2*pi*i/p; a2:=al+pi/p; a3:=al-pi/p;

Ugol(t,t,t+r*sin(al),t+r*cos(al),t+r2*sin (a2),

t+r2*cos(a2),25);

Ugol(t,t,t+r*sin(al),t+r*cos(al),t+r2*sin (a3),

t+r2*cos(a3),25);

End;

repeat until keypressed;

CloseGraph;

End.