طرق بناء هياكل البرامج :مخططات التدفق Flow والحالة State
عند القيام بتصميم برنامج فعلى فمن المهم التفكير فى هيكله أو شكله قبل بدء كتابة الكود أو الشفرة او التعليمات البرمجية .
لذا يجب علينا البحث عن وسائل يمكن بها تمثل البرنامج تخطيطيا.
دعونا ننظر كيف نفعل ذلك بطريقتين شائعتين .
1- مخططات أو خرائط التدفق : Flow Diagrams
ويستخدم فى ذلك القليل من الرموز مثل شكل المستطيل للمعالجةأو الفعل وشكل المعين للقرار .
الشكل يوضح مثال بسيط لمخطط تدفق لمتحكم فى الثلاجة .
المستخدم لديه وسيله واحدة للتحكم مقاومة متغيرة تسمح له بتحديد أو ضبط درجة الحرارة المطلوبة . بالثلاجة يوجد حساس لدرجة الحرارة .يتم التحكم فى درجة الحرارة بتوصيل أو فصل الضاغط .. تهبط درجة الحرارة عندما يعمل .
البرنامج يقرأ كل من درجة الحرارة الفعلية والمطلوبة ويحدد أيهما أكبر أو أعلا .
اذا كان الأكبر هو درجة الحرارة الفعلية فيتم تشغيل الضاغط. . وإذا كان الفرق بينهما كبير يعطى البرنامج انذار مسموع .
مخطط التدفق يوضح هذا الفعل أو الإجراء باستخدام الرمزين المذكورين .
لاحظ أن الشكل المعين الذى يمثل رمز القرار يحتوى على علامة إستفهام داخيله باجابة بنعم أو بلا . ونقطتى خروجه تناظران الإجابتان المحتملتان .
ويمكن ملاحظة أن هذا البرنامج على شكل حلقة غير محددة أى إلى أجل غير مسمى .
هذا البرنامج يعتبر نموذج مشترك كمثال لهيكل برامج الأنظمة الشبيهة والمسماة بالانظمة المتضمنة ويطلق عليه أحيانا الحلقة السوبر super loop
من الممكن رسم مخططات التدفق بكثير من التفاصيل أو بالقليل جدا.مع العناية والخبرة من الممكن رسمها على مستوى بحيث يمكن تحوبل المخطط إلى برنامج باللغة المطلوبة دون صعوبات .
مخططات التدفق تعتبرفى رأى البعض تقنية قديمة الطراز .مع ذلك فمن السهل تعلمها و استخداها فهى يمكن أن تمثل بوضوح أفكار البرنامج البسيط. لذلك سنستفيد منها.
2- مخططات الحالة : State Diagrams
مخططات التدفق تظهر الحياة على شكل سلسلة من الإجراءات أو الأحداث التي تمر بسرعة.والعديد من المنتجات تتصرف بشكل مختلف عن هذه الطريقة. حيث تميل إلى الانتقال من حالة إلى أخرى ، وربما تستغرق فترة طويلة من الوقت في هذه الحالة وتتركها فقط عند اكتمال الفترة الزمنية أو وقوع حدث معين.
هذه من الأفضل تمثيلها بمخطط الحالة والذي يشكل بديلا لمخطط التدفق.
كما هو الحال مع مخططات التدفق يجب التدريب عليها للوصول إلى شكلها الكامل .
وكل ما نحتاج القيام به هو رسم كل حالة كدائرة أو حلقة لها عنوان أو وصف والتوصيل بينها بأسهم . وتظهر أو تتصرف تحت هذا الشرط (أو الشروط) كحالة واحدة وتنتقل إلى أخرى .
كل سهم يكون (يأخذ) إسما أو عنوانا لشرط يتسبب في تغيير الحالة.
الشكل يبين وظيفة آلة غسيل الملابس المنزلية ممثلة بمخطط حالة بسيط .
عند تشغيلها فإنها أولا تدخل إلى حالة التجهيز Ready .فإذا كان الباب مغلق وبدأ المستخدم الغسيل تقوم الآلة بتحميل (فتح-دخول) المياه.
يقوم حساس(جهاز استشعار) مستوى المياه بالإحساس بتمام مستوى المياه .
ومع ذلك فان الآلة تقيس الزمن الذى تستغرقه عملية الملء بالماء . فإذا لم يتم الملو فى حدود الزمن المخصص أو المسموح به نفترض حدوث خلل أو عطل .
قد يكون هذا راجعا إلى عدم كفاية ضغط المياه أو خلل الصمام.
استخدام طريقة انتهاءالمهلة كطريقة منخفضة التكلفة وبديلة عن استخدام حساسات لاستشعار ضغط أو تدفق المياه .
حالة الملء يتبعها حالة تسخين المياه .
مرة أخرى طريقة (انتهى الوقت ) إذا لم تسخن المياه فى المدة المحددة .
وتستمر العملية كما هو موضح وكل حالة لها خرج مشروط هو النجاح “successful” وخرج آخر يؤدى إلى حالة العطل .
من وجهة نظر البرمجة فان مخططات الحالة أكثر صعوبة من مخططات التدفق ولا يمكن بسهولة أن تترجم مباشرة إلى لغات البرمجة .
في الواقع ، غالبا ما يكون من المفيد تحويل كل حالة إلى مخطط تدفق خاص بها .
للحفاظ على وضوح الهيكل أو البناء وضمان ممارسة جيدة للبرمجة ينبغي أن يكون لكل حالة تعريف محدد واضح يحدد نقاط الدخل والخرج .