- •Центр Компьютерного Обучения
- •Подпрограммы: процедуры.
- •1. Структурное программирование и технология нисходящего программирования.
- •2. Подпрограммы в языке Pascal. Понятие «процедура».
- •3. Формальные и фактические параметры.
- •4. Параметры-значения и параметры-переменные (входные и выходные параметры) подпрограмм, механизм передачи параметров (можно перенести на Занятие 2, если не хватит времени).
- •5. Локальные и глобальные переменные, область действия переменных
- •Подпрограммы: функции
- •Функция не имеет выходных параметров, она возвращает единственное значение (результат);
- •Рекурсия
- •Строковый тип данных – String
- •6. Для обработки строковых данных можно использовать стандартные процедуры и функции, описание которых можно найти в [1] или в любом справочнике по Pascal.
- •1. Общие сведения.
- •5. Доступ к компонентам файла.
- •Дополнительно (на усмотрение преподавателя!!!) процедуры Rename и Erase.
- •Текстовые файлы
- •1. Назначение.
- •Типизированные файлы
- •Динамические структуры данных
- •1. Статическая и динамическая память.
- •Распределение памяти.
- •2. Статические и динамические переменные.
- •Статическая переменная:
- •4. Доступ к переменной по указателю.
- •5. Управление динамической памятью (процедуры New и Dispose).
- •Формирование с помощью указателей однонаправленного списка по принципу стека, поиск элемента
- •Однонаправленный список
- •Пояснения к программе
- •Формирование с помощью указателей однонаправленного списка по принципу «очереди», поиск элемента
- •Пояснения к программе
- •Удаление элемента из линейного однонаправленного списка
Центр Компьютерного Обучения
Учебное пособие
«Информатика-Программирование, 2 год обучения (расширенная)»
И-22, II семестр
Литература. 1. В. Б. Попов. Turbo Pascal для школьников.
2. В. П. Леонтьев. Новейшая энциклопедия ПК 2003 г. «ОЛМА ПРЕСС», 2003 г.
3. О. Ефимов, В Морозов, Ю. Шафрин. Курс компьютерной технологии (уч. пособие для старших классов). «Финансы и статистика», 2002 г.
Модуль Graph
Генерация звука в модуле Crt
1. Общие сведения. Для создания звуковых эффектов в Паскале используются стандартные процедуры Sound, NoSound и Delay модуля Crt.
Sound(I:word) – активизирует звуковые средства персонального компьютера. Целочисленное значение I указывает частоту звучания звука в герцах. Звук указанной частоты будет генерироваться до тех пор, пока на будет отменен процедурой NoSound.
NoSound - отмена звука. Отменяет звуковой режим, заданный процедурой Sound.
Для указания времени, в течение которого будет продолжаться звучание, используется процедура Delay.
Пример. Звуковой сигнал с частотой 500 Гц будет звучать в течение 2 с (2000 мс).
Program Primer;
Uses Crt;
Begin
Sound(500);
Delay(2000);
NoSound;
End.
С помощью указанных трёх процедур и операторов цикла можно создать самые разнообразные звуковые эффекты: звучание сирены, метронома, будильника, пение птиц, фрагменты музыкальных произведений и т. д. Звуковым сигналом можно сопровождать вывод информации, например, заставок, подсказок, сообщений об ошибках. Звук можно использовать в качестве дополнительного средства контроля решения задачи на персональном компьютере (сопровождение этапов выполнения программы).
Для создания разнообразных звуковых эффектов используется набор частот или элементы массива, соответствующие нотам различных октав (см. табл.).
Нота |
Большая октава |
Малая октава |
Первая октава |
Вторая октава |
До |
130,81 |
261,63 |
523,25 |
1046,50 |
Ре |
146,83 |
293,66 |
587,33 |
1174,07 |
Ми |
164,81 |
329,63 |
659,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 все указанные в таблице значения частот округляются.
2. Генерация мелодий. Одним из способов построения мелодичных звуковых рядов является использование частот, соответствующих нотам. Частоты загружаются в один массив, продолжительность звучания каждой ноты – в соответствующие элементы другого массива.
Пример
Программа, генерирующая гамму с нарастающей продолжительностью звучания каждой ноты.
Program Gamma; {заголовок программы}
Uses Crt; {подключение модуля Crt}
Const {объявление констант – массивов}
M : Array[1..7] of Integer = (262, 294, 330, 349, 392, 440, 494); {массив нот}
T : Array[1..7] of Integer = (100, 110, 120, 130, 140, 150, 160); {массив длительностей}
Var i:Integer; {объявление переменной}
Begin
While not KeyPressed {пока не нажата любая клавиша,}
Do Begin
For i:=1 to 7 {воспроизводим гамму из семи нот,}
Do Begin {каждая из которых имеет свою}
Sound(M[i]); {длительность}
Delay(T[i]);
NoSound;
End;
End;
End. {конец программы}
Меняя значения элементов массивов М и Т, можно добиться довольно хорошей имитации музыкальных произведений.
Пример
Воспроизведение музыкальной гаммы с полутонами на 4 октавы.
Program Gamma;
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); {массив полутонов для одной октавы}
Temp = 150; {длительность каждой ноты}
Var
i, j : Integer; {объявление переменных – параметров циклов}
Begin {вывод гаммы с нарастающей частотой}
For i:=0 to 3 {i – счетчик октав}
Do For j:=1 to 12 {j – счетчик нот-полутонов}
Do Begin {при переходе от одной октавы к соседней}
Sound(Round(F(j)*(1 shl i))); {частоты изменяются в два раза,}
Delay(Temp); {поэтому исходные частоты самой низкой}
NoSound; {октавы надо умножать на 2 j, а степени}
End; {числа 2 получаются сдвигом 1 влево на j разрядов}
For i:=3 downto 0 {вывод гаммы с убывающей частотой звука}
Do For j:=12 downto 1
Do Begin
Sound(Round(F(j)*(1 shl i)));
Delay(Temp);
NoSound;
End;
End.
Пример
Требуется вывести в центр экрана элемент заставки «Добрый день!» в сопровождении звукового сигнала.
Program ZvukOut; Uses Crt; Var St : string[40]; I : Byte; Begin Clrscr; St:=’Д О Б Р Ы Й Д Е Н Ь ! ! !’; GotoXY(18,12); For I:=1 to Length(St) Do Begin Write(St[I]); Sound(5000); Delay(70); NoSound; End; End. |
{заголовок программы} {подключение модуля Crt} {объявление переменных – строки вывода и} {параметра цикла}
{очистка экрана} {вывод сообщения “Добрый день!”}
{вывод каждого символа строки} {сопровождается звуковым сигналом}
{конец программы} |