الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الدرس الثاني في لغة Object pascal :المتغيرات

بدأه أحمد أبو عبد البر في 14 مارس 2013 · 1 رد · 3,657 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

 

نكمل ما بدأناه بعون الله تعالى

 

المتغيرات

المتغيرات هي عبارة حاويات للبيانات. فمثلاً في الطريقة الرياضية عندما نقول أن س = 5 فهذا يعني أن س هي متغير وهي في هذه اللحظة تحمل القيمة 5. كذلك يمكن إدخالها في عبارات رياضية، حيث أن قيمة س مضروبة في 2 ينتج عنها 10:

 

س = 5

س * 2 ينتج عنها 10

 

تتميز لغة باسكال بأنها تلتزم بنوع المتغيرStrong Typed language، فحسب البيانات التي سوف نضعها لابد من تحديد نوع المتغير. وهذا المتغير سوف يحمل نوع واحد فقط من البيانات طوال تشغيل البرنامج، فمثلاً إذا قمنا بتعريف متغير من النوع الصحيح، فإنه يمكننا فقط إسناد ارقام صحيحة له، ولايمكننا إسناد عدد كسري مثلاً.

كذلك يجب التعريف عن المتغير قبل إستخدامه كما في المثال التالي:

program FirstVar;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this };

var
  x: Integer;
begin
  x:= 5;
  Writeln(x * 2);
  Writeln('Press enter key to close');
  Readln;
end.

 

فعند تنفيذه نحصل على القيمة 10.

في المثال أعلاه قمنا بكتابة الكلمة المحجوزة Var والتي تفيد بأن الأسطر القادمة عبارة عن تعريف للمتغيرات. وعبارة:

 

  x: Integer;

 

تفيد شيئين: أولهما أن إسم المتغير الذي سوف نستخدمه هو x وأن نوعه Integer وهو نوع العدد الصحيح الذي يقبل فقط أرقام صحيحة لاتحتوي على كسور ويمكن أن تكون موجبة أو سالبة.

 

وأنا أنبه إلى أمرين

الأول وهو أن الجملة في لغة الباسكال لا بد أن تنتهي بفاصلة منقوطة ";" ونسيانها يعني أن الجملة لم تنته

وسواء في ذلك الإعلان عن المتغيرات كما العبارة السابقة أو الإسناد كما في العبارة التالية

 

الثاني أن الإعلان عن المتغيرات يقع قبل بداية البرنامج اي قبل العبارة begin

 

أما عبارة

 

  x:= 5;

 

فهي تعني وضع القيمة 5 في المتغير الصحيح x

 

يمكن أن نعلن عن متغير ونسنده إلى قيمة افتراضية مثل أن نكتب بعد var

 

x:integer=50;

 

يمكن إضافة متغير آخر للبرنامج نسميه y مثلاً كما في المثال التالي:

 

var
  x, y: Integer;
begin
  x:= 5;
  y:= 10;
  Writeln(x * y);
  Writeln('Press enter key to close');
  Readln;
end.

 

 

نجد أن مخرجات البرنامج السابق هي:

 

50Press enter key to close

 

 

 

في المثال التالي نقوم بإختبار نوع جديد من المتغيرات، وهو متغير يحتوي على حرف character

 

var
  c: Char;
begin
  c:= 'M';
  Writeln('My first letter is: ', c);
  Writeln('Press enter key to close');
  Readln;
end.

 

 

 

أما المثال التالي فهو لنوع الأعداد الحقيقية التي يمكن أن تحتوي على كسور:

var
  x: Single;
begin
  x:= 1.8;
  Writeln('My Car engine capacity is ', x, ' litters');
  Writeln('Press enter key to close');
  Readln;
end.

 

لنتمكن من كتابة برامج أكثر تفاعلاً لابد من ذكر طريقة إدخال قيمة المتغيرات من المستخدم بدلاً من كتابتها في البرنامج. والطريقة البسيطة هي إستخدام عبارة Readln التي تُمكّن المستخدم من إدخال مدخلات حسب نوع المتغيرات كما في المثال التالي:

var
  x: Integer;
