Рефераты. Основы программирования на языке Паскаль

const

txt= 'Text';

begin

{-----стандартный вывод в файл------}

Assign (F, “CON”);

Rewrite (F);

N1:=0; {готовим счетчик вывода}

ClrScr; {очищаем экран}

{запоминаем начальный момент:}

t:= Meml [$0040:$006C];

{ждем начало нового 55-миллисекундного интервала, чтобы исключить погрешность в определении времени:}

while Meml [$0040:$006C]=t do;

{цикл вывода за 5 интервалов}

while Meml [$0040:$006C]<t+6 do

begin

inc (N1);

Write (F, txt)

end;

Close (F);

{вывод с помощью быстрой процедуры прямого доступа к экрану}

AssignCRT (F);

Rewrite (F);

N2:=0;

ClrScr;

t:= Meml [$0040:$006C];

while Meml [$0040:$006]=t do;

while Meml [$0040:$006]<t+6 do

begin

inc (N2);

Write (F, txt)

end;

Close (F);

{печатаем результат}

ClrScr;

Writeln (N1, N2:10)

end.

Следует учесть, что вывод на экран обычным образом, без использования файловой переменной (например, оператором Write (txt)), также осуществляется с помощью непосредственного доступа к видеопамяти, поэтому ценность процедуры AssignCRT весьма сомнительна. Прямой доступ к видеопамяти регулируется глобальной логической переменной DirectVideo модуля CRT: если эта переменная имеет значение True, доступ разрешен, если False -- доступ к экрану осуществляется с помощью относительно медленных средств операционной системы MS--DOS. По умолчанию переменная DirectVideo имеет значение True.

11.3. Программирование звукового генератора

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

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

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

Процедура NoSound выключает динамик. Если он к этому моменту не был включен, вызов процедуры игнорируется.

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

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

Для генерации звукового сигнала обычно используется вызов описанных процедур по схеме Sound--Delay--NoSound. следующая программа заставит пк воспроизвести простую музыкальную гамму. Используемый в ней массив F содержит частоты всех полутонов в первой октаве от «до» о «си». При переходе от одной октавы к соседней, частоты изменяются в два раза.

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.

В следующей программе перемножается матрица на вектор, основу которой составляет ранее рассмотренные Program Prim 29 i Prim 29а. Здесь максимальные размеры матрицы - 1010 элементов типа byte. Ввод информации производится в окне светло-бирюзового цвета, вывод результатов - в окне малинового цвета, цвет букв - желтый.

Программа в начале работы издает звуки частотой от 130 до 2130 Гц, затем при вводе величины a - частотой 2000 Гц, b - 1500 Гц длительностью n=100 мс. В конце работы программа издает звуки от 2130 до 130 Гц. Программа использует подпрограмму Wind, написанную на основе Prim 52.

Program Prim53; Uses CRT; var i,j,n,m,k,l:integer; a:array[1..50,1..70] of byte; b:array[1..10] of byte;

c:array[1..10] of longint;

cv:byte;

{$i C:\TURBO\ wind.pas}

BEGIN

Clrscr; {очистить экран }

cv:=11; {цвет 11, светло-бирюзовый}

wind(1,1,50,7); { открыть окно, обращения к процедуре}

Sound(330); { включить звук, частотой 330 гц } Delay(1000); { задержать на 1000 миллисекунд } NoSound; { выключить звук }

writeln ('ввести количество строк и столбцов');

GotoXY(2,3); l:=4; {l устанавливает курсор по y}

readln(n,m);

for i:=1 to n do

for j:=1 to m do

begin GotoXY(2,l);

writeln(' введите a[',i,',',j,'] элемент матрицы а ');

GotoXY(34,l); { перевести курсор в конец текста:}

{ввести a[i,j] - элемент матрицы'}

ClrEol; { удалить конец строки до границы окна}

readln(a[i,j]); { ввести очередное а в конце текста }

end;

L:=L+1;{}

for j:=1 to m do

begin GotoXY(2,l);

writeln(ввести b[',j,'] элемент вектора  b');

GotoXY(33,l);

ClrEol;

readln(b[j]); end;

cv:=5; { фиолетовый цвет для нового окна }

wind(20,2,80,18); GotoXY(2,2); l:=3;

for i:=1 to n do { начало перемножения матрицы на векторы }

begin c[i]:=0;

for j:=1 to m do

c[i]:=c[i]+ a[i,j]*b[j]; end;

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.