
- •Программирование на языке Turbo Pascal Материалы к урокам
- •Тема №1: этапы решения задач на эвм. Алгоритмизация. Основные понятия. Блок-схемы.
- •Свойства алгоритма
- •Элементы блок-схемы
- •Тема №2: работа в среде turbo-pascal. Транслятор. Набор текста программы. Справочная система. Выполнение и отладка программы.
- •Основные понятия:
- •Встроенные стандартные математические функции, используемые в Turbo Pascal.
- •Переменные. Описание переменных.
- •Тип переменных указывается после списка переменных через двоеточие (: ). Числовые переменные можно описать по-разному, в зависимости от вида (целые, вещественные) и значности чисел:
- •Простейшие операторы работы в текстовом режиме.
- •Нестандартный оператор очистки экрана:
- •Операторы ввода данных в переменные с клавиатуры:
- •Оператор ожидания нажатия на клавишу.
- •Целочисленные арифметические операции:
- •Функции, преобразования числовых переменных:
- •Получение случайных чисел.
- •Тема №4: программирование на языке turbo-pascal. Прорядковые типы данных. Ветвление. Операторы условного и безусловного перехода. Составление программ с использование ветвления и переходов.
- •Порядковые типы переменных (дополнительные сведения)
- •Функции, используемые для работы с порядковыми переменными.
- •Условный оператор (выбор одного из двух направлений)
- •Оператор 1, оператор 2 – какой либо оператор, в том числе и составной оператор, т.Е. Несколько операторов, объединенных операторными скобками begin end.
- •Ветвление на несколько направлений (оператор – переключатель, или оператор выбора или оператор варианта):
- •Операторы безусловного перехода goto и halt:
- •Тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла.
- •Оператор цикла с параметром.
- •Цикл с предварительным условием
- •Цикл с последующим условием
- •Особенности и отличия операторов цикла
- •Примеры программ
- •Ответить на вопросы
- •Тема №6: программирование на языке turbo-pascal. Процедуры. Функции. Составление программ с использование процедур и функций. Рекурсия.
- •Тема №7: программирование на языке turbo-pascal. Основные графические операции языка turbo pascal. Составление программ с использование операторов графики.
- •Примеры программ:
- •Составить программу Абстракция, которая выводит на экран всевозможные графические фигуры.
- •Тема №8: программирование на языке turbo-pascal. Массивы, одномерные и вдухмерные. Составление программ с использованием массивов.
- •Задача MaxMin. Программа для поиска максимального и минимального элемента массива, с указанием их номеров (maxmin.Pas).
- •Сортировка массивов
- •Сортировка методом «пузырька»
- •Сортировка методом выбора
- •Поиск элемента в упорядоченном массиве
- •Тема №9: данные типа strung.
- •Тема №8: файлы. Типизированные файлы. Текстовые файлы.
- •Пример записи в текстовый файл:
- •Приложение 1. Структура типов данных
- •Приложение 2. Таблица кодов ascii
- •Назначение некоторых кодов ascii
- •Приложение 3. Расширенные ascii –коды клавиш
- •Приложение 4. Кодировка символов по модифицированной альтернативной кодировке символов госта (десятичный код-символ)
- •Содердание
Тема №7: программирование на языке turbo-pascal. Основные графические операции языка turbo pascal. Составление программ с использование операторов графики.
ПРОГРАММНО - ДИДАКТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ: ЭВМ типа IBM. Turbo-Pascal 5.
ЦЕЛИ И ЗАДАЧИ: Знакомство с операторами графики языка Turbo-Pascal. Выработка навыков работы в Turbo-Pascal. Решение практических задач с использованием операторов графики.
ТРЕБОВАНИЯ К ЗНАНИЯМ И УМЕНИЯМ:
Учащиеся должны знать:
Что такое графический режим;
Систему координат графического языка Turbo-Pascal;
Какие модули содержат графические процедуры (нестандартные операторы);
Основные операторы графики;
Как инициализировать и закрывать графический режим.
Учащиеся должны уметь:
Задавать координаты точек на экране монитора;
Грамотно инициализировать графический режим;
Правильно использовать операторы графики;
Составлять программы с использование операторов графики;
ПЛАН-СОДЕРЖАНИЕ УРОКА
Модули Turbo Pascal. Модуль crt. Модуль graph.
В языке Turbo Pascal основная часть процедур и функций находится в так называемых модулях:
Модуль crt, содержащий процедуры и функции, организующие связь с консолью компьютера. Консолью компьютера называется его монитор и клавиатура.
Модуль graph, в котором находятся процедуры и функции, организующие работу в графическом режиме.
Работа Turbo Pascal может быть организована в двух режимах (экранах).
Текстовой экран, в котором могут отображаться только символы (25 строк по 80 символов в каждой).
Графический экран, в котором изображение представляется в виде точек, именуемых пикселями. Размер этого экрана зависит от типа монитора, чаще всего 640х480 пикселов. Нулевая точка системы координат находится в верхнем левом углу экрана. Это связано с тем, что в процессе создания изображения на экране, электронный луч в кинескопе движется так же, как мы читаем текст – из верхнего левого угла слева направо, и сверху вниз. Координаты точек могут принимать только целые значения.
Инициализация графического режима.
Для инициализации графического режима необходимо подключение модуля graph, кроме того объявить две целочисленные переменные gd, gm, которы используются при инициализации режима. Собственно инициализация происходит при записи в первую из переменных номер драйвера, соответствующий автоматически определенному типу монитора (gd:=detect;). А так же при выполнении процедуры initgraph(gd,gm,'');. При этом в переменную gm записывается номер графического режима, а '' обозначает, что поиск графического драйвера надо проводить в текущем каталоге. Пример инициализации графического режима:
uses crt, graph; {подключение модулей}
var gd,gm:integer;
begin
clrscr;
gd:=detect; initgraph(gd,gm,'');
. . . . . . . . . . . . . . . . . .
При использовании графического режима, процедуры ввода/вывода текстового режима (write, writeln и read, readln) не работают. Перед их использование сначала производится закрытие графического режима с помощью процедуры closegraph.
Кроме того, для задания графического режима можно использовать технические характеристики, которые можно самим определить. Для определения типа вашего монитора (функция getdrivername), максимальных значений его координат по осям x (функция getmaxx) и y (функция getmaxy), а также максимального номера цвета (функция getmaxcolor) можно использовать следующую программу:
program monitor;
uses crt, graph; {подключение модулей}
var gd,gm,xmax,ymax,maxcolor:integer;
begin
clrscr;
gd:=detect; initgraph(gd,gm,'');
{автоматическое определение типа монитора и запись номера драйвера в переменную gd; переменной gm присваивается номер соответствующего графического режима, а два апострофа означают, что поиск графического драйвера надо производить в текущем каталоге}
xmax:=getmaxx; ymax:=getmaxy; maxcolor:=getmaxcolor;
closegraph; {Закрытие графического экрана}
writeln ('xmax=',xmax,' ymax=',ymax,' maxcolor=',maxcolor,' ',getdrivername);
repeat until keypressed; end.
Для монитора типа SVGA программа выдаст строку:
xmax=639 ymax=479 maxcolor=15 EGAVGA
Графические процедуры.
Процедура setcolor (c) производит установку текущего цвета, процедура setbkcolor (c) производит установку цвета фона. c – номер или наименование цвета.
0 – black |
4 – red |
8 – darkgray |
12 – lightred |
1 – blue |
5 – magenta |
9 – lightblue |
13 – lightmagenta |
2 – green |
6 – brown |
10 – lightgreen |
14 – yellow |
3 – cyan |
7 – lightgray |
11 – lightcyan |
15 – white |
Процедура setfillstyle (n, c) устанавливает тип заливки для замкнутой фигуры. n – номер или наименование шаблона заполнения, c – цвет заполнения.
Процедура floodfill (x, y, c) после установления типа заливки производит заполнение замкнутой фигуры. x, y – координаты какой-либо точки внутри этой фигуры, c – цвет границы заполняемой фигуры.
0 |
emptyfill |
сплошная заливка текущим цветом фона |
1 |
solidfill |
сплошная заливка текущим цветом вывода |
2 |
linefill |
штриховка горизонтальными линиями -------- |
3 |
ltslashfill |
штриховка линиями вида //// |
4 |
slashfill |
штриховка утолщёнными линиями вида //// |
5 |
bkslashfill |
штриховка линиями вида \\\\ |
6 |
ltbkslashfill |
штриховка утолщёнными линиями вида \\\\ |
7 |
hatchfill |
заливка узором вида ++++++ |
8 |
xhatchfill |
заливка узором вида ххххххх |
9 |
interleavefill |
частые пересекающиеся штрихи |
10 |
widedotfill |
заливка узором – редкие точки |
11 |
closedotfill |
заливка узором – частые точки |
12 |
userfill |
шаблон пользователя |
Процедура setlinestyle (s, p, t) позволяет изменить стиль линии. S – номер или наименование стиля, p – задаёт шаблон линии только в том случае, если параметр s=4, в остальных случаях p=0, t – задаёт толщину линии и может иметь следующие значения: normwidth=1 (нормальная толщина – установлена по умолчанию); thickwidth=3 (утолщённая линия).
0 |
solidln |
сплошная линия – установлена по умолчанию |
1 |
dottedln |
точечная линия |
2 |
centerln |
штрих-пунктирная линия |
3 |
dashedln |
пунктирная линия |
4 |
userbitln |
Линия, заданная пользователем |
Процедура line (x1, y1, x2,y2) проводит текущим цветом отрезок прямой между точками с координатами x1, y1 и x2, y2.
Процедура putpixel (x, y, c) рисует точку (пиксель) с координатами x, y цвета c.
Процедура getpixel (x, y) позволяет определить цвет точки с координатами x, y.
Процедура circle (x, y, r) рисует текущим цветом окружность с центром в точке имеющей координаты x, y и радиусом r.
Процедура arc (x, y, nangl, kangl, r) рисует дугу окружности с радиусом r, с центром в точке имеющей координаты x, y, начальный угол дуги nangl, заданный в градусах, конечный угол дуги kangl, заданный в градусах (с отсчётом против часовой стрелки!!!).
Процедура pieslice (x, y, nangl, kangl, r) используя те же параметры, что и процедура arc рисует текущим цветом сектор круга, закрашенный в текущем стиле. Чувствительна к масштабированию по осям.
Процедура ellipse (x, y, nangl, kangl, rx, ry) рисует текущим цветом дугу эллипса, с центром в точке имеющей координаты x, y. Начальный угол дуги - nangl, заданный в градусах, конечный угол дуги - kangl, заданный в градусах, rx радиус эллипса по оси x, ry радиус - по оси y (если nangl=0, а kangl=360, рисуется эллипс).
Процедура sector (x, y, nangl, kangl, rx, ry) используя те же параметры, что и процедура ellipse рисует текущим цветом сектор эллипса, закрашенный в текущем стиле.
Процедура rectangle (x1, y1, x2, y2) рисует текущим цветом прямоугольник с координатами верхнего левого угла x1, y1 и координатами правого нижнего угла x2, y2, при этом x1<=x2 и y1<=y2.
Процедура bar (x1, y1, x2, y2) рисует текущим цветом прямоугольник, закрашенным в текущем стиле.
Процедура bar3d (x1, y1, x2, y2, d, v) рисует текущим цветом параллелепипед, закрашенный в текущем стиле. Координаты задают левый верхний и правый нижний углы передней грани. Ширина боковой d грани исчисляется числом пикселей по горизонтали. Если задают выражение v=true, верхняя грань «видна», иначе она не вычерчивается (случай, когда параллелепипед «накрыт» другим изображением).
Процедура lineto (x, y) проводит текущим цветом линию из текущей позиции в точку с заданными координатами, перемещая в неё и текущую позицию.
Процедура moveto (x, y) устанавливает новые координаты текущей позиции.
Процедуры getx и gety выдают текущее положение курсора по координатам x и y соответственно.
Процедура linerel (dx, dy) изменяя на величину dx и dy координату x и y текущей позиции, проводит текущим цветом линию между старой и новой позицией.
Процедура moverel (dx, dy) изменяет координаты x и y текущей позиции на величину dx и dy соответственно.
Процедура outtextxy (x, y, ‘text’) для вывода текста в графическом режиме, процедура перемещает текущую позицию в точку с координатами x, y и выводит строку text, кроме того, можно вместо текстовойконстанты использовать строковую переменную.
Процедура settextstyle (sh, n, r) позволяет манипулировать стилем текста. Sh (шрифт) - имеет значения 0..4 (0 – матричный шрифт; 1 – триплекс; 2 – мелкий; 3 – прямой; 4 – готический, 1 – 4 для кириллицы не поставляются!!!). N (направление) - имеет значение 0 – текст идёт слева направо и 1 – текст идёт снизу вверх, по вертикали, символы «положены на бок». R (размер шрифта) - коэффициент увеличения 1..10.
Задержка изображения на экране на доли секунды delay(5000);
Очистка графического экрана Cleardevice;
Примеры операторов графики:
Линия - line(200,200,400,400);
Круг - circle(500,300,50);
Прямоугольник rectangle - (100,100,600,400)
Квадрат - bar(50,50,200,100);
Куб - bar3d(200,200,250,300,40,topon);
Эллипс - ellipse(500,100,0,360,10,30);
Изменение цвета фона - setbkcolor(0);
Изменение цвета переднего плана - setcolor(5);
Точка - putpixel(100,100,14);
Текст в графическом режиме - outtextxy(300,300,'ura');
Заливка замкнутого контура:
setfillstyle(1,14);
floodfill(500,300,15);
Принципы организации движения графических фигур:
Можно оживить изображение на экране, если воспользоваться принципами анимации: нарисовать, стереть (нарисовать цветом фона), нарисовать в новом месте и т.д.