Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗЗООПвЛЗ_LabWork_2_2015.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
16.17 Mб
Скачать

Команда розгалудження if (умовна команда)

іf <логічний вираз> then < команда 1> else< команда 2>;

Дія команди. Якщо логічний вираз істинний, то використовується команда 1, в протилежному випадку – команда 2. Команди 1 та 2 можуть бути простими або складеними.

Приклад: Нехай х = 9. У результаті виконання команд

if x > 7 then y := x * x else y := sin(x);

if x < 5 then z := exp(x) else z := sqrt(x);

отримаємо у = 81, z = 3.

іf <логічний вираз> then < команда 1>;

Дія команди. Якщо логічний вираз істинний, то використовується команда 1, інакше виконується команда, яка знаходиться за даною конструкцією.

Приклад: Нехай х = 25. У результаті виконання команд

if x > 12 then y := 2 * x; z := 10;

if x < 5 then z := exp(x) ;

отримаємо у = 50, z = 10.

Додаток 3 Приклад програми реалізованої за допомогою об’єктно-орієнтованого підходу.

Лістінг №1 Головний модуль програми

unit UMain;

interface

uses

Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,

System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, UKoeff;

type

TFrmMain = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Memo1: TMemo;

Button1: TButton;

Button2: TButton;

Button3: TButton;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure FormDestroy(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

theNumbers: TNumbers; ..// Оголошення типу клас

public

{ Public declarations }

end;

var

FrmMain: TFrmMain;

implementation

{$R *.dfm}

procedure TFrmMain.Button1Click(Sender: TObject);

begin

Memo1.Clear;// Очистити компоненту Memo

theNumbers.Clear;

theNumbers.AddСoeff(StrToFloat(Edit1.Text), StrToFloat(Edit2.Text),

StrToFloat(Edit3.Text)); // Присвоїти значення коеф. Які визначені в класі TNumbers

theNumbers.Diskr(StrToFloat(Edit1.Text), StrToFloat(Edit2.Text),

StrToFloat(Edit3.Text)); // Розрахувати дискримінант

if theNumbers.rDiskr >= 0 then

begin

// Знайти корені квадратного рівняння за допомогою процедури CalculateСoeff яка

// визначена TNumbers

theNumbers.CalculateСoeff(StrToFloat(Edit1.Text), StrToFloat(Edit2.Text));

Memo1.Lines.Add(' x1 = ' + FloatToStr(theNumbers.X1));

Memo1.Lines.Add(' x2 = ' + FloatToStr(theNumbers.X2));

end;

if theNumbers.rDiskr < 0 then

Memo1.Lines.Add('Рішень немає!!!!');

end;

procedure TFrmMain.Button2Click(Sender: TObject);

begin

Memo1.Clear;

Edit1.Clear;

Edit2.Clear;

Edit3.Clear;

end;

procedure TFrmMain.Button3Click(Sender: TObject);

begin

Сlose;

end;

procedure TFrmMain.FormCreate(Sender: TObject);

begin

// Створити обєкт

theNumbers := TNumbers.Create;

end;

procedure TFrmMain.FormDestroy(Sender: TObject);

begin

// Звільнити память з під обєкта

theNumbers.Free;

end;

end.

Лістінг №2 Клас в окремому юніті UKoeff.pas

unit UKoeff;

interface

uses SysUtils;

type

TNumbers = class(TObject)

private

rTotalA: Real;

rTotalB: Real;

rTotalC: Real;

public

rDiskr: Real; // Дискримінант

X1: Real; // Корень рівняння X1

X2: Real; // Корень рівняння X2

//Процедури для знаходження коренів квадратного рівняння

procedure AddСoeff(ValueA, ValueB, ValueC: Real); // Занести дані

procedure Clear;

function Diskr(ValueA, ValueB, ValueC: Real): Real;//Порахувати дискримінант

procedure CalculateСoeff(ValueA, ValueB: Real);//Порахувати корені рівняння

end;

implementation

procedure TNumbers.AddСoeff(ValueA: Real; ValueB: Real; ValueC: Real);

begin

rTotalA := ValueA;

rTotalB := ValueB;

rTotalC := ValueC;

end;

procedure TNumbers.Clear;

begin

rTotalA := 0.0;

rTotalB := 0.0;

rTotalC := 0.0;

rDiskr := 0.0;

X1 := 0.0;

X2 := 0.0;

end;

//Порахувати дискримінант

function TNumbers.Diskr(ValueA, ValueB, ValueC: Real): Real;

begin

rDiskr := ValueB * ValueB - 4 * ValueA * ValueC;

end;

//Порахувати корені рівняння

procedure TNumbers.CalculateСoeff(ValueA: Real; ValueB: Real);

begin

X1 := (-ValueB + sqrt(rDiskr)) / (2 * ValueA);

X2 := (-ValueB - sqrt(rDiskr)) / (2 * ValueA);

end;

end.

1 Д.Осипов Delphi. Профессиональное программирование -2006. Стр. 219