المجلس اليمني ... يمن واحد وآراء متعددة
::  قوانين المنتدى  |   طلب رقم التنشيط   |   تنشيط العضوية  |  استعادة كلمة المرور
العودة   المجلس اليمني :: العلمية والتقنية :: الكمبيـوتر والانتـرنت :: المواقع ولغات البرمجة والشبكات
|
 
أدوات الموضوع
قديم 03-08-2003, 05:23 PM   مشاركة رقم : 1
عضو
 
لا توجد صورة

 
تاريخ التسجيل: 11-07-2003
المشاركات: 34

افتراضي اكتشاف الاخطاء ( للمبتدئين )

[ALIGN=JUSTIFY]مما لا شكل فيه، فان احد اسباب انتشار الشعرات البيضاء في شعور المبرمجين هو الاخطاء البرمجية. فكم من مبرمج كسر شاشة جهازه بسبب كثرة الاخطاء غير المتداركة في برنامجه، وكم من مبرمج اوقف تكملة مشاريعه بسبب عدم معرفة مصدر الخطأ. كتابة برنامج دون اخطاء شئ يتحقق في الخيال فقط! لكن قد تجد اساليب في هذه المقالة لتخفيف الاخطاء والمشاكل البرمجية في برنامجك.

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

اخطاء وقت التصميم Design Time Errors
وقد تسمى ايضا بالاخطاء النحوية Syntax Errors وهي اسهل انواع الاخطاء اكتشافا واصلاحا. وقت حدوث هذه الاخطاء يكون في مرحلة التصميم او الترجمة للبرنامج. سببها الرئيسي في طريقة كتابة العبارات البرمجية الخاطئة. فمثلا قد تكتب اسم دالة ليست موجودة، او تنشئ حلقة For بدون اقفالها باستخدام Next.
توفر لك بيئة التطوير المتكاملة لـ Visual Basic اداة في قمة الروعة هدفها قنص هذه الاخطاء تلقائيا بمجرد الوقوع فيها وذلك بعد الضغط على المفتاح ENTER. مثلا، قم بكتابة X == 4 واضغط مفتاح الادخال ستلاحظ ظهور رسالة توضح لك الخطأ وقد قلب لون السطر بالاحمر. تعرف هذه الميزة بالتدقيق النحوي التلقائي Auto Syntax Check والتي تستطيع الغاء عن طريق الاختيار Auto Syntax Check الموجود في خانة التبويب Editor في نافذة الخيارات Options. لا اعتقد انك ستلغيها يوما من الايام اليس كذلك؟!

اخطاء وقت التنفيذ Run Time Errors
وقت ظهور هذه الاخطاء مختلف. فلن تظهر الرسالة المزعجة وقت كتابة الكود وانما في وقت التنفيذ (أي بعد الضغط على F5). عندما يصل المفسر عند سطرصحيح نحويا لكنه خاطئ منطقيا ستظهر رسالة مفيدة بعنوان Run Time Error ويظهر تحديد لمكان السطر الذي وقع فيه الخطأ. مثلا اكتب هذا الكود:



Code:
--------------------------------------------------------------------------------


Dim X As Byte
X = 256



--------------------------------------------------------------------------------



من الواضح ان الصيغة النحوية لهذا الكود صحيحة لكن منطقيا خطأ! جرب تنفيذ البرنامج وستلاحظ ظهور رسالة خطأ OverFlow بسبب ان القيمة القصوى التي يحملها أي متغير من نوع Byte هي 255. طبعا اخطاء وقت التنفيذ كثيرة جدا جدا، فانت عندما تصمم البرنامج تتوقع ان كل الاحتمالات الخارجية كما هي في حالة تصميم البرنامج. مثلا لو وجد في احد سطور برنامج امر يقوم بمسح ملف معين وكتبت هذا الكود:



Code:
--------------------------------------------------------------------------------


Kill “FileName.EXT”



--------------------------------------------------------------------------------



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



Code:
--------------------------------------------------------------------------------


If Dir$(“FileName.EXT”) Then Kill “FileName.EXT”



--------------------------------------------------------------------------------



