Отчет по практике: Разработка программы для построения графиков в декартовой и полярной системе координат

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

StdCtrls;

type

{ TForm1 }

TForm1 = class(TForm)

Timer1: TTimer;

Timer2: TTimer;

procedure FormClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure Timer2Timer(Sender: TObject);

private

{ private declarations }

public

{ public declarations }

end;

type

sneg=record

x,y,vx,vy:array [1..3000] of integer;

end;

var

Form1: TForm1;

i,N,t,q1,q2:integer;

sneginka:sneg;

a:string;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormClick(Sender: TObject);

begin

Timer1.Enabled:=false;

q1:=Mouse.CursorPos.x;

q2:=Mouse.CursorPos.y;

with sneginka do

for i:=1 to N do

begin

vx[i]:=(q1-x[i]) div 50;

vy[i]:=(q2-y[i]) div 50;

end;

Timer2.Enabled:=true;

end;

procedure TForm1.FormCreate(Sender: TObject); //начальное положение

begin

a:=inputbox('Снежинки','Введите количество снежинок','150');

N:=strtoint(a);

with sneginka do

for i:=1 to N do

begin

x[i]:=random(width);

y[i]:=random(height);

vx[i]:=random(5);

vy[i]:=random(50);

Form1.Canvas.Pen.Color:=clWhite;

Form1.Canvas.Pen.Width:=5;

Form1.Canvas.MoveTo(x[i],y[i]); // перемещаем позицию пера

Form1.Canvas.LineTo (x[i],y[i]); //рисование линии

end;

end;

procedure TForm1.Timer1Timer(Sender: TObject); //таймер

begin

with sneginka do

for i:=1 to N do

begin

Form1.Canvas.Pen.Color:=clBlack;

Form1.Canvas.MoveTo(x[i],y[i]); // перемещаем позицию пера

Form1.Canvas.LineTo (x[i],y[i]); //рисование линии

Form1.Canvas.Pen.Color:=clWhite;

x[i]:=x[i]+vx[i];

y[i]:=y[i]+vy[i];

Form1.Canvas.MoveTo(x[i],y[i]); // перемещаем позицию пера

Form1.Canvas.LineTo (x[i],y[i]); //рисование линии

if x[i]>=width+20 then x[i]:=random(width);

if y[i]>=height+20 then y[i]:=random(height);

end;

end;

procedure TForm1.Timer2Timer(Sender: TObject);

begin

with sneginka do

for i:=1 to N do

begin

Form1.Canvas.Pen.Color:=clBlack;

Form1.Canvas.MoveTo(x[i],y[i]); // перемещаем позицию пера

Form1.Canvas.LineTo (x[i],y[i]); //рисование линии

Form1.Canvas.Pen.Color:=clWhite;

x[i]:=x[i]+vx[i];

y[i]:=y[i]+vy[i];

Form1.Canvas.MoveTo(x[i],y[i]); // перемещаем позицию пера

Form1.Canvas.LineTo (x[i],y[i]); //рисование линии

if (x[i]>=width+20) or (x[i]<-20) then begin x[i]:=random(height); vx[i]:=random(5); end;

if (y[i]>=height+20) or (y[i]<-20) then begin y[i]:=random(height); vy[i]:=random(50); end;

end;

end;

end.

4.3 Результат работы программы

На рисунке 15 изображено окно задания количества снежинок.

Рисунок 15 - Окно задания количества снежинок

На рисунке 16 представлено главное окно программы.

Рисунок 16 - Главное окно программы

На рисунке 17 представлено окно программы в момент нажатия левой кнопки мыши.

Рисунок 17 - Окно программы в момент нажатия левой кнопки мыши

Заключение

В результате учебной практики было создано 4 программы, использующие графические возможности Lazarus.

Первая программа рисует график заданной функции в декартовой системе координат в интервале, который указывает пользователь.

Вторая - рисует график заданной функции в полярной системе координат в интервале, который задает пользователь программы.

Третья программа - это текстовый редактор с базовыми функциями: открыть файл, сохранить файл, закрыть файл, а также с функцией изменения шрифта и цвета фона.

Четвертая - программа изображает движение снежинок и позволяет при нажатии левой кнопки мыши на экран направить их в эту точку.

Библиографический список

1 Мансуров, К.Т. Основы программирования в среде Lazarus / К.Т. Мансуров. М., 2010. 772 с.

2 Free Pascal и Lazarus: Учебник по программированию/ Е.Р. Алексеев, О.В. Чеснокова, Т.В. Кучер. М.: Изд. ALT Linux; ДМК Пресс, 2010. 438 c.