Государственное образовательное учреждение высшего профессионального образования
«Санкт-Петербургский государственный политехнический университет»
Кафедра
информационных машиностроительных технологий
Отчёт
о лабораторной работе
Дисциплина: Информатика
Тема: Подпрограммы
Студент гр. 10410/1 Новиков.Д.Ю.
Преподаватель Петров.И.П.
« » ______________ 2010 г.
Сантк-Петербург
2010год
Задание
1) Разработать функцию для вычисления арифметического выражения варианта предыдущей работы.
2) Используя полученную функцию, вычислить три значения, начиная с X0 и приращением dX.
3) Обеспечить контроль ввода данных и исключить возможность аварийного завершения программы.
4) Протестировать программу.
Схемы нелинейных процедур
Контроль ввода данных при нажатии
кнопки Raschet procedure
TForm1.RaschetClick(Sender: TObject);
Листинг основного модуля
unit Unit1Novikov_PR4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Unit2NovikovPR4;
// в список введен модуль Unit2NovikovPR4 с процедурами арифметических вычислений, преобразования в текст результата
type
TForm1 = class(TForm)
Zagolovok: TLabel; // заголовок в форме
Ed_A: TLabeledEdit; // для ввода А
Ed_X: TLabeledEdit; // X
Ed_dX: TLabeledEdit; // dX
Ed_n: TLabeledEdit; // n
Raschet: TButton; // для запуска проверки данных и расчета
Label_Y: TLabel; // для вывода значений Y
procedure FormActivate(Sender: TObject); // вывод заголовка в 2 строки
procedure Ed_AKeyPress(Sender: TObject; var Key: Char); // запуск проверки при нажатии клавиши в поле Ed_A
procedure Ed_XKeyPress(Sender: TObject; var Key: Char); // тоже для X
procedure Ed_nKeyPress(Sender: TObject; var Key: Char); // n
procedure Ed_dXKeyPress(Sender: TObject; var Key: Char); // dX
procedure RaschetClick(Sender: TObject); // проверка данных и расчет
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormActivate(Sender: TObject); // вывод заголовка в 2 строки
const Z = 'Вычисление' + #13#10 + 'Y=(A^n-X^n)^(1/2)';
begin Zagolovok.Caption := Z;
end;
procedure TForm1.Ed_AKeyPress(Sender: TObject; var Key: Char); // при нажатии клавиши в поле Ed_A
begin RealKey(Ed_A.Text, Key); // запускается процедура RealKey
end;
procedure TForm1.Ed_XKeyPress(Sender: TObject; var Key: Char); // тоже для Ed_X
begin RealKey(Ed_X.Text, Key);
end;
procedure TForm1.Ed_dXKeyPress(Sender: TObject; var Key: Char); // тоже для Ed_dX
begin RealKey(Ed_dX.Text, Key);
end;
procedure TForm1.Ed_nKeyPress(Sender: TObject; var Key: Char); // при нажатии клавиши в поле Ed_n
begin IntKey(Key); // запускается процедура IntKey записи натурального числа
end;
procedure TForm1.RaschetClick(Sender: TObject); // при щелчке по кнопке запускается проверка и расчет
var A, X, dX: Real; // исходные данные
n: Integer; // исходные данные, показатель степени
begin
if Ed_A.Text = '' // проверка поля Ed_A на заполненность
then begin ShowMessage('Введите А');
Ed_A.SetFocus;
exit;
end
else A := StrToFloat(Ed_A.Text); // в случае заполненности присваивание переменной A преобразованного в число текста поля Ed_A
if Ed_X.Text = '' // тоже для поля Ed_Х и переменной X
then begin ShowMessage('Введите X');
Ed_X.SetFocus;
exit;
end
else X := StrToFloat(Ed_X.Text);
if Ed_dX.Text = '' // тоже для поля Ed_dХ и переменной dX
then begin ShowMessage('Введите dX');
Ed_X.SetFocus;
exit;
end
else dX := StrToFloat(Ed_dX.Text);
if Ed_n.Text = '' // тоже для поля Ed_n и натуральной переменной n
then begin ShowMessage('Введите n');
Ed_n.SetFocus;
exit;
end
else n := StrToInt(Ed_n.Text);
Label_Y.Caption := 'Y' + #13#10 + Vyvod(X,A,dX,n); // вывод значения функции проверки, расчета и преобразования данных
end; // завершение процедуры щелчка по кнопке
end.