المزيد حول لغة باسكال

سوف تتعلم اليوم الكلمات الأساسية If..then,else

الحلقات for,while,rpeat

عبارة case

هناك بعض مظهر البرمجة المشتركة في كل لغات البرمجة ومنها عبارة الشرط if تستخدم هذه العبارة لفحص شرط معين وثم تنفذ شيفرة معينة إذا تحقق الشرط True مثلا:
<BLOCKQUOTE> <font> كود: </font> <div align="ltr"> <center> <table border="0" width="80%" dir="ltr" bgcolor=="#000000"> <tr> <td width="100%"> <pre> <font color="#ffffff">
var
x:integer;
begin
x:=StrToInt(Edit1.Text)
if x>10 then
Label1.Caption:='عليك أن تدخل عدد من 1 -10';
end;
</font> </pre> </td> </tr> </table> </center> </div> </BLOCKQUOTE>

تنفيذ عدة عبارات

لنفترض أن لديك عدة سطور من البرمجة يجب أن تنفذ عندما يكون الشرط محققاً عندها سوف تحتاج إلى begin..end لتجعل هذه السطورتشكل كتلة واحدة
<BLOCKQUOTE> <font> كود: </font> <div align="ltr"> <center> <table border="0" width="80%" dir="ltr" bgcolor=="#000000"> <tr> <td width="100%"> <pre> <font color="#ffffff">
if x>10 then
begin
Label1.Caption:='عليك أن تدخل عدد من 1 -10';
Edit1.text:= '10';
end;
</font> </pre> </td> </tr> </table> </center> </div> </BLOCKQUOTE>
إضافة else :

أحياناً تحتاج لعمل ما إذا كان الشرط محققاً وأن تؤدي عملاً آخر إذا كان الشرط غير محقق مثل:
<BLOCKQUOTE> <font> كود: </font> <div align="ltr"> <center> <table border="0" width="80%" dir="ltr" bgcolor=="#000000"> <tr> <td width="100%"> <pre> <font color="#ffffff">
if x=0 then
y:=0
else
y:=sin(x);
</font> </pre> </td> </tr> </table> </center> </div> </BLOCKQUOTE>

حلقات التكرار

الحلقات : تستخدم لأداء عمل معين بشكل متكرر حتى يتحقق شرط معين.

حلقة For .

تتطلب هذه الحلقة محددتين القيمةالبدائية والقيمة النهائية إذا كانت الحلقة تصاعدية تستخدم to وإذا كانت تنازلية نستخدم كلمة DownTo .

الصيغة العامة لجملة for التصاعدية:
<BLOCKQUOTE> <font> كود: </font> <div align="ltr"> <center> <table border="0" width="80%" dir="ltr" bgcolor=="#000000"> <tr> <td width="100%"> <pre> <font color="#ffffff">
for var := initial_value to end_value do
begin
statment;
end;
</font> </pre> </td> </tr> </table> </center> </div> </BLOCKQUOTE>
حلقة تكرر الشيفرة الممثلة بعبارة statment حتى تصل إلى القيمة النهائية end_value . لا داعي لاستخدام begin , end إذا كان جسم التكرار يتكون من عبارة واحدة.

الصيغة العامة لجملة for التنازلية:
<BLOCKQUOTE> <font> كود: </font> <div align="ltr"> <center> <table border="0" width="80%" dir="ltr" bgcolor=="#000000"> <tr> <td width="100%"> <pre> <font color="#ffffff">

for var := initial_value DownTo end_value do
begin
statment;
end;
</font> </pre> </td> </tr> </table> </center> </div> </BLOCKQUOTE>

كتلة الشيفرة يجب أن تكون initial_value أكبر من end_value وتتناقص قيمة العداد المتغير var واحداً في كل تكرار للحلقة لنجرب ، أنشئ مشروعاً جديداً وأضف له زراً Button1 ومكون المكفرة Memo1 غير الخاصة Caption للزر واجعله " ابدأ " أنشئ الحدث OnClick له ، واكتب معالج الحدث كالتالي:
<BLOCKQUOTE> <font> كود: </font> <div align="ltr"> <center> <table border="0" width="80%" dir="ltr" bgcolor=="#000000"> <tr> <td width="100%"> <pre> <font color="#ffffff">
var
I:Integer;
begin
Memo1.Clear;
for I := 0 to 9 do
Memo1.Lines.Add('هذا السطر رقم '+IntToStr(I));
end;
</font> </pre> </td> </tr> </table> </center> </div> </BLOCKQUOTE>
جرب البرنامج باستخدام الزر ابدأ
والآن بعد أن رأيت كيف تعمل حلقة for لن يكون صعباً جداً عليك أن تطبق ذات المعنى على حلقتي while , repreat لنلقي الآن نظرة عليهما الآن.

