Hi-Tech  ->  Программы  | Автор: | Добавлено: 2015-03-23

Корни квадратного уравнения

Среда разработки Borland Delphi 2006 является последней версией на сегодня программного продукта от фирмы Borland из серии систем программирования. Основные особенности среды разработки: визуальное конструирование программ; использование готовых компонентов – заготовок для будущих программ; поддержка нескольких языков программирования; возможность создания программ под разные платформы (. NET и Win32); введение множества технологий, ускоряющих и облегчающих написание программ.

Microsoft. NET – это новая технология разработки программного обеспечения под Windows. В основе лежит идея универсальности программного кода, что даёт возможность работы программы на любой платформе при условии, что платформа поддерживает технологию. NET. Особенности платформы. NET: полное межъязыковое взаимодействие; общая среда выполнения программ. Программа вычисления корней квадратного уравнения представлена для. NET и Win32.

Программирование – процесс создания программы, который можно представить последовательностью шагов: определение требований к программе; разработка алгоритма решения задачи; написание команд на выбранном языке программирования; отладка программы; тестирование программы.

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

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

АЛГОРИТМ ВЫПОЛНЕНИЯ ПРОГРАММЫ

Исходными данными для алгоритма являются коэффициенты уравнения: а – при второй степени неизвестного , b – при первой, с – при нулевой степени.

Результат – значения корней уравнения или сообщение о том, что уравнение их не имеет.

1. Вычисляем дискриминант по формуле d=b2 - 4ac.

2. Если значение дискриминанта отрицательно, то уравнение корней не имеет. В противном случае корни рассчитываются по формулам:

2 ЛИСТИНГ ПРОГРАММЫ

2. 1 Программа вычисления корней квадратного уравнения, написанная для платформы. NET.

unit WinForm1; interface uses

System. Drawing, System. Collections, System. ComponentModel,

System. Windows. Forms, System. Data; type

TWinForm1 = class(System. Windows. Forms. Form)

{$REGION 'Designer Managed Code'} strict private

///

/// Required designer variable.

///

Components: System. ComponentModel. Container;

TextBox1: System. Windows. Forms. TextBox;

TextBox2: System. Windows. Forms. TextBox;

TextBox3: System. Windows. Forms. TextBox;

Label1: System. Windows. Forms. Label;

Label2: System. Windows. Forms. Label;

Label3: System. Windows. Forms. Label;

Label4: System. Windows. Forms. Label;

Label5: System. Windows. Forms. Label;

Button1: System. Windows. Forms. Button;

Button2: System. Windows. Forms. Button;

///

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

///

procedure InitializeComponent; procedure Button2_Click(sender: System. Object; e: System. EventArgs); procedure Button1_Click(sender: System. Object; e: System. EventArgs); procedure CheckInput(sender: System. Object; e: System. Windows. Forms. KeyPressEventArgs);

{$ENDREGION} strict protected

///

/// Clean up any resources being used.

///

procedure Dispose(Disposing: Boolean); override; private

{ Private Declarations } public constructor Create; end;

[assembly: RuntimeRequiredAttribute(TypeOf(TWinForm1))] implementation

{$AUTOBOX ON}

{$REGION 'Windows Form Designer generated code'}

///

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

///

procedure TWinForm1. InitializeComponent; begin

Self. TextBox1 := System. Windows. Forms. TextBox. Create;

Self. TextBox2 := System. Windows. Forms. TextBox. Create;

Self. TextBox3 := System. Windows. Forms. TextBox. Create;

Self. Label1 := System. Windows. Forms. Label. Create;

Self. Label2 := System. Windows. Forms. Label. Create;

Self. Label3 := System. Windows. Forms. Label. Create;

Self. Label4 := System. Windows. Forms. Label. Create;

Self. Label5 := System. Windows. Forms. Label. Create;

Self. Button1 := System. Windows. Forms. Button. Create;

Self. Button2 := System. Windows. Forms. Button. Create;

Self. SuspendLayout;

// TextBox1

Self. TextBox1. Location := System. Drawing. Point. Create(40, 48);

Self. TextBox1. Name := 'TextBox1';

Self. TextBox1. Size := System. Drawing. Size. Create(48, 20);

