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

مشاهدة النسخة كاملة : لغة باسكال (Pascal Language)


عثمان صدى
09-24-2014, 03:21 PM
بسم الله الرحمن الرحيم
والصلاة والسلام على رسول الله الأمين

السلام عليكم ورحمة الله تعالى وبركاته

سوف نتناول إنشاء الله تعالى اليوم لغة باسكال وهو ضمن مقرر الباب الثانى
وقد أحببت أن أفرد له بوست كامل لأهميته وحتى يتم الشرح بصورة أوسع

بسم الله نبدأ ...

لغة باسكال Pascal Languag
تعريف :
هى إحدى لغات البرمجة الهيكلية (Structures Programming) والتى تعنى تقسيم البرنامج إلى هياكل أو نماذج .
الهيكل العام للغة باسكال :
تتكون لغة باسكال من ثلاثة أجزاء رئيسية هى : رأس البرنامج،قسم التعريفات،جسم البرنامج
1/ رأس البرنامج : هو جزء إختيارى لا يؤثر على البرنامج
يبدأ بكلمة (program) ثم أى إسم آخر ثم علامة
; "semi colon" .
ولكن هنالك شروط للإسم هى :
أن لا يتعدى "64"حرف، أن لا يبدأ بإحدى العلامات
التالية ( *، / ، + ، ؟ ، . ، > ، <، =) وغيرها من العلامات ، أن لا يبدأ برقم ولكن يمكن
أن يكون الرقم داخل الإسم مثال : program osm ; أو program osm3 ;

2/ قسم التعريفات ( الإعلانات) :
هو جزء يتم فيه تعريف متطلبات البرنامج ولكن حسب الحوجة حيث يتم تعريف :
أسماء الوحدات المــستخدمة : بواسطة الكلمة المحجوزة (uses) وهى الوحدة التى يستخدمها البرنامج للتعامل مع نظام التشغيل . مثال : وحدة الدوس (نظام تشغيل الأقراص) وتسمى وحدة الأوامر (Uses DOS – Disk Operating System) ، وحدة الويندوز ، الرسومات ( Uses Win Crt) أو (Uses graph) أو (Uses Crt)
Uses DOS ; : تعنى خصص أو إستخدم دوال وحدة الدوس للعمل فى بيئة باسكال .
Uses graph ; : تعنى خصص أو إستخدم دوال وحدة الرسومات للعمل فى بيئة باسكال .
; Uses Win Crt : تعنى خصص أو إستخدم دوال وحدة الرسومات للعمل فى بيئة باسكال .

الثوابت Constants: بواسطة الكلمة المحجوزة (Const)

التعريفات الجديدة المستخدمة : بواسطة الكلمة المحجوزة (Type)


اللافتات "الملاحظات " : وهى عبارات فى البرنامج لا يتم تنفيذها،بواسطة الكلمة المحجوزة (label)

المتغيرات Variables: بواسطة الكلمة المحجوزة (Var) .

الإجراءاتprocedure والدوال Functions : بريمجات داخل البرامج تستخدم لغرض محدد .

جسم البرنامج : هو أهم جزء فى البرنامج يبدأ بكلمة (Begin) وينتهى بكلمة (End . )
وفيه يكتب البرنامج .

تعريف : البرنامج هو مجموعة من التعليمات والأوامر المرتبة منطقياً لتؤدى مهمة محددة .

أولوية التعريف فى برنامج باسكال :
أولاً يتم تعريف البرنامج ثم الثوابت ثم المتغيرات البسيطة ثم المصفوفات ثم السجلات .
الكلمات المحجوزة : هى كلمات تخصص فى الذاكرة لإستخدام معين وتكتب بصيغة معينة
لا تستخدم لغيرها مثال : uses , begin , ln , var , type وغيرها من الكلمات .



