المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : دروس في لغات البرمجة الباسكال - Pascal


SAMI
06-16-2007, 06:53 PM
تاريخ لغة الباسكال





تعود قصة الرياضي والفيلسوف الفرنسي بليز باسكال إلى منتصف القرن السادس عشر ميلادي عام 1642م حيث أن هذا الشاب والذي كان يبلغ الثامنة عشر ربيعا والذي كانت بوادر العبقرية والاختراع تبدو جليه على أعماله وحيث أنه كان شديد الإبداع في علم الرياضيات مولعا بالاكتشافات العلمية وتطبيق النظريات الرياضية ففي نفس السنه اخترع أول حاسب نصف آلي وسمي باسمه ( حاسب باسكال 1642 ) ، وكان ذلك لسبب أساسي وهو مساعده أبيه الذي كان يعمل في مؤسسة الضرائب محصلا للفواتير والذي كان يقضي معظم لياليه مستخدما العد اليدوي في إحصاء وتدقيق حسابات المبالغ التي حصلها وقد كان يشكل هذا النوع البطيء من الحساب إرباكا لعائلته ، وبالتالي يأخذ منه الوقت الكبير .


يتكون حاسب باسكال الميكا***ي من مجموعه متتالية من الإطارات ( الأقراص ) كل واحد منها مرقمة من الصفر إلى التسعة ، هذه الإطارات مرتبه بحيث تقرأ الأرقام المسجلة عليها من اليسار إلى اليمين ويتم إدارتها يدويا عن طريق الذراع ، فعندما يتم أحد هذه الأقراص دورته من الصفر إلى التسع فإن نتوء الرقم 9 يدفع الطارة المجاورة له رقما واحدا وعند ذلك أي دورة الطارة الأولى تسعة مواقع متتالية ( دوره كاملة ) فإنها تدفع الطارة التالية لها من اليسار موقعا واحدا وهكذا حتى يتم تسجيل العدد .


وبهذه الطريقة استطاع والد باسكال إجراء عمليات الجمع والطرح أما عمليات الضرب والقسمة فتتم بتكرار عمليات الجمع والطرح مرات متعددة .


الدرس الأول : أساسيات في الباسكال





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



هذه الخطوات هي ما تعرف باللوغاريتم The Algorithm بعد ذلك يمكن تحويل هذه الخطوات إلى إيعازات باسكال والتي ستتحول بدورها إلى لغة الآلة المستعملة بواسطة برنامج المصنف Compiler



وبرنامج الباسكال هو مجموعه من الإيعازات بعضها منفذ Executable وبعضها غير منفذ Non-Executable



وتتألف هذه الإيعازات من كلمات دليليه أو من كلمات تعريفية يجب على المبرمج تعريفها في بداية كل برنامج


ولتوضيح ذلك نرى مخطط لبرنامج باسكال



Program The Total (input, output);



{This program find sum of two integer number}



Var


A, B, Total: integer;



Begin



Write (‘Enter two integer numbers to be add: ‘);



Readln (a, b);



Total: = a+b;



Writeln (‘The sum of’, A,’and’, B,’is’, Total);



End.



حيث نلاحظ



- السطر الأول هو للتعريف باسم البرنامج ووسيله الإدخال والإخراج


- أن الجزء الملون بالأزرق هو عباره عن كلمات محجوزه سنتعرف عليها بالتفصيل بالدروس القادمه


- الجزء الملون بالأخضر هو عباره عن إيعاز غير منفذ وهي ملاحظات خاصه بقاريء البرنامج


- الكلمه الدليليه Var للتصريح عن المتغيرات وسيتم دراستها بالتفصيل


- الجزء الممتد من Begin إلى End هو عباره عن جسم البرنامج والأوامر بينها


- السطر الأخير يحتوي على End متبوعه بنقطه وذلك للدلاله على نهايه البرنامج وسنلاحظ أن


