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;
تعود قصة الرياضي والفيلسوف الفرنسي بليز باسكال إلى منتصف القرن السادس عشر ميلادي عام 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;