ملاحظات (1) :
* أى سطر فى باسكال يحتوى على العلامة ; ما عدا الكلمات المحجوزة فى سطر لوحدها .
* عبارة (end) عندما تكون نهاية برنامج بها (.) ونهاية مقطع سابق ; .
* أى برنامج به عبارة (else) السطر الذى قبله لا يحتوى على علامة ; .
* أى برنامج لحلقة (for) أو (then) لوحدها فى نهاية السطر لا تكتب بعدها ; .
* إذا إختل أحد الشروط أعلاه يعتبر خطأ فى البرنامج ويظهر فى الشاشة فى شريط أسود فى نفس السطر أو الذى قبله أو بعده ،،،، أما فى دوس يظهر فى مكان الخطأ نفسه بشريط أحمر اللون به إسم الخطأ ونوعه ورقمه .

مترجم باسكال : Pascal Compiler هو برنامج صغير يقوم بتحويل لغة باسكال إلى لغة الآلة
كل البرنامج دفعة واحدة .
المفسر : interpreter هو برنامج صغير يقوم بترجمة البرنامج سطر بعد سطر كمثال مفسر بيسك
شريط القوائم فى باسكال : ( خارج المقرر للتطبيق العملى فقط )
* قائمة : file : لفتح ملف موجود أو طباعة ملف أو حفظه أو إغلاقه .
* قائمة : Edit : خيارات اللصق والقص والنسخ والتراجع والمسح .
* قائمة : Search : للبحث عن كلمة أو رقم خطأ أو رقم أو الإنتقال إلى رقم معين
وغيرها من القوائم المتبقية .

المتغير (Variable) : هو موقع تخزين فى الذاكرة يقبل قيم متغيرة أثناء تنفيذ البرنامج .
الثابت (Constant) : هو موقع تخزين يقبل قيم ثابتة لا تتغير أثناء التنفيذ .




إنتهى الدرس الأول ،،،،،
اللهم صل على سيدنا محمد الأمين بقدر ما خط القلم فى الورق وبقدر ما خبأ نور أو برق

عثمان صدى
09-24-2014, 03:26 PM
الدرس الثانى

عبارات الإدخال والإخراج فى لغة باسكال :

لبرنامج باسكال عبارتى إدخال تستخدم للقراءة أو الإدخال (Read / Readln) ويمكن أن تكون القراءة لمدخل واحد أو مجموعة مدخلات ، وعبارتى إخراج تستخدم للطباعة (Write / Writeln)
ويمكن أن يكون الإخراج لمخرج واحد أو مجموعة مخرجات .

Read: وتعنى إقرأ (أدخل) الناتج من نفس السطر أو فى نفس السطر

Readln : وتعنى إقرأ (أدخل) الناتج من سطر جديد أو فى سطر جديد

Write: وتعنى أخرج (أطبع) الناتج فى نفس السطر

Writeln: وتعنى أخرج (أطبع) الناتج فى سطر جديد

ملاحظات (2) :
أى عبارة (Write) أو (Writeln) لوحدها تعنى أطبع سطر جديد فارغ .

أى عبارة (Write) أو (Writeln) مكتوبة هكذا ; (' ') Write تعنى
أطبع ما بداخل الأقواس كما هو مكتوب لأنه رسالة أو ملاحظات .

