ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 31.03.2021
Просмотров: 6815
Скачиваний: 51
291
20 INPUT "введите отрезок a,b"; a, b
30 DEF fna (x) = SIN(x)
40 max = fna (a)
50 h = (b - a) / 100
60 FOR x
= a
TO b STEP h
70 IF max < fna(x) THEN max = fna(x)
80 NEXT x
85 CLS
90 PRINT "максимальное значение функции на отрезке ["; а;
","; Ь; "]="; max
100 END
Здесь в строке 10 - неисполнимый комментарий (который можно организовать и иначе - см.
первые строки последующих программ), в строке 85 - команда очистки экрана, в строке 100 - ко-
манда «конец программы» (которую часто можно не писать без каких-либо видимых последст-
вий).
Приведем примеры еще нескольких программ на Бейсике, являющихся аналогами про-
грамм из §3.
В следующем примере развилка организована с помощью сочетания операторов IF...THEN
и GOTO. В современных версиях Бейсика есть конструкция IF...THEN...ELSE; при ее использова-
нии программа 56 станет еще больше похожей на программу 1 (sqr(x) - корень квадратный).
Программа 56 (см. программу 1)
10 REM Квадратное уравнение
20 CLS
30 INPUT "введите коэффициенты А,В,С"; а, Ь, с
40 d
= Ъ*Ь -
4*а*с
50 IF d < 0 THEN GOTO 80
60 xl = (-b + sqr(d)) / (2 * a): x2
=
(-b - sqr(d)) / (2 * ay
70 PRINT "корни уравнения xl="; xl; "x2="; х2
80 GOTO 100
90 PRINT "корней нет"
100 END
В следующем примере цикл (с предусловием) организован с помощью операторов
IF...THEN и GOTO.
Программа 57
(см. программу 5).
10 REM Машины, прибывающие на склад
20 CLS
30 num = 0: sum
= О
40 IF sum >= 100 THEN GOTO 110
50 INPUT "Введите вес груза очередной машины"; w
60 sinn = sum + w
70 IF sum >= 100 THEN GOTO 90
80 num = num + 1: GOTO 90
90 PRINT "груз уже не поместится"
100 GOTO 40
110 PRINT "Количество разгруженных машин =", num
120 END
В программе 58 исходная последовательность задается в блоке данных (строка 30), а затем
считывается в массив а. Отсутствие в Бейсике логических переменных преодолено с помощью
текстовой переменной р. При выдаче результатов используется форматная печать PRINT USING
(для дробных чисел форматы могли бы быть, например, ###.## - выдаст результат типа 345.98,
##.##
лллл
- выдаст результат типа 34.17Е-02). В 20-й строке оператор DIM резервирует память под
массив (аналог паскалевского описания array, но без явного указания типа элементов).
Программа 58
(см. программу 10).
10 REM bubble (пузырек)
20 DIM a(10)
30 DATA 19, 8, 17, 6, 15, 4, 13, 2, 11, 0
292
40 CLS
50 PRINT "Исходный массив"
60 FOR i
=
1 TO 10 STEP 1
70 READ a(i)
80 PRINT USING "»#»#"; a(i);
90 NEXT i
100 PRINT
110 p$ = "да"
120 FOR i = 10 TO 2 STEP -1
130 IF a(i) >= a(i-l) THEN GOTO 150
140 b = a(i): a(i) = a(i-l): a(i-l) = Ь: р$ = "нет"
150 NEXT i
160 IF p$ = "нет" GOTO 110
170 PRINT "Упорядоченный массив"
180 FOR i = 1 TO 10
190 PRINT USING "####"; a(i);
200 NEXT i
210 END
Контрольные вопросы ч задания
1. Назовите основные операторы языка Бейсик и охарактеризуйте их назначение.
2. Поэкспрементируйте в приведенных выше программах с оператором форматной печати.
5.3. МУЗЫКАЛЬНЫЕ ВОЗМОЖНОСТИ
В ряд версий Бейсика встроен специальный подъязык, который позволяет программировать
музыку. Это делается без труда командой PLAY. В команде указывается строковое выражение,
составленное из символов, кодирующих ноты.
Общий формат команды PLAY таков:
PLAY AS, B$, CS,
где AS, BS, CS - строки символов, число которых не превышает числа параллельных звуко-
вых каналов в системе. Каждый символ - команда специального языка, задающая ноту, длитель-
ность и громкость звучания, другие параметры. Следующие латинские буквы соответствуют ос-
новным нотам:
с - «до»,
d - «ре»,
е - «ми»,
f - «фа»,
g - «соль»,
а - «ля»,
b - «си»
Например,команда
PLAY
"cdefgab"
осуществляет музыкальное исполнение гаммы (до-ре-ми-фа-соль-ля-си) четвертой октавы с
длительностью 1/4 ноты (устанавливаемой, при отсутствии явных указаний, «по умолчанию»).
Нота может звучать на полтона выше (бемоль - знак «минус») или ниже (диез -знак «плюс»,
либо #). Высота звучания нотьГопределяется октавой. Октава кодируется символом с номером On.
помещаемым перед нотой или группой последующих нот. Принято кодировать октавы по порядку
с единицы в соответствии с фортепианным рядом, первая октава (01) - контроктава, вторая октава
(02) - большая октава, третья октава (03) - малая октава, четвертая октава (04) - первая октава, пя-
тая октава (05) - вторая октава и т.д. Например, команда
PLAY "оЗ а а а"
293
проигрывает три ноты ля-ля-ля в малой октаве.
Длительность звучания ноты измеряется в специальных единицах - одна целая нота (произ-
несите четко «раз-и. два-и, три-и, четыре-и», тогда время, затраченное на эту фразу, приблизи-
тельно соответствует длительности одной ноты). Выделяют длительность в полноты (1/2 ноты),
четверть, одну восьмую, одну шестнадцатую и т.д. - вплоть до одна шестьдесят четвертая. Дли-
тельность звучания в программе устанавливают командой Ln (n = 1, 2, ... 64), включаемой в сим-
вольную последовательность, либо непосредственно в самих командах установки нот. Например,
PLAY"C8D2L16fbe"
означает звучание ноты «до» длительностью в одну восьмую ноты, «ре» - в одну вторую, а
ноты фа-си-ми звучат длительностью в одн\ шестнадцатую ноты. Аналогичную размерность имеет
пауза, обозначаемая Rn или Рп.
Уровень громкости может быть установлен командой Vn, предшествующей ноте (n = 0, 1,...
15); по умолчанию n = 8 - «средняя» громкость.
Ниже приведен пример кодирования музыкального произведения.
Программа 59
*********** рпезы Шумана **************
10 DATA c8, f2f8, e8, f8, a8, o5c8, f8f2
20 DATA e8, d8, c8, f8, o4g8, a8, b-8, o5d8, o4f8, g8,a8
30 DATA o5c8, o4g2, c4, f2f8, e8, f8, a8, o5c8, a8a4a8
40 DATA g8, f8, d8, c8, f8, o4, g8, a8. b-8, o5, d8, o4, g8, a8, b-8
50 DATA o5d8, o4-d8, e8, f2
60 FOR i = 1 TO 46
70 READ f$
80 PLAY f$
90 NEXT i
Использование функции считывания п символов нажатых клавиш INPUTS(n) позволяет ис-
пользовать клавиатуру как музыкальный инструмент.
Программа 60
5 ******* компьютер - простейший музыкальный инструмент *******
10 f$ = INPUT$(1)
20 PLAY f$
30 GOTO 10
Контрольные вопросы и задания
1. Составьте программу, исполняющую первые такты полонеза Огинского.
2. Разработайте компьютерный вариант популярной игры «Угадай мелодию».
5.4. ГРАФИЧЕСКИЕ ВОЗМОЖНОСТИ
Для получения графических образов необходимо задать графический экран (например,
SCREEN 9) и масштаб или окно экрана WINDOW (х1,у1) - (х2,у2). Здесь (х1,у1), (х2,у2) - коорди-
наты угловых точек экрана, расположенных на диагонали. Если ограничиться этим, то цвет фона
будет черным. Для задания фона другого цвета используется оператор COLOR zl, z2, где zl- цвет
текста, z2- цвет фона. Например, зададим графический экран, с размерами по горизонтали и по
вертикали, соответственно 32 и 24 единицы, с началом координат в центре экрана. Цвет фона- си-
ний (z2=l), а цвет надписей -желтый (zl=14).
10 *********** иыгтый лист
*********************
20 SCREEN 9
30 WINDOW (-16,-12)-(16, 12)
294
40 COLOR 14,1
Изображение точки с координатами (х,у) и заданным цветом осуществляется командой
PSET(x,y),z. Здесь z - номер цвета. Точку на бумаге можно изобразить маленьким кружком. Ино-
гда, когда требуется изображение точки покрупнее, буквально рисуют кружок и закрашивают его
В этой связи, изображение точки на экране дисплея можно создавать, выводя образ окружности и
закрашивая ее в тот или иной цвет. Для создания окружности используется оператор CIRCLE
(\,y),r,z, где х,у - координаты центра окружности, г - радикс окружности, z - номер цвета окружно-
сти. Закрашивают окружность оператором PAINT (x,y),zl,z , где zl - номер цвета которым закра-
шивают, z - номер цвета окружности.
Пример.
При запуске программы на экране появятся 4 «точки» в )гла\ квадрата 10*10, ок-
рашенные в зеленый цвет (10), и пятая «точка» красного цвета (12) вдвое большего размера в цен-
тре экрана Их границы окрашены в белый цвет (15).
Программа 61
10 '**************** Точки *********************
20 SCREEN 9
30 WINDOW (-16,-12) - (16,12)
40 COLOR 14, 1
50 '********** изображение точек *********************
60 CIRCLE (-5, -5). .25, 15 : PAINT (-5, -5), 10, 15
70 CIRCLE (-5, 5), .25, 15 : PAINT (-5, 5), 10, 15
80 CIRCLE (5, 5), .25, 15 : PAINT (5, 5), 10, 15
90 CIRCLE (5, -5), .25, 15 : PAINT (5, -5), 10, 15
100 CIRCLE (0, 0), .5, 15 : PAINT (0, 0), 12, 15
Допустим, что в компьютерной демонстрации надо обратить внимание на какую-либо точ-
ку графического образа. В этом сл>чае точку делают мигающей. Для этого меняют с определен-
ной частотой ее цвет.
Программа 62
10 '*************** чистый лист **********************
20 SCREEN 9
30 WINDOW (-16, -12) - (16, 12)
40 COLOR 14, 1
50 '*************** мигающая точка *******************
60 FOR 1=1 TO 5
70 CIRCLE (0. 0), .5, 15 : PAINT (0, 0), 14, 15 : DELAY .2
80 'FOR k=l TO 200 : NEXT k
90 CIRCLE (0, 0),.5, 15 : PAINT (0, 0), 12, 15 : DELAY .5
100 'FOR k=l TO 500 : NEXT k
110 NEXT I
Обратим внимание на то, что в этой программе время выдержки красного цвета (12) полсе-
кунды (DELAY .5, либо пустой цикл), а желтого цвета (14) - две десятых секунды. В результате
получается красная мигающая точка.
Для акцентирования внимания мигание точки можно сопроводить звуковыми сигналами.
Для этого используют оператор ВЕЕР стандартной частоты и длительности. Для издания звуково-
го сигнала заданной частоты и длительности применяют оператор SOUND cl,t, где cl - частота
сигнала, t -длительность.
Программа 63
10
************** Клаксон **************************
20 SCREEN 9
30 WINDOW (-16, -12) - (16,12)
40 COLOR 14, 1
295
110 '***** мигающие точки со звуковым сигналом ВЕЕР *******
120 FOR i=l TO 5
130 CIRCLE (-5, -5), .25, 15 : PAINT (-5, -5), 6, 15
140 CIRCLE (-5, 5), .25. 15 : PAINT (-5, 5), 6, 15
150 CIRCLE (5, 5), .25, 15 : PAINT (5, 5). 6, 15
160 CIRCLE (5, -5), .25, 15 : PAINT (5, -5), 6, 15
170 DELAY .2 : BEEP
180 CIRCLE (-5, -5), .25, 15 : PAINT (-5, -5), 10, 15
190 CIRCLE (-5, 5), .25, 15 : PAINT (-5, 5), 10, 15
200 CIRCLE (5. 5), .25, 15 : PAINT (5, 5), 10, 15
210 CIRCLE (5, -5), .25, 15 : PAINT (5, -5). 10, 15
220 DELAY .5
230 NEXT i
240 '***** Мигающая точка со звуковым сигналом SOUND ******
250 FOR i=l TO 5
260 CIRCLE (0, 0), .5, 15 : PAINT (0, 0), 14, 15
270 SOUND 600, .2 : DELAY .2
280 CIRCLE (0,0), .5, 15 : PAINT (0, 0), 12, 15
290 SOUND 300, .5 : DELAY .5
300 NEXT i
В следующем примере демонстрируется работа с окружностями и эллипсами, которые дос-
таточно часто встречаются в графических образах различных объектов. Изображение окружности
или дуги окружности выводится тонкими линиями с помощью оператора CIRCLE.
Программа 64
'************0кружности и дуги **********************
20 SCREEN 9
30 WINDOW (-16,-12) - (16,12)
40 COLOR 14,1
50 г*************** задание числа PI ****************
60 pi=4*atn(l)
IQ
>********** изображение окружности и дуг **********
80 CIRCLE (0, 0), 4, 15
90 CIRCLE (5. 5), 4, 14, 0, pi/2 'дуга в первой четверти
100 CIRCLE (-5, 5). 4, 14. pi/2, pi 'во второй
110 CIRCLE (-5,-5) ,4, 14, 0, pi, 3*pi/2 'в третьей
120 CIRCLE (5,-5), 4, 14, 3*pi/2,2*pi 'в четвертой
Для изображения линий используется оператор LINE, который строит линии одной и той
же толщины. Однако, при создании графических образов в компьютерных Демонстрациях требу-
ются линии различной толщины. Например, выделяются оси координат на фоне координатной
сетки или рисуется график линейной зависимости и т.д. Существует очень быстрый способ полу-
чения изображений вертикальных и горизонтальных линий различной толщины. Это достигается
выводом на экран узких прямоугольников. Этот прием иллюстрируется на примере построения
осей координат:
LINE(-16.-.l)-(16,.l),15,bf LINE(-.l,-12)-(.l,12),15,bf
Линии произвольной формы и толщины, в том числе и прямые, выводятся на экран дисплея
при помощи оператора CIRCLE. Заключенный в цикл с достаточно малым шагом, оператор CIR-
CLE действует аналогично плакатному перу с шириной линии, равной диаметру окружности:
FOR х =-4 ТО 4 STEP .01
у =
0.5*\''2
CIRCLE (x,y),.1,15 NEXTx
Если требуется провести очень тонкую линию, то вместо CIRCLE используется оператор
PSET (\,y). z, где z - номер цвета, а (х,у) - координаты точки (PSET -точка). Иногда изображения
соседних точек соединяют отрезками прямых линий. График функции в этом случае будет пред-
ставляться ломаной линией.
Программа 65
I
********* тонкие линии и ломаные кривые ************