
- •1. Этапы подготовки и решения задач на эвм. Понятие алгоритма.
- •2. Элементарные базовые управляющие структуры
- •3. Состав и работа системы программирования Турбо Паскаль
- •4. Алфавит языка
- •5. Простейшие конструкции и типы данных
- •6. Структура программ на Паскале
- •7. Ввод и вывод данных
- •8. Программирование линейных структур в Паскале
- •Var b,y,z: real;
- •Var day: integer;
- •Var X,y: real; к: integer;
- •11. Программирование циклов с неизвестным числом повторений
- •Var X: integer;
- •Var X,a,p: real; k:integer;
- •12. Программирование вложенных циклов. Массивы.
- •Var amin:real; I, j : integer; a:array[1..100] of real;
- •13. Процедуры и функции в Паскале
- •Var a,b,c,s1,s2,s3,k,r,z:real;
- •Var c,n,m,l: integer;
- •Var p,I: integer;
- •14. Записи в Паскале.
- •15. Работа с файлами в Паскале
- •I:byte;
- •16. Программирование в графическом режиме
- •17. Анимация изображений в Паскале
- •X,y,dy,dx,time,delta,radius,Gd,Gm: integer;
- •18. Построение графика аналитически заданной функции
- •Xn, xk, X, y, Ymin, Ymax, dx:real;
- •19. Численные методы вычисления определённого интеграла
- •I, n: integer;
- •20. Численные методы решения нелинейных уравнений. Общие принципы.
- •22. Численные методы решения нелинейных уравнений. Метод Ньютона (метод касательных).
- •23. Численные методы решения нелинейных уравнений. Метод хорд (метод ложного положения).
- •24. Численные методы решения обыкновенных дифференциальных уравнений. Общие принципы.
- •25. Численные методы решения обыкновенных дифференциальных уравнений. Метод Эйлера.
- •Xn,xk,yn,h,X,y:real;
- •I:integer;
- •26. Численные методы решения обыкновенных дифференциальных уравнений. Модифицированный метод Эйлера.
- •Xn,xk,yn,yw,h:real;
- •I,n:integer;
- •X,y:array [1..20] of real;
- •27. Численные методы решения обыкновенных дифференциальных уравнений. Метод Рунге-Кутта.
- •Xn,xk,yn,h,k0,k1,k2,k3:real;
- •I,n:integer;
- •X,y:array [1..20] of real;
18. Построение графика аналитически заданной функции
При выводе на экран графических изображений используется графическая система координат. Графические координаты задают положение каждого пиксела, отображаемого на экране. В отличие от обычной (декартовой) системы координат, графические координаты принимают только целочисленные значения. Диапазон изменения графических координат ограничен снизу нулём, а сверху разрешением экрана по горизонтали и вертикали. Максимальное значение x и y -координат можно получить, используя функции GetMaxX и GetMaxY. Графическая координата y отсчитывается сверху вниз. Геометрические декартовы координаты точки (x,y) для её изображения на экране необходимо пересчитать в графические (xg,yg) по формулам:
где
xo,
yo
– смещение изображения на экране от
левого края и сверху; 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)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.