برمجة وبرامج


أهلا وسهلا بك زائرنا الكريم, أنت لم تقم بتسجيل الدخول بعد! يشرفنا أن تقوم بالدخول أو التسجيل إذا رغبت بالمشاركة في المنتدى

منتدى هواة البرامج » المنتدى التقني » نصوص برمجية بلغة الدلفي » حل معادلة من الدرجة الأولى باستخدام ObjectPascal

حل معادلة من الدرجة الأولى باستخدام ObjectPascal

اذهب الى الأسفل  رسالة [صفحة 1 من اصل 1]

نحن نعلم أن حل معادلة من الدرجة الأولى من الشكل
الكود:
A.x+B=0
هو كالتالي :
الكود:
X=-B/A
لكن كيف نكتب برنامج بلغة الباسكال وما هي التصريحات والعناصر اللازمة لكتابة هذا البرنامج:

هناك طرق مختلفة وعديدة حسب الحاجة وحسب موقع الكود في البرنامج وهذه واحدة من الطرق المتبعة :
أولا : يلزمنا ثلاثة عناصر TLabel وعنصرين TEdit وعنصر TButton
ثانيا : نكتب الكود التالي في الحدث OnClick للعنصر TButton


unit Unit1;

{$mode objfpc}{$H+}

interface

uses
 
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

 
{ TForm1 }

 
TForm1 = class(TForm)
   
Button1: TButton;
   
Edit1: TEdit;
   
Edit2: TEdit;
   
Label1: TLabel;
   
Label2: TLabel;
   
Label3: TLabel;
   
procedure Button1Click(Sender: TObject);

 
private
   
{ private declarations }
 
public
   
{ public declarations }
 
end;

var
 
Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
 
x, A, B: real;
begin
 
X:=0;
 
if not TRYSTRTOFloat(EDIT1.Text, A) then
   
A := 0;
 
if not TRYSTRTOFloat(EDIT2.Text, B) then
   
B := 0;
 
if B <> 0 then
   
X := -B / A;
 
Label3.Caption := Format('X=%f', [X]);
end;
end.



عدل سابقا من قبل Couade في الثلاثاء مارس 08, 2016 11:06 am عدل 1 مرات

معاينة صفحة البيانات الشخصي للعضو

passager


زائر

يمكن تعديل هذا البرنامج بإضافة دالة دات وسيطين A و B بهذا الشكل :

الكود:
function Eq1Ord(A, B: double): double;
فيصبح البرنامج بالشكل التالي :

unit seqpdU;

{$mode objfpc}{$H+}

interface

uses
 
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

 
{ TForm1 }

 
TForm1 = class(TForm)
   
Button1: TButton;
   
Edit1: TEdit;
   
Edit2: TEdit;
   
Label1: TLabel;
   
Label2: TLabel;
   
Label3: TLabel;
   
procedure Button1Click(Sender: TObject);

 
private
   
{ private declarations }
   
function Eq1Ord(A, B: double): double;
 
public
   
{ public declarations }
 
end;

var
 
Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
 
X, A, B: double;
begin
 
X := 0;
 
if not TRYSTRTOFloat(EDIT1.Text, A) then
   
A := 0;
 
if not TRYSTRTOFloat(EDIT2.Text, B) then
   
B := 0;
 
X := Eq1Ord(A, B);
 
Label3.Caption := Format('X=%f', [X]);

end;

function TForm1.Eq1Ord(A, B: double): double;

begin
 
Result := 0;
 
if B <> 0 then
   
Result := -B / A;
end;
end.



عدل سابقا من قبل Couade في الثلاثاء مارس 08, 2016 11:02 am عدل 1 مرات

معاينة صفحة البيانات الشخصي للعضو

4 ما سر الحرف X في المعادلات في الثلاثاء مارس 08, 2016 10:41 am

هل تساءلت يوما ، لماذا نستعمل المتغير x للرمز للمجهول في المعادلات ؟ هذا الفيديو يجيب على السؤال :
شاهد المقطع على يوتيوب

معاينة صفحة البيانات الشخصي للعضو
يمكن استعمال إجراء procedure  لحل المعادلة من الدرجة الأولى بالطريقة التالية :
 
الكود:
procedure Eq1Ord(A, B: double; var X: double); 

فيصبح البرنامج على الشكل التالي :
 
unit seqpdU;

{$mode objfpc}{$H+}

interface

uses
 
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

 
{ TForm1 }

 
TForm1 = class(TForm)
   
Button1: TButton;
   
Edit1: TEdit;
   
Edit2: TEdit;
   
Label1: TLabel;
   
Label2: TLabel;
   
Label3: TLabel;
   
procedure Button1Click(Sender: TObject);

 
private
   
{ private declarations }
   
procedure Eq1Ord(A, B: double; var X: double);
 
public
   
{ public declarations }
 
end;

var
 
Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
 
X, A, B: double;
begin
 
X := 0;
 
if not TRYSTRTOFloat(EDIT1.Text, A) then
   
A := 0;
 
if not TRYSTRTOFloat(EDIT2.Text, B) then
   
B := 0;
  
Eq1Ord(A, B,X);
 
Label3.Caption := Format('X=%f', [X]);

end;

procedure TForm1.Eq1Ord(A, B: double; var X: double);
begin
  if
B <> 0 then
   
x := -B / A;
end;
end.

معاينة صفحة البيانات الشخصي للعضو

الرجوع الى أعلى الصفحة  رسالة [صفحة 1 من اصل 1]

صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى