سنتعرف
في هذا القسم على نوع جديد من الأوامر في
الباسكال وهذا النوع من الأنواع الشائعة
الإستخدام في البرنامج وهو الأمر Readln
ويستخدم هذا الأمر لإدخال البيانات من
المستخدم وحفظها في متغيرات تناسب نوع
البيانات المدخلة وله نوعان
الأول
: Readln
وهو
يقوم بقراءة البيانات من المستخدم وبعدها
ينتقل المؤشر للسطر التالي
الثاني
: Read
وهو
مشابه للأمر Readln
ولكن الفرق الوحيد أنه لا
ينتقل سطر للأسفل بعد قراءة البيانات
بل يكمل بنفس السطر
Write
(‘Enter Your Name :’);
Readln
(Name);
في
المثال السابق يقوم البرنامج في السطر
الأول بطباعة السؤال ( أدخل إسمك ) ولإننا
إستخدمنا الأمر Write
فإن المؤشر لا ينتقل للسطر
التالي بل يقرأ السطر التالي والمؤشر في
نفس السطر
في
السطر التاني ينتقل البرنامج لوضع
إستقبال البيانات من المستخدم ومن ثم
حفظها في المتغير المختار Name و
يجب أن تكون البيانات المدخلة من نفس نوع
المتغير وإلا سوف يولد البرنامج رسالة خطأ
لو
أضفنا السطور التالية للمثال
Writeln
(‘Enter your Age :’);
Read
(Age);
Write
(‘Enter your Salary :’);
Readln
(Salary);
في
السطر الثالث يطبع البرنامج الرسالة
وينتقل بعدها للسطر التالي لإستقبال
البيانات من المستخدم ، ونلا حظ هنا اننا
إستخدمنا الأمر Read
بعدها
سيقوم البرنامج بطباعة السطر الخامس ولن
ينتقل للسطر التالي بل سيستقبل البيانات
في نفس السطر لإننا إستخدمنا الأمر Write
قاعدة
الأولويات
يجب
علينا قبل الدخول في البرمجة فهم الطريقة
الرياضية للتعامل مع البيانات وطريقة
تعامل المصنف مع الدوال الرياضية
والأقواس
وبرنامج
الباسكال يتعامل مع العمليات الرياضية
حسب القاعدة التالية
والتي تعتمد على الأسبقية بحيث
أولا
: تنفيذ الدالة Not
ثانيا
: تنفيذ الدوال التالية
بحيث أن الدالتين Div
و Mod دوال
رياضية سيتم التعرف عليها لاحقا
ثالثا
: تنفيذ العمليات
رابعا
: تنفيذ المعاملات المنطقية
عندما
يكون هناك دالتين من نفس المستوى ننفذ
الدالة بدءا من اليسار إلى اليمين
لتتضح
الرؤيا حول إستخدام قاعدة الأولويات نرى
الأمثلة التالية
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)