Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
14
Добавлен:
20.06.2014
Размер:
68.4 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

Коломенский институт (филиал)

Государственного образовательного учреждения

Высшего профессионального образования

«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ОТКРЫТЫЙ УНИВЕРСИТЕТ»

____________________________________________________

Кафедра автоматики и электроники в машиностроении

Отчёт

по лабораторной работе №1

на тему: «_____________________________________________»

по дисциплине:

«Программирование и основы алгоритмизации»

Выполнил: студент группы УТС-11

Осипов А. А. (№11147)

Аудитория №210, ПК №12

11.04.12г.

Принял: преподаватель

Филоненко Ирина Николаевна

г. Коломна, 2012г.

Задание 1.

Написать программу для аппроксимации функции, заданной в виде таблицы (таблица 1.1) и представленной в описании работы, в соответствии с условием своего варианта (таблицы 1.2 – 1.4). Оформить интерполяционный метод, как процедуру-реакцию на событие onClick в Windows-приложении. Для ввода исходных данных функции, заданной в виде таблицы, использовать объекты класса TMemo.

Произвести отладку программы.

Вариант 4.

Аргумент функции x: 0.93; вид интерполяции: квадратичная по Лагранжу.

x

0.8

1.0

y

2.601

3.001

Блок-схема:

Код программы:

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TTask1 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Memo1: TMemo;

Memo2: TMemo;

Edit1: TEdit;

Label1: TLabel;

Edit2: TEdit;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

procedure Button3Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Task1: TTask1;

implementation

{$R *.dfm}

procedure TTask1.Button3Click(Sender: TObject);

begin

close;

end;

procedure TTask1.Button1Click(Sender: TObject);

var

x,y:real;

i,n:integer;

k:array [0..100] of real;

l:array [0..100] of real;

begin

while (Edit1.Text='') do

begin

ShowMessage('Задайте промежуточное значение x0');

exit;

end;

while not (Memo1.Lines.Count=Memo2.Lines.Count) do

begin

ShowMessage('Введите равное количество значений x и y');

exit;

end;

n:=Memo1.Lines.Count;

x:=StrToFloat(Edit1.Text);

for i:=0 to n-1 do

begin

k[i]:=StrToFloat(Memo1.Lines[i]);

l[i]:=StrToFloat(Memo2.Lines[i]);

end;

i:=0;

repeat i:=i+1 until x<k[i];

if i=n then i:=i-1;

y:=l[i-1]*((x-k[i])*(x-k[i+1]))/((k[i-1]-k[i])*(k[i-1]-k[i+1]))+l[i]*((x-k[i-1])*(x-k[i+1]))/((k[i]-k[i-1])*(k[i]-k[i+1]))+l[i+1]*((x-k[i-1])*(x-k[i]))/((k[i+1]-k[i-1])*(k[i+1]-k[i]));

Edit2.Text:=FloatToStr(y);

end;

procedure TTask1.Button2Click(Sender: TObject);

begin

Edit1.Text:='';

Memo1.Lines.Clear;

Memo2.Lines.Clear;

Edit2.Text:='';

end;

end.

Задание 2.

Написать программу (Windows-приложение в Delphi) для вычисления полинома по схеме Горнера (см. свой вариант в таблице 1.5).

Отладить программу, используя тестовый пример.

Блок-схема:

Код программы:

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TTask2 = class(TForm)

Memo1: TMemo;

Edit2: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Label1: TLabel;

Label3: TLabel;

Edit1: TEdit;

Label2: TLabel;

procedure Button3Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Task2: TTask2;

implementation

{$R *.dfm}

procedure TTask2.Button3Click(Sender: TObject);

begin

close;

end;

procedure TTask2.Button2Click(Sender: TObject);

begin

edit1.Text:='';

memo1.lines.clear;

edit2.Text:='';

end;

procedure TTask2.Button1Click(Sender: TObject);

var

a:array [0..100] of real;

n,i:integer;

P,x:real;

begin

n:=Memo1.Lines.Count;

x:=StrToFloat(Edit2.Text);

for i:=0 to n-1 do

a[i]:=StrToFloat(Memo1.Lines[i]);

P:=a[n-1];

for i:=n-2 downto 0 do

P:=P*x+a[i];

Edit1.Text:=FloatToStr(P);

end;

end.