- Преподавателю
- Информатика
- Пример использования звуковых процедур в среде программирования ТП
Пример использования звуковых процедур в среде программирования ТП
Раздел | Информатика |
Класс | - |
Тип | Другие методич. материалы |
Автор | Костенко И.И. |
Дата | 14.01.2015 |
Формат | docx |
Изображения | Есть |
Массивы
До сих пор мы рассматривали переменные, которые имели только одно значение, могли содержать в себе только одну величину определенного типа. Исключением являлись лишь строковые переменные, которые представляют собой совокупность данных символьного типа, но и при этом мы говорили о строке, как об отдельной величине.
Массив (ARRAY) объединяет элементы одного типа данных. Индексная переменная, служащая для указания отдельного элемента массива, должна быть простого типа (например, типа Integer). Массивы бывает двух видов:
-
Одномерные.
Массив называется одномерным, если для получения доступа к его элементам достаточно одной индексной переменной. Например, описание типа линейного массива выглядит так:
VAR A (имя массива): ARRAY [0(начальный индекс)..5 (конечный индекс)] Of integer (тип данных);
Примеры описания массивов:
Var
S, BB : Array [1..40] Of Real;
N : Array ['A'..'Z'] Of Integer;
R : Array [-20..20] Of Word;
T : Array [1..40] Of Real;
Теперь переменные S, BB и T представляют собой массивы из сорока вещественных чисел; массив N имеет индексы символьного типа и целочисленные элементы; массив R может хранить в себе 41 число типа Word.
Единственным действием, которое возможно произвести с массивом целиком - присваивание. Для данного примера описания впоследствии допустима следующая запись:
S:=BB;
Однако, присваивать можно только массивы одинаковых типов. Даже массиву T присвоить массив S нельзя, хотя, казалось бы, их описания совпадают, произведены они в различных записях раздела описания.
Никаких других операций с массивами целиком произвести невозможно, но с элементами массивов можно работать точно так же, как с простыми переменными соответствующего типа. Обращение к отдельному элементу массива производится при помощи указания имени всего массива и в квадратных скобках - индекса конкретного элемента. Например:
R[10] - элемент массива R с индексом 10.
Фундаментальное отличие компонента массива от простой переменной состоит в том, что для элемента массива в квадратных скобках может стоять не только непосредственное значение индекса, но и выражение, приводящее к значению индексного типа. Таким образом, реализуется косвенная адресация:
BB[15] - прямая адресация;
BB[K] - косвенная адресация через переменную K, значение которой будет использовано в качестве индекса элемента массива BB.
Такая организация работы с такой структурой данных, как массив, позволяет использовать цикл для заполнения, обработки и распечатки его содержимого.
Если вы помните, с такой формой организации данных мы встречались, когда изучали строковые переменные. Действительно, переменные типа String очень близки по своим свойствам массивам типа Char. Отличия в следующем: строковые переменные можно было вводить с клавиатуры и распечатывать на экране (с обычным массивом это не проходит); длина строковой переменной была ограничена 255 символами (255 B), а для размера массива критическим объемом информации является 64 KB.
При объявлении массива необходимо определить, каким образом производится нумерация элементов, указав начальное и конечное значение для индексной переменной. Тем самым указывается и число элементов в массиве - его размер. Кроме того, необходимо указать имя массива и тип данных элементов массива.
-
Двумерные.
Массив называется двумерным, если для получения доступа к его элементам требуется две и более индексных переменных. Например:
VAR А (имя массива): ARRAY [0..30,0..18] OF char (тип данных);
Обработка одномерного и двумерного массивов ведется при помощи циклического оператора FOR…TO…DO.
Создание простейших мелодий на языке программирования TURBO PASCAL
Один из способов применения одномерных массивов - создание простейших мелодий. Приведем пример программы одной самой широко известной детской мелодии
«КУЗНЕЧИК»:
PROGRAM Music;
USES crt;
CONST freed:ARRAY[0..87] OF word=(440,262,440,262,440,392,392,0,392,262,392,
262,392,440,440,0,440,262,440,262,440,392,392,0,392,262,392,262,392,440,440,0,0,440,524,3,524,524,524,0, 0,524,648,3,648,648,648,0,0, 648,0,524,524,0,440, 0,392,0,440,440,0,0,440,524,3,524,524,524,0,0,524,648,5,648,648,648,0,0,648,0,524,524,0,440,0,392,0,440);
VAR I:byte;
BEGIN
Textbackground(14);
Textcolor(2);
Clrscr;
Gotoxy(37,9);
Write('МЕЛОДИЯ - КУЗНЕЧИК');
FOR I:=0 TO 33 DO
BEGIN
Sound (freed[ I ]);
Delay(17000);
Nosound;
END;
FOR I:=34 TO 87 DO
BEGIN
Sound (freed[ I ]);
Delay(11000);
Nosound;
END;
END.
ПРИМЕЧАНИЕ:
CONST - Постоянная переменная
WORD - Тип данных, длиной в слово
TEXTBACKGROUND - Фон (заливка экрана заданным цветом)
TEXTCOLOR - Цвет символов
CLRSCR - Очистка экрана
GOTOXY - Положение курсора
SOUND - Включить звук
NOSOUND - Выключение звука
DELAY - Задержка дальнейшего выполнения программы
440,262… - Ноты
Ноты:
262 - до
294 - ре
330 - ми
349 - фа
392 - соль
440 - ля
494 - си
524 - до