الإحتمالات و اهميتها في البرمجة :
بسم الله الرحمن الرحيم
موضوع هام سوف نتحدث عنه في هذا الدرس و أظن انه لم يتطرق له أحد من قبل و لكن ما دعاني لكتابة هذا الموضوع
هو نقاش جرى بيني و بين أحد الأشخاص هذا اليوم على المسنجر المهم سوف أبدأ في الموضوع دون مقدمات
علم الإحتمالات في البرمجة :
هو التفكير في كل الحالات التي سيكون البرنامج أمامها عند تنفيذ أمر معيّن و معالجة كل حالة بشكل منسق مع الحالات الاخرى لضمان
عدم حصول أخطاء أبداً .
أمثلة من الحياة العملية :
المثال الأول :
-----------------------
ليكن لدينا صندوق يحتوي على 3 كرات حمراء و كرة بيضاء
آ - لنقم بتجربة سحب كرة من هذا الصندوق ((دون النظر طبعاً))
في هذه الحالة ما هي الإحتمالات الممكنة ؟؟؟؟؟
الجواب :
هناك إحتمالين لا ثالث لهما
1 - ظهور كرة حمراء
2 - ظهور كرة بيضاء
ب - نقوم بسحب كرتين على التتالي ((دون إعادة الكرة المسحوبة للصندوق))
ما هي الإحتمالات الممكنة ؟
الجواب :
هناك ثلاث إحتمالات لا رابع لها :
1 - الأولى حمراء و الثانية بيضاء
2 - الأولى بيضاء و الثانية حمراء
3 - الأولى حمراء و الثانية حمراء
ج - نقوم بسحب كرة ثم نعيدها للصندوق و نقوم بسحب كرة أخرى ما هي الإحتمالات الممكنة ؟
الجواب :
أربع إحتمالات لا خامس لها
1 - الكرة الأولى حمراء و الثانية حمراء
2 - الكرة الأولى بيضاء و الثانية حمراء
3 - الكرة الأولى حمراء و الثانية بيضاء
4 - الكرة الأولى بيضاء و الثانية بيضاء
-------------------------------------------------------------------
من المؤكد أن الأمثلة السابقة قد وضحت مفهوم الإحتمالات تماماً .... و من الأمثلة السابقة أكيد فهمت لماذا كنت أقول
((إحتمالين لا ثالث لهما - ثلاثة لا رابع لها - أربعة لا خامس لها ........ ))
يعني بديهياً : نريد أن تعالج كل الحالات الممكنة دون ترك أي حالة .
و الله الكلام لحد الآن كثير حلو ...... ما فائدة هذا الكلام في البرمجة ؟؟
الكلام السابق له كل الفائدة في البرمجة .. و سوف أعطيك مثال صاروخي تفهم العملية .
مثال برمجي صاروخي :
قمنا بإنشاء برنامج يدخل المستخدم فيه رقمين صحيحين A , B و يكون الرقم الثالث C هو عبارة عن A+B ما هي حالات العدد C الممكنة ؟
1 - أن يكون C زوجي
2 - أن يكون C فردي
س : متى يكون C زوجي ؟
ج :
1 - إذا كان A زوجي و كان B زوجي
2 - إذا كان A فردي و كان B فردي
قاعدة ذهبية لكل مبرمج :
إن مستخدم برنامجك من أكثر الناس الذين لا يجيدون التعامل مع الحاسوب و توقع منه كل شيء . ((إفرض أن المستخدم غبي جداً))
لذلك عليك دراسة كل الإحتمالات الممكنة التي يقوم بها مستخدم برنامجك و وضع الاوامر المناسبة لكل إحتمال لتدارك الوضع و عدم إنهيار البرنامج ...
مختار ؟ بلشنا نفوت بالحيط !! شلون يعني المستخدم غبي جداً ؟؟؟؟؟؟؟؟
مثال خنفشاري عن تجربة شخصية :
في بداياتي البرمجة قمت بتصميم برنامج دليل هاتف بسيط و كان فيه أمر بحث عن رقم هاتف معيّن
الأخ المستخدم جزاه الله خيراً بدل أن يضع رقماً في خانة رقم الهاتف وضع حروف و رموز أخرى ....
طبعاً قد لا يحدث مشكلة فور إضافة البيانات
لكن في عمليات البحث و عمليات الفرز ..... و .... و ..... و ...... ستكون الأخطاء كبيرة و سيكون هناك كارثة
لم أنتبه لهذه النقطة .....لكن عندما بدأت أفهم الإحتمالات
قُلت إفرض إن المستخدم وضع حروف في خانة الأرقام ؟
فوراً قمت بعمل تعليمة للتحقق من عدم وجود إلا الأرقام في تلك الخانة و بهذا أكون ضمنت برنامجي من خباثة المستخدم أو جهله
خباثة ؟ نعم قد يكون هناك شخص له مصلحة في إفشال برنامجك أمام الآخرين لكي يعتبروك مبرمج فاشل
الآن انا فعلاً فتت بالحيط و لم يعد بإمكاني المتابعة
تفضلوا هذا الدرس ولا تواخذوني .....
يتبع في حلقات قادمة .
لا تنسونا من دعوة صالحة في ظهر الغيب ...
أخوكم : مختار سيد صالح