يبدو ان ذكائك خارق جدا يا قارئ هذه السطور لكن مهلا كاتب هذه السطور لديه شئ اخر ليخبرك. ماذا لو كان الملف موجود لكن خاصية ReadOnly مدعومة به أي انه غير قابل للحذف؟؟ ارأيت رسالة الخطأ ستظهر من جديد. اذا ستستخدم ذكائك الخارق وتتأكد من وجود الملف ومن ثم من عدم وجود خاصية ReadOnly:



Code:
--------------------------------------------------------------------------------


If Dir$(“FileName.EXT”) Then
If Not (GetAttr("FileName.EXT”) And vbReadOnly) Then
Kill “FileName.EXT”
End If
End If



--------------------------------------------------------------------------------



حسنا يا قارئي الفاضل. لك مني فائق التقدير والاحترام على محاولتك الرائعة لتجنب الخطأ لكن مع ذلك فهناك احتمال اخر لوقوع الخطأ!!! افترض ان الملف FileName.EXT يتم استخدامه من قبل برنامج اخر Process وكانت عليه خاصية الاقفال (أي مسموح للبرنامج الذي يستخدمه فقط) فانك لن تستطيع فتح الملف وستظهر رسالة الخطأ التي اخبرتك بها واكون قد غلبتك في هذا التحدي.
القضية ليست من يغلب من، فكلنا مبرمجين ننسى كثيرا. لكن لابد من أي مبرمج وضع جميع وكافة الاحتمالات الممكنة لتفادي وتجنب الاخطاء كما سنرى لاحقا.

الشوائب Bugs
قد يكون الكود سليم من ناحية نحوية ولا توجد به أي اخطاء في وقت التنفيذ لكن به شوائب. لا يوجد برنامج الا وبه شوائب. الشوائب هي اخطاء في سلوك تنفيذ البرنامج لكنها لا تسبب في ايقافه، وهي صعبة الايجاد والاكتشاف. لذلك، تجد غالبا في البرامج التجارية الكبيرة صدور نسخ تجريبية Beta توزع على اشخاص وشركات معينة الهدف منها تجربة البرنامج والتحقق من واكتشاف الشوائب الموجودة فيه. من اكبر الاخطاء الذي يقع فيها المبرمج هي محاولة اكتشاف الشوائب بنفسه! والصحيح لن تستطيع اكتشاف الشوائب الا عن طريق غيرك. ففي حالة تجربة برامجك الشخصية فانك اكثر من يعرف طريقة التعامل معها، لكن في حالة وجود نسخة من البرنامج عند شخص اخر فالوضع يختلف، وتبدأ الشوائب بالظهور لديه.
Visual Basic به شوائب!!! هناك الكثير من الشوائب التي تكتشف شهريا وتصدر شركة Microsoft تقارير عنها تجدها بشكل دوري في مكتبة MSDN، بعضها تم اصلاحه وبعض لا. المقصد من هذا الكلام، انه مهما كان مستواك في البرمجة لابد من وجود شوائب في برنامجك.
يوجد الكثير من الكتب التي تناقش مسألة الشوائب البرمجية وكيفية تفاديها اقصد الاقلال منها. احاول في نهاية هذه المقالة اعطاءك تلميحات شخصية قد تفيدك لتجنب الشوائب.


2) تفادي الاخطاء

الكائن Err
عودا الى موضوع اخطاء وقت التشغيل وبالتحديد في مثال الملف FileName.EXT، بدلا من كتابة عشرات الاسطر للتأكد من قابلية حذف الملف، استخدم كائن الخطأ Err. قبل تطبيق هذا الكائن لا بد من معرفة أي كل خطأ من اخطاء وقت التشغيل له رقم خاص فيه ووصف. وعند حدوث الخطأ يتم وضع هذه البيانات (الخاصة بالخطأ) في الكائن Err. عند رغبتك في الاستمرار في عملية تنفيذ البرنامج حتى عند وقوع الخطأ لابد من كتابة التعليمة On Error Resume Next عند بداية كل اجراء حتى يستمر في تنفيذ سطور البرنامج وهي افضل من On Error Goto X. راقب هذا المثال:



Code:
--------------------------------------------------------------------------------


On Error Resume Next

Kill “FileName.EXT”
If Err Then
MsgBox Err.De******ion
Err.Clear
End If



--------------------------------------------------------------------------------



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

طريقة مفيدة لتجنب الشوائب
تجنب الشوائب يحتاج الى كتب لا نهاية لها! الا انني ساعرض لك طريقة معروفة لمحاولة معرفة اسباب حدوث الشوائب واصلاحها وهي التنفيذ خطوة خطوة! المقصد تنفيذ سطر تلو الاخر عن طريق الضغط على مفتاح F8 للانتقال الى تنفيذ السطر التالي او Shift + F8 لتنفيذ اجراء كامل. من المهم ان اذكر هنا، ان بعض الاحداث كـ KeyUp و غيرها لن يتم تنفيذها بالشكل الصحيح. بالاضافة الى ذلك، اجعل قيمة الخاصية Interval لاداة المؤقت Timer مساوية للصفر حتى لا تزعك كثرة الانتقال الى كود الاداة. ايضا الق نظرة الى قائمة Debug ستجد فيها الكثير من الخدمات الفعالة كمراقبة قيم المتغيرات وتحديد نقاط الايقاف المؤقت للبرنامج. [/ALIGN]

  رد مع اقتباس
قديم 03-08-2003, 05:48 PM   مشاركة رقم : 2
قلم ماسي
 
لا توجد صورة

 
تاريخ التسجيل: 11-05-2003
المشاركات: 14,108

افتراضي

رائع::أخي الأنيق..

وتحياتي لك..

  رد مع اقتباس
قديم 08-08-2003, 01:04 AM   مشاركة رقم : 3
عضو
 
لا توجد صورة

 
تاريخ التسجيل: 08-08-2003
المشاركات: 46

افتراضي

اقتباس كاتب الرسالة الأصلية : المدمـر
رائع::أخي الأنيق..

وتحياتي لك..


أخوك الوافي

  رد مع اقتباس
قديم 09-08-2003, 10:00 PM   مشاركة رقم : 4
عضو
 
لا توجد صورة

 
تاريخ التسجيل: 09-08-2003
المشاركات: 4

افتراضي سلام رائع يا اخي

:)شيء رائع يااخي :)
تحياتي لكم:)

  رد مع اقتباس
