
- •1. Введение
- •2. Операторы языка
- •Var Описание переменных;
- •3. Организация ветвлений
- •4. Логические функции
- •5. Организация циклов
- •Оператор цикла с предусловием имеет вид
- •Var I,j:integer; X,y,r:real;
- •Program p5_8;
- •Var y,X,z: integer;
- •6. Массивы
- •Var I,j: integer;
- •Var n,I,j:integer; s,y,sr:real; X: array [1..10,1..5] of real;
- •Var I,j,n,m: integer;
- •X:array [1..10] of integer;
- •Var n,I,j,st,kl,k:integer;
- •7. Символьные данные
- •Var n:integer;y:string;
- •Var X:string[1]; d:string; I:integer;
- •8. Записи
- •Var X:vr; y:array [1..5] of vr;
- •9. Файлы
- •Ввод и вывод информации для типизированных и текстовых файлов производится процедурами:
- •10. Подпрограммы
- •11. Графика
- •Var d,I,m,rx,ry:integer;
- •Initgraph(d,m,''); {переход в графику}
- •Var d,m,rx,ry:integer;
- •X,y,xn,xk,ymin,ymax,dx:real; msy,msx:real;
10. Подпрограммы
Подпрограммы дают возможность делать приложения более компактными, позволяя для повторяющихся процессов писать код только один раз. Различают два вида подпрограмм: процедуры и функции.
PROCEDURE имя_процедуры (список_параметров)
FUNCTION имя_функции (список_параметров): тип_результата
В
procedure
Sum(x,y,s:real); function Sum(x,y:real):real; begin
begin s:=x+y
sum:=x+y
end;
end;
Для обращения к процедуре нужно использовать оператор вида sum(a,b,c). Здесь переменные a,b,c называются фактическими параметрами, x,y,z – формальными. При исполнении процедуры значения a,b присваиваются x,y и выполняются вычисления. Их результат через переменную с передается в вызывающую процедуру. К функции можно обращаться, используя оператор вида c:=sum(a,b).
11. Графика
Графический режим ПК зависят от типа монитора и видиоадаптера. Мы будем использовать лучший доступный режим: VGA, максимальное разрешение 640х480 точек (пискселей), 16 цветов. Соответствующий драйвер находится в файле EgaVga.bgi. Графический режим определяет команда
InitGraph(драйвер,мода,путь к файлу драйвера)
здесь: драйвер – номер драйвера (для VGA это 9), мода – номер режима (для 640х480 это 2), путь к файлу драйвера на диске. Если файл находится в директории Паскаля, путь можно не указывать, а ввести пустые кавычки. Параметры драйвер и мода можно не задавать. Тогда они будут определены автоматически.
Возврат в текстовый режим экрана:
CloseGraph.
Отсчет экранных координат начинается с левого верхнего угла: Х – вправо, Y – вниз.
Паскаль располагает функциями, позволяющими осуществлять элементарные графические построения:
GetMaxY |
Вертикальный размер экрана по оси Y(в режимеVGA=479, поскольку отсчет точек от 0). |
GetMaxX |
Горизонтальный размер экрана по оси Х (в режиме VGA=639, поскольку отсчет от 0). |
MoveTo(x,y) |
Переместит курсор в позицию x,y. |
MoveRel(dx,dy) |
Переместит курсор от текущей точки на расстояние dx,dy. |
ClearDevice |
Очищает экран. |
PutPixel(x,y,цвет) |
Выводит заданным цветом точку в координатах x,y. |
Line(x1,y1,x2,y2) |
Проводит прямую от точки с координатами x1,y1 доx2,y2. |
LineTo(x,y) |
Проводит прямую от текущей точки до точки с координатами x,y. |
LineRel(dx,dy) |
Проводит прямую от текущей точки на расстояние dx,dy. |
Rectangle(x1,y1,x2,y2) |
Строит контур прямоугольника с координатами левого верхнего (x1,y1) и правого нижнего (x2,y2) углов. |
Bar(x1,y1,x2,y2) |
Закрашивает прямоугольную область с координатами левого верхнего (x1,y1) и правого нижнего (x2,y2) углов, установленным командойSetFillStyle, цветом. |
Cyrcle(x,y,r) |
Строит круг с центром в точке x,y и радиусомr. |
Ellipse(x,y,угол1, угол2,Rx,Ry) |
Строит эллиптическую дугу с центром в точке x,y от начального угла1 (в градусах) до угла2. RxиRyзадают горизонтальный и вертикальный радиусы эллипса. |
PieSlice(x,y,угол1, угол2,r) |
Строит сектор круга с центров в точке х,у радиусом rот угла1 (в целых градусах) до угла2. Заполнение и закрашивание секторов осуществляется функциейSetFillStyle. |
SetFillStyle( заполнение,цвет) |
Определяет тип заполнения (0 нет, 1 сплошное, 2 горизонтальное, 3 штриховка /, 4 толстая штриховка /,5 толстая штриховка\, 6 штриховка \, 7 +, 8x, 9 клетка, 10 точки, 11 частые точки) и цвет заполнения фигур. |
SetColor(цвет) |
Устанавливает текущий цвет линий и символов: Black – 0, Blue – 1, Green – 2, Cyan – 3, Red – 4, Magenta – 5, Brown – 6, LightGray 7, DarkGray – 8, LightBlue – 9, LightGreen – 10, LightCyan – 11, LightRed – 12, LightMagenta – 13, Yellow – 14, White – 15. |
SetBkColor(цвет) |
Устанавливает текущий цвет фона. |
SetLineStile(тип, вид, толщина) |
Устанавливает стиль линий. Тип: 0 – сплошная линия, 1– точечная, 2 – штрих-пунктир, 3 – пунктир. Вид: 0. Толщина: 1 или 3 пикселя. |
Задача 11-1. Нарисовать на экране: 1). Две диагонали, пересекающиеся в центре. 2) Четыре концентрических окружности с центрами в центре экрана и радиусами 50, 100, 150, 200.
Задача
11-2. Вывести на кран функциюf(x)=sin(x)*xвместе с координатными осями. Аргумент
Х изменяется от начального значенияXn=0 до конечногоXk=20
с шагомdx=0.01. Главная
проблема заключается в масштабировании
исходной “натуральной” функции F в ее
экранный вид Fэ:F(X)Fэ(Xэ).
Здесь следует учесть, что экранные
координаты расположены (рис. 11-2) не так
как мы привыкли. Точка 0э,0э находится в
его верхнем левом углу (а не в центре),
осьYэ идет вниз (а не
вверх), осьXэ – идет
вправо. Т.о. для адекватного отображения
графика на экране нам понадобится
реализовать три действия:
1. Масштабировать диапазоны D изменения натуральных Х и Y к желаемым экранным, т.е. привести DХ и DY к DХэ и DYэ соответственно с помощью масштабных коэффициентов Mx=DХэ/Dx и My=DYэ/DY.
2. Перенести координаты так, чтобы максимум Yэ приходился на верхнюю границу экранной области, а начальное значение X – на левую ее границу.
3. Перевернуть направление графика. Поскольку направление экранной оси ординат противоположно натуральному, знак изменения Yэ должен быть противоположен знаку Y.
Программа имеет следующую структуру. 1). Описывается функция вычисления f(x). 2). Выясняются размеры экрана, параметры аргумента, проводится вертикальная координата. 3).Находятся максимальные значенияY. 4). Выполняется масштабирование переменных (msyиmsx). Эти значения указывают, сколько пикселей приходится на единицу измененияYи Х соответственно. 5). Выполняется собственно рисование кривой. Здесь оно выполнено двумя способами – точками и отрезками линий. Проверьте результат в обоих случаях, поочередно убрав одну из них. 6). Проводится ось Х.
program P11_2;