- •Министерство образования и науки российской федерации
- •Содержание
- •Введение
- •Лабораторная работа № 1 Разработка и отладка линейной программы Задание:
- •Выполнение задания:
- •Лабораторная работа № 2 Разработка и отладка программы с разветвлениями Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 3 Разработка и отладка циклической программы Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 4
- •Разработка и отладка
- •Сложной циклической программы
- •Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 5 Разработка и отладка программы для работы с файлами Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 6 Разработка и отладка программы для работы с графикой Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 7 Разработка и отладка программы для работы с графикой в статике Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 8 Разработка и отладка программы для работы с графикой в динамике Задание на лабораторное занятие
- •Выполнение задания
- •Методические рекомендации По разработке программы
- •5. Трансляция и отладка программы.
- •К лабораторной работе №1
- •К лабораторной работе № 2
- •К лабораторной работе № 3
- •К лабораторной работе № 4
- •Исходная последовательность
- •Отсортированная по возрастанию
- •Программа разложения числа на простые сомножители
- •Делителями числа 28 являются 1, 2, 4, 7, 14.
- •Программа вычисления таблицы значений функции 2-х переменных
- •Программа построения таблицы сложных процентов
- •Программа сложения столбцов определителя
- •Вариант 25
- •Вариант 26
- •Вариант 27
- •Варианты 25-27
- •Вариант 28
- •Вариант 29
- •Вариант 30
- •Варианты 28-30
- •Вариант 31
- •Вариант 36
- •Варианты 34-36
- •Логика цикла
- •Логика цикла
- •К лабораторной работе № 5
- •К лабораторной работе № 6
- •К лабораторной работе № 7
- •К лабораторной работе № 8
- •Косинусоида. Вариант 1
- •Основы программирования на языке basic
- •192171, Г. Санкт-Петербург, ул. Седова, 55/1
К лабораторной работе № 6
Цель работы: приобретение практических навыков в разработке и отладке программ для работы со статической графикой.
В этой работе строятся графики функций.
Структура создаваемой программы: установка экранного режима; определение функции как пользовательской; рисование кривой.
Установка экранного режима осуществляется операторами SCREEN и COLOR. В данной работе используется SCREEN 9, характеристики, которого приведены в таблице 0.6.2. Оператор COLOR 1, 2 задает экранные цвета: 1-я цифра в данном примере 1 (синий), - основной (цвет текста), 2-я цифра – 2 (зеленый) – определяет цвет фона (экрана). Номера экранных цветов даны в таблице 0.6.3.
Определяется функция с помощью оператораDEF FN, например, для синуса будет DEF FNy (x) = a SIN (x0 + x). Не забывайте, что параметры x0 и a необходимо ввести с помощью INPUT. Кривая может быть задана параметрическими уравнениями, например, x = at – b sin t и y = a – b cos t . Тогда определяется DEF FNy (t) и DEF FNx (t). В некоторых вариантах,
например, вариант 15, гиперболическая спираль задается уравнением в полярных координатах r = c/t .Тогда, как видно из рисунка:
y = r sin t
x = r cos t
Подставив c/t вместо r, получим искомые параметрические уравнения.
Перед построением кривой следует нарисовать оси координат – две взаимно перпендикулярные линии, пересекающиеся в центре экрана (в точке с координатами x =320, y = 175).
Для построения кривой организуется цикл, тело которого составляют выражения для координат, например, для синуса такое выражение будет:
y = 175 – 30 FNy ((x – 320) / 30),
где 30 – коэффициент формы, которым можно варьировать.
Кроме того, в тело цикла входит оператор, непосредственно рисующий кривую – RSET (x, y), k. Однако при использовании этого оператора не всегда можно получить сплошную линию кривой. Поэтому предпочтительнее использовать оператор LINE (x, y1)-(x+1, y2), k с выражениями:
y1 = 175 – 30 FNy ((x – 320) / 30)
y2 = 175 – 30 FNy ((x + 1 – 320) / 30)
В некоторых случаях целесообразно использовать переменную t/100.
Тогда выражения будут иметь вид:
y1 = 175 – 30 FNy (t)
y2 = 175 – 30 FNy (t + 1)
Таблица 0.6.1.
Оператор и его описание |
COLOR 2,3 Оператор устанавливает экранные цвета, где 1-я цифра – основной - цвет текста (в пределах 0-31), 2-я цифра – фоновый цвет экрана (в пределах 0-7) |
COLOR , 2 Оператор устанавливает фоновый цвет 2 (зеленый), основной без изменения. |
PSET (x, y), 1 Оператор рисует точку с координатами x, y цвета 1 (синий). |
PSET STEP(10, 10), 3 Оператор рисует точку с координатами x +10, y +10 относительно последней точки с координатами x, y цветом 3 (голубой). |
PRESET (x, y), 2 Оператор рисует точку с координатами x, y цвета 2. |
PRESET STEP(10, 10), 1 Оператор рисует точку с координатами x +10, y +10 относительно последней точки с координатами x, y цветом 1 (синий). |
DEF FNy (x) = a SIN (x0 + x) Функция, возвращающая одно значение и используемая аналогично встроенной функции Бейсика. Имя функции всегда должно начинаться с букв FN. |
LOCATE 25, 80 Оператор, передвигающий курсор в указанную позицию экрана. 1-я цифра (25) – номер строки на экране (позиция по y), 2-я (80) – номер столбца на экране (позиция по x). Указаны максимальные значения для SCREEN 9. |
LINE (12, 18)–(12, 280), 1 Оператор рисует вертикальную линию от y = 18 до y = 280 при x = 12. |
LINE (10, 15)–(200, 250), 1 Оператор рисует цветом 1 (синий) отрезок прямой линии из точки с координатами x = 10, y = 15 до точки с координатами x = 200, y = 250 |
Продолжение табл. 0.6.1.
LINE (120, 180)–(290, 180), 1 Оператор рисует горизонтальную линию от x = 120 до x = 290 при y = 180 |
LINE (10, 15)–(200, 270), 2, B Оператор рисует цветом 2 (зеленый) прямоугольник со сторонами, параллельными экрану, диагональю которого является отрезок прямой из точки с координатами x = 10, y = 15 до точки с координатами x = 200, y = 270 |
x1 = 10: y1 = 15: x2 = 200: y2 = 270 LINE (x1, y1)–(x2, y2), 2, BF Оператор рисует прямоугольник, как в предыдущем случае, заливая его тем же цветом 2. |
LINE –(40, 40), 1 Оператор рисует линию от последней точки, заданной предыдущим оператором программы (пусть x = 10, y = 10), до точки с x = 40, y = 40. |
LINE –STEP(40, 40), 1 Оператор рисует линию от последней точки, заданной предыдущим оператором программы (пусть x = 10, y = 10), до точки с x = 50, y = 50. |
LINE (20,20)–STEP(40, 40), 1 Оператор рисует линию от точки c x = 20, y = 20 до точки с x = 60, y = 60. |
LINE STEP(20,20)–STEP(40, 40), 1 Оператор рисует линию (пусть последняя точка x = 20, y = 20) от точки c x = 40, y = 40 до точки с x = 80, y = 80. |
LINE STEP(20,20)–(60, 60), 1 Оператор рисует линию (пусть последняя точка x = 10, y = 10) от точки c x = 30, y = 30 до точки с x = 60, y = 60. |
LINE (120, 180)–(290, 180), 1, ,&H2A0F Оператор рисует линию, стиль которой задается 16-ричным числом 2A0F |
Окончание таблицы 0.6.1.
LINE (120, 180)–(290, 280), 1, B,&H6С5F Оператор рисует прямоугольник, стиль линии которого задается 16-ричным числом 6С5F |
Примечание: 1. Стиль не влияет на закрашенные прямоугольники. 2. Если в операторе LINE не указан номер цвета, то он рисует основным, а если указан 0 – то фоновым цветом. 3. Координаты и цвет в операторе LINE могут задаваться числами (например, 120), переменными (x1), элементами массива (y(i,j)), выражением (например, (i + 2) / 3). 4. Операторы PSET и PRESET работают одинаково, но если цвет не указан, PSET использует основной цвет, а PRESET – фоновый. 5. Если координаты точки находятся вне экрана, то никаких действий не производится и сообщение об ошибке не выдается |
При построении гиперболы и некоторых других кривых будет возникать ошибка "Деление на ноль", избежать которой можно перескочив через критическую точку (x = 320), используя
IF x = 319 THEN x = x + 2
Если функция, задающая кривую, содержит выражение под знаком квадратного корня, то приходится брать его по абсолютной величине (применяя функцию ABS(x)). Это может привести к потере части кривой, что необходимо восполнить, задав дополнительные "координатные" выражения для потерянной симметричной половины кривой (варьируя знаками – и + в этих выражениях).
Таблица 0.6.2.
Режим |
Разрешение. Страницы видеопамяти |
Количество цветов |
SCREEN 0 |
Текстовый режим. |
16 |
SCREEN 1 |
320х200, 1 страница |
4 |
SCREEN 2 |
640х200, 1 страница |
2 |
SCREEN 7 |
320х200, 8 страниц |
16 |
SCREEN 8 |
640х200, 4 страницы |
16 |
SCREEN 9 |
640х350, 2 страницы |
16 |
SCREEN 10 |
640х350, 2 страницы |
2 |
SCREEN 11 |
640х480, 1 страница |
2 |
SCREEN 12 |
640х480, 1 страница |
16 |
SCREEN 13 |
320х200, 1 страница |
256 |
Таблица 0.6.3.
Номер |
Цвет |
Номер |
Цвет |
0 |
Черный |
8 |
Темно-серый |
1 |
Синий |
9 |
Светло-синий |
2 |
Зеленый |
10 |
Светло-зеленый |
3 |
Голубой |
11 |
Светло-голубой |
4 |
Красный |
12 |
Светло-красный |
5 |
Фиолетовый |
13 |
Васильковый |
6 |
Коричневый |
14 |
Желтый |
7 |
Светло-серый |
15 |
Ярко-белый |
Для удобства рисования бывает полезно вывести на экран координатную сетку, которую затем можно убрать из создаваемой программы. Ниже приводится вариант программного блока построения такой сетки.
CLS: SCREEN 9: COLOR 1, 2
'GOTO 50 'Убирает сетку не стирая
'==1======== Блок построения сетки ============
FOR xc = 0 TO 650 STEP 10
IF xc MOD 100 = 0 THEN kc = 8 ELSE kc = 15
LINE (xc, 0)-(xc, 370), kc 'Вертикальные линии
LINE (0, xc)-(650, xc), kc 'Горизонтальные линии
NEXT xc
50 SLEEP 'Для продолжения нажать любую клавишу
'=========================================