قديم 24-08-2003, 05:45 PM   مشاركة رقم : 5
عضو
 
لا توجد صورة

 
تاريخ التسجيل: 19-08-2003
المشاركات: 108

افتراضي

اشكرك اخي الأنيق هذي المشاكل والله صحيح طلعت الشيب في راسي


واتمنى اكرامنا بمواضيع اخرى

  رد مع اقتباس
قديم 24-08-2003, 06:21 PM   مشاركة رقم : 6
مشرف سابق

الصورة الرمزية العمراوي

 
تاريخ التسجيل: 24-11-2002
المشاركات: 7,559

افتراضي

حلو جدا ورائع للغاية .,.,.,.,

أمثال هذه المواضيع هي التي تفيد بالفعل .,.,.,.,

مشكور أخي على الموضوع ,’,’,’,’

  رد مع اقتباس
قديم 24-08-2003, 07:26 PM   مشاركة رقم : 7
قلم فضي
 
لا توجد صورة

 
تاريخ التسجيل: 21-07-2003
المشاركات: 2,622

افتراضي

ممتاز
المزيد من مواضيعك

  رد مع اقتباس
قديم 28-08-2003, 07:54 PM   مشاركة رقم : 8
قلم فضي
 
لا توجد صورة

 
تاريخ التسجيل: 05-06-2003
المشاركات: 4,952

افتراضي

نص مقتبس من رسالة : ابن الاصول
اقتباس ممتاز
المزيد من مواضيعك


  رد مع اقتباس
قديم 28-08-2003, 11:51 PM   مشاركة رقم : 9
مشرف سابق

الصورة الرمزية عاشق الابتسامات

 
تاريخ التسجيل: 28-03-2003
المشاركات: 5,638

افتراضي

رائع جدا .. اخي الانيق ..

  رد مع اقتباس
إضافة رد

أدوات الموضوع

الانتقال السريع :::

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.