1- بعد كل سطر هنالك نقطه فاصلة (http://samixp.275mb.com/vb/images/smilies/wink.gif للدلالة على سطر آخر يلية


2- بعد كلمه End هنالك نقطة (.) للدلاله على أنه لا يوجد سطر بعد ذلك


الدرس الثاني : أنواع البيانات في الباسكال





في هذا الدرس سوف نتعرف على أنواع البيانات في لغة الباسكال والقواعد الخاصه لكل منها



للتمكن من جمع هذه البيانات في تعابير تشكل إيعازات البرامج في هذه اللغة



يمكننا تمييز نوعين من أنواع البيانات :



الأول



وهو ما تشترك فيه كل لغات البرمجه لذلك سنطلق عليه إسم البيانات القياسيه وهي:



1- الكميات الصحيحه Integer



وهي الأعداد الصحيحه الكامله التي لا تحوي على كسور



مثل 11



2- الكميات الحقيقيه Real



وهي الأعداد الحقيقيه التي تحوي كسور فيها



مثل 2.3434



3- الكميات المميزه Char



وهي الحروف والأشكال المميزة



مثل A,@,H,^,&



4- الكميات المنطقيه Boolean



ويمكن أن تأخد قيمتين هما إما صحيح True أو خطأ False



الثاني


وهو البيانات التي يصرح بها عن طريق المبرمج وذلك بتعريف أنواع جديده من البيانات ليست من الأنواع الأربعة التي تكلمنا عنها


وسيتم تعريفها لاحقا


في هذا الدرس سوف نتعرف على أنواع البيانات في لغة الباسكال والقواعد الخاصه لكل منها


للتمكن من جمع هذه البيانات في تعابير تشكل إيعازات البرامج في هذه اللغة



يمكننا تمييز نوعين من أنواع البيانات :



الأول



وهو ما تشترك فيه كل لغات البرمجه لذلك سنطلق عليه إسم البيانات القياسيه وهي:



1- الكميات الصحيحه Integer



وهي الأعداد الصحيحه الكامله التي لا تحوي على كسور



مثل 11



2- الكميات الحقيقيه Real



وهي الأعداد الحقيقيه التي تحوي كسور فيها



مثل 2.3434



3- الكميات المميزه Char



وهي الحروف والأشكال المميزة



مثل A,@,H,^,&



4- الكميات المنطقيه Boolean



ويمكن أن تأخد قيمتين هما إما صحيح True أو خطأ False



الثاني


وهو البيانات التي يصرح بها عن طريق المبرمج وذلك بتعريف أنواع جديده من البيانات ليست من الأنواع الأربعة التي تكلمنا عنها



وسيتم تعريفها لاحقا


التصريح Var


ويتم في هذا القسم من البرنامج التصريح عن نوع البيانات بالبرنامج قبل إستخدامها


ويتم التصريح حسب نوع البيانات إما الأنواع الأربعه Integer , Real , Boolean , Chr أو نوع قام المستخدم بتعريفه وسيتم دراسته بفصل آخر


ويخضع إسم المتغير إلى شروط وهي


1- أن يبدأ بحرف ( ولا تقبل الأسماء التي تبدأ بأرقام )


2- يحوي الإسم حروفا وأرقاما فقط


3- لا يكون الإسم من ضمن الكلمات المحجوزه بالذاكرة


4- يفضل دائما أن يكون إسم له معنى للتسهيل



أمــــثــلة


A: integer; تم تعريف مكان بالذاكره إسمه A وهو يقبل البيانات فقط من نوع الأعداد الصحيحه



B: Real; تم تعريف مكان بالذاكره إسمه B وهو يقبل البيانات من النوع الصحيح وأيضا النوع الذي الحقيقي الذي يحوي كسور



Grade: Chr; تم تعريف مكان بالذاكره إسمه Grade وهو يقبل البيانات من النوع Chr



F: Boolean; تم تعريف مكان بالذاكره إسمه F وهو يقبل بيانات من النوع Boolean أي قيم منطقيه (يقبل إما قيمه True – False )



والآن لنأخذ مثال تطبيقي على إستخدام التصريح Var



A:=5; (صحيح)



A:=3.5; (خطأ) – لإنه تم إسناد عدد حقيقي كسري إلى متغير صحيح



B:=5; (صحيح)



B:=3.5; (صحيح)



Grade:=`r`; (صحيح)



Grade:=d; (خطأ) – لعدم وضع الأقواس



F:=True; (صحيح)



F:=False; (صحيح)



F:=10; (خطأ) – لإن المتغير F لايقبل إلا قيم منطقيه إما True أو False



ونلاحظ مما سبق


القيمه Real اعم من Integer فهي تقبل القيم الصحيحه والحقيقيه ولكنها تأخد حيز من الذاكرة أكبر




لقد تعرفنا على طريقة تعريف متغيرات بالبرنامج لحفظ البيانات فيها حسب نوعها وذلك داخل التعريف Var



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



نوع جديد داخل الأمر Const وتكون على الشكل التالي



Const


A = 30 ;



B = 9.6 ;



C = “Name”;



- طوال عمل البرنامج سيسند للثابت A القيمة 30 ولا يمكن تغيير هذه القيمة خلال البرنامج أبدا



- نلاحظ أن هناك علامة مساواة = بين إسم الثابت وقيمته بينما في تعريف Var المتغيرات هناك علامة : بين إسم المتغير ونوعه



- الثابت المعرف يعامل في البرنامج على أنه كلمة محجوزة Reserved Word


Program Circle(input,output);



Const



Pi=3.14;



Var



Radius : integer ;



Circum , area : real ;



Begin



Writeln ( ‘Enter Radius’);



Read ( radius);



Circum := 2*pi* radius ;



Area := pi * radius * radius ;



Writeln (‘The value of circum is’,circum);



Writeln (‘The value of area is’,area);



End.



في البرنامج السابق قمنا بتعريف ثابت في البرنامج بالإسم pi وهو يتخذ دائما القيمة 3.14



إستخدام الثوابت في البرنامج يسهل عمل البرنامج ويسهل تعديل القيم بسهولة بخاصة في البرامج الكبيرة



لو أردنا تنفيذ البرنامج السابق ولكن بدون الإعتماد على الثوابت فسيكون البرنامج على الشكل



Program Circle(input,output);



Var



Pi : real ;



Radius : integer ;



Circum , area : real ;



Begin



Write (‘Enter Value of pi :’);



Readln (pi);



Writeln ( ‘Enter Radius’);



Read ( radius);



Circum := 2*pi* radius ;



Area := pi * radius * radius ;



Writeln (‘The value of circum is’,circum);



Writeln (‘The value of area is’,area);



End;

SAMI
06-16-2007, 07:01 PM
الدرس الرابع

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



الأول : Writeln



وهو يقوم بطباعة الجملة والإنتقال بعدها إلى السطر الذي يليه مثل



Writeln (‘This is First Line’);



Writeln (‘This is the second Line’);



Writeln (‘This is the first line’,’This is complete of the first line’);



نلاحظ في هذا المثال أنه سيقوم بطباعة الجملة الأولى وفي نفس السطر سيقوم بطباعة الجملة الثانية وسينتقل بعدها للسطر الذي بعده



الثاني : Write



وهو مشابه للأمر Writeln ولكن الفرق الوحيد أنه لا ينتقل سطر للأسفل بعد طباعة الجملة بل يكمل بنفس السطر



Write (‘This is the first line ‘);



Writeln (‘This is the complete of the first line’);



Write (‘This is the Second line’);



Write (‘This is complete of line 2’);



Writeln (‘This is the End’);



في هذا المثال توضيح كامل لعمل دالة الإخراج بحالتيها



يقرأ البرنامج السطر الأول ويطبعه وبما أنه Write فإن المؤشر لن ينتق للسطر الذي يليه بل سيقرأ السطر الآخر ويطبعه بنفس السطر



وبما أن السطر الثاني من النوع Writeln فإن المؤشر بعد الإنتهاء من طباعة السطر ينتقل للسطر التالي لطباعة البيانات الأخرى



لذلك سيكون ناتج السطور السابقة بعد التنفيذ



This is the first line This is the complete of the first line



This is the Second line This is complete of line 2 This is the End



بعد الإنتهاء من نتفيذ الأوامر ينتقل المؤشر I إلى السطر الذي يلي آخر جمله لإنها من النوع Writeln



تدريب :



لو أراد منك طباعة الأسطر التالية



My Name is sami


o



I live in algeria



حيث يقصد دائما بالعلامة o فراغ



الجواب



Writeln (‘My Name is sami’);



Writeln ;



Writeln (‘I Live in algeria ‘);



ويمكن أيضا حلها بالشكل التالي


Writeln (‘My Name is sami’);



Writeln(‘’);



Write (‘I Live in algeria ‘);



والفرق بينهما أن المؤشر في الحالة الأولى سيكون في النهاية في السطر الذي يلي آخر عبارة


وفي المثال الثاني سيكون في نفس السطر الأخير



لو أراد طباعة قيمة في متغير فنستخدم الأمر كما يلي في هذا المثال



فلو فرضنا أن S=10 وأراد طباعة قيمتها فنكتب



Writeln (‘The Value of S =’,s);



ويمكن أيضا طباعة أكثر من قيمة أكانت جملة أو متغير وذلك بإستخدام الفاصلة [,] بينها



مثل لو عرفنا المتغيرات التالية



A = ‘Rayan’;


B = ‘=’ ;


C= ‘18’;



Writeln (‘My Name is’,B,A,’and my age is’,c);


فسيكون الناتج على الشكل


My Name is =sami and my age is 18

الدرس الخامس


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



الأول : Readln


وهو يقوم بقراءة البيانات من المستخدم وبعدها ينتقل المؤشر للسطر التالي


الثاني : Read


وهو مشابه للأمر Readln ولكن الفرق الوحيد أنه لا ينتقل سطر للأسفل بعد قراءة البيانات بل يكمل بنفس السطر



Write (‘Enter Your Name :’);



Readln (Name);


في المثال السابق يقوم البرنامج في السطر الأول بطباعة السؤال ( أدخل إسمك ) ولإننا إستخدمنا الأمر Write فإن المؤشر لا ينتقل للسطر التالي بل يقرأ السطر التالي والمؤشر في نفس السطر


في السطر التاني ينتقل البرنامج لوضع إستقبال البيانات من المستخدم ومن ثم حفظها في المتغير المختار Name و يجب أن تكون البيانات المدخلة من نفس نوع المتغير وإلا سوف يولد البرنامج رسالة خطأ



Enter your name : I



لو أضفنا السطور التالية للمثال


Writeln (‘Enter your Age :’);



Read (Age);



Write (‘Enter your Salary :’);



Readln (Salary);


في السطر الثالث يطبع البرنامج الرسالة وينتقل بعدها للسطر التالي لإستقبال البيانات من المستخدم ، ونلا حظ هنا اننا إستخدمنا الأمر Read



بعدها سيقوم البرنامج بطباعة السطر الخامس ولن ينتقل للسطر التالي بل سيستقبل البيانات في نفس السطر لإننا إستخدمنا الأمر Write




يجب علينا قبل الدخول في البرمجة فهم الطريقة الرياضية للتعامل مع البيانات وطريقة تعامل المصنف مع الدوال الرياضية والأقواس



وبرنامج الباسكال يتعامل مع العمليات الرياضية حسب القاعدة التالية


والتي تعتمد على الأسبقية بحيث



أولا : تنفيذ الدالة Not



ثانيا : تنفيذ الدوال التالية


AND


MOD


DIV


/


*


بحيث أن الدالتين Div و Mod دوال رياضية سيتم التعرف عليها لاحقا



ثالثا : تنفيذ العمليات



OR


-


+



رابعا : تنفيذ المعاملات المنطقية


=


<>


<=


>=


<


>



عندما يكون هناك دالتين من نفس المستوى ننفذ الدالة بدءا من اليسار إلى اليمين


لتتضح الرؤيا حول إستخدام قاعدة الأولويات نرى الأمثلة التالية



1-Write a PASCAL program to find the roots of a quadratic equation (assume that b2 – 4ac >= 0)



يريد في هذا المثال إيجاد جذور لمتتابعة ثنائية



الحل



Program Root(input,output);



Var



A,b,c :integer;



X1,x2 : real ;



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



وفي حالة وجود عمليات قسمة فناتجها دائما عدد حقيقي وليس صحيح



Begin



Writeln (‘Enter the Numbers A , B ,C’);



Readln (a,b,c);



X1:= (-b+sqrt(b*b –4*a*c))/(2*a);



X2:= (-b-sqrt(b*b –4*a*c))/(2*a);



Write (‘The Nunmber X1 =’,x1 ,’And Number X2 =’,x2);


End.



2- Find (7 Div 2/3)



في هذا المثال نلاحظ أن الدالتين Div و / يأتيان في مرتبة واحده في أولوية التنفيذ



ولكن لإن Div أتت قبل من جهة اليسار فنقوم بتنفيذها أولا لذلك



7 div 2/3 =



3 / 3 =



1.0



( لاحظ أن العدد جوابه 1.0 وليس 1 لإنه ناتج من قسمة فلذلك يعد عدد حقيقي Real ولا يعتبر Integer)

SAMI
06-16-2007, 07:09 PM
الدرس الخامس

في هذا القسم سوف نتعرف على العمليات الرياضية المستخدمة في الباسكال وطريقة إستخدامها



أولا : العمليات - و + و *



التعامل مع هذه العمليات متشابة وهي تقبل الأعداد الحقيقة والصحيحة



5 + 7 = 12



5.0 + 7 = 12.0



7 –5 =2



7*5 = 30



نلاحظ من هذا المثال أن ناتج


عدد صحيح Integer + عدد صحيح Integer = Integer



عدد حقيقي Real + عدد حقيقي Real = Real



عدد صحيح Integer + عدد حقيقي Real = Real



ثانيا : العملية /



عملية القسمة دائما مهما كان نوع المدخلات أكانت أعداد حقيقة أو صحيح



فجوابها دائما عدد حقيقي Real



طبعا القسمة على الصفر لا تصح وتولد خطأ بالبرنامج وهو خطأ من النوع الذي يظهر عند تشغيل البرنامج فيجب الإنتباه



ثالثا : العملية Div



وهي عملية قسمة ولكن فقط تعطي الناتج من القسمة وتهمل الباقي من القسمة



20 Div 3 = 6



18 Div 3 = 6



(-17) Div 3 = -5



19 Div 3 = 6



3 Div 10 = 0



16 Div (-3) = -5



الدالة Div تقبل دائما مدخلات من النوع الصحيح Integer وتعطي جواب دائما Integer



ولا تقبل أبدا القيم الحقيقية Real



1.4 Div 4 = X



ثالثا : العملية Mod



وتعطي هذه العملية الباقي من قسمة عددين ولاحظ دائما عند قسمة عدد على أكبر منه فناتجها العدد نفسه



20 Mod 3 = 2



18 Mod 3 = 0



19 Mod 3 =1



3 Mod 10 = 3


الدالة Mod تقبل دائما مدخلات من النوع الصحيح Integer وتعطي جواب دائما Integer



ولا تقبل أبدا القيم الحقيقية Real



1.4 Mod 4 = X




جملة IF - ELSE





جملة IF - ELSE
قبل البدأ في شرح جملة IF - ELSE وتوضيح صيغتها العامة، يجب أن نتطرق إلى موضوع مهم وهو التعابير البوليانية في لغة باسكال، فلنبدأ على بركة الله.
التعابير البوليانية :
في لغة باسكال تظهر التعابير البوليانية على أحد شكلين:
1- المتغيرات البوليانية Boolean variables
وهي عبارة عن متغيرات خاصةتعرف في القسم VAR من البرنامج، وتأخذ أحد قيميتن True أو False
VAR
switch : Boolean;
هنا المتغير switch يأخذ أحد قيمتين Ture أو False
switch := Ture;
switch := False;
ويجب ملاحظة أنه لا يمكن قراءة مثل هذه المتغيرات باستعمال الدالة read إلا أنه من الممكن طباعتها بالدالة write.
2- متغيرات مربوطة بعوامل نسبية Relation Operators:
من الممكن صياغة التعابير البوليانية باستعمال متغيرات تربط بينها العوامل النسبية التالية
= يساوي
<> لا يساوي
=> أقل من أو يساوي
=< أكبر من أو يساوي
> أقل من
< أكبر من


3- تعابير بوليانية مربوطة بعوامل منطقية logical operators
يمكن ربط أكثر من تعبير بولياني باستعمال أحد العوامل المنطقية التالية
NOT نفي
AND و
OR أو


ملاحظة:


العوامل المنطقية تتمتع بأسبقية أعلى من العوامل النسبية، لهذا فإن التعبير التي يعتبر خطأ:
NOT 4>5


لأن العامل NOT سوف يطبق أولا، لذا يجب كتابه التعبير السابق كما يلي:
NOT (4>5)


لتكون قيمته true


بعد هذا الشرح عن التعابير البوليانية، نعود إلى جملة IF
جملة IF ELSE


الشكل العام لها:
IF boolean expression
THEN statment1
ELSE statment2


&& الحالة الأولى:


عندما يكون لدينا عبارة واحدة في فيعي جملة IF
مثال: لدينا متغيرين num1 و num2 والمطلوب طباعة العدد الأكبر بينهما
IF num1>num2
THEN writeln('The larger is: ', num1)
ELSE writeln('The larger is: ', num2)
لاحظ هنا عدم وجود فاصلة منقوطة في العبارات بعد THEN و ELSE


&& الحالة الثانية:


عندما تكون لدينا أكثر من عبارة في كل فرع من فرعي الـ IF
مثال: في نفس المثال السابق لو كان المطلوب تخزين الرقم الأكبر في متغير max بعد طباعته


IF num1>num2
THEN BEGIN
writeln('The larger is: ', num1);
max:= num1
END
ELSE BEGIN
writeln('The larger is: ', num2);
max:= num2
END
في هذه الحالة نحتاج إلى وضع العبارات التي بداخل الـ THEN بين BEGIN و END ونفصل بينها بفواصل منقوطة، ولكن بدون فاصلة قبل الـ ELSE


عبارة CASE في باسكال


تستخدم عبارة Case (الحالة) في المواقع التي يراد فيها الاختيار بين عدد من البدائل.
تستخدم عبارة الـ CASE كبديل عن استعمال عدد من عبارات IF - ELSE المتتالية، والتي غالبا ما تكون أكثر تعقيدا، وصعبة التتبع والفهم
أما باستعمال الـ CASE فإن البرنامج يصبح أكثر وضوحا، وسهل التتبع


الصيغة العامة لـ CASE:


CASE selector OF
constent1 :
statement1;
constent2 :
statment2;
.
.
.
.
END;
selector هو عبارة عن متغير من أي نوع مدرج (راجع درس الأنواع المدرجة)


constent1 و constent2 هي قيم يمكن أن يأخذها المتغير selector


فإذا كانت قيمة selector هي constent1 يتم تنفيذ العبارت التالية لها في هيكل CASE وهي statement1.


وإذا كانت قيمته constent2 تنفذ العبارة statment2 وهكذا.


لاحظ المثال التالي:
PROPGRAM ex1 (input, output);
VAR
lettergrade : char;
BEGIN
wirteln('Enter your last grade: ');
readln(lettergrade);
CASE lettergrade OF
'A': writeln('4.0');
'B': writeln('3.0');
'C': writeln('2.0');
'D': writeln('1.0');
'F': writeln('0.0');
END
END.
في هذا المثال سوف يطبع البرنامج الدرجة المقابلة للتقدير الذي حصلت عليه مؤخرا


في بعض الأحيان قد نرغب في تنفيذ نفس الأوامر لعدة قيم للمتغير selector، في هذه الحالة تذكر هذه القيم وتفصل بينها بالفاصلة
PROPGRAM ex2 (input, output);
VAR
number : Integer;
BEGIN
wirteln('Enter a number between 1 - 10: ');
readln(number);
CASE number OF
1, 3, 5, 7, 9 : writeln('The number is odd');
2, 4, 6, 8, 10: writeln(' the number is even');
END
END.


طبعا إذا أردنا تنفيذ أكثر من أمر واحد في كل حالة يجب أن نحيطها بـ BEGIN و END.







حلقات التكرار في لغة باسكال


قد يتطلب الأمر في بعض البرامج أن نكرر تنفيذ مجموعة من الأوامر لعدد من المرات، أو إلى إن يصبح تعبير ما صحيح (true) أو خطأ (false).
كأن نرغب في أن يطلب برنامجنا إدخال10 أعداد من المستخدم، أو نطلب منه إدخال القدر الذي يريده من الأعداد على أن يكون العدد الأخير يساوي 0 مثلا. هنا نحن بحاجة إلى استعمال الحلقات في برنامجنا.
يوجد في لغة باسكال 3 تراكيب لعمل حلقات التكرار، وسوف نبدأ في هذا الدرس بتعلم أولى هذه الحلقات وهي حلقة FOR.
حلقة التكرار FOR:



إذا أردنا تنفيذ مجموعة من الأوامر لعدد محدد من المرات، لنقل 6 مرات.
فأمامنا خياران، الأول أن نعيد كتابة هذه الأوامر 6 مرات في البرنامج وهو أمر مزعج خاصة إذا كان المطلوب أن نعيد التنفيذ لعدد أكبر من المرات، 600 مثلا
أما الخيار الثاني (وهو الأفضل) أن نستخدم حلقة التكرار FOR في البرنامج. وبهذا فإننا تكتب الأوامر التي ترغب في تكرارها 6 مرات داخل حلقة For مرة واحدة فقط
كيف؟


كهذا :
FOR i:=1 TO 6 DO
write('@');
هنا استعملنا حلقة FOR لتكرار أمر الطباعة write ('@') لستة مرات
هذا البرنامج سوف يطبع الأعداد من 1 إلى 20


PROGRAM example1 (input,output);
VAR
i: integer;
BEGIN
FOR i:=1 TO 20 DO
Writeln ( i);
END.


والآن لاحظ هذا البرنامج الذي يطبع نفس الأعداد ولكن بالعكس من 20 إلى 1


PROGRAM example1 (input, output);
VAR
i: integer;
BEGIN
FOR i:=20 DOWNTO 1 DO
Writeln ( i);
END.
هل لاحظت الفرق بين استخدام TO و DOWNTO داخل حلقة FOR؟
في الأمثلة السابقة كانت هناك عبارة واحدة نرغب في تكراره، أي أن جسم الحلقة مكون من عبارة واحدة فقط، ولكن يمكن لجسم الحلقة أن يتكون من عدة عبارات، وفي هذه الحالة يجب أن تحدد بداية ونهاية جسم الحلقة بـ BEGIN و END.

هبة من الرحمان
07-04-2007, 12:54 PM
بارك الله فيك .
وجزاك الله خير الحزاء.
نحن ننتظر المزيد من ابداعاتك.

mohnet
07-04-2007, 01:49 PM
مشكووووووووووووووووور الاخ الكريم

هبة من الرحمان
07-04-2007, 08:30 PM
.بارك الله فيك وسدد خطاك.وجزاك الله خير الجزاء.

SAMI
07-05-2007, 01:45 AM
تشرفت بمروركم الكريم ووفقكم الله الى ما يحبه ويرضاه

ibtihal
07-06-2007, 03:59 PM
بارك الله فيك اخي الفاضل ومشكور عن الشي الي انت قدمتو .
بس عندي سؤال, كيف نستطيع ان نعمل واجهة للبرنامج نتحكم فيه من خلالها؟

SAMI
07-06-2007, 04:30 PM
تفضل هذه الكتب و امل ان تفيدك في الاجابة على جميع تشؤلاتك

الكتاب الاول

البرمجة غرضية التوجة في دلفي object-oriented in Delphi

http://www.orwah.net/uploads/Books/OOP_IN_Delphi_Arabic.pdf

الوصف :

مقدمة
غرضية التوجة في دلفي object-oriented in Delphi
الأصناف والأغراض
تعريف الأصناف في دلفي
التحميل الزائد للمناهج method overloading

نظرة أكثر تفصيلا في غرضية التوجة
التغليف Encapsulation
محددات الوصول Private, Protected, Public
التغليف بإستخدام الخصائص Properties
تعريف خاصية جديدة
مثال عملي
ملاحظات حول الخصائص

المزيد عن التغليف
التغليف مع الأشكال

الباني Constructor
بناء باني جديد
الهادم Destructor والمنهج Free
نموذج مرجعيـة أغراض دلفي
نسب الأغراض
الأغراض والذاكرة
تحرير الأغراض مرة واحدة فقط

الوراثة من أنماط موجودة
التغليف والحقول المحمية Protected Fields and Encapsulation
دخول بيانات محمية لصنف آخر Protected Hack
تطبيق عملي
الوراثة والتوافق بين الأنماط
التحديد المتأخر وتعددية الأشكال
إعادة تعريف المناهج والمناهج المهيمنة
المناهج الإفتراضية مقابل الديناميكية Virtual versus Dynamic Methods
المعاملان IS و AS
إستخدام الواجهات Using Interfaces



الكتاب الثاني

كتاب دلفي بالعربي

http://www.orwah.net/uploads/Books/Delphi_arabic.pdf

الوصف :

لغة البرمجة دلفي

المقدمة
نبذه عن دلفي
البرنامج الأول
الوحدة unit
التعرف على العناصر
التعامل مع الأحداث ( Events )
التعامل مع واجهة الدلفي
التعرف على عنصر المذكرة Memo
إنشاء قوائم للنماذج
أنواع المعطيات Data Type
الإجراءات والتوابع
بعض التوابع المعرفة في دلفي
صناديق الحوار Dialog
التعرف على العنصر MaskEdit
التعامل مع السلاسل النصية
معالجة الأخطاء في دلفي
قواعد البيانات
بناء تطبيقات قواعد البيانات
بناء قواعد البيانات Database Desktop
التعامل مع قاعدة البيانات من خلال دلفي
البحث في قواعد البيانات
الحقول الحسابية
لغة الاستفسارات البنيوية SQL
ربط الجداول
إنشاء الجداول ببرنامج Access
ADO
برنامج دليل الهاتف الطباعة
لمسات برمجية
مسجل النظام Windows Registry
توابع وثوابت الويندوز Windows API
إضافة عناصر جديدة
السحب والإفلات
الرسم في دلفي
برمجة الأوساط المتعددة
التعامل مع الملفات
برنامج المفكرة
البرنامج Install Shelled Express
___________________________
إعداد
محمد خالد ناصر آغا

موقع الكِتاب على الإنترنت
http://www.alshater.net (http://www.alshater.net)

الكتاب الثالث

البرمجة بلغة باسكال -عربي

http://www.orwah.net/uploads/Books/programming%20in%20PascaL.zip (http://www.orwah.net/uploads/Books/programming%20in%20PascaL.zip)

الوصف :

كتاب البرمجة بلغة باسكال 165 صفحة
باللغه العربية

إعداد : وجدي عصام عبد الرحيم
www.romansy2005.tk (http://www.romansy2005.tk)



الكتاب الرابع

أساسيات باسكال- عربي

http://www.orwah.net/modules/mybooks/visit.php?cid=3&lid=27 (http://www.orwah.net/modules/mybooks/visit.php?cid=3&lid=27)

الوصف :

أساسيات البرمجة بلغة باسكال - 106 صفحات
تأليف الدكتور نضال خضير العبادي

- مدخل إلى البرمجة بلغة باسكال
- أوامر الإدخال والأخراج
- إيعازات القرار والتكرار
- المصفوفات
- الإجراءات والدوال
- السلاسل الحرفية
- متغيرات الأنواع

ibtihal
07-06-2007, 11:47 PM
شكرا ليك اخي الفاضل عن هذه المعلومات القيمة.
بارك الله فيك وجزاك الله كل خير.

SAMI
07-06-2007, 11:53 PM
وفيك بركة ونحن بانتظار ما ستخطه اناملك من مواضيع مميزة في هذا المنتدى

دمت في رعاية الله وحفظه

ilias.zizou
04-15-2008, 03:15 PM
ilias.zizou
شكرا للاخ العزيز

gps8444
يالجـزائـر انــتحبــي http://www.chechar.com/vb/images/icons/checharbillal.gif ديــماسكــــنا فـي قلبــــــي

شامل
03-10-2010, 05:12 PM
السلام عليكم
بارك الله فيك اخي الفاضل
انا بامس الحاجة لهذه المعلومات مشكووووووووووووووووووووووور من صميم قلبي
السلام عليكم

SAMI
03-10-2010, 09:04 PM
وفيكم بارك الرحمن

ولا شكر على واجب

ودمت في رعاية الله وحفظه

benmahia
03-14-2013, 07:38 PM
مواضيع جد مفيدة مشكورين

sofiane111174
05-04-2013, 09:31 PM
السلام عليكم
اد امكن المساعدة من اهل الخبرة من فضلكم
لدي تمرين في البرمجة باسكال
نص التمرين
شركة تامين سياراتعرضت على زبائنها اربع طرق للتامين معرفة بالالوان هم الاحمر الازرق الاخضر و البرتقالي حسب طبيعة السائق و خصائصه
1 سائق اقل من 25 سنة لديه رخصة السياقة اقل من سنتين يعبر عنه باللون الحمر و لميتسبب بحادث مرور من قبل و الا يرفض تامينه
2سائق اقل من 25 سنة لديه الرخصة اكثر من سنتين او اكبر من 25 سنة في عمره ويكن لديه رخصة مند اكثر من سنتين ولم يتسبب في حادث مرور يعبر عنه باللون البرتقالي او ادا كان قد عمل حادث من قبل فيعبر عنه باللون الاحمر
3 سائق اكبر من 25 سنة لديه الرخصة اكثر من سنتين يعبر عنه باللون الاخضر ولم يتسبب في حادث مرور يعبر عنه باللون البرتقالي او ادا كان قد عمل حادث من قبل
4العرض الخاص بالاوفياء ان يكون هناك عقد 5 سنوات يعبر عنالزبون الاخضر باللون الازرق و البرتقالي بالاخضر و الاحمر بالبرتقالي

المطلوب كتابة اللوغاريتمية الخاصة بهدا البرنامج

وشكرا لكم مسبقاا