Self. TextBox1. TabIndex := 0;

Self. TextBox1. Text := '';

Include(Self. TextBox1. KeyPress, Self. CheckInput);

// TextBox2

Self. TextBox2. Location := System. Drawing. Point. Create(40, 76);

Self. TextBox2. Name := 'TextBox2';

Self. TextBox2. Size := System. Drawing. Size. Create(48, 20);

Self. TextBox2. TabIndex := 1;

Self. TextBox2. Text := '';

Include(Self. TextBox2. KeyPress, Self. CheckInput);

// TextBox3

Self. TextBox3. Location:=System. Drawing. Point. Create(40,104);

Self. TextBox3. Name := 'TextBox3';

Self. TextBox3. Size := System. Drawing. Size. Create(48, 20);

Self. TextBox3. TabIndex := 2;

Self. TextBox3. Text := '';

Include(Self. TextBox3. KeyPress, Self. CheckInput);

// Label1

Self. Label1. Location :=System. Drawing. Point. Create(24, 16);

Self. Label1. Name := 'Label1';

Self. Label1. Size := System. Drawing. Size. Create(328, 24);

Self. Label1. TabIndex := 3;

Self. Label1. Text := 'Введите значения коэффициентов квадратного уравнения:';

// Label2

Self. Label2. Location :=System. Drawing. Point. Create(24, 55);

Self. Label2. Name := 'Label2';

Self. Label2. Size := System. Drawing. Size. Create(16, 16);

Self. Label2. TabIndex := 4;

Self. Label2. Text := 'А:';

// Label3

Self. Label3. Location :=System. Drawing. Point. Create(24, 83);

Self. Label3. Name := 'Label3';

Self. Label3. Size := System. Drawing. Size. Create(16, 16);

Self. Label3. TabIndex := 5;

Self. Label3. Text := 'B:';

// Label4

Self. Label4. Location := System. Drawing. Point. Create(24, 111);

Self. Label4. Name := 'Label4';

Self. Label4. Size := System. Drawing. Size. Create(16, 16);

Self. Label4. TabIndex := 6;

Self. Label4. Text := 'C:';

// Label5

Self. Label5. BorderStyle := System. Windows. Forms. BorderStyle. Fixed3D;

Self. Label5. Location := System. Drawing. Point. Create(104, 48);

Self. Label5. Name := 'Label5';

Self. Label5. Size := System. Drawing. Size. Create(120, 80);

Self. Label5. TabIndex := 7;

// Button1

Self. Button1. Location := System. Drawing. Point. Create(240, 48);

Self. Button1. Name := 'Button1';

Self. Button1. Size := System. Drawing. Size. Create(120, 32);

Self. Button1. TabIndex := 8;

Self. Button1. Text := 'вычислить';

Include(Self. Button1. Click, Self. Button1_Click);

// Button2

Self. Button2. Location := System. Drawing. Point. Create(240, 96);

Self. Button2. Name := 'Button2';

Self. Button2. Size := System. Drawing. Size. Create(120, 32);

Self. Button2. TabIndex := 9;

Self. Button2. Text := 'завершение работы';

Include(Self. Button2. Click, Self. Button2_Click);

// TWinForm1

Self. AutoScaleBaseSize := System. Drawing. Size. Create(5, 13);

Self. ClientSize := System. Drawing. Size. Create(386, 152);

Self. Controls. Add(Self. Button2);

Self. Controls. Add(Self. Button1);

Self. Controls. Add(Self. Label5);

Self. Controls. Add(Self. Label4);

Self. Controls. Add(Self. Label3);

Self. Controls. Add(Self. Label2);

Self. Controls. Add(Self. Label1);

Self. Controls. Add(Self. TextBox3);

Self. Controls. Add(Self. TextBox2);

Self. Controls. Add(Self. TextBox1);

Self. FormBorderStyle := System. Windows. Forms. FormBorderStyle. FixedSingle;

Self. MaximizeBox := False;

Self. Name := 'TWinForm1';

Self. StartPosition := System. Windows. Forms. FormStartPosition. CenterScreen;

Self. Text := 'Вычисление корней квадратного уравнения';

Self. ResumeLayout(False); end;

