تعلم برمجة الباسكال - منتدى الأغواط نت
0   0
 
 
صفحة جديدة 1 صفحة جديدة 1 صفحة جديدة 1 صفحة جديدة 2 صفحة جديدة 1 صفحة جديدة 2 صفحة جديدة 1 صفحة جديدة 1 صفحة جديدة 1 صفحة جديدة 1
العودة   منتدى الأغواط نت > منتدى الدين الاسلامي > قسم القرآن الكريم وعلومه > الاعجاز العلمي للقرآن,
التسجيل التعليمـــات المجموعات الإجتماعية التقويم البحث مشاركات اليوم اجعل كافة الأقسام مقروءة

.... صفحة جديدة 1

 

***اختر قسما وأشرف عليه***

« آخـــر الـــمـــشـــاركــــات »
         :: toxoplasmoseفيروس القطط (آخر رد :بابا مرزوق)       :: اجر الصابرين (آخر رد :المشرف العام)       :: نصـــيـحــــة كـــــ يــــــوم ـــــل (آخر رد :المشرف العام)       :: قصيرة و هادفة (آخر رد :كشاف الاغواط)       :: مواقف نأخذ العبر منها ....... (آخر رد :أم أيمن)       :: الأحاديث الأربعون النووية وشرحها (آخر رد :أم أيمن)       :: الدال على الخير كفاعله .بناء مسجد الشيخ المبروك كويسي (آخر رد :cosmoskey)       :: التسجيل لدورة البكالوريا 2015 (آخر رد :ايمن جابر أحمد)       :: غرداية إلى متى الجنون (آخر رد :محمد الشاعر)       :: مكتبة الونجر (آخر رد :phoenix)      


إضافة رد
 
أدوات الموضوع انواع عرض الموضوع
قديم 04-19-2008, 23:49   #1
C_RONALDO
 
الملف الشخصي:

تقييم العضو:
تقييم المستوى : 10

C_RONALDO is on a distinguished road

تعلم برمجة الباسكال


[align=center]تاريخ لغة الباسكال
تعود قصة الرياضي والفيلسوف الفرنسي بليز باسكال إلى منتصف القرن السادس عشر ميلادي عام 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- بعد كل سطر هنالك نقطه فاصلة ( للدلالة على سطر آخر يلية
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);[/align]
:36_1_11[1]::36_1_11[1]::36_1_11[1]:
الدرس الرابع
سنتعرف في هذا القسم على نوع جديد من الأوامر في الباسكال وهذا النوع من الأنواع الشائعة الإستخدام في البرنامج وهو الأمر 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)
__________________
:36_1_11[1]::36_1_11[1]::36_1_11[1]:
الدرس الخامس
في هذا القسم سوف نتعرف على العمليات الرياضية المستخدمة في الباسكال وطريقة إستخدامها
أولا : العمليات - و + و *
التعامل مع هذه العمليات متشابة وهي تقبل الأعداد الحقيقة والصحيحة
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
:36_1_11[1]::36_1_11[1]::36_1_11[1]:[/align][/align]
reputation
C_RONALDO غير متصل   رد مع اقتباس
قديم 04-29-2008, 23:13   #2
المراقب الاول
 
الملف الشخصي:

تقييم العضو:
تقييم المستوى : 910

المراقب الاول is a splendid one to beholdالمراقب الاول is a splendid one to beholdالمراقب الاول is a splendid one to beholdالمراقب الاول is a splendid one to beholdالمراقب الاول is a splendid one to beholdالمراقب الاول is a splendid one to beholdالمراقب الاول is a splendid one to beholdالمراقب الاول is a splendid one to behold

افتراضي


بارك الله فيك
المراقب الاول غير متصل   رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع


الساعة الآن 03:29.


Powered by vBulletin® Copyright ©2000 - 2014, Jelsoft Enterprises Ltd. , Designed & TranZ By Almuhajir