أى عبارة (Write) أو (Writeln) لرسالة تعنى أطبع الرسالة مثال لذلك :
; ('Sudan') Write تعنى أطبع كلمة سودان ، أو إذا كانت لمتغير تعنى أطبع قيمة المتغير
بعد حسابها مثال
;( Write (Sum
تعنى أطبع المجموع ، أو إذا كانت لرسالة ومتغير معاً
تعنى أطبعهما مثال
; (Write ('sudan=',sudan
تعنى السودان والقيمة .

أمثلة : لعبارتى الإدخال والإخراج .
-إذا كان (filename) ملف يحتوى على البيانات التالية : 10 20 30 40
50
المطلوب : ما هى قيمة المتغير (D) عند تنفيذ العبارات التالية :
1- Read (D);
2- Read (A,B,C);
3- Readln (A,B,C);
4- Readln (D);

1- الناتج هو (40) إستناداً على الأمر إقرأ المدخل مباشرة من نفس السطر (مدخل واحد) .
2- الناتج هو (30،20،10) إستناداً على الأمر إقرأ مباشرة من نفس السطر (عدة مدخلات) .
3- الناتج هو (30،20،10) ويتجاهل (40) إستناداً إلى إقرأ المدخل مباشرة من سطر جديد.
4- الناتج هو (50) إستناداً على الأمر إقرأ المدخل مباشرة من سطر جديد (مدخل واحد) .

مثال لعبارتى الإدخال والإخراج برنامج جمع عددين

عثمان صدى
09-24-2014, 03:33 PM
uses wincrt;
var
a,b,c:integer;
begin
writeln('أدخل العددان');
readln(a,b);
c:=a+b;
write('المجموع هو',c);
end.

عثمان صدى
09-24-2014, 03:42 PM
مثال لعبارتى الإخراج

program rana;
uses wincrt;
const
year=2002;
begin
writeln('sudan')';
write('tabat');
writeln('2000'; (
writeln;
write('exam=',year);
end.

عثمان صدى
09-24-2014, 03:44 PM
مثال
أكتب برنامجاُ لجمع عددين ؟ راجع الصفحة السابقة
يلاحظ فى هذا البرنامج أننا قمنا بحجز أماكن فى ذاكرة البرنامج بقسم المتغيرات للعدد الأول والثانى
حيث الأول هو (a) والثانى هو (b) والثالث وهو مجموع العددين يسمى (c)
ثم قمنا بإدخال قيمة العدد الأول =12
وقام بتخزينها فى المتغير (a)
والعدد الثانى بنفس الطريقة = 23
ثم قام البرنامج بحساب مجموع العدد الثالث بالمعادلة التالية :
العدد الثالث = الأول + الثانى .
وقام بتخزين النتيجة فى المتغير (c) ثم طباعتها = 35

وإنتهى البرنامج ،،،،،،



ملحوظة : يمكن تغيير هذا البرنامج ليقوم بالطرح والضرب والقسمة وذلك فقط بتغيير إشارة المعادلة ولكن فقط فى حالة القسمة يجب تعريف العدد (c) فى قسم الأعداد الحقيقية لأن الناتج قد يكون كسر مثلاً ناتج (3÷2) = 1.5 (كسر) .

عثمان صدى
09-24-2014, 03:50 PM
مثال : الشهادة 2003م (يونيو) :
أكتب برنامجاً لحساب مساحة دائرة نصف قطرها (r) حسب العلاقة area= pi r2


ملحوظات :
1/ الموضح باللون الأحمر أصلاً مكتوب برمز الرياضيات فاى ولأنه لا يظهر كتبته فى المشاركة بالحروف

2/ الرسائل داخل الأقواس باللغة العربية ويمكن أن تقوم بتغييرها باللغة الإنجليزية

3/ علامات ال ; والأقواس تكتب بصورة صحيحة فى البرامج وهنا تكتب فى الأيمن والأيسر فلا تنشغل بها


uses wincrt;
const pi= 3.14;
var
area,r:real;
begin
writeln('أدخل نصف القطر');
read(r);
area:=pi*sqr(r);
writeln ('مساحة الدائرة =',area) ;
end.

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

الشرح :
يجب تعريف الثابت أولاً وهو باى = 3.14 ثم تعريف المتغيرات وهى المساحة ونصف القطر على أنها أعداد حقيقية لأن الناتج سوف يكون كسر ثم حساب المساحة بالمعادلة:
باى × نصف القطر مربع حيث يمكن إستبدال علامة المربع بدالة التربيع (sqr) .

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

مثال : الشهادة 2009م :
البرنامج مكتوب بهذه الصورة باللغة العربية والإنجليزية :


const
pi=3.14;
var
r,area:real;
begin
writeln('enter value of radious');
readln(r);
area:=pi*r*r);
writeln(,area =',area);
end .


الثوابت باى = 3.14
متغيرات
مساحة ، نق : حقيقي
البداية
أكتب ("أدخل قيمة نصف القطر")
إقرأ (نق)
المساحة = باي × نق × نق
أكتب ("مساحة الدائرة="،area)
النهاية


تمعن البرنامج أعلاه بلغة باسكال الذى يقوم بحساب مساحة الدائرة التى نصف قطرها r ومساحتها تحسب وفقاً للمعادلة area= pi r2 ثم أجب عن الآتى :
وضِّح مدلول العبارات الآتية :
1- Const : .................................................. .................................................. .........................................
2- Var : .................................................. .................................................. ..............................................
3- Begin : .................................................. .................................................. ..........................................
4- Write : .................................................. .................................................. ..........................................
5- Readln : .................................................. .................................................. .......................................
6- Writeln : .................................................. .................................................. ......................................
7- End : .................................................. .................................................. ..............................................
8- الفاصلة المنقوطة ; : .................................................. .................................................. ......................
9- إكتشف الخطأ فى السطر الذى يبدأ بــ (Write) : .................................................. ......................
10- اكتب عبارة بصيغة يمكن إضافتها فى جزء رأس البرنامج ؟................................................. .......


مثال : برنامج حساب مساحة المثلث
حسب العلاقة area = ½ a b

var
a,b,area:real;
begin
writeln('enter value of a, b');
readln(a,b);
area:=a* b / 2);
writeln(area);
end .



الشرح :

يجب تعريف المتغيرات وهى القاعدة والإرتفاع (a ,b) ثم تعريف المساحة وكلها من الكسور
ثم حساب المساحة = نصف × القاعدة ×الإرتفاع ويتم وضع علامة القسمة للناتج دون كشط .
تم إدخال :4 ×6 = 24 ÷ 2 = 12 كما هو موضح فى صورة المخرج للبرنامج بعد التنفيذ


إنتهى الدرس بحمد الله وتوفيقه ونواصل لاحقاً إنشاء الله
للإستفسار 00249918084991

اللهم صل على سيدنا محمد الأمين

عثمان صدى
09-24-2014, 04:19 PM
تمرين

تمرين الكتاب : أكتب برنامجاً بلغة باسكال لحساب مساحة مثلث حسب القاعدة
لمشكلة عدم ظهور المعادلة بالصورة المطلوبة سوف أكتب المعادلة كجزء من الحل
area:= sqrt(s*(s-a)*(s-b)*(s-c));
بحيث
s:=(a+b+c)/2;


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

عثمان صدى
09-24-2014, 04:21 PM
الحل :

program sada;
uses wincrt;
var
a,b,c:integer;
area,s:real;
begin
writeln('فضلاً أدقيم قيم الأضلاع الثلاثة');
readln (a,b,c);
s:=(a+b+c)/2;
area:= sqrt(s*(s-a)*(s-b)*(s-c));
writeln (area);
end.


والله الموفق

عثمان صدى
09-24-2014, 04:25 PM
وفى رعاية الله أترككم
لاتنسوا الصلاة على النبى وذكر الله

سبحانك اللهم وبحمدك ، أشهد أن لا إله إلا أنت أستغفرك وأتوب إليك
اللهم صل على محمد وعلى آله وصحبه أجمعين

شموخ النيل
09-24-2014, 07:38 PM
نتمنى تعم الفائدة لكل طلابنا الأعزاء
تسلم يا غالي

عثمان صدى
09-26-2014, 04:40 PM
آمين يا رب ولكن التفاعل ليس واضحاً من قبل الطلاب