{$ENDREGION} procedure TWinForm1. Dispose(Disposing: Boolean); begin if Disposing then begin if Components <> nil then Components. Dispose(); end; inherited Dispose(Disposing); end; constructor TWinForm1. Create; begin inherited Create;

// Required for Windows Form Designer support

InitializeComponent;

// TODO: Add any constructor code after InitializeComponent call end; procedure TWinForm1. CheckInput(sender: System. Object; e: System. Windows. Forms. KeyPressEventArgs); begin if not (e. KeyChar in [#8,',','0'. '9']) then e. Handled := true; end; procedure TWinForm1. Button1_Click(sender: System. Object; e: System. EventArgs); var A,B,C:single;

D:real;

X1,X2:real; begin try

A:=System. Convert. ToSingle(TextBox1. Text);

B:=System. Convert. ToSingle(TextBox2. Text);

C:=System. Convert. ToSingle(TextBox3. Text); except on e:FormatException do begin if (TextBox1. Text='')or(TextBox2. Text='')or(TextBox3. Text='') then

MessageBox. Show('Необходимо ввести все коэффициенты. ',

'Ошибка при вводе исходных данных!',MessageBoxButtons. OK,

MessageBoxIcon. Information); exit; end; end;

D:=B*B-4*A*C; if D<0 then begin

Label5. Text:='Уравнение не имеет действительных корней'; end else begin

X1:=(-B-sqrt(D))/(2*A);

X2:=(-B+sqrt(D))/(2*A);

Label5. Text:='X1 = '+X1. ToString+' X2 = '+X2. ToString; end; end; procedure TWinForm1. Button2_Click(sender: System. Object; e: System. EventArgs); begin

Application. Exit; end; procedure TForm1. N2Click(Sender: TObject); begin messageDlg('Квадратное уравнение с одним неизвестным называется уравнение вида ax2+bx+c=0 где а?0 '

,mtinformation,[mbOK],10) ; end; procedure TForm1. N3Click(Sender: TObject); begin messageDlg('Дискриминантом квадратного уравнения называется число '+#13+

' D=b2-4ac. '+#13+

'Справедливы следующие утверждения: '+#13+

' 1. если D <0, то уравнение решений не имеет'+#13+

' 2. если D= 0, то уравнение имеет единственное решение x=(-b)/2a. '+#13+

' 3. если D>0, то уравнение имеет два решения : '+#13+

' x1,2=(-b±vD) /2a'+#13,mtinformation,[mbOK],10) ; end; procedure TForm1. N4Click(Sender: TObject); begin messageDlg(' Пример '+#13+

'x^2-4x+3=0. '+#13+

'a=1;b=-4;c=3. '+#13+

'D=(-4)2-4*1*3=16-12=4 '+#13+

'x1=(-(-4)-v4)/2*1=1x2=(-(-4)+v4)/2*1=3 '+#13,mtinformation,[mbOK],10) ; end; end.

2. 2 Программа вычисления корней квадратного уравнения, написанная для платформы Win32.

unit Unit1; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type

TForm1 = class(TForm)

Edit1: TEdit; Edit2: TEdit;

Edit3: TEdit; Label1: TLabel;

Label2: TLabel; Label3: TLabel;

Label4: TLabel; Label5: TLabel;

Button1: TButton; Button2: TButton; procedure CheckInput(Sender: TObject; var Key: Char); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end; var

Form1: TForm1; implementation

{$R *. dfm} procedure TForm1. Button1Click(Sender: TObject); var A,B,C:real;

D:real;

X1,X2:real; begin try

A:=StrToInt(Edit1. Text);

B:=StrToInt(Edit2. Text);

C:=StrToInt(Edit3. Text); except

On EConvertError do begin if (Edit1. Text='')or(Edit2. Text='')or(Edit3. Text='') then

MessageDlg('Необходимо ввести все коэффициенты',mtInformation,[mbOK],0) else

MessageDlg('При задании ко\ффициентов используйте числа',mtInformation,[mbOK],0);

Exit; end; end;

D:=B*B-4*A*C; if D<0 then begin

Label5. Caption:='Уравнение не имеет действительных корней'; end else begin

X1:=(-B-sqrt(D))/(2*A);

X2:=(-B+sqrt(D))/(2*A);

Label5. Caption:='X1 = '+FloatToStrF(X1,ffFixed,5,2)+Chr(13)+ 'X2 = '+FloatToStrF(X2,ffFixed,5,2); end; end; procedure TForm1. Button2Click(Sender: TObject); begin

Close; end; procedure TForm1. CheckInput(Sender: TObject; var Key: Char); begin if not (Key in [#8,'0'. '9']) then

Abort; end; procedure TForm1. N2Click(Sender: TObject); begin messageDlg('Квадратное уравнение с одним неизвестным называется уравнение вида ax2+bx+c=0 где а?0 '

,mtinformation,[mbOK],10) ; end; procedure TForm1. N3Click(Sender: TObject); begin messageDlg('Дискриминантом квадратного уравнения называется число '+#13+

' D=b2-4ac. '+#13+

'Справедливы следующие утверждения: '+#13+

' 1. если D <0, то уравнение решений не имеет'+#13+

' 2. если D= 0, то уравнение имеет единственное решение x=(-b)/2a. '+#13+

' 3. если D>0, то уравнение имеет два решения : '+#13+

' x1,2=(-b±vD) /2a'+#13,mtinformation,[mbOK],10) ; end; procedure TForm1. N4Click(Sender: TObject); begin messageDlg(' Пример '+#13+

'x^2-4x+3=0. '+#13+

'a=1;b=-4;c=3. '+#13+

'D=(-4)2-4*1*3=16-12=4 '+#13+

'x1=(-(-4)-v4)/2*1=1x2=(-(-4)+v4)/2*1=3 '+#13,mtinformation,[mbOK],10) ; end; end.

ЗАКЛЮЧЕНИЕ

Программа вычисления корней квадратного уравнения имеет одно окно. Программа получает от пользователя исходные данные о коэффициентах уравнения, эти данные вводятся с помощью полей редактирования. Поясняющий текст и результат выводится с помощью компонента для отображения текста. Выполнение расчётов и завершение программы выполняется с помощью двух кнопок.

Проект для платформы Win32 представляет собой совокупность следующих файлов: файл описания проекта (bdsproj); главный модуль (dpr); файл ресурсов (res); файл конфигурации (cfg); модуль формы (dfm); модуль реализации (pas). Файл описания проекта представляет собой файл специального формата, в котором записана общая информация о проекте. В главном модуле содержатся инструкции, обеспечивающие запуск программы. В заголовке модуля указано имя программы. Модуль формы содержит только информацию о её настройках и компонентах, которые на ней присутствуют. Модуль формы создаётся автоматически при выполнении настроек формы, перенесении на неё и настройке компонентов. В модуле реализации содержится информация только о присутствующих на форме компонентах и процедурах обработки событий этих компонентов. Модуль реализации можно условно разделить на две части – раздел описания и собственно раздел реализации. Раздел описания (начинается со служебного слова interfase) содержит автоматически сформированное Delphi объявление типа формы. Раздел также содержит перечень компонентов, которые находятся на форме. Раздел реализации начинается со служебного слова implementation. Он содержит объявление локальных процедур и функций, в том числе и процедур обработки событий.

При сравнении размеров файлов программ для. NET и Win32, заметим, что первый занимает всего 30 Кбайт, а второй 400 Кбайт. Такое существенное различие в размере выходного файла объясняется просто. При компиляции в. NET в директивах главного модуля были ссылки на библиотеки из Microsoft. NET Framework. Ссылки, но не сами библиотеки. Исполняемый файл формировался с учётом того, что вся необходимая информация (информация о форме, компонентах и используемых функциях) хранилась во внешних библиотеках. Поэтому его размер достаточно мал. Большой размер файла, полученного компилятором для Win32, объясняется тем, что вся необходимая информация собрана внутри исполняемого файла. Соответственно, для работы первого проекта необходимо наличие установленного на компьютере пакета Microsoft. NET Framework (библиотек, указанных в директивах главного модуля проекта). Во втором случае этого не требуется, полученный файл совершенно автономен.

Комментарии


Войти или Зарегистрироваться (чтобы оставлять отзывы)