حلقة while

تختلف حلفة while عن الحلقة في كونها على تحتوي على شرط يفحص عند بداية كل تكرار للحلقة . طالما الشرط أن الشرط محقق تستخدم الحلفقة في التنفيذ.

حلقة Repeat.

مثل حلقة while ولكن تكرار كتلة باستمرار طالما الشرط غير محقق الشرط ينتهي تنفيذ الحلقة الشرط ينتهي تنفيذ الحلقة الشرط ينتهي تنفيذ الحلقة ، لا داعي لاستخدام begin , end.
<BLOCKQUOTE> <font> كود: </font> <div align="ltr"> <center> <table border="0" width="80%" dir="ltr" bgcolor=="#000000"> <tr> <td width="100%"> <pre> <font color="#ffffff">
var
I:Integer;
begin
I:=5;
Memo1.Clear;
Repeat
Memo1.Lines.Add('هذا السطر رقم '+IntToStr(I));
Dec(I);
Until I=-1;
end;
</font> </pre> </td> </tr> </table> </center> </div> </BLOCKQUOTE>
جرب البرنامج باستخدام الزر ابدأ

الإجرائين Beak , Continue

نيل أن ننهي الحديث عن الحلقات يجب أن نتعرف على إجرائين يساعدان على التجكم بتنفيذ البرنامج ضمن الحلقة ، استخدم continue لتجبر البرنامج على الانتقال إلى نهاية الحلقة متجاوزاً كل العبارات التي تليه .

تستحدم break لتوقف عمل الحلقة مباشرة ولاتستحدم خارج الحلقات.

عبارة case:
يمكن اعتبار تركيب case كتركيب if موسعة إنها تمكنك من تنفيذ عبارة واحدة من عدة كتل برمجة معتدة على نتيجة تعبير معين من الصيغة العامة لتركيب case
<BLOCKQUOTE> <font> كود: </font> <div align="ltr"> <center> <table border="0" width="80%" dir="ltr" bgcolor=="#000000"> <tr> <td width="100%"> <pre> <font color="#ffffff">
case var of
val_1 : statement_1;
val_2 : statement_2;
val_3 : statement_3;
;
;
else
statement_else;
end;
</font> </pre> </td> </tr> </table> </center> </div> </BLOCKQUOTE>
عندما يبدأ البرنامج في تنفيذ تركيب case سيمر على قيمة val_1 ويقارن بين الثابت val_1 والمتغير var إذا وجدهما متساويين سيقوم البرنامج بتنفيذ جميع الأوامر التي تليها حتى يصل إلى نهاية الكتلة ( تحدد الكنلة بالعبارات بين Begin , end في حالة استخدام أكثر من عبارة واحدة ) أما إذالم يجدهما متساويين فإنةسيتخطاها بجميع العبارات الواردة بعدها وينتقل إلى الثابت الآخر ويكرر المحاولة وهكذا يمر البرنامج عليها كلها فإذا لم يجد الثابت المطلوب منها فإنه سيتخطاها إلى كلمة else وينفذ الاعبارات الواردة بعدها حتى نهاية التركيب .
ملاحظة يجب أن يعطى التعبير ضمن case قيمة ينتمي إلى نمط مرتب ( Integer,Byte,Word ) لايمكنك كتابة مايلي مثلاً :
<BLOCKQUOTE> <font> كود: </font> <div align="ltr"> <center> <table border="0" width="80%" dir="ltr" bgcolor=="#000000"> <tr> <td width="100%"> <pre> <font color="#ffffff">
case str of
'Own' : {code};
'Two' : {code};
end;
</font> </pre> </td> </tr> </table> </center> </div> </BLOCKQUOTE>
يمكن جعل البرنامج ينفذ كتلة أوامر عند أكثر من قيمة كما أن else احتيارية مثال:
<BLOCKQUOTE> <font> كود: </font> <div align="ltr"> <center> <table border="0" width="80%" dir="ltr" bgcolor=="#000000"> <tr> <td width="100%"> <pre> <font color="#ffffff">
case x of
1: y:=sin(x);
2,3 : y:=cos(x);
4,5,6: y:=x;
end;
</font> </pre> </td> </tr> </table> </center> </div> </BLOCKQUOTE>

------------------
أبو ماجد الصارم
azzozhsn@hotmail.com

[b]<small><small>[ تم تعديل الموضوع بواسطة &nbsp; أبو ماجد الصارم &nbsp; يوم &nbsp; 04-06-2000]