Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
algoritm.doc
Скачиваний:
42
Добавлен:
13.02.2015
Размер:
923.14 Кб
Скачать

Задания

Задание

Результат

1.

Получить в центре экрана изображение, состоящее из 10 вложенных квадратов. Каждый квадрат нарисовать своим цветом и пронумеровать

2.

Начертить произвольный отрезок на экране синим цветом. Координаты концов получить с помощью генератора случайных чисел. Построить красный отрезок, симметричный синему относительно точки, расположенной в центре экрана

3.

Получить в центре экрана изображение циферблата часов, стрелки должны показывать время 9.00

4.

Вывести на экран два прямоугольника – желтый и зелёный с одинаковыми размерами. Желтый заштриховать вертикальными линиями, зелёный – горизонтальными (без использования встроенных стилей заполнения)

5.

Построить оси координат. Начало координат поместить в близи левого нижнего угла экрана. Подписать оси

6.

Начертить произвольный треугольник в левой верхней четверти экрана. Координаты вершин получить с помощью генератора случайных чисел. Построить треугольник, симметричный исходному относительно точки, расположенной в центре экрана

7.

Построить в центре экрана прямоугольник, в нём – ромб, в ромбе – окружность, в окружности – квадрат

8.

Начертить на экране лестницу, идущую из левого верхнего в правый нижний угол экрана. Количество ступеней ввести с клавиатуры

9.

Построить в центре экрана изображение. Большая окружность имеет радиус R. Малые окружности располагаются внутри большой и имеют радиусы, равные1/5 R. Длины вертикального и горизонтального отрезков равны и составляют2/3 R

10.

Обвести экран рамкой зелёного цвета. Заштриховать экран сеткой, составленной из линий, идущих под углом 45. Расстояние между линиями задать с помощью переменной.

Тема 15 Алгоритмы построения графика аналитически заданной функции

При выводе на экран графических изображений используется графическая система координат. Графические координаты задают положение каждого пиксела, отображаемого на экране. В отличие от обычной (декартовой) системы координат, графические координаты принимают только целочисленные значения. Диапазон изменения графических координат ограничен снизу нулём, а сверху разрешением экрана по горизонтали и вертикали. Максимальное значение xиy-координат можно получить, используя функцииGetMaxXиGetMaxY. Графическая координатаy отсчитывается сверху вниз.

Геометрические декартовы координаты точки (x,y) для её изображения на экране необходимо пересчитать в графические (xg,yg) по формулам:

где x0, y0– смещение изображения на экране от левого края и сверху; yG– разрешение экрана по вертикали;dxиdy– размер собственно изображения по горизонтали и вертикали соответственно;xmin, ymin, xmax, ymax – минимальные и максимальные значения аргументаxи значения функцииyв диапазоне построения графика;a- целая часть числаa.

Таким образом, для построения графика функции необходимо:

  • получить таблицу значений функции = f(x)в диапазоне измененияxотxначдоxкон;

  • найти минимальные и максимальные значения аргумента xи значения функцииyв диапазоне построения графика;

  • пересчитать действительные значения x и yв графическиеxg и yg;

  • нарисовать на экране область построения графика и оси координат;

  • отправить графический указатель (перо) в начало координат;

  • задать цвет и стиль линий;

  • последовательно соединить линиями (или отметить маркерами) точки графика.

При построении нескольких графиков на одном координатном поле необходимо определить максимальные и минимальные значения xиyдля всех графиков.

Рассмотрим пример использования графического режима для построения графика функции y = sin x. В примере используется 3 подпрограммы-функцииf, xeиуe, причёмxeиуeвызываются без параметров.

Program Prg_graf;

Uses Crt, Graph;

Var

xn, xk, x, y, Ymin, Ymax, dx:real;

MX, MY,i, n: word;

Gd, Gm: integer;

Function f(xf:real):real; { расчет функции }

begin

f:=sin(xf); { Здесь приводим выражение для вычисления }

{или f:=exp(-0.5*xf*xf);} { значения Вашей функции }

end;

Function Xe:word; {расчет позиции на экране для X}

begin

Xe:=10+Round((MX-20)*(x-xn)/(xk-xn));

end;

Function Ye:word; { расчет позиции на экране для Y }

begin { на экране отсчет идет сверху-вниз }

{ на обычном графике – наоборот }

Ye:=MY-10-Round((MY-20)*(f(x)-Ymin)/(Ymax-Ymin));

end;

Begin { Начало основной программы }

xn:=-5; xk:=5; n:=250; { Исходные данные } {или при вводе исходных данных с клавиатуры:

Write(' x начальное = '); Readln(xn);

Write(' x конечное = '); Readln(xk);

Write(' количество точек графика = '); Readln(n);

}

dx:=(xk-xn)/(n-1); { интервал между точками на оси Х }

{ Нахождение минимума и максимума функции }

x:=xn; Ymin:=f(xn); Ymax:=f(xn);

for i:=2 to n do

begin

x:=x+dx;

if f(x)<Ymin then Ymin:=f(x);

if f(x)>Ymax then Ymax:=f(x);

end;

Gd:=Detect;

InitGraph(Gd,Gm,''); { не забудьте скопировать egavga.bgi }

{ в папку с программой Prg_graf.pas }

if GraphResult <> 0 then

begin

Writeln('Ошибка инициализации графического режима');

Halt(1);

end;

MX:=GetMaxX; MY:=GetMaxY;

Rectangle(0,0,MX,MY); { Рамка вокруг всего экрана }

Rectangle(10,10,MX-10,MY-10); { Рамка вокруг поля графика }

OutTextXY(270,2,'График функции'); { Вывод строки }

x:=0; Line(Xe,MY-10,Xe,10); { Рисуем ось ординат для x=0}

OutTextXY(Xe-10,15,'Y'); { Подписываем ось ординат }

y:=0; Line(10,MY-Ye,MX-10,MY-Ye);{ Рисуем ось абсцисс для y=0}

OutTextXY(MX-20,MY-Ye+2,'X'); { Подписываем ось абсцисс }

OutTextXY(Xe-10,MY-Ye+2,'0'); {Подписываем начало координат}

{ Рисуем сам график }

x:=xn; MoveTo(Xe, Ye); { Перемещаем перо в начало координат }

for i:=2 to n do

begin

x:=x+dx; LineTo(Xe,Ye); { Чертим линию до следующей точки}

end;

Readln;

CloseGraph;

End.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]