البرمجة العربية "ضاد"
لغة
كلية هندسة الحاسب الآلي
قسم علوم الحاسب الآلي والمعلومات
ع ح م 484 "الحوسبة العربية"
الفصل الدراسي الأول 061
محاضرتي
(آفاق)
منتظر الشيخ جعفر 215415
3 – ديسمبر – 2006
|
محتويات البحث
خصائص لغة البرمجة العربية " ضاد":
لغة البرمجة هي اللغة التي يتم بها كتابة البرامج ليقوم جهاز الحاسب بتنفيذها، وعادة ما يكون هناك قواعد للغة البرمجة، حيث وُضعت هذه القواعد للتسهيل على المبرمج في إعطاء أوامره للحاسب لكي يتم تنفيذها، وبالتالي فإنه هناك أسس لهذه القواعد وخصائص يجب أن تُتّبع خلال عملية البرمجة.
في هذا البحث سوف يتم استعراض بعض من خصائص لغة البرمجة العربية " ضاد "، والذي تتميز به لغة ضاد عن غيرها بأنه يمكن تسخير خصائصها تحت سيطرة المبرمج، فيمكنه افتراض مايريد دون التقيّد داخل نطاق اللغة.
من الممكن تناول خصائص اللغة في ذكر مكوناتها، حيث تتكون لغة ضاد من ثلاثة مكونات أو نماذج أساسية؛ وهي:
1. نماذج المعلومات.
2. نماذج التحكم.
3. نماذج إدخال وإخراج المعلومات.
وسأبدأ بالتكلم عن كل من النماذج السابقة بشيء من التفصيل، وذلك بذكر بعض أجزاء كل نموذج.
من النماذج البسيطة الأعداد الصحيحة، وهي عادةً ما تكون أساسية في جميع أنواع البرامج، وأيضاً يدخل في نطاق النماذج البسيطة الجزيئات، ويتكون الجزيء من ثمان خانات، ويمكن تمثيلها كعدد ثنائي أو عشري أو سداسي عشر أو كرمز.
المصفوفات نموذج يدخل تحت نطاق النماذج المركبة، والمصفوفة مجموعة مرتبة من العناصر من نوع واحد ويمكن استخدام اسمها ومؤشرها للتحكم في عناصرها، كما تشمل هذه النماذج ما يعرف بالركامات، وهي مجموعة من العناصر حيث يمكن إضافة وحذف العنصر من جهة واحدة.
في هذه الخاصية، يتكمن المبرمج من تعريف ما يريد من نماذج مختلفة عن النماذج المعرفة تحت نطاق اللغة، حيث يمكنه تعريف نماذجه باستخدام النماذج المعرفة في اللغة نفسها.
تنقسم نماذج التحكم إلى خمسة أقسام:
1. نموذج التعيين.
2. نموذج الاختيار.
3. نماذج التكرار.
4. نماذج التحكم غير المشروط.
5. جملة الملاحظات.
يستخدم نموذج التعيين لحفظ كمية جبرية في متغير، فمثلاً لحفظ العدد الصحيح 2 في متغير اسمه س، يمكن تمثيل ذلك بالطريقة التالية:
س := 2
في هذا النموذج يتم اختيار احتمال معين بالاعتماد على كمية جبرية معينة، فمثلاً؛ إذا كانت قيمة س تساوي 1 فإنه سيتم تنفيذ أمر بتعيين قيمة ص تساوي 6، وإذا كانت قيمة س تساوي 2 أو 9 فإن عملية المقارنة ستتوقف، وإذا لم تتساوى أي من القيم المذكورة فإن البرنامج سيتوقف، ويمكن تمثيل ذلك:
إذا س
<! (1): ص:=6
(2،9): توقف
غير: قف !>
في هذا النموذج تتم عملية تكرار التنفيذ لعدة جمل معينة، ويكون ذلك بالاعتماد على كمية جبرية أو منطقية معينة، وفيما يلي أمثلة هذه النماذج:
كرر <! س := س+ص إذا (س = 6) <* توقف *> !> |
ستتكرر عملية الجمع طالما قيمة س لا تساوي 6 |
طالما س < 6 <! س := س+ص !> |
ستتكرر عملية الجمع طالما قيمة س أصغر من 6 |
أعد س := س+ص حتى س = 6 |
ستتكرر عملية الجمع طالما قيمة س لا تساوي 6 |
لقيم ن من 1 إلى 50 بمقدار 1 <! س := س+ص !> |
ستتكرر عملية الجمع 50 مرة |
يتمكن المستخدم في هذا القسم من أقسام التحكم، بالتحكم في عملية البرمجة وبدون أي شروط، وفي الجدول التالي أمثلة لهذه النماذج:
استدع جمع (2،6) |
ليكن هناك برنامجاً فرعيا لعملية الجمع، في هذا الأمر يتم استدعاء البرنامج الفرعي "جمع" ليتم تنفيذ عملية جمع العددين 2 و6. |
ارجع |
يتم الرجوع إلى البرنامج الرئيس، وتحديداً إلى الجملة التي تتلو جملة الاستدعاء. |
اقصد جمع |
سيتم بتنفيذ هذا الأمر الذهاب إلى الجملة "جمع" وتجاهل الأوامر التي قبل جملة "جمع"، حيث أن هذه الجملة تقع في البرنامج نفسه. |
قف |
لإيقاف البرنامج فرعياً كان أم رئيساً. |
توقف |
لإيقاف التكرار والخروج منه. |
تستخدم جملة الملاحظات لكتابة التوثيق المرغوب فيه، وتستخدم علامة الاستفهام "؟" أمام السطر الذي يُرغب في توثيقه، حيث يتم تجاهله في عملية ترجمة البرنامج.
يندرج تحت هذا القسم ثلاثة أقسام:
¥ تجهيز الملفات للقراءة والطباعة:يمكن في هذا القسم التجهيز المسبق لعمليتي الطباعة والقراءة، كنوع من الاختصار.
¥ العمليات ذات التنسيق التلقائي:يمكن باستخدام هذه العمليات القراءة والطباعة من ملف معين.
¥ العمليات ذات التنسيق المحكوم: يمكن باستخدام هذه العمليات القراءة والطباعة، ولكن مع طلب تنسيق معين للطباعة.
تتكون البرامج في لغة ضاد من برنامج رئيس، وعدة برامج فرعية حسب موضوع البرمجة، وفيما يلي التركيب العام لبرنامج بلغة ضاد.
برنامج البرنامج – الرئيسي |
|
|
قسم التعريف |
|
قسم العمليات |
برنامج فرعي رقم 1 |
|
|
قسم التعريف |
|
قسم العمليات |
برنامج فرعي رقم س |
|
|
قسم التعريف |
|
قسم العمليات |
حيث يحتوي قسم التعريفات على:
1. الثوابت: وذلك لتعريف القيم التي لايمكن تغييرها فيما بعد.
2. نماذج المعلومات: وذلك لتعريف النماذج المستخدمة في البرنامج، وهي إما أن تكون معرفة مسبقاً، أوتعرّف عن طريق المستخدم.
3. المتغيرات: وذلك لتعريف القيم التي يمكن تغييرها أثناء عملية سير البرنامج.
4. البرامج الفرعية والدوال: ويتم في هذا القسم تعريف البرامج الفرعية والدوال المستخدمة في البرنامج.
5. ألقاب الجمل: وفي هذا القسم يتم تعريف ألقاب الجمل المستخدمة في البرنامج.
أما قسم العمليات فيتكون من عدة جمل، ويتم تنفيذها بالتوالي، وبتنفيذها يتنفذ البرنامج.
لا بد من ترجمة البرنامج المكتوب بلغة ضاد ليتم تنفيذه، وعملية الترجمة تمر بثلاث مراحل رئيسة، وهي على التوالي: مرحلة الترجمة، ومرحلة التجميع، ومرحلة التوحيد.
¨ مرحلة الترجمة:
يتم في هذه المرحلة ترجمة البرنامج الأساسي إلى سلسلة من العمليات، وذلك باستخدام عملية التجميع (زد 80)، وذلك باستخدام برنامج ض1، فمثلا لو كان لدينا ملف "تجربة.ضاد"، فيمكن ترجمته باستخدام الأمر:
ض1 تجربة
¨ مرحلة التجميع:
يتم في هذه المرحلة تحويل ناتج العملية السابقة وهي عملية الترجمة، يتم تحويله إلى شفرة ثنائية، وذلك بالأمر:
ض2 وغمئ، تجربة / -لا ؤ
¨ مرحلة التوحيد:
يتم في هذه المرحلة توحيد ناتج عملية التجميع مع الملف الأصلي لينتج لدينا برنامجاً قابلا للتنفيذ، ويمكن تنفيذ هذه المرحلة باستخدام الأمر:
ض3 /ئ: تجربة تجربة/لا
وبعد هذه العمليات الثلاث يمكن تنفيذ البرنامج وذلك بكتابة اسم البرنامج على النحو التالي:
تجربة
وفي الشكل الآتي، برنامج بسيط مكتوب بلغة ضاد، ويقوم البرنامج بقراءة عدد يُدخله المستخدم، ويزيد البرنامج على العدد الرقم واحد، ومن ثم يطبع الرقم، حيث يكرر هذه العملية عشر مرات.
إن أكثر الأعمال في حياتنا اليومية بل الدراسية على الأخص يصاحبها بعضاً من المشاكل والمتاعب، وأيضا تكون مصحوبة ببعض الأخطاء التي قد يتعلم منها الطالب.
وفي هذا البحث أو في تحضير هذه المحاضرة، واجهتني إحدى المشاكل وهي تقريباً مشتركة لدى الكثير من الطلاب، وهي مشكلة الوقت، حيث أن الطالب في هذا الوقت من الفصل الدراسي يكون تحت تأثير الضغوط المتنوعة في الدراسة، كضغط المشاريع المتعددة و المتطلبات وغيرها.
ومن المشاكل أيضاً التي واجهتني في هذا البحث هي قلة المصادر في الموضوع الذي اختره وهو لغة البرمجة العربية " ضاد "، وكانت الشبكة العنكبوتية الانترنت شحيحة في هذا الشأن، وكنت معتمداً في بادئ الأمر على إحدى البحوث المختارة من الأستاذ حسني المحتسب، حيث زودني بعدها مشكوراً بدليل الاستخدام للغة ضاد.
ويمكن إجمال المشاكل في نقطتيتين هما:
¨ الوقت الضيق.
¨ قلة المصادر.
رغم وجود المشاكل في إعداد البحث إلا أن الفوائد تكون حينها موجودة، وبكل اختصار وتلخيص فإن الفوائد المستفادة من هذا البحث؛ هي:
¨ التعلم الذاتي: حيث تمكنت من دراسة للغة البرمجة العربية " ضاد "، وتعرفت على بعض خصائصها، وكيفية استخدامها.
¨ اقتراح المشروع: أعطتني هذه اللغة دافع لأن اقترح مشروعاً للمادة لتعريب لغة اس كيو ال، والتي تستخدم في قاعدة البيانات، لأن لغة ضاد شبيهة بلغة السي، فيمكن كمحاولة بدائية عمل المشروع المقترح في نفس النهج.
¨ تغيير اللغة المستخدمة في الجامعة: حيث أنها المرة الأولى التي أكتب فيها بحثاً بهذا الشكل باللغة العربية منذ دخولي الجامعة، وبالتالي فقد تم كسر الروتين.
¨ التعود على الإلقاء واكتساب هذه المهارة: وتقدير الوقت المطلوب لإعداد محاضرة ما، وكيفية إعداد محاضرة لتوصيل المعلومات للغير.
أجب بصح أم خطأ.
1. الشرط التالي يُكتب:
طالما س < 6
<! س := س+ص !>
باستخدام لغة البرمجة العربية ضاد لتتم عملية جمع المتغييرين س وَ ص، وتعيين ناتج الجمع في المتغير س، حيث تتكرر عملية الجمع مادامت قيمة المتغير س أصغر من 6 (صح).
2. تتم عملية ترجمة البرنامج المكتوب بلغة البرمجة العربية ضاد، وذلك لإنتاج برنامج قابلاً للتنفيذ (صح).
3. يمكن للمبرمج بلغة البرمجة العربية ضاد تعريف مايريد من نماذج مستخدماً النماذج المعرفة أصلاً في اللغة (صح).
1. دليل استخدام لغة البرمجة (ضاد)، للأستاذ المساعد محمد غزالي خياط، بتوفير من الأستاذ حسني المحتسب "مدرس المادة".
2. موقع ويكيبيديا، الموسوعة الحرة ar.wikipedia.org