- •Лабораторный практикум по информатике для проведения занятий во втором семестре
- •Лабораторная работа №1
- •1.Процедурные и функциональные типы данных.
- •Var p: SwapProc;
- •2. Пример программной реализации функционального типа.
- •X,y : integer;
- •3. Практическая часть
- •3.2. Приближенное интегрирование функций
- •4. Задание.
- •Лабораторная работа №2 Тема занятия: «Модули»
- •1. Назначение модуля и его структура.
- •2. Структура модуля
- •Interface
- •{ Глобальные описания констант, типов, переменных, заголовки процедур и функций}
- •Implementation
- •3. Интерфейсная секция
- •4. Секция инициализации
- •5. Практическая часть
- •Interface
- •Implementation
- •I: Integer;
- •Задание на лабораторную работу
- •Лабораторная работа №3 Тема занятия: «Разработка оконного интерфейса» Задание на лабораторную работу
- •Interface
- •Image2: tImage;
- •Image1: tImage;
- •Image3: tImage;
- •Var Form1: tForm1;
- •Лабораторная работа №4 Тема занятия: «Разработка дополнительной оконной формы для рисования графика функции» Задание на лабораторную работу
- •1.Алгоритм построения графика функции
- •Interface
Interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,Dialogs,Unit2,Unit3;
Const
k=101; // количество точек графика
xn=70; yn=20; // границы поля вывода графика, левый верхний
xk=750; yk=450; // и правый нижний угол условного прямоугольника
ndx=10; ndy=10; // число интервалов масштабной сетки по осям вывода
n=5; m=2; // формат вывода числа
type
TForm7 = class(TForm)
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form7: TForm7;
// обозначение переменных дано в соответствии с описанием алгоритма
dx,dy,rx,ry,ymin,ymax,xmin,xmax:real;
kx,ky:array[1..k] of integer; // массивы значений аргумента и функции
//в экранных координатах
x,y:array[1..k] of real; // массивы реальных, абсолютных значений
// аргумента и функции
lx,ly:integer;
mx,my:integer; // ширина и высота поля вывода графика
i:integer;
chislo:string[20];
implementation
uses Unit1;
{$R *.dfm}
procedure TForm7.FormActivate(Sender: TObject);
var st:string;
begin
Form7.refresh;
xmin:=a; xmax:=b;
dx:=(xmax-xmin)/(k-1);
for i:=1 to k do // заполнение массивов реальными значениями
begin // аргумента и функции
x[i]:=xmin+(i-1)*dx;
case key of // выбор уравнения
0: y[i]:=f1(x[i]);
1: y[i]:=f2(x[i]);
2: y[i]:=f3(x[i]);
3: y[i]:=f11(x[i]);
4: y[i]:=f22(x[i]);
5: y[i]:=f33(x[i]);
end;
end;
ymin:=y[1]; ymax:=y[1];
for i:=2 to k do
begin
if y[i]<ymin then ymin:=y[i];
if y[i]>ymax then ymax:=y[i];
end;
rx:=x[k]-x[1];
ry:=ymax-ymin;
mx:=xk-xn;
my:=yk-yn;
for i:=1 to k do // заполнение массивов аргумента и функции
begin //в размерности экранных координат
kx[i]:=round((x[i]-x[1])*mx/rx)+xn;
ky[i]:=round((ymax-y[i])*my/ry)+yn;
end;
with form7.Canvas do //рисование графика функции
begin
pen.Color:=clgreen;
pen.Width:=3;
rectangle(xn-3,yn-3,xk+3,yk+3); // очерчиваем поле вывода графика
pen.Color:=clred;
pen.Width:=2;
moveto(kx[1],ky[1]); // переносим перо в начало системы координат
for i:=1 to k-1 do // строим график отрезками прямых линий
lineto(kx[i+1],ky[i+1]);
lx:=(xk-xn) div ndx; //вычисляем шаг изменения аргумента в экранных
// координатах
dx:=(x[k]-x[1])/ndx; //вычисляем шаг изменения аргумента
//в абсолютных координатах
pen.Color:=clblue;
pen.Width:=2;
for i:=1 to ndx+1 do
begin
moveto(xn+lx*(i-1),yn); lineto(xn+lx*(i-1),yk); //строим вертикальные линии
// масштабной сетки
str((xmin+(i-1)*dx):n:m, chislo); // оцифровываем ось абцисс
font.Color:=clblack;
textout(xn+lx*(i-1)-(n-m)*8+4,yk+14, chislo);
end;
ly:=(yk-yn) div ndy; //вычисляем шаг изменения функции в экранных
// координатах
dy:=(ymax-ymin)/ndy; ; //вычисляем шаг изменения функции
//в абсолютных координатах
pen.Color:=clblue;
pen.Width:=2;
for i:=1 to ndy+1 do
begin
moveto(xn,yn+ly*(i-1)); lineto(xk,yn+ly*(i-1)); //строим горизонтальные
// линии масштабной сетки
str((ymin+(i-1)*dy):n:m, chislo); // оцифровываем ось ординат
font.Color:=clblack;
textout(xn-(n*8+15),yk-(i-1)*ly, chislo);
end;
end;
end;
