Задание в паскале - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Для заданной функции составить программу для построения графика функции в заданном интервале и с заданным шагом. Предусмотреть вывод осей координат, а также построить таблицу значений для аргумента и функций на заданном интервале. Таблица должна содержат заголовок и шапку. При составлении программы использовать подпрограмму вывода горизонтальной линии. Y=x2+4x

Решение задачи: «Задание в паскале»

textual
Листинг программы
uses graph;
function F(x:real):real;
begin
F:=x*x+4*x;
end;
const h=0.25;
      xn=-7;
      xk=3;
var x,ymx,mx,my:real;
    x1,y1:array[1..100] of real;
    n,i,gd,gm,x0,y0,px,py:integer;
    st:string;
begin
{заполнение таблицы значений и нахождение максимального для масштаба по оси Y}
ymx:=F(xn);
x:=xn;
n:=0;
while x<=xk+h/2 do
 begin
  n:=n+1;
  x1[n]:=x;
  y1[n]:=F(x1[n]);
  if y1[n]>ymx then ymx:=y1[n];
  x:=x+h;
 end;
{переход в графический режим}
gd:=0;
initgraph(gd,gm,'');
{начало координат}
x0:=getmaxX-round((getmaxX-250)*xk/(xk-xn));
y0:=getmaxY-120;
{масштаб по осям}
mx:=(getmaxX-280)/(xk-xn);
my:=(y0-30)/ymx;
{координатная сетка}
line(x0-round(-xn*mx),y0,x0+round(xk*mx),y0);
outtextXY(getmaxX-15,y0-15,'X');
line(x0,getmaxY,x0,0);
outtextXY(x0+5,5,'Y');
for i:=1 to 11 do
 begin
  line(x0+round(mx*i),y0+3,x0+round(mx*i),y0-3);
  str(i,st);
  outtextXY(x0+round(mx*i),y0+10,st);
  if i<8 then
   begin
    line(x0-round(mx*i),y0+3,x0-round(mx*i),y0-3);
    outtextXY(x0-round(mx*i),y0+10,'-'+st);
   end;
  str(i*2,st);
  line(x0+3,y0-round(my*i*2),x0-3,y0-round(my*i*2));
  outtextXY(x0-20,y0-round(my*i*2),st);
  line(x0+3,y0+round(my*i*2),x0-3,y0+round(my*i*2));
  outtextXY(x0-25,y0+round(my*i*2),'-'+st);
  end;
{график}
x:=xn;
setcolor(12);
while x<=xk+h/2 do
 begin
  px:=x0+round(x*mx);
  py:=y0-round(F(x)*my);
  circle(px,py,2);
  x:=x+h;
 end;
{построение таблицы}
setcolor(15);
settextstyle(0,0,1);
outtextXY(45,5,'Znachenia argumenta i');
outtextXY(65,25,'functii y=x^2+4x');
outtextXY(45,45,'na int. [-7;3] h=0.25');
line(40,60,40,60+(n div 2+2)*15);
line(75,60,75,60+(n div 2+2)*15);
line(120,60,120,60+(n div 2+2)*15);
line(155,60,155,60+(n div 2+2)*15);
line(200,60,200,60+(n div 2+2)*15);
for i:=0 to n div 2+2 do
line(40,60+i*15,200,60+i*15);
outtextXY(55,65,'X');
outtextXY(95,65,'Y');
outtextXY(135,65,'X');
outtextXY(170,65,'Y');
settextstyle(2,0,4);
for i:=1 to n div 2+1 do
 begin
  str(x1[i]:0:2,st);
  outtextXY(45,65+15*i,st);
  str(y1[i]:6:2,st);
  if st='-1000.00' then outtextXY(80,65+15*i,'  -  ')
  else outtextXY(80,65+15*i,st);
 end;
for i:=1 to n div 2 do
 begin
  str(x1[i+n div 2+1]:0:2,st);
  outtextXY(125,65+15*i,st);
  str(y1[i+n div 2+1]:6:2,st);
  outtextXY(160,65+15*i,st);
 end;
readln
end.

Объяснение кода листинга программы

В данном коде используется функция F, которая вычисляет значение выражения x^2+4x. Также определены константы h, xn, xk, x1, y1, x0, y0, gd, gm. Переменная xm и ym вычисляются для определения масштаба по осям Y и X соответственно. Затем происходит заполнение таблицы значений функции F. Для этого используется цикл while, который выполняется до тех пор, пока значение переменной x не превысит значение xk+h/2. Внутри цикла происходит вычисление координат точек на графике (x0, y0), (x0+round(xmx), y0), (x0-round(xmx), y0), (x0+round(xmx), y0-3), (x0-round(xmx), y0-3), (x0+3, y0-round(myi2)), (x0-3, y0-round(myi2)), (x0+3, y0+round(myi2)), (x0-3, y0+round(myi2))). Далее строятся графики функции F. Для этого используется цикл while, который выполняется до тех пор, пока значение переменной x не превысит значение xk+h/2. Внутри цикла происходит вычисление координат точек на графике (x0, y0), (x0+round(xmx), y0), (x0-round(xmx), y0), (x0+round(xmx), y0-3), (x0-round(xmx), y0-3), (x0+3, y0-round(myi2)), (x0-3, y0-round(myi2)), (x0+3, y0+round(myi2)), (x0-3, y0+round(myi2))). Затем строятся столбцы таблицы. Для этого используется цикл for, который выполняется до тех пор, пока значение переменной i не превысит значение n div 2+2. Внутри цикла происходит вычисление координат точек на графике (x0, y0), (x0+round(xmx), y0), (x0-round(xmx), y0), (x0+round(xmx), y0-3), (x0-round(xmx), y0-3), (x0+3, y0-round(myi2)), (x0-3, y0-round(myi2)), (x0+3, y0+round(myi2)), (x0-3, y0+round(myi2))). Наконец, выводится текстовая информация о значении функции F и координатах точек на графике.

Оцени полезность:

5   голосов , оценка 4.6 из 5
Похожие ответы