Пример 13.1.

Создать вызывающую программу, использующую модуль комплексной арифметики Complex, содержащий 4 функции: сложение, вычитание, умножение и деление. Вызывающая программа должна выполнить функцию по варианту задания функцию сложения с комплексными операндами Comp1=6 + i*8 и Comp2=7 + i*11.

  1. Из главного окна ИСР командой Файл=>Создать модуль генерируем пустой модуль Unit (модуль без формы). Получаем в окне Редактора кода страницу шаблона модуля с именем Unit1.
  2. В редакторе кода заносим код модуля.
  3. Сохраним модуль с именем Complex.Pas.
  4. Компилируем проект.
  5. Командой Файл=>Создать… создаем проект вызывающей программы.

Приложение перед закрытием программы:

paskal75

Форма содержит:

  • Метки Label1…Label4 для отображения поясняющих надписей имен вводимых переменных.
  • Однострочные редакторы Edit1…Edit4 для ввода значений переменных a, b, c, d.
  • Многострочный редактор Memo1 для вывода результатов.
  • Кнопка Button1 (Ввод значений) принимает значения введенных в редакторы переменных.
  • Кнопка BitBtn1 (Выполнить операцию) осуществляет вычисления и выводит результаты в блок Memo1.
  • Кнопка BitBtn2 (Очистить Memo1) удаляет содержимое поля результатов, защищая его от переполнения.
  • Кнопка BitBtn3 (Закрыть)  завершает работу программы (дублирует стандартную кнопку закрытия окна Windows).
  1. В коде модуля формы вызывающей программы добавляем:
  • В строку uses ссылку на модуль Complex.
  • В раздел var переменные a,b,c,d типа real и Comp1, Comp2, Comp3 типа TComplex.
  1. Создаем обработчики событий нажатия кнопок.
  2. Сохраняем проект: модуль формы под именем Prg_13_1_ и проект под именем Prg_13_1.

Листинг модуля Complex

unit Complex;                                                      // Комплексная арифметика

{$mode objfpc}{$H+}

interface

uses

Classes, SysUtils;

type

TComplex = record                                     // Тип комплексного числа

Re, Im: Real

end;

function AddC(x,y: TComplex):TComplex; // Комплексное сложение

function SubC(x,y: TComplex):TComplex;          // Комплексное вычитание

function MultC(x,y: TComplex):TComplex;          // Комплексное умножение

function DivC(x,y: TComplex):TComplex;           // Комплексное деление

implementation

function AddC(x,y: TComplex):TComplex;

begin

Result.Re:=x.Re + y.Re;

Result.Im:=x.Im + y.Im;

end;

function SubC(x,y: TComplex):TComplex;

begin

Result.Re:=x.Re – y.Re;

Result.Im:=x.Im – y.Im;

end;

function MultC(x,y: TComplex):TComplex;

begin

Result.Re:=x.Re*y.Re – x.Im*y.Im;

Result.Im:=x.Re*y.Im +  x.Im*y.Re;

end;

function DivC(x,y: TComplex):TComplex;

var  z: Real;

begin

z:=sqr(y.Re)+sqr(y.Im);

try                                                                       // Защита при делении на 0

Result.Re:=(x.Re*y.Re + x.Im*y.Im)/z;

Result.Im:=(x.Re*y.Im – x.Im*y.Re)/z;

except                                                                 // Если делитель 0, то

Result.Re:=1.1e309;

Result.Im:=1.1e309

end;

end;

end.

Листинг модуля формы вызывающей программы

unit Prg_13_1_;

{$mode objfpc}{$H+}

interface

uses

Classes, SysUtils, LResources, Forms, Controls, Graphics,

Dialogs, StdCtrls,  Buttons, Complex;

type

TForm1 = class(TForm)

BitBtn1: TBitBtn;             // Кнопка «Закрыть»

BitBtn2: TBitBtn;             // Кнопка «Очистить Memo»

BitBtn3: TBitBtn;             // Кнопка «Выполнить операцию»

Button1:TButton;            // Кнопка «Ввод значений»

Edit1: TEdit;                   // для a

Edit2: TEdit;                   // для b

Edit3: TEdit;                   // для c

Edit4: TEdit;                          // для d

Label1: TLabel;                     // a =

Label2: TLabel;                     // b =

Label3: TLabel;                     // c =

Label4: TLabel;                     // d =

Memo1: TMemo;

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

a,b,c,d: real;

Comp1, Comp2, Comp3:TComplex;

implementation

{ TForm1 }

procedure TForm1.BitBtn3Click(Sender: TObject);

begin

Comp1.Re:=a;

Comp1.Im:=b;

Comp2.Re:=c;

Comp2.Im:=d;

Comp3:=AddC(Comp1,Comp2);

memo1.Lines.Add(‘Исходные данные’);

memo1.Lines.Add(‘Comp1=’+FloatToStr(Comp1.Re)+’+i*’+

FloatToStr(Comp1.Im));

memo1.Lines.Add(‘Comp2=’+FloatToStr(Comp2.Re)+’+i*’+

FloatToStr(Comp2.Im));

memo1.Lines.Add(”);

memo1.Lines.Add(‘Результат комплексной операции – сложение’);

memo1.Lines.Add(‘Comp3=’+FloatToStr(Comp3.Re)+’+i*’+

FloatToStr(Comp3.Im));

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

a:=StrToFloat(Edit1.Text);

b:=StrToFloat(Edit2.Text);

c:=StrToFloat(Edit3.Text);

d:=StrToFloat(Edit4.Text);

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

memo1.Clear;

end;

initialization

{$I prg_13_1_.lrs}

end.

Приложение перед закрытием программы:

paskal76

Twitter SEO Community Ваау! News2.ru Chipp Korica SMI2 Google Bookmarks Digg I.ua Закладки Yandex Linkstore Myscoop Communizm Ru-marks Webmarks Ruspace Linkomatic Kli.kz Web-zakladka Zakladok.net Reddit delicious Ma.gnolia Technorati Slashdot Yahoo My Web БобрДобр.ru Memori.ru rucity.com МоёМесто.ru Mister Wong



Copyright © 2009-2010 Программирование на паскале.