- •Реализация алгоритмов в системе программирования turbo pascal 7.0 Учебное пособие
- •Тема 1 Алгоритмы и способы их описания
- •Тема 2 Этапы подготовки и решения задач на эвм
- •Тема 3 Начало работы в системе Turbo Pascal 7.0
- •Начало работы с новой программой
- •Задание 1
- •Сохранение текстового файла программы на диске
- •Задание 2
- •Задание 3
- •Задание 4
- •Тема 4 Ввод исходных данных и вывод результатов вычислений
- •Упражнение 1.
- •Тема 5 Реализация линейных алгоритмов
- •Сложные выражения
- •Задание
- •Тема 6 Программирование разветвляющихся алгоритмов
- •Задание 1
- •Задание 2
- •Тема 7 Циклические алгоритмы с известным числом повторений
- •Задание
- •Тема 8 Циклические алгоритмы с неизвестным числом повторений
- •Задания
- •Задание
- •Тема 10 Работа с массивами
- •Задание
- •Задание
- •Тема 12 Записи
- •Задания
- •Тема 13 Работа с файлами
- •Задания
- •Задания
- •Тема 15 Алгоритмы построения графика аналитически заданной функции
- •Задание
- •Тема 16 Анимация изображений
- •Задание 1
- •Задание 2
- •Тема 17 Численные методы вычисления определённого интеграла
- •1. Метод прямоугольников
- •2. Метод трапеций
- •3. Метод Симпсона
- •Задания
- •Тема 18 Численные методы решения нелинейных уравнений
- •Задания
- •Тема 19 Численные методы решения обыкновенных дифференциальных уравнений
- •Задание
- •Оглавление
- •Литература
Задания
№ |
Задание |
Результат |
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.
Таким образом, для построения графика функции необходимо:
получить таблицу значений функции y = 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.