Графика в Turbo Pascal
Вид
занятия: комбинированное
занятие.
Цели
занятия:
·
дидактическая:
– закрепление пройденного материала;
– обобщение и систематизация знаний о среде программирования Паскаль;
– освоение приемов построения простых вычислительных алгоритмов и их
программирование на языке Turbo Pascal;
·
воспитательная:
– формирование мировоззрения у студентов;
– формирование мотивации к изучению предмета “Основы алгоритмизации и
программирования”;
– формирование чувства коллективизма, дружбы;
·
развивающая:
– развитие логического мышления;
– развитие навыков работы с системой программирования.
Межпредметные
связи:
связь c алгеброй и геометрией.
Внутрипредметные
связи:
связь с разделами геометрии, процедуры, функции.
Обеспечение
занятия:
компьютер + большой экран, карточки для студентов, раздаточный материал с
заданиями на закрепление, интерфейс среды программирования Turbo Pascal.
Основная
литература:
- Попов
В.Б. Turbo Pascal для школьников: учебное пособие. – М.: ФИНАНСЫ И
СТАТИСТИКА, 2002.
- Гусева.А.И.
Учимся информатике: задачи и методы их решения. – М.: Диалог – МИФИ, 2001.
- Шауцукова
Л.З. Информатика: –М.: Просвещение, 2003.
Дополнительная
литература:
- Информатика:
учебник Под ред. Н.В. Макаровой
- Правильный
многоугольник. /Информатика. Еженедельное приложение к газете “ПЕРВОЕ
СЕНТЯБРЯ”. – 1998. № 30
Требования
к результатам усвоения учебного материала.
Студенты
должны знать:
- особенности
среды Turbo Pascal;
- особенности
работы в графическом режиме CRAPH;
- стандартные
процедуры и функции модуля CRT;
- стандартные
процедуры и функции модуля CRAPH.
Студенты
должны уметь:
- производить
необходимые действия с программой;
- работать
в графическом режиме;
- правильно
применять стандартные процедуры и функции модуля CRT;
- правильно
применять стандартные процедуры и функции модуля CRAPH.
Содержание занятия
1. Организационный момент.
Приветствие. Проверка присутствующих. Постановка цели. Формирование мотивации к изучению
темы.
2. Изучение нового материала.
Понятие
графического адаптера.
Аппаратная
поддержка графики персонального компьютера обеспечивается двумя основными
модулями: видеоадаптером и видеомонитором. Видеомонитор – это устройство, на
котором появляется выводимый текст или графические изображения. Видеоадаптеры – это электронные
устройства, управляемые собственным микропроцессором.
При
работе с экраном в графическом режиме очень важным является то, что любая
информация представляет собой совокупность пикселей. Каждый пиксель
определяется своими координатами, т.е. положением относительно левого верхнего
угла экрана. С помощью программ можно управлять светимостью и цветом любого
пикселя, т.е. создавать любое изображение.
Рассмотрение
работы в графическом режиме:
Для
управления экраном в графическом режиме с помощью программ в Turbo Pascal
существуют специальные графические процедуры и функции. Описание этих процедур
и функций содержится в специальном библиотечном модуле CRAPH.
Запуск
графической системы. Для запуска графической системы необходимо сделать
следующее:
- Подключить
модуль CRAPH – библиотеку графических процедур: uses graph;
- Установить
графический режим с помощью двух переменных:
var
DriverVar, ModeVar: integer;
begin
DriverVar:=Detect;
InitGraph(DriverVar, ModeVar,’\TP\GRAPH’);
С
этого момента все графические средства доступны пользователю.
Процедуры и функции
модуля CRAPH
Процедуры.
Arc
(X,Y:Integer; U1, U2, R:Word)
Строит
дугу окружности текущим цветом с текущими параметрами линии. X, Y – координаты
центра дуги; U1 – угол до начальной точки дуги, отсчитываемый против часовой
стрелки от горизонтальной оси, направленной с лева на право; U2 – угол до
конечной точки дуги, отсчитываемый так же, как U1; R – радиус дуги.
Bar (X1,
Y1, X2, Y2:Integer)
Строит
прямоугольник, закрашенный текущим цветом с использованием текущего стиля
(орнамента, штриховки). X1, Y1, X2, Y2 – координаты левого верхнего и правого
нижнего углов прямоугольника.
Bar3D (X1,
Y1, X2, Y2:Integer; Glubina: Word; Top:Boolean)
Строит
параллелепипед, используя текущий стиль и цвет. X1, Y1, X2, Y2 – координаты
левого верхнего и правого нижнего углов передней грани; Glubina – ширина
боковой грани (отсчитывается по горизонтали); Top – признак включения верхней
грани (если True – верхняя грань вычерчивается, False – не вычерчивается).
Circle (X,
Y: Integer; R: word)
Рисует
текущим цветом окружность радиуса R с центром в точке (X, Y).
ClearDevice
Очищает
графический экран, закрашивает его в цвет фона.
ClearViewPort
Очищает
выделенное графическое окно, закрашивает его в цвет фона.
CloseGraph
Закрывает
графический режим, т. е. освобождает память, распределенную под драйверы
графики и файлы шрифтов, и восстанавливает текстовый режим работы экрана.
Ellipse (X,
Y: Integer; U1, U2, XR, YR: Word)
Рисует
дугу эллипса текущим цветом. X, Y – координаты центра эллипса; U1, U2 – углы до
начальной и конечной точек дуги эллипса (см. процедуру Arc); XR, XY –
горизонтальная и вертикальная полуоси эллипса.
Fill
Ellipse (X, Y: Integer; U1, U2, XR, YR: Word)
Рисунт
заштрихованный эллипс, используя X, Y как центр и XR, YR как горизонтальную и
вертикальную полуоси эллипса.
FillPoly
(N: Word; Var PolyPoints)
Рисует
и штрихует многоугольник, содержащий N вершин с координатами в поле PolyPoints.
InitGraph
(Var Driver, Mode:Integer; Path: String)
Организует
переход в графический режим. Переменные Driver и Mode содержат тип графического
драйвера и его режим работы. Третий параметр определяет маршрут поиска
графического драйвера. Если строка пустая (т.е. равна ’’), считается, что
драйвер находится в текущем каталоге.
Line (X1,
Y1, X2, Y2:Integer)
Рисует
линию от точки X1, Y1, до точки X2, Y2.
LineTo
(X,Y:Integer)
Рисует
линию от текущего указателя к точке X, Y.
MoveTo
(X,Y:Integer)
Смещает
текущий указатель к точке X, Y.
OutTextXY
(X,Y:Integer; TextString: String)
Выводит
текст в заданное место экрана.
PieSlice
(X,Y:Integer; U1, U2, Radius: Word)
Строит
сектор круга, закрашенный текущей штриховкой и цветом заполнения. X, Y –
координаты центра сектора круга; U1 и U2 – начальный и конечный углы сектора,
отсчитываемые против часовой стрелки от горизонтальной оси, направленной в
право; Radius – радиус сектора.
PutPixel
(X,Y:Integer; Color: Word)
Выводит
точку цветом Color с координатами X, Y.
Rectangle
(X1, Y1, X2, Y2)
Рисует
контур прямоугольника, используя текущий цвет и тип линий. X1, Y1 – координаты
левого верхнего угла прямоугольника; X2, Y2 - координаты левого правого нижнего
угла прямоугольника.
Sector (X,
Y: Integer; U1, U2, XR, YR: Word)
Рисует
и штрихует сектор эллипса радиусом XR, YR с центром в X, Y от начального угла
U1 к конечному углу U2.
SetBkColor
(Color: Word)
Устанавливает
цвет фона.
SetColor
(Color: Word)
Устанавливает
основной цвет рисования.
SetFillStyle
(Pattern, Color: Word)
Устанавливает
образец штриховки и цвета.
SetLineStyle
(LineStyle, Pattern, Thickness: Word)
Устанавливает
толщину и цвет линии.
SetTextStyle
(Font, Direction, CharSize: Word)
Устанавливает
текущий шрифт, направление (горизонтальное или вертикальное) и размер текста.
SetViewPort
(X1, Y1, X2, Y2:Integer; ClipOn: Boolean)
Устанавливает
прямоугольное окно на графическом экране. Параметр ClipOn определяет “отсечку”
элементов изображения, не умещающихся в окне.
Функции.
GetMaxX
и
GetMaxY
Возвращает
значения максимальных координат экрана в текущем режиме работы соответственно
по горизонталь и вертикали.
GraphResult
Возвращает
значение GrOk, соответствующее коду 0, если все графические операции программы
выполнились без ошибок, или возвращает числовой код ошибки (от -1 до -14).
Закрытие
видеорежима. Когда все запланированные графические работы выполнены, необходимо
выйти из графического режима. Это делается с помощью не имеющей параметров
процедуры ClozeGraph. В процессе выполнения эта процедура освобождает память,
распределенную под драйверы графики, файлы шрифтов и промежуточные данные, и
восстанавливает режим работы адаптера в то состояние, в котором он находился до
выполнения инициализации системы.
Использование
процедур и функций при решении задач. Рассмотрение структуры программы.
Построить
правильный многоугольник с заданным числом сторон.
Решение.
Центр
многоульника совмещаем с центром экрана. Пусть N – число его сторон.
Центральный угол стороны Angle=2 * Pi / N. Начальную вершину многоугольника
поместим на горизонтальной оси (правее центра). Угол наклона i-й вершины к оси
Х составляет Angle * i, а ее центральные координаты X, Y –
X = round
(R*cos(Angle*i));
Y = round (R*sin(Angle*i));
Где R
– радиус описанной окружности.
Проводим
i-ю сторону, соединяя линией найденную i-ю и предыдущую вершины. Выполнив это
построение для всех i от 1 до N, получим наш многоугольник. (Отметим, что N-я
вершина совпадает с начальной .)
{
Построение правильного многоугольника с N сторонами}
uses graph, crt;
Const
PrD:real=80;
{ Длина диаметра описанной окружности в % от высоты экрана}
PATH=’’; {
файлы *.BGI находятся в рабочем каталоге}
Var
W,H,gd,gm,i,N,X,Y.R:integer;
Angle:real;
{ переход от центральных
координат к экранным}
procedure WH (var
W,H:integer); { ширина и высота экрана}
begin
{ функция
GetMaxX и GetMaxY возвращают максимальные значения соответствующих экранных
координат}
W:=(
GetMaxX+1); { ширина}
H:=(
GetMaxY+1); { высота}
end;
Function Xscr
(X:integer):integer;
Begin Xscr:=X + W div 2
end;
Function Yscr
(Y:integer):integer;
Begin Yscr:=H div 2 – Y
end;
BEGIN
repeat
write (‘ Укажите число сторон правильного многоугольника, не менее 3’);
readln(N);
until N>2;
gd:=DETECT;
initgraph
(gd,gm,path);
WH(W,H); {
определяем ширину и высоту экрана}
R:=round(PrD*0.01/*H/2); { радиус описанной окружности}
Angle :=2*pi/N; {
центральный угол стороны в радиусах}
MoveTo (Xscr(R),
Yscr(0)); { первая вершина в экранных координатах}
SetColor (Yellow);
{ цвет многоугольника - желтый}
For i:=1 to N do
begin {цикл сторон}
{X и Y –
центральные координаты очередной вершины}
X:=round (R*cos(Angle*i));
Y:= round
(R*sin(Angle*i));
{проводим очередную
сторону}
LineTo (Xscr(X),
Yscr(Y));
End; {цикл сторон}
Repeat until
keypressed; { выход – нажатием любой клавиши}
CloseGraph; {
переход в текстовый режим}
End.
3. Закрепление и обобщение изученного материала.
Закрепление изученного материала
рекомендую
провести следующим образом. Группу студентов разделить на две команды и
провести состязание. Состязание содержит три задания.
- Построить
график функции y=sin(x) (y=cos(x)). График приведен в Приложении
1.
- Разгадать
кроссворд по процедурам модуля GRAPH. Представлен в Приложении
2.
- Составить
программу, выводящую на экран визитную карточку учебного заведения.
4. Домашнее задание.
[1, с.
367 - 387]. Решить
задачи 7, 10 на стр. 420, построить график функции другого варианта.
5. Итоги занятия.
Выставление
оценок за работу в командах.
“Чему мы сегодня научились?” (Перечисляем, вспоминаем.) “Гости сами решат, к
какой компании обратиться за изготовлением программных продуктов”.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.