مقدمة:
تظهر الضرورة لعمل برنامج الحاسوب الالكتروني عند ظهور مشكلة لها صفة التكرار مثل (حساب رواتب الموظفين , إدارة المخازن , استخراج نتائج الطلاب , ..........إلخ) مما يساعد على توفير الوقت والجهد من الأعمال الروتينية التكرارية, أو عند الرغبة في حساب بعض العمليات الرياضية المعقدة والتي تتطلب دقة وسرعة للحصول على نتائجها مثل( حساب المساحات أو الأحجام لبعض الأشكال الهندسية وتحديد مسارات سفن الفضاء والصواريخ .......إلخ).البرنامج (Program):
هو عبارة عن مجموعة من الأوامر (Instructions) المرتبة منطقيا التي تخبر الحاسوب بما يجب أن يقوم به للحصول على النتائج المطلوبة.وتتمثل وظيفة المبرمج (Programmer) الأساسية في كتابة البرامج التي توجه عمل الحاسوب. ويجب أن تكون هذه البرامج صحيحة وواضحة وقادرة على إنتاج معلومات ذات جدوى تخدم المستخدم النهائي.
وتنقسم المراحل التي يمر بها برنامج الحاسب الآلي إلى مرحلتين رئيسيتين هما دور الانسان في حل المسألة, ثم يليها دور الحاسوب في الحل.
وبالرغم من أن الحاسوب الالكتروني يتميز بقدرته على إنجاز العمليات الحسابية حسب الأوامر و التعليمات المعطاة له بسرعة فائقة و بدقة متناهية و كذلك بإمكانياته الكبيرة في حفظ المعلومات الواسعة و المختلفة التي يعجز الإنسان عن حفظها و استعادتها باستعمال ذاكرته العادية. فهو يعجز عن أن يقوم بشكل ذاتي بحل أي مسألة مهما كانت بسيطة، أي أن عمله ينحصر في إنجاز الحلول للمسائل التي تبرمج له بشكل صحيح يتوافق مع الأسس العلمية الصحيحة التي تعتد عليها هذه الحلول. لذا سوف نستعرض الخطوات الضرورية اللازمة لحل المسائل باستخدام الحاسوب الالكتروني وكذلك توضيحاً مفصلاً لمفهوم الخوارزميات و المخططات الانسيابية التي تشكل العنصر الأساسي لكيفية البرمجة.
الشكل التالي يوضح المراحل المختلفة التي يمر بها البرنامج:
تحديد المسألة(المشكلة)
Definition of problemتحليل عناصر المسألة(المشكلة) problem Analysis
كتابة خوارزمية المسألة
Algorithm
كتابة البرنامج
(البرنامج المصدري)
Source Program
ترجمة البرنامج
Compilation
قائمة أخطاء البرنامج
Errors List
البرنامج الهدفي
Object Program
تصحيح الأخطاء
تنفيذ البرنامج
Execution of Program
إصدار النتائج
Output
فحص المعطيات
Data Checking
دور الإنسان في حل المسألة
دور الحاسب الآلي في حل المسألة
تحديد المسألة(المشكلة)
Definition of problem
تحليل عناصر المسألة(المشكلة) problem Analysis
كتابة خوارزمية المسألة
Algorithm
كتابة البرنامج
(البرنامج المصدري)
Source Program
ترجمة البرنامج
Compilation
قائمة أخطاء البرنامج
Errors List
البرنامج الهدفي
Object Program
تصحيح الأخطاء
تنفيذ البرنامج
Execution of Program
إصدار النتائج
Output
فحص المعطيات
Data Checking
دور الإنسان في حل المسألة
دور الحاسب الآلي في حل المسألة
الشكل رقم(1) يوضح المراحل المختلفة التي يمر بها البرنامج.
وعند استخدام الحاسوب الالكتروني في حل مسألة ما ( مشكلة) ، فإن هناك عدداً من الخطوات التي ينبغي إتباعها، وفقاً لدرجة كفاءة تنفيذ هذه الخطوات، تتحدد كفاءة تشغيل المسألة على الحاسوب. والجدير بالذكر أن أهم هذه الخطوات يتم تنفيذها وإنجازها خارج الحاسوب وبدون استخدامه إذ أنها تمثل منطق حل المسألة، وفيما يأتي عرض لهذه الخطوات حسب ترتيبها المنطقي (خطوات حل المسألة):
تعريف المسألة وتحليلها.
Problem Definition & Analysis
وضع خوارزمية الحل.
Algorithm
كتابة البرنامج بإحدى لغات الحاسوب.
Writing the Program
ترجمة البرنامج إلى لغة الآلة.
Compilation
تنفيذ البرنامج.
Execution
تعريف المسألة وتحليلها:إن تعريف المسألة هو عبارة عن دقة التعبير في تطبيق المسألة بحيث يجعلها معروفة ومفهومة بصورة واضحة وبدون أي غموض لجميع الأشخاص العاملين ضمن مجال الاختصاص الذي تخضع له المسألة.
أما تحليل المسألة ووضع طريقة الحل فهو أصعب المصاعب و أشق الخطوات، و من أجل الوصول إلى حل صحيح فإن كثير من القوانين والطرق الرياضية المناسبة لحل المسألة يجب أن تستعمل و لربما تحتاج أيضاً إلى تطوير هذه القوانين والطرق لنجعلها تناسب الحل في كثير من الأحيان ففي هذه المرحلة يتم تحديد أبعاد المسألة، وتحديد الهدف المطلوب الوصول إليه وذلك بتحليل مفردات المسألة ووصفها ومن ثم إنجاز المهام التالية:
تعريف المخرجات، وشكلها بدقة … ونقصد بالمخرجات هنا، النتائج المراد تحقيقها من حل المسألة، وينبغي هنا أن نوضح أن المخرجات يجب أن يتم تعريفها أولاً لكي يمكن تحديد المدخلات والعمليات اللازمة لتحقيقها؛ فالنتائج تعرف وتحدد أولاً ونحصل عليها أخيراً.
بناءً على المخرجات والنتائج المطلوبة يمكن تحديد المدخلات اللازمة للحصول على هذه المخرجات، وذلك من بيانات ومتغيرات وكذلك تحديد شكلها ومواصفاتها بدقة.
حصر طرق الحل المختلفة من وجهة نظر الحاسوب، وتقييمها لاختيار أفضلها. ذلك أن أي مسألة قد يكون لها أكثر من طريقة للحل، ومن ثم يجب دراسة هذه الطرق واختيار أكثرها ملائمة للتنفيذ باستخدام الحاسوب من حيث سهولتها، وسرعة تنفيذها، والمساحة التي تحتاجها من ذاكرة الحاسب.
والشكل الآتي يوضح العلاقة بين النقاط السابقة واللازمة لتعريف المسألة:
Processes
ءؤرء
Processes
ءؤرء
Input
Input
Input
Input
Output
Input
Output
Input
وضـع خوارزميـة الحل:
بعد اختيار طريقة الحل المثالية و تحديد كل ما تشمله من علاقات رياضية، يتم التعبير عنها على شكل خطوات متسلسلة ومترابطة منطقياً، دقيقة الوصف تؤدي إلى الوصول إلى حل المسألة. وهذه الخطوات المتسلسلة تعرف بخوارزمية المسألة Algorithm of the Problem.وتسمى هذه الخطوات بالخوارزمية Algorithm- وذلك نسبةً إلى العالم المشهور أبو عبد الله محمد بن موسى الخوارزمي القرطبلي عالم مسلم عراقي يكنى باسم الخوارزمي وأبو جعفر, يعتبر من أوائل علماء الرياضيات المسلمين, حيث ساهمت أعماله بدور كبير في تقدم الرياضيات في عصره. وهو الذي قام بوضع أسس حل المسائل بشكل تتابعي. – ويمكن تعريف الخوارزميـة كالآتي:
" مجموعة متسلسلة من الخطوات اللازمة تحدد الأسلوب المستخدم لحل مسألة معينة"
و يمكن التعبير عن الخوارزمية السابقة بالرسم بدلاً من الكتابة وذلك باستخدام رموز وأشكال اصطلاحية عملاً بالحكمة الصينية القائلة: "الصورة تغني عن ألف كلمة" – ويطلق على الرسم التوضيحي الناتج باسم "المخطط الانسيابي".
ويمكن تعريف المخطط الانسيابي على أنه رسم توضيحي يبين التسلسل المنطقي لسير العمليات اللازمة لحل مسألة محددة وذلك باستخدام رموز وأشكال هندسية متفق عليها حيث تصف هذه الرموز والأشكال العمليات المحددة.
كتابة البرنامج بإحدى لغات الحاسوب:
إن المخطط الانسيابي هو عبارة عن تخطيط تصوري مساعد سهل الملاحظة بالنسبة للمبرمج و لكنه غير مفهوم عند الحاسوب الالكتروني، لذلك فإن طريقة الحل الممثلة بمخطط سير العمليات يجب أن تكتب بإحدى لغات الحاسوب التي يفهمها و التي تتلاءم مع حل المسألة.و يلي ذلك كتابة البرنامج على الوسط الخارجي المناسب و إدخال البرنامج إلى الحاسوب و البرنامج الناتج من هذه الخطوة و المكتوبة بإحدى اللغات الرمزية أو الراقية يسمى بالبرنامج المصدري Source Program.ترجمة البرنامج إلى لغة الآلة:
بعد الانتهاء من كتابة البرنامج المصدري يتعين إدخاله إلى الحاسوب للتأكد من صحة كتابته من جهة، ثم لترجمته إلى لغة الآلة بواسطة برنامج الترجمة الخاص في حالة عدم وجود أخطاء في البرنامج المصدري. و تمر عملية الترجمة في المراحل الآتية:
مرحلة التحليل المعجمي Lexical analysis:
في هذه المرحلة يتم مطابقة مفردات برنامج المصدر والعلاقات و الأسماء مع تلك المسموح بها في اللغة و اكتشاف أي أخطاء فيها.
مرحلة التحليل اللغوي والنحوي Syntax analysis:
في هذه المرحلة تجري عملية مطابقة تعليمات البرنامج المصدري مع القواعد اللغوية المستخدمة، و اكتشاف أي أخطاء فيها، بالإضافة إلى عملية تحويل البرنامج المصدري إلى تعليمات و أوامر رمزية بلغة التجميع.
مرحلة ترجمة البرنامج إلى لغة الآلة:
في هذه المرحلة نحصل على البرنامج الهدف Object Program و الذي بموجبه يمكن البدء في عملية التنفيذ.
تنفيذ البرنامج.
بعد الحصول على البرنامج الهدف، تتم تجربته للتأكد من صحته منطقياً وذلك باستخدام عينة من المعطيات الاختبارية Test Data فإذا ثبت صحة طريقة الحل بمطابقة النتائج الخارجة من الحاسوب مع النتائج التي تم الحصول عليها يدوياً على سبيل المثال، يمكن تنفيذ البرنامج على المعطيات الحقيقية.
إذن الخوارزمية هي عبارة عن مجموعة من الخطوات المتسلسلة التي تصف بصورة مضبوطة وبدون أي غموض جميع الخطوات الرياضية والمنطقية اللازمة لحل مسألة ما. ولكن هذا الوصف في كثير من الأحيان يكون معقداَ وصعب الملاحظة والتتبع لذلك فإن المخطط الانسيابي الذي يمثل وصفاً تصويرياً لخطوات الخوارزمية يكون أكثر وضوحاً. والمخطط الانسيابي يقوم مقام الخوارزمية ويمكن بواسطته ملاحظة تتبع التسلسل المنطقي لحل المسألة بكل سهولة، وغالباً ما تكون استخراج الخوارزمية من المخطط الانسيابي أسهل بكثير من كتابة الخوارزمية مباشرة.
خصائص الخوارزمية :
يجب ان يكون لها بداية ونهاية.
يجب ان تكون كل خطوة من خطوات الخوارزمية واضحة وبدون أي غموض عن العملية المقصودة من تلك الخطوات.
يجب أن تكون خطوات الخوارزمية متسلسلة ومحددة بعددها بحيث تشكل وحدة متكاملة تؤدي بمجموعها إلى إنجاز عمل معين أو التوصل إلى نتيجة أو نهاية .
يجب أن تكون الخوارزمية كاملة بحيث تأخذ بنظر الاعتبار جميع الظروف والاحتمالات التي يمكن أن تجابه طريق التنفيذ .
وعند رسم المخطط الانسيابي لمسألة معينة فإننا نستخدم مجموعة من الأشكال الرمزية الاصطلاحية المبينة في الجدول التالي:
الشكل الاصطلاحي(الرمز)
معنى الرمزيستخدم هذا الرمز للدلالة على بداية البرنامج ونهايته
(Start / END)
يمثل هذا الرمز كل من عمليتي الإدخال (قراءة البيانات تمهيدا لمعالجتها) والإخراج (عرض النتائج على الشاشة، طباعة، ...)
(Input / Output)
معالجة
معالجةرمز المعالجة، وقد يحتوي هذا الرمز على عملية حسابية أو عملية تخزين
(Calculate and Store)
معالجة
معالجةعملية استدعاء (نداء) لبرنامج فرعي (Call Sub-Routine)
رمز اتخاذ قرار، ويستخدم هذا الرمز في خطوات المعالجة التي تتطلب إجراء عملية منطقية كالمقارنة أو عملية اختبارDecision
اتجاه سير البرنامج. تستخدم الأسهم لبيان حركة واتجاه خريطة التدفق.
Directions
نقطة توصيل وربط .(Connector)
تكرار أو دورانLooping))
تعليق وإيضاح
Comment))جدول رقم(1): اشكال الرموز في المخطط الانسيابي.
من أهم فوائد استخدام المخطط الانسيابي قبل كتابة البرنامج لمسألة ما، التالي:
يمكن المبرمج من الإلمام الكامل بالمسألة المراد حلها و السيطرة على كل أجزائها بحيث يساعده على اكتشاف الأخطاء المنطقية (Logic Error) و التي تعتبر من أهم الأخطاء التي تجهد المبرمج.
يساعد بيسر و سهولة على تعديل البرامج الموضوعة بمجرد النظر.
يعتبر الاحتفاظ برسوم المخطط الانسيابي لحلول مسائل معينة أمراً مهماً إذ يكون مرجعاً عند إجراء تعديلات عليها أو استخدامها لحل مسائل أخرى مشابهة دون الحاجة إلى الرجوع إلى المبرمج الأول باعتبار أن الحلول الأولى قد صيغت في خطوات واضحة بسيطة و مفهومة.
توفير وسيلة مناسبة ومساعدة في كتابة البرامج ذات التفرعات الكثيرة.
إذن المخططات الانسيابية تستخدم:
لتوضيح سير العمليات .تسهل على المبرمج إيجاد وتتبع الأخطاء في الخوارزمية .
تسهيل عملية مراجعة البرنامج لتعديله أو لاكتشاف الأخطاء الموجودة فيه.
تسهيل عملية دراسة البرنامج من قبل المستفيدين.
يستخدم كوسيلة لتوثيق البرامج حيث يعكس المخطط كافة العمليات من إدخال، إخراج ومعالجة الممثلة في البرنامج.
هذا و يمكن تصنيف المخطط الانسيابي بما يلي:
المخطط الانسيابي ذو التتابع البسيط (Simple sequential Flowchart).المخطط الانسيابي المتفرع (Branched Flowchart).
المخطط الانسيابي ذو التكرار الواحد (simple-Loop Flowchart).
المخطط الانسيابي ذو التكرارات المتعددة (Multi-Loop Flowchart).
و يمكن للبرنامج الواحد أن يشتمل على أكثر من نوع واحد من هذه الأنواع. و سنتناول فيما يأتي شرح هذه الأنواع بشيء من التفصيل.
المخطط الانسيابي ذو التتابع البسيط: ويتم ترتيب خطوات الحل لهذا النوع بشكل سلسلة مستقيمة من بداية البرنامج حتى نهايته، بحيث تنعدم فيها أية تفرعات Branches و التكرارات loops و يكون الشكل العام لهذا النوع كما هو مبين في الشكل رقم(1).
الشكل رقم(1) :المخطط الانسيابي ذو التتابع البسيط.
و كلمة Event الواردة في الشكل رقم(1) تعني الحدث أو العملية المطلوب تنفيذها.