الخوارزمية

algorithm

ما هي الخوارزمية البرمجة؟ وما هي أساسياتها وآلية عملها؟ ما هو سبب أخطائك؟ وهل تريد معرفة اختبار البرمجيات؟ هل تريد معرفة التوكيدات؟

0 38

الخوارزمية؛ من أهم الأشياء التي تحتاجها كل من برمجة التطبيقات، والمواقع، والتابع والتي تقوم على ترتيب الأفكار، هي الخوارزميات.


تعريف الخوارزمية

الخوارزمية هي تجريد البرنامج، كما أنها تتابع محدد من الخطوات التي تؤدي إلى حل مسألة معينة خلال مدة محدودة من الزمن، وهي مستقلة عن القيود المفروضة من البنية الحاسوبية.

الخوارزميات
الخوارزمية

فاعلية خوارزمية

تقاس فاعلية الخوارزمية اعتمادا على مدى استهلاكها لكل من الزمن والذاكرة.

  • فاعلية السعة: مقدار حجم الذاكرة التي تستخدمها الخوارزمية عند تنفيذها.
  • فاعلية الزمن: المدة الزمنية التي تتطلبها الخوارزمية لإتمام عملها.

اقرأ أيضًا: أفضل VPN للويندوز


عوامل تقييم فاعلية الخوارزمية

  • كمية المعطيات التي تتم معالجتها.
  • سرعة الحاسب.
  • لغة البرمجة المستخدمة في بناء الخوارزميات.

حيث أن كلًا من سرعة الحاسب التي يتم تنفيذ البرنامج المُحقق للخوارزميات عليه، كذلك لغة البرمجة المستخدمة تعتبر أوجه تقييم سرعة البرنامج وليس الخوارزمية، لذلك سيتم التركيز على حجم المعطيات وهي:

  • عدد عناصر المعطيات التي تعالجه الخوارزمية (N).
  • عدد العمليات المنفذة على عناصر المعطيات (كعلاقة تابعية مع N).

التعبير عن فاعلية الخوارزميات

يتم التعبير عن فاعلية الخوارزميات باستخدام صيغة Big-O notation كالتالي:

  • تابع تم تعريفه من أجل القيم الصحيحة الموجبة: (F(n.
  • عدد العمليات التي تم تنفيذها الخوارزمية من أجل حجم المعطيات: (T(n.
  • إذا افترضنا وجود ثابت C بحيث: (T(n)=<C f(n.
  • نقول عن الخوارزمية أن لها نمو من المرتبة ((O(f(n.

تحديد التابع (F(n من أجل خوارزمية محددة

يتحدد عادة الزمن تنفيذ الخوارزمية من خلال عدد مرات تكرار الحلقات المحتواة ضمنها، حيث يتم تحديد الحد ذو المرتبة الأعلى (القوة الأعلى) في كثير زمن الحدود الممثل لعدد التكرار.

اقرأ أيضًا: لغة HTML


اختبار البرمجيات

الخوارزميات في البرمجة
اختبار الخوارزميات

لاختبار البرمجيات هناك تقنيات يمكن استخدامها للاختبار بشكل صحيح، منها:

تقنية البرنامج الإطار

هو البرنامج الذي يكون مكرسًا لاختبار تابع ما يتم تطويره والمطلوب التحقق من سلامة سلوكه، حيث يقوم البرنامج الإطار باستدعاء التابع الذي يتم اختباره.

تقنية أصل الشجرة stup

لنفترض أن التابع الذي يتم اختباره بحاجة لأن يقوم باستدعاء توابع أخرى، لكن المشكلة أن تلك التوابع لم يتم بناؤها بعد، لذلك يمكن أن يقوم المبرمج بكتابة تعريفات مبدئية لتلك التوابع تحتوي ضمنها تعليقات أو عبارات إيضاحية تتم طباعتها أو قيمة معادة افتراضية، كل هذا فقط كي يتمكن التابع الأصلي التي يتم اختباره من استدعاء تلك التوابع ومتابعة عمله حتى النهاية.

تطبيق تقنيات ضمان الصحة البرمجية للبرامج

لقد كانت تقنيات ضمان الصحة البرمجية محور أبحاث عديدة في مجال علوم الكمبيوتر على مدى 20 سنة الماضية، والفكرة التي تعتمد عليها هذه التقنيات بسيطة وهي أنه إذا كان بالإمكان التعبير عن سلوك البرنامج المطور باستخدام لغة المنطق الرياضي، وإذا كان لدينا الفهم الكامل للتعليمات البرمجية الواردة في البرنامج وآلية عملها، عندئذ سيكون من الممكن التحقق بشكل رياضي وممهنج سيكون مطابقا للسلوك المطلوب منه، حتى من دون إجراء أي اختبارات عملية.

اقرأ أيضًا: أساسيات ++c


التوكيدات الخوارزمية

التوكيد هو عبارة لغوية منطقية محددة نصف سلوك البرنامج في مرحلة معينة خلال عمله.

  • الشرط المبدئي: وهو الشرط الذي يفترض تحققه قبل تنفيذ البرنامج (التابع أو المقطع برمجي)، كي يكون البرنامج قادرا على إنجاز العمل المطلوب منه.
  • ثباتية الحلقة: وصف العمل الذي يجب أن تقوم به الحلقة في كل لفة من لفاتها. أي هي التوكيد الذي يفترض أن يكون محققا في بداية الحلقة وفي نهايتها وخلال عملها.
  • الشرط النهائي: هو التوكيد الذي يتم وضعه في نهاية البرنامج التابع. للتأكيد على إتمام البرنامج لعمله وإعطائه للنتيجة المطلوبة منه.
  • ثباتية الحلقة والتحقق من الانتهاء: تشكل الحلقات مصدر معظم الأخطاء التي يرتكبها المبرمجون، لذلك يجب التحقق من صحة العمل الذي تقوم به الحلقة خلال لفاتها، كذلك التحقق من انتهاء الحلقة بعد عدد محدد من اللفات (التكرارات).

اقرأ أيضًا: الدوال في لغة c++


أنواع الأخطاء

  1. أخطاء كتابية: تنتج عن عبارات أو تراكيب برمجية (software) خاطئة مثال INT var ;
  2. خطأ الشرعية: بناء التصميم الصحيح للنظام بشكل خاطئ.
  3. أخطاء إثبات: أخطاء ناتجة عن زيادة تركيز على وظائف النظام الأساسية الناتجة عن تعريف متطلبات النظام وإهمال الحالات الشاذة أو الفرعية.
  4. خطأ وقت التشغيل: أخطاء تظهر عند تشغيل البرنامج كالقسمة على صفر، أو حلقة غير منتهية.
  5. أخطاء صيانة: لا تمثل نمطا محددا من الأخطاء التي تحصل في مرحلة الصيانة.

اقرأ أيضًا: أمن المعلومات


تعد الخوارزمية من أساسيات البرمجة ولا يمكن أن تقوم البرمجة إلا بها، فهي عامود المواقع، والتطبيقات، والألعاب، كما أن الخوارزمية تفيد في التخطيط الصحيح والمتقن لكل منهم.