Главная Обратная связь

Дисциплины:






Теоретичні відомості. Поряд з процедурами і функціями організації роботи з екраном та клавіатурою модуль Crt включає засоби управління звуком



Поряд з процедурами і функціями організації роботи з екраном та клавіатурою модуль Crt включає засоби управління звуком. В персональних комп’ютерах є можливість генерувати з допомогою вмонтованого динаміка звукові сигнали частотою 37-32767Гц. Відтворюються тільки чисті томи без будь-яких спотворень. Для управління частотою звуку і його тривалістю в Turbo Paskali використовуються стандартні процедури Sound, NoSound i Delay.

Sound(i)-активізує звукові засоби ПЕОМ. Цілочисельне значення і вказує частоту звучання в герцах. Звук вказаної частоти буде генеруватися до тих пір, поки його не відмінять процедурою NoSound. Щоб вказати час, протягом якого буде продовжуватися звучання використовують процедури Delay(N), де N – ціле число мілісекунд.

Приклад.

Sound(600); Deiay(2500); NoSound;

В даному прикладі звуковий сигнал частотою 600 Гц буде звучати протягом 2, 5 секунди (2500мілісекунд).З допомогою процедури Sound, NoSound, Delay і операторів циклу можна створювати самі різноманітні звукові ефекти: звучання сирени, метронома, будильника, спів птаха, фрагменти музичних творів і т.п.

Хід роботи

Завдання 1. Скласти програму для обчислення факторіалу числа F=n! з використанням функції для обчислення факторіалу (n!=1*2*3*...*n).

Program PR8_1;

Var F,n:Integer;

Function Factorial(n:integer):longint;

Begin

if n=1 then Factorial:=1

else Factorial:=n*Factorial(n-1)

End;

Begin

Write ('Введiть N');

ReadLn(n);

F:=Factorial(n);

WriteLn ('F(',n,')=',F);

End.

 

Результати роботи програми:

Введiть N 6

F(6) = 720

 

Завдання 2. Скласти програму для обчислення числа сполук

Розв'язання. Нагадаємо, що Тому необхiдно обчислити факторiал трьох величин n, k i n-k. Очевидно, що обчислення факторiала краще оформити у виглядi пiдпрограми. Пiдпрограму напишемо у виглядi процедури, якiй передаїться натуральне число n i яка повертає його його факторiал у змiннiй f.

Program Spoluka;

Var n,k,f1,f2,f3:integer;

Procedure Factorial(n:integer; Var f:integer);

Var {роздiл опису змiнних процедури}

i: integer;

Begin {початок роздiлу операторiв процедури}

f:=1;

for i:=1 to n do f:=f*i;

End; {кiнець процедури}

Begin {початок основної програми}

WriteLn('Введiть числа n i k ');

Read(n,k);

Factorial(n,f1); {Виконати процедуру}

Factorial(k,f2);

Factorial(n-k,f3);

WriteLn('Число сполук iз ',n,' по ',k,' рiвне ',

f1/(f2*f3):8:2);

End. {кiнець програми}

 

Результати роботи програми:

Введiть числа n i k 2 3

Число сполук iз 2 по 3 рiвне 0.33

Завдання 3. Обчислити з використанням функції для обчислення факторіалу числа.



 

Завдання 4. Знайти найбiльше та найменше значення функцiї , табулюючи її на вiдрiзку [a, b] з кроком h. Розв'язання. Обчислення значень функцiй f вигiдно оформити у виглядi функцiї.

Program MaxMin;

Var a,b,h,x,max,min:real;

Function f(x:real):real;

Begin

f:=Sqr(x)*Cos(Ln(Abs(x)))

End;

Begin

WriteLn('Введiть межi iнтервалу [a,b] i крок h');

Read(a,b,h);

x:=a; min:=f(a); max:=f(a);

while x<=b do

begin

if max then max:=f(x);

if min> f(x) then min:=f(x);

x:=x+h;

end;

WriteLn('f_max=', max:6:3);

WriteLn('f_min=', min:6:3);

End.

 

Результати роботи програми:

Введiть межi iнтервалу [a, b] i крок h 1 10 0.1

f_max= 4.093 f_min=-64.754

Звукові можливості паскаля Модуль Sounds

 

Звукові можливості пк засновані на одноканальному керованому звуковому генератор, що виробляє електромагнітні коливання звукової частоти. Коливанняподаються на вбудований в пк динамік і змушують його звучати.

У модуль CRT включені три процедури, за допомогою яких ви зможете запрограмувати довільну послідовність звуків.

Процедура Sound змушує динамік звучати з потрібною частотою. заголовок процедури Procedure Sound (F: Word); тут F - вираз типу Word, що визначає частоту звуку в герцах. Після звернення до процедури включається динамік, і управління негайно повертається в основну програму, у той час як динамік буде звучати надалі до виклику процедури NoSound.

