البرمجة الهيكلية، معروفة ايضاً باسم البرمجة المعيارية (Modular programming)، احد اساليب كتابة الكود، هدفها جعل عملية كتابة وقراءة الكود اكثر سلاسة وسهولة. عن طريق تقسيم عملية كتابة الكود الى شكل يقرب الى الشكل الهرمي الى عناصر مستقلة، كل عنصر منها مستقل عن العناصر الأخرى وله خصائصه المميزة له. لا داعي للقلق اذا وجدت هذه الجمل صعبة الاستيعاب. فهي مجرد جمل نظرية مجردة على كل حال. دعك من هذه الجمل وتعالى معي نتعمق في هذا المفهوم بشكل عملي مبسط أكثر.
محتوي المقال
ما هي عناصر البرمجة الهيكلية؟
البرمجة الهيكلية هى نموذج برمجى يسهل عملية انشاء البرامج عن طريق العناصر القابلة لإعادة الإستخدام, جميع لغات البرمجة الحديثة تدعم هذا المفهوم.
سنتعرف فيما يلى على عناصر البرمجة الهيكلية
Block
البلوك هو عبارة عن مجموعة من الأوامر المتتالية – Sequential commands – التي يتم تنفيذها واحدة تلو الأخرى، من السطر الأول الى السطر الأخير. اذا تناولنا هذا العنصر من وجهة نظر برمجية، من لغة ++C، فسيكون المثال على نوعية الكود في البلوك كالتالي:
Variable_X = Array[5]; Variable_X ++; Sum = Variable_X + Variable_Y; Output = Dummy_Function (Sum);
يبدو من الفقرة السابقة انها عبارة عن مجموعة من الأوامر، كاسترداد عنصر من مصفوفة، او جمع وطرح بعد المتغيرات. لذلك، المهم ان يتم تنفيذها بشكل متسلسل لأن -غالباً- ما يكون كل سطر معتمد على ما قبله.
Selection
باختصار، Selection، هي عملية التحكم في التدفق. او من وجهة نظر برمجية عملية، هي IF STATMENT، والتي يتم بناءاً عليها اختيار في اي اتجاه سيذهب الكود بتاعك عند ظهور حدث معين.
Iteration
وهي عملية التكرار، او Loop، وهي اللف حول مجموعة من العناصر لاختيار عنصر أو اكثر. عملية التكرار لها العديد من الأشكال في البرمجة الهيكلية، كالFor Loop, While loop, While True loop وغيرهم. لكل منهم وظيفة معينة يتم اخيتارها بناءاً على المعطيات المقدمة.
Nesting
بالعربية، تسمى التداخل، وهي عبارة عن تداخل احد عمليات التحكم في التدفق – Flow Control- فمثلاً، اكثر من جملة If متداخلين في نفس البلوك تسمى بالتداخل. التداخل لها تأثير كبير على كفاءة الخوارزميات، يمكنك الاطلاع على كفاءة الخوارزميات بشكل عام من هنا. ليست بالضرورة ان تكون جملة IF، ربما تكون دالة داخل دالة، او loop بداخل اخرى.
الفرق بين البرمجة الهيكلية وغير الهيكلية
في البرمجة غير المهيكلة ، يتم كتابة الكود ككتلة واحدة كاملة. يتم أخذ البرنامج بأكمله كوحدة واحدة. من الصعب إجراء تغييرات في البرنامج فبالتالى يصعب صيانة الكود.
تم استخدام هذا النموذج في الإصدارات السابقة من BASIC و COBOL و FORTRAN. وتحتوي لغات البرمجة غير المهيكلة على عدد محدود من أنواع البيانات مثل الأرقام والمصفوفات والسلاسل.
فى حين ان البرمجة الهيكلية كما ذكرنا تدعم عدد العناصر التى تسهل كتابة وقراءة وصيانة الكود وفيما يلى جدول باهم الفروق بين البرمجة الهيكيلية وغير الهيكلية
البرمجة الهيكلية | البرمجة الغير هيكلية | |
التعريف | هو نموذج برمجى حيث يقوم بتقسيم الكود إلى وحدات او دوال | هو نموذج برمجى يعتبر الكود كامل وحدة برمجية واحدة |
قابلية القراءة | البرمجة الهيكلية اسهل فى قراءة الكود | البرمجة الغير هيكلية اصعب فى قراءة الكود |
الهدف | جعل الكود اكثر كفاءة وسهل الفهم | فقط الهدف هو حل مشكلة معين |
التعقيد | البرمجة الهيكلية اسهل بسبب تقسيم البرنامج إلى وحدات | أصعب عند المقارنة بالبرمجة الهيكلية |
التطبيقات | يمكن تطبيقها فى المشاريع الصغيرة والمتوسطة | لا يمكن إستخدامها فى المشاريع المتوسطة او المشاريع الأكثر تعقيدًا |
التعديل | سهل التعديل عليها | صعب التعديل عليها |
انواع البيانات | الكثير من انواع البيانات | عدد محدود من انواع البيانات |
تكرار الكود | القليل من التكرار فى الكود لأنها تعتمد على الوحدة القابلة لإعادة الإستخدام | الكثير من التكرار مما يجعلها صعبة التعديل |
الإختبار وإصلاح المشكلات | سهلة فى الإختبار وإصلاح المشكلات فى الكود | صعب فى الإختبار وإصلاح المشكلة |
خلاصة المقارنة ان البرمجة المهيكلة وغير المهيكلة نموذجان في البرمجة. الفرق بين البرمجة المهيكلة وغير المهيكلة هو أن لغات البرمجة المهيكلة تسمح للمبرمج بتقسيم البرنامج بأكمله إلى وحدات أو دوال وفي البرمجة غير المهيكلة ، تتم كتابة البرنامج ككتلة واحدة. لغات البرمجة المهيكلة هي اللغات الحديثة ، واللغات غير المهيكلة هي أقدم إصدارات لغات البرمجة.
مزايا وعيوب البرمجة الهيكلية
مزايا البرمجة الهيكلية
يشجع على تصميم التطبيق من أعلى إلى أسفل ، مما يحسن كلاً من إمكانية قراءة التعليمات البرمجية وإمكانية صيانتها.
يشجع على إعادة استخدام الكود ، لأنه حتى الوحدات النمطية الداخلية يمكن استخلاصها وجعلها مستقلة. توفر عملية إعادة استخدام الكود كثير من الجهد للوقت لكلاً من الشركات والمهندسين.
عادةً ما يُنظر إلى هذه المزايا على أنها مقنعة ، بل وحاسمة ، وتستخدم جميع عمليات تطوير البرامج الحديثة تقريبًا برمجة منظمة.
عيوب البرمجة الهيكلية
أكبر عيب في البرمجة المنظمة هو تقليل كفاءة التنفيذ ، يليه استخدام أكبر للذاكرة وهذا غير مسموح به فى بعض التطبيقات خصوصًا التطبيقات فى الوقت الحقيقى Real Time Applications.
انواع البرمجة الهيكلية
يمكن تقسيم البرمجة الهيكلية إلى العديد من الانواع فيما يلى بعضها :
البرمجة المعيارية Modular programming: نمط برمجة يقسم برنامجًا كبيرًا إلى وحدات أصغر مستقلة يمكن اختبارها وصيانتها وإعادة استخدامها بسهولة.
البرمجة الإجرائية Procedural programming : يتم تعريف الواحدات او Modules هنا على أنها إجراءات او دوال والتى يتم إستدعاءها فى اي وقت مع تمرير مجموعة من المعاملات لأداء مهمة معينة.
البرمجة كائنية التوجه Object Oriented Programming: يعرّف البرنامج على أنه مجموعة من الكائنات أو الموارد التي يتم إرسال الأوامر إليها. وإليك مثال بسيط لتفهم الفرق بينهم، قد يقول المبرمج الإجرائي “Print (object)” بينما قد يقول مبرمج OOP على الجهة الاخرى object.print اي يطلب من الكائن ان يطبع.
البرمجة المدفوعة بالحدث Event Driven programming: نموذج برمجة يركز على الأحداث واستجابة البرنامج لتلك الأحداث.