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

Ноталардың дыбысталу жиілігі

Нота

Үлкен октава

Кіші октава

Бірінші октава

Екінші октава

До

Ре

Ми

Фа

Соль

Ля

Си

130.81 146.83 164.81

174.61

196.00

220.00

246.94

261.63 293.66 329.63

349.23

392.00

440.00

493.88

523.25 587.33 659.26

698.46

784.99

880.00

987.77

1046.50 1174.07 1318.05

1396.09

1568.00

1760.00

1975.00

Sound процедурасында қолданылуы үшін барлық жиіліктер дөңгелектенеді.

1 мысал: қарапайым музыкалық гамманы жүзеге асыратын бағдарламаны қарастырайық.(бірінші октаваның барлық плутон жиіліктері F массивіне жазылған).

Program gamma;

uses Crt;

const F: array [1..12] of real=(130.8, 138.6, 146.8, 155.6, 160.8, 174.6, 185.0, 196.0, 207.7, 220.0, 233.1, 246.9) ;

Temp = 150;

Var К,N : integer;

begin

for K:=0 to 3 do

for N:=l to12 do begin

Sound(Round(F[N]*(1 shl k ))); Delay(Temp); NoSound; end;

for K:=3 downto 0 do

for N:=12 downto 1 do begin

Sound(Round(F[N]*(1 shl k ))); Delay(Temp); NoSound; end;

end.

Осы мысал негізінде сіздің бағдарламаңызды дыбысты шығаруда бағдарлама фрагменті ретінде жасауға болады. Бір октавадан келесі көрші октаваға өткен кезде жиілік екі есе өзгерітініне назар аударыңыз.

2 мысал: дыбыстық эффектілермен шығарылатын ақпараттың шығарылуы таң қалдырады. Ол құрамаларды, хабарламаларды, қателерді құру кезінде қолданылады және т.б. мысалы, экран орталығына құрама элементін

'ЭКСПЕРТТІК ЖҮЙЕ'

Дыбыстық сигнал ретінде шығару керек болсын. Zvuk процедурасында дыбысты генерациялау:

procedure ZvukOut;

var St: string[40]; I: byte;

procedure Zvuk;

begin

Sound(5000) ;

Delay(70);

NoSound

end; {Zvuk}

begin

ClrScr;

St:= 'ЭКСПЕРТТІК ЖҮЙЕ'

GoToXY(18,12);

for I:= 1 to Length(St) do begin Write(St[I]); Zvuk end

end;

Жолды шығаруда немесе кез келген ақпаратты шығару ғана емес, өте күрделі бағдарламалар типін жүзеге асыру керек (мысалы, ойындық): жануарлар айғайы,автомобиль немесе авиациялық двигательдің дыбысы және т.б. Мұндай имитацияларды ұйымдастыруда қандай да бір тәжірибе керек.

әдебиет:

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

2. Қосымша - 4

29 жұмыс

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

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

«GRAPH модулінің процедурасы мен функциясы» кестесін құрыңыз.

Парабол жүйесіндегі муарлық кестелерді модельдеу бағдарламасын құрастырыңыз.

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

берілген функцияның бес графикасын құру бағдарламасын құрыңыз.

z = f(х,у)үшін сызықтар дәрежесін құрыңыз.

Гистограмма және диаграмма құру бағдарламасын жасаңыз.

Жазықтықты екі функция айнымалысы ретінде бейнелеу бағдарламасын құрыңыз.

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

Турбо Паскаль тілінде графикалық бейнелерді құрастыру үшін GRAPH атты арнайы кітапханалық модуль арналған. Онда 79 графикалық процедуралар, функциялар,ондаған стандартты тұрақтылар мен берілгендер типі көрсетілген.

Алдымен графикамен жұмыс істеу үшін мониторға сәйкес видеотәртіпті орнату қажет. Турбо Паскаль фиксальды драйверлер саны бар, олардың әрқайсысы бірден үшке дейінгі тәртіпті қамтиды. Драйвер типі және тәртіп сан ретінде немесе типтің тұрақтысы ретінде берілуі мүмкін.

1 мысал : Муарлық кесте.

Екі топтаманың қиылуының айырылу қиықтарын қарастырайық, онда келесі параметрлерді бөліп қарастыруға болды:

k1, k2 — оң және сол қиықтардың арақашықтығы;

h — ауысу-төмен иілу (жоғары) барлық топтаманың.

Топтама сызықтарын құрастыру этаптары:

1) горизонталды сызықтарды құрастыру графикалық line (0,k,640,k) процедурасымен жүзеге асады;

2) топтаманы п сызықтылардан құрастыру циклде беріледі

for i:=l to n do line(0, i*k, 640, i*k) ;

3) иілмелі топтама у координаты бойынша h қадамды қосумен жүзеге асады:

for i:=l to n do line(0,i*k,640, i*k + h); (h — төмен немесе жоғары ауысу өлшемі);

4) жиырылатын немесе созылатын тік сызықтар k1 және k2 әртүрлілігіне байланысты:

for i:=l to n do line(0,i*kl,640, i*k2 + h) ;

5) сызықтардың келесі тобын осылай құруға болады, бірақ айналық симметриямен:

for i:=l to n do line(0,i*k2+h,640, i*kl);.

Program Example_1;

uses crt, graph;

var gD,gM,i,kl,k2,h: integer;

begin

kl:=8; k2:=3; h:=110; gD:=Detect;

InitGraph(gD,gM,''); setcolor(green);

for i:=l to (480 div kl) do begin

line(0,i*kl,640,i*k2+h); line(0, i*k2+h,640,i*kl);

end;

repeat until keypressed;

CloseGraph;

end.

2 мысал. у = x2sin(l/x)функциясының графигін [а, b] аралығында құрастыру бағадарламасын жасау.

Графикті құру процессін процедура ретінде құрастыруға болады.

Program Example_2;

uses crt, graph;

Var gd,gm, n: integer; a,b: real;

function f(x:real):real;

Begin

if x<>0 then f : =x*x*sin (1/x) ;

End;

Procedure grafun (x0, x1, y0, y1, n: word; a, b:real);

Var h,m,x, tl,t2: real;

i, u,v,xv,yv: word;

Begin

h:=(b-a)/n;

m:=abs(f(a)); {максимумды іздеу Sf(x)S}

for i:=l to n do if m<abs(f(a+i*h)) then m:=abs(f (a+i*h)

tl: = (xl-x0)/ (b-a); t2: = (yl-y0)/(2*m); {координаттық осьтерді құрастыру}

setfillstyle(l,15); bar(x0-5,y0-5,xl+5,yl+5);

xv:=round(x0-a*tl); yv:=round((y0+yl)/2);

setcolor (1); line(xv,y0,xv,yl);

line(x0, yv,xl,yv); {көрсеткішті график басына орналастыру }

Moveto(x0,yv-round(f(a)*t2)); {графикті құру)

setcolor (3);

for i:=l to n do

Begin

x:=a+i*h; u:=x0+round((x-a)*tl); v:=yv-round(f (x)*t2); lineto(u,v)

End;

End; {процедура аяғы}

Begin

clrscr; write('a,b және n енгізіңіз: ');

readln(a,b,n); gd:=Detect;

InitGraph(gd,gm,'');

grafun(100,500,50,300,n,a,b);

grafun(550,620,10,100,200,-0.1,0.1);

repeat until keypressed;

CloseGraph;

End.

Қарастырылып отырған график [а,b] және [—0,1,0,1] екі қиығында берліген. Басқа функцияның графигін құрастыру үшін, оның аналитикалық түрін функцияны анықтау (function f) процедурасымен анықталады.

әдебиет:

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

2. Қосымша - 4

30 жұмыс

Тақырыбы: Мультипликацияны программалау

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

«GRAPH модулінің процедурасы мен функциясы» кестісін құрыңыз.

Парабол жүйесіндегі муарлық кестелерді модельдеу бағдарламасын құрастырыңыз.

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

берілген функцияның бес графикасын құру бағдарламасын құрыңыз.

z = f(х,у) үшін сызықтар дәрежесін құрыңыз.

Гистограмма және диаграмма құру бағдарламасын жасаңыз.

Жазықтықты екі функция айнымалысы ретінде бейнелеу бағдарламасын құрыңыз.

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

Турбо Паскаль тілінде графикалық бейнелерді құрастыру үшін GRAPH атты арнайы кітапханалық модуль арналған. Онда 79 графикалық процедуралар, функциялар, ондаған стандартты тұрақтылар мен берілгендер типі көрсетілген.

Алдымен графикамен жұмыс істеу үшін мониторға сәйкес видеотәртіпті орнату қажет. Турбо Паскаль фиксальды драйверлер саны бар, олардың әрқайсысы бірден үшке дейінгі тәртіпті қамтиды. Драйвер типі және тәртіп сан ретінде немесе типтің тұрақтысы ретінде берілуі мүмкін.

1 мысал : Муарлық кесте.

Екі топтаманың қиылуының айырылу қиықтарын қарастырайық, онда келесі параметрлерді бөліп қарастыруға болды:

k1, k2 — оң және сол қиықтардың арақашықтығы;

h — ауысу-төмен иілу (жоғары) барлық топтаманың.

Топтама сызықтарын құрастыру этаптары:

1) горизонталды сызықтарды құрастыру графикалық line (0,k,640,k) процедурасымен жүзеге асады;

2) топтаманы п сызықтылардан құрастыру циклде беріледі

for i:=l to n do line(0, i*k, 640, i*k) ;

3) иілмелі топтама у координаты бойынша h қадамды қосумен жүзеге асады:

for i:=l to n do line(0,i*k,640, i*k + h); (h — төмен немесе жоғары ауысу өлшемі);

4) жиырылатын немесе созылатын тік сызықтар k1 және k2 әртүрлілігіне байланысты:

for i:=l to n do line(0,i*kl,640, i*k2 + h) ;

5) второе семейство линий можно построить аналогично, но с зеркальной симметрией:

for i:=l to n do line(0,i*k2+h,640, i*kl);.

Program Example_1;

uses crt, graph;

var gD,gM,i,kl,k2,h: integer;

begin

kl:=8; k2:=3; h:=110; gD:=Detect;

InitGraph(gD,gM,''); setcolor(green);

for i:=l to (480 div kl) do begin

line(0,i*kl,640,i*k2+h); line(0, i*k2+h,640,i*kl);

end;

repeat until keypressed;

CloseGraph;

end.

2 мысал. у = x2sin(l/x)функциясының графигін [а, b] аралығында құрастыру бағадарламасын жасау.

Графикті құру процессін процедура ретінде құрастыруға болады.

Program Example_2;

uses crt, graph;

Var gd,gm, n: integer; a,b: real;

function f(x:real):real;

Begin

if x<>0 then f : =x*x*sin (1/x) ;

End;

Procedure grafun (x0, x1, y0, y1, n: word; a, b:real);

Var h,m,x, tl,t2: real;

i, u,v,xv,yv: word;

Begin

h:=(b-a)/n;

m:=abs(f(a)); {Sf(x)S максимумын іздеу}

for i:=l to n do if m<abs(f(a+i*h)) then m:=abs(f (a+i*h)

tl: = (xl-x0)/ (b-a); t2: = (yl-y0)/(2*m); {координатты осьтер құру}

setfillstyle(l,15); bar(x0-5,y0-5,xl+5,yl+5);

xv:=round(x0-a*tl); yv:=round((y0+yl)/2);

setcolor (1); line(xv,y0,xv,yl);

line(x0, yv,xl,yv); {курсорды графиктің басына орнату}

Moveto(x0,yv-round(f(a)*t2)); {график құру)

setcolor (3);

for i:=l to n do

Begin

x:=a+i*h; u:=x0+round((x-a)*tl); v:=yv-round(f (x)*t2); lineto(u,v)

End;

End; {процедураның соңы}

Begin

clrscr; write('a,b және n енгізіңіз: ');

readln(a,b,n); gd:=Detect;

InitGraph(gd,gm,'');

grafun(100,500,50,300,n,a,b);

grafun(550,620,10,100,200,-0.1,0.1);

repeat until keypressed;

CloseGraph;

End.

Қарастырылып отырған график [а,b] және [—0,1,0,1] екі қиығында берліген. Басқа функцияның графигін құрастыру үшін, оның аналитикалық түрін функцияны анықтау (function f) процедурасымен анықталады.

әдебиет:

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

Қосымша – 4