Процедура NoSound вимикає динамік. Якщо він до цього моменту не був включений, виклик процедури ігнорується.

Процедура Delay oбеспечівает затримку роботи програми на заданий інтервал часу. Заголовок процедури: Procedure Delay (T: Word);

Тут Т - вираз типу Word, що визначає інтервал часу (у мілісекундах), протягом якого затримується виконання наступного оператора програми.

Для генерації звукового сигналу зазвичай використовується виклик описаних процедур за схемою Sound-Delay-NoSound. наступна програма змусить пк відтворити просту музичну гаму. Використовуваний в ній масив F містить частоти всіх півтонів в першій октаві від «до» про «сі». При переході від однієї октави до сусідньої, частоти змінюються у два рази.

 

Завдання 1. Написати програму витягання звуків натисненням на мишку

uses GraphABC, Sounds, Events;

var snd1: integer;

procedure MouseDown(x,y,mb: integer);

begin

Circle(x,y,10);

Circle(x,y,5);

if mb=1 then

begin

RewindSound(snd1);

PlaySound(snd1)

end

else StopSound(snd1);

end;

 

begin

snd1:=LoadSound('kuku.wav');

OnMouseDown:=MouseDown;

end.

 

Завдання 2. Написати програму та описати її можливості

Uses CRT;
const
F: array [1 .. 12] of Real =
(130.8, 138.6, 146.8, 155.6, 164.8, 174.6, 185.0, 196.0, 207.7,
220.0, 233.1, 246.9); {масив частот 1-ї октави}
Temp = 100; {темп виконання}
var
k, n: integer;
begin
{Висхідна гамма}
for k: = 0 to 3 do
for n: = 1 to 12 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.

У персональних комп’ютерів є можливість генерувати звукові сигнали за допомогою вбудованого динаміка з частотою 37—32767 Гц. Гучність звуку не регулюється. Стандартний звуковий сигнал («біп») постійної тривалості (0,25 с) і частоти (800 Гц) викликається сьомим символом (^G) кодової таблиці ASCII. Наприклад:

writeln(‘Помилка в даних’,^G);

writeln(‘Працює процедура’,#7,#7);

writeln(‘Підключен драйвер’,Chr(7), Chr (7));

Для керування частотою звуку і його тривалістю в мові Паскаль використовуються стандартні процедури:

sound(l) — активізує звукові засоби комп’ютера. Ціле значення I вказує частоту звучання звуку в герцах. Звук зазначеної частоти буде генеруватися доти, доки не буде скасований процедурою NoSoud;

NoSound — скасування звуку. Скасовує звуковий режим, заданий процедурою Sound;

Delay(І) — вказує час, упродовж якого лунає сигнал.

Приклад:

Begin

Sound(500);

Delay(2000);

NoSound

End;

У даному прикладі звуковий сигнал частотою 500 Гц буде звучати 2 секунди (2000 мс). За допомогою цих процедур можна створити найрізноманітніші звукові ефекти. Для цього використовується набір частот, що відповідають нотам різних октав:

 

 

Нота, Велика октава, Мала октава, Перша октава, Друга октава

До 130,81 261,63 523,25 1046,50   Ре 146,83 293,66 587,33 1174,07   Мі 164,81 329,63 559,26 1318,05   Фа 174,61 349,23 698,46 1396,09   Соль 196,00 392,00 784,99 1568,00   Ля 220,00 440,00 880,00 1760,00   Сі 246,94 493,88 987,77 1975,00  

Для використання в процедурі Sound усі зазначені в таблиці значення частот округлюються. Приклад, виконання за допомогою вбудованого динаміка дитячої пісеньки «Ялинка» за такою лінійною програмою:

program muzika;

uses crt;

begin

sound(785); delay(10000); nosound;

sound(659); delay(5000); nosound;

sound(659); delay(5000); nosound;

sound(785); delay(10000); nosound;

sound(659); delay(5000); nosound;

sound(659); delay(5000); nosound;

sound(785); delay(5000); nosound;

sound(698); delay(5000); nosound;

sound(659); delay(5000); nosound;

sound(587); delay(5000); nosound;

sound(523); delay(20000); nosound;

sound(785); delay(10000); nosound;

sound(1046); delay(5000); nosound;

sound(880); delay(5000); nosound;

sound(785); delay(10000); nosound;

sound(659); delay(5000); nosound;

sound(659); delay(5000); nosound;

sound(785); delay(5000); nosound;

sound(698); delay(5000); nosound;

sound(659); delay(5000); nosound;

sound(587); delay(5000); nosound;

sound(523); delay(20000); nosound;

end.

Написати висновок та оформити звіт по роботі. Закріпити його скріншотими.

 





sdamzavas.net - 2017 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...