Практикум по среде и языку QBasic__________________________151

NEXT 1% 'конец цикла построения меток 1% = 0 'начальная позиция стрелки DEF SEG = &Н40 'выбор сегмента START% = РЕЕК(бНбС) 'чтение счетчика времени DO 'начало цикла вывода

А! = .05236 * 1% 'вычисление значения угла

Х = 320 + 40 * COS (А!) 'абсцисса конца стрелки

У = 240 + 40 * SIN(А!) 'ордината конца стрелки

LINE (270, 190)-(370, 290), 8, BF 'стирание старого изображения

LINE (320, 240)-(Х, Y), 10 'построение нового изображения

1% = 1% + 1 'следующая позиция стрелки

IF 1% > 119 THEN 1% = 0 ' ограничение номера позиции

DO 'начало цикла ожидания

DELTA% = РЕЕК(&Н6С) - START% 'вычисление приращения времени

IF DELTA% < О THEN DELTA% = DELTA% + 256 ' коррекция переполнения

LOOP UNTIL DELTA% >= 2 'конец цикла ожидания START% = РЕЕК(&Н6С) 'чтение счетчика времени LOOP 'конец цикла вывода

Введите эту программу в компьютер и попробуйте запустить ее при различных значениях тактовой частоты (она изменяется при нажатии клавиши Turbo на корпусе компьютера). Для всех компьютеров (по крайней мере начиная с тех, в которых установлен 386 процессор) скорость вращения стрелки должна быть одна и та же (стрелка должна вращаться с периодом чуть больше 13 с). Если вы хотите чтобы скорость вращения стрелки зависела от тактовой частоты, то можете в условии выхода из цикла подставить отрицательное число вместо 2.

Второй пример программирования с учетом реального времени — генерация звуковых сигналов счетчиком, к которому подключен встроенный громкоговоритель. Начнем с простейших примеров в окне Immediate. Стандартная частота настройки 440 гц - нота ЛЯ малой октавы, обозначаемая буквой А. Для проверки нашего понимания получим звук двумя разными процедурами:

SOUND 440,9: PLAY "02 А"

Вследствие совпадения частот мы услышим один звук. Попробуйте заменить номер октавы или обозначение ноты и вы услышите пару различных по высоте звуков. Если в командной строке оставить только обозначение ноты ЛЯ, то второй звук будет на октаву выше первого. Значит по умолчанию процедура PLAY выдает звуки большой октавы, номер которой закодирован цифрой 3.

Эти сведения в сочетании с информацией в неформальном описании языка достаточны для тех, кто знаком с музыкальной грамотой, чтобы написать командную строку по нотной записи мелодии. Если же вам не случилось познать эту премудрость, но вы смогли подобрать мелодию на фортепиано, то запишите командную строку в виде последовательности номеров клавиш (разумеется, номера должны быть записаны цифровыми символами следующими за символом N).

Тем, кто захочет выйти за рамки равномерно темперированного звукоряда, можно поэкспериментировать с процедурой SOUND (в частности вы