МОУ Белоомутская
средняя общеобразовательная школа №2
Урок
информатики по теме:
«Построение рисунка с использованием
простейших графических средств»
Язык программирования BASIC.
(То же есть на Delphi)
Учитель информатики: Гостев Н.Н.
Открытый урок по информатике в 10-ом классе.
Тема: Графические возможности ЭВМ.
Цель урока: Закрепление темы «Графические операторы языка программирования BASIC»; построение рисунка с использованием простейших графических средств.
План урока:
Ход урока:
1. Оглашается тема урока: «Построение рисунка с использованием простейших графических средств».
2. Для того, чтобы выполнить любой чертёж с помощью компьютера, необходимо знать графические операторы, выполняющие черчение графических примитивов. Такими операторами, описанными в языке программирования BASIC, являются…
Вызывается к доске ученик с рассказом об основных графических операторах и правилах их написания.
SCREEN 9 –
включение графического экрана;
PSET (x, y), c – установка
точки по координатам x, y и цветом c;
LINE [(x1, y1)] -
[STEP] (x2, y2), c
x1, y1 – координаты одного конца отрезка;
x2, y2 – координаты второго конца отрезка;
STEP – шаг;
CIRCLE (x, y), r, [c], [s], [e], [k] – черчение дуги окружности, где
x, y – координаты центра эллипса;
r – радиус дуги окружности по оси ox;
c – цвет дуги окружности;
s – угол, с которого начинается черчение дуги окружности;
e – угол, которым оканчивается черчение дуги окружности;
k – коэффициент сжатия, отношение размера по y к размеру по x
Для упрощения черчения сложных изображений, необходимо применение оператора организации цикла. К доске вызывается ученик с рассказом об основных видах циклов и о правилах написания оператора организации цикла FOR.
Циклы бывают двух основных видов: арифметические и итерационные. Их
отличие состоит в том, что число повторений действий в одном цикле заранее
известно, а в другом – нет.
FOR i=0 TO 2*pi STEP
.2
NEXT i
Здесь: i – счётчик цикла (параметр);
0 – начальное
значение i;
2*pi – конечное значение i;
.2 – шаг изменения параметра.
3. Теперь разберём такую задачу: разделим начерченную на экране линию на заданное число (n) равных отрезков. Если нам известны координаты обоих концов отрезка, то это сделать легко. Допустим, что x1, y1 – координаты одного конца отрезка, x2 , y2 – координаты второго конца отрезка. Тогда координаты промежуточных точек разбиения вычисляются так:
x(m) = x1 + (x2 – x1) * (m / n)
y(m) = y1 + (y2 – y1) * (m / n), где m – номер точки разбиения.
Ясно, что при m = 0 мы получаем точку с координатами x1, y1. А при m = n – точку с координатами x2,y2, т.к.
x1 + (x2 – x1) = x2, (x2 – x1) расстояние между x1 и x2 по x
y1 + (y2 – y1) = y2, (y2 – y1) расстояние между y1 и y2 по y
А теперь попробуем сделать деление сторон угла. Сколько точек требуется для черчения угла?
Три точки с координатами x1, y1; x2,y2; x3,y3
Но поскольку нам требуются только точки разбиения сторон угла, сколько пар координат нам потребуется вычислить?
Нам нужны только две пары координат для
двух точек.
Какой графический оператор необходим для соединения этих двух точек?
Оператор LINE
4. Используя выведенные формулы напишем простую подпрограмму (цикл) на языке BASIC для деления сторон угла и соединения точек деления:
M1: FOR i =
0 TO n
LINE (x1 + (x2 – x1) * (i / n), y1 + (y2 – y1) * (i / n)) - (x2 + (x3 – x2) * (i / n), y2 + (y3 – y2) * (i / n))
NEXT i
RETURN
Понятно, что изменяя координаты трёх точек, можно получить такое деление любого угла. Теперь напишем основную программу и сделаем из неё ссылку на описанный выше цикл. Будем обращаться к подпрограмме каждый раз, как изменим координаты трёх точек.
SCREEN 9
n = 10
x1 = 0
y1 = 0
x2 = 0
y2 = 300
x3 = 400
y3 = 300
GOSUB M1
… – задание новых значений координат
GOSUB M1
… – задание новых значений координат
GOSUB M1
… – задание новых значений координат
GOSUB M1
И т.д.
5. Включаем компьютеры.
6. Попробуем поделить углы прямоугольника и нарисовать предложенный рисунок, добавляя в программу блоки задания новых значений координат.
Первыми получают оценки те, кто отвечал и те, кто построил красивый рисунок.
Рисунок 1.
Не обязательно знать формулу, по которой строится линия. Достаточно знать координаты концов отрезка:
A – (x1,
y1)
B – (x2, y2)
Любую точку отрезка теперь можно найти, воспользовавшись формулами:
x(m) = x1 + (x2 – x1) * (m / n)
y(m) = y1 +
(y1 – y2) * (m / n)
где m – номер точки,
n – количество точек разбиения
Рисунок 2.
Пример программы на языке BASIC, выполняющий черчение
рисунка 2. Эту программу можно значительно упростить и сократить за счёт использования
операторов чтения и записи данных READ и DATA
или не задавая повторно одно и то же значение
параметра.
SCREEN 9
n = 20
x1 = 0
y1 = 0
x2 = 0
y2 = 330
x3 = 600
y3 = 330
GOSUB m1
x1 = 0
y1 = 330
x2 = 600
y2 = 330
x3 = 600
y3 = 0
GOSUB m1
x1 = 600
y1 = 330
x2 = 600
y2 = 0
x3 = 0
y3 = 0
GOSUB m1
x1 = 600
y1 = 0
x2 = 0
y2 = 0
x3 = 0
y3 = 330
GOSUB m1
x1 = 300
y1 = 0
x2 = 300
y2 = 175
x3 = 600
y3 = 175
GOSUB m1
x2 = 300
y2 = 175
x3 = 300
y3 = 0
x1 = 0
y1 = 175
GOSUB m1
x2 = 300
y2 = 175
x3 = 0
y3 = 175
x1 = 300
y1 = 330
GOSUB m1
x2 = 300
y2 = 175
x3 = 300
y3 = 330
x1 = 600
y1 = 175
GOSUB
m1
x2 = 300
y2 = 175
x1 = 0
y1 = 0
x3 = 0
y3 = 330
GOSUB m1
x2 = 300
y2 = 175
x1 = 0
y1 = 330
x3 = 600
y3 = 330
GOSUB m1
x2 = 300
y2 = 175
x1 = 600
y1 = 330
y3 = 0
x3 = 600
GOSUB m1
x1 = 0
y1 = 0
x3 = 600
y3 = 0
GOSUB m1
END
'*___________подпрограмма _______________*
m1: FOR l = 0 TO n
LINE (x1 +
(x2 - x1) * (l / n), y1 + (y2 - y1) * (l / n))-(x2 + (x3 - x2) * (l / n), y2 +
(y3 - y2) * (l / n))
NEXT l
RETURN
Тем, кто уверенно справляется с вычерчиванием рисунка 2, можно дать на построение рисунок 3 (в качестве дополнительного или усложнённого задания).
Рисунок 3.