إكتشف الأخطاء ... وإحفظ عقلك مقالة رقم (2)

الناقل : elmasry | الكاتب الأصلى : organic | المصدر : www.arabteam2000-forum.com

يقول والاس وانج أنه لكي يصبح البحث عن الأخطاء أسهل فقد قسم علماء الكمبيوتر إلى ثلاثة فئات :_

1- أخطاء هجائية Syntax Errors
2- أخطاء وقت التشغيل Run-Time Errors
3- اخطاء منطقية Logic Errors

الأخطاء الهجائية

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

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

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

أخطاء وقت التشغيل

تقع أخطاء وقت التشغيل Run-Time Errors عندما يصادف فيجوال بيسك بعض البيانات التي لا يستطيع التعامل معها ، وفي الغالب تكون أخطاء وقت التشغيل أصعب من الأخطاء الهجائية ، فقد يكون برنامجك مليئاً بأخطاء وقت التشغيل ولكنك لن تعرف ذلك إلا عندما تبدأ في تشغيل البرنامج فعلاً .

ولكي نعطي مثالاً من الحياة العملية على أخطاء وقت التشغيل ، حاول أن تركب سيارتك وإنطلق إلى أحد المطاعم التي تتيح لك الطلب من السيارة Drive-Thru وعندما تصل إلى النافذة ويسألك العامل عن الوجبة التي تريدها ، أخبره أنك تريد أن تشتري كتاباً !! ولأن العامل مبرمج على التعامل مع طلبات معينة فإن لن يستطيع التعامل مع طلبك وفي الغالب سيعاني هذا العامل من أخطاء وقت التشغيل :D !!

وإذا أردت مثالاً من أحد البرامج في فيجوال بيسك على أخطاء وقت التشغيل إكتب الأمر التالي :
TaxRate = TaxOwed /YearlyIncom
سيعمل هذا الأمر بصورة صحيحة إلا إذا أصبحت قيمة المتغيرYearlyIncome = صفراً ، ولأن القسمة على صفر مستحيلة فإن البرنامج سيتوقف عن العمل .

ولأن عدد الأشياء التي يمكن أن تسير على نحو خاطىء غير محدود ، فإنه يمكن أن تعرف الآن لماذا توجد أخطاء في معظم البرامج الكبيرة ، ويتساءل والاس وانج بظرفه المعهود قائلاً (( أليس هذا شيء يريح البال خاصة إذا تذكرت أنه ينطبق على البرامج التي تتحكم في سير الطائرات وأنت تركب الطائرة فوق المحيط ! :D ))

الأخطاء المنطقية

إن أصعب أنواع الأخطاء هو الأخطاء المنطقية Logic Errors ، وتقع الأخطاء المنطقية عندما لا يعمل البرنامج بالصورة الصحيحة لأنك أعطيت البرنامج أوامر غير صحيحة أو عندما تعطيه بعض الأوامر التي لا تعمل بصورة صحيحة في السياق الحالي ، ويستطرد وانج قائلاً صدق أو لا تصدق إن إضافة بعض الأوامر غير الصحيحة للبرنامج مسألة سهلة .


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

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

في كلتا الحالتين قام الأطفال بإتباع التعليمات التي أعطيتها لهم ، ولكن ليس بالشكل الذي تتوقعه أو تريده ، والسبب في ذلك هو أن تعليماتك لم تكن محددة بالضبط ، فإذا وجد الأطفال أية ( ثغرة ) في التعليمات التي تعطيها إياهم فإنهم سيهربون من هذه الثغرة ليتخلصوا من المهام التي تكلفهم بها ، وفي الواقع لا يختلف الحاسوب كثيراً عن الأطفال . :lol:

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

وإذا كانت البرنامج الذي تكتبه كبيراً ، فإن ذلك قد يعني أن تقوم بفحصه سطراً سطراً حتى تصل إلى الأمر أو الأوامر التي تسبب المشكلة (( ألم اقل لكم أن البرمجة عمل ظريف ؟! )) :lol: .