begin
  Write('Please input any number:');
  Readln(x);
  Writeln('You have entered: ', x);
  Writeln('Press enter key to close');
  Readln;
end.

 

في هذه الحالة أصبح تخصيص القيمة للمتغير x هو عن طريق لوحة المفاتيح.

 

البرنامج التالي يقوم بحساب جدول الضرب لرقم يقوم بإدخاله المستخدم:

program MultTable;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this };

var
  x: Integer;
begin
  Write('Please input any number:');
  Readln(x);
  Writeln(x, ' * 1 = ', x * 1);
  Writeln(x, ' * 2 = ', x * 2);
  Writeln(x, ' * 3 = ', x * 3);
  Writeln(x, ' * 4 = ', x * 4);
  Writeln(x, ' * 5 = ', x * 5);
  Writeln(x, ' * 6 = ', x * 6);
  Writeln(x, ' * 7 = ', x * 7);
  Writeln(x, ' * 8 = ', x * 8);
  Writeln(x, ' * 9 = ', x * 9);
  Writeln(x, ' * 10 = ', x * 10);
  Writeln(x, ' * 11 = ', x * 11);
  Writeln(x, ' * 12 = ', x * 12);
  Writeln('Press enter key to close');
  Readln;
end.

 

الملاحظة المهمة في المثال السابق أن أي عبارة تتم كتابتها بين علامتي تنصيص أحادية تكتب كما هي مثلاً:

 

  ' * 1 = '

 

أما مايُكتب بدون تنصيص فإن قيمته هي التي تظهر.

يمكن تجربة العبارتين التاليتين حتى يكون الفرق أوضح بن استخدام علامة التنصيص وعدم إستخدامها:

  Writeln('5 * 3');  Writeln(5 * 3);

 

فالعبارة تُكتب كما هي:

 

5 * 3

 

أما ناتج العبارة الثانية فيكون حاصل العملية الحسابية:

 

15

 

في المثال التالي سوف نقوم بإجراء عملية حسابية ونضع الناتج في متغير ثالث ثم نظهر قيمة هذا المتغير:

var
  x, y: Integer;
  Res: Single;
begin
  Write('Input a number: ');
  Readln(x);
  Write('Input another number: ');
  Readln(y);
  Res:= x / y;
  Writeln(x, ' / ', y, ' = ', Res);
  Writeln('Press enter key to close');
  Readln;
end.

 

فبما أن العملية الحسابية هي قسمة وربما ينتج عنها عدد كسري (حقيقي) لذلك يرفض مترجم الباسكال وضع النتيجة في متغير صحيح، لذلك لابد أن يكون هذا المتغير Res عدد حقيقي.

ونوع المتغير Single يُستخدم لتعريف متغيرات كسرية ذات دقة عشرية أُحادية.

 

 

الأنواع الفرعية

 

توجد أنواع كثيرة للمتغيرات، فمثلاً الأعداد الصحيحة توجد منها Byte, SmallInt, Integer, LongInt, Word. وتختلف عن بعضها في مدى الأرقام وهي أصغر وأكبر عدد يمكن إسناده لها. كذلك تختلف في إحتاجها لعدد خانات الذاكرة (البايت).

post-259874-0-81583000-1363257916_thumb.

يمكن معرفة مدى هذه الأنواع وعدد خانات الذاكرة التي تحتاجها بإستخدام الدوال: Low, High, SizeOf. كما في المثال التالي:

program Types;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes;

begin
  Writeln('Byte: Size = ', SizeOf(Byte), ', Minimum value = ', Low(Byte), 
   ', Maximum value = ', High(Byte));

  Writeln('Integer: Size = ', SizeOf(Integer), 
    ', Minimum value = ', Low(Integer), ', Maximum value = ', High(Integer));
 
  Write('Press enter key to close');
  Readln;
end.

 

 

 

=================================================

الدورة منقولة من كتابي الأستاذ الفاضل معتز عبد العظيم وما تراه باللون الأخضر فمن زياداتي

تم تعديل هذه المشاركة بواسطة أحمد أبو عبد البر في 14 مارس 2013 في 13:58

1

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#2

الله يبارك لكم و فيكم

مواضيع مشابهة