مشاهدة تغذيات RSS

مدونة روح سامية البرمجية

أخطاء في تصريف البرنامج ؟ الكثير من اﻷخطاء و ﻻ حل لها ؟ هنا الحل

تقييم هذا المقال
السلام عليكم و رحمة الله و بركاته

سأتحدث هنا عن اﻷخطاء في كتابة البرنامج

ﻻحظت كثيرا من اﻹخوة اﻷعزاء يصادفون أخطاء في برامجهم و ينتابهم الرعب من هذه اﻷخطاء
يتحيرون و ﻻ يدرون ما يفعلون ermm
يسألون و يسألون و مرة يُجَابون biggrin و عشر مرات يُتْركون

من شخص يقول syntax error dead إلى آخر يقول أنه متأكد من صحة برنامجه لكن المخرج خطأ disappointed

هل تعلم ؟
هل تعلم أن المصرف البرمجي يظهر لك مكان اﻷخطاء و يذكر لك الخطأ بالضبط

نعم ، ﻻ داعي ﻷن تسأل عن المشكلة ﻷن المصرف يخبرك ما هي المشكلة ، كل ما عليك هو حلها أو السؤال عن حلها و ليس السؤال عنها gooood

لنأخذ عددا من اﻷمثلة
أستخدم في أمثلتي بيئة Code::Blocks و المصرف GCC

لو افترضنا أن أحدا كتب البرنامج التالي :
كود:
#include <iostream> using namespace std; //main function int main () { int a=0 cout << a << endl; return 0; } //**main function
إذا قمنا بتصريف البرنامج فإن المصرف سيظهر لنا أخطاء ، سنجد أن واجهة كود بلوكس بهذا الشكل :

attachment

نجد في أسفل الواجهة وصفا بالخطئ و تجد أيضا أن كود بلوكس حدد السطر الذي فيه الخطأ بمربع أحمر على يسار السطر
في مثالنا سطر الخطئ هو السطر السابع لذلك ننظر في السطر السابع و ما حوله
الوصف يقول
كود:
/home... | 7 | error: expected ‘,’ or ‘;’ before ‘cout’ |
في العمود اﻷول يظهر لنا ملف الخطئ
في العمود الثاني يظهر لنا رقم سطر الخطئ و هو 7
في العمود الثالث يظهر لنا وصف بالخطئ

إذا قرأنا الوصف فهو :
كود:
error: expected ‘,’ or ‘;’ before ‘cout’ |
معنى العبارة السابقة خطأ: أتوقع ',' أو ';' قبل 'cout'

بكل بساطة يعني هذا أن المصرف يتوقع الرمز ',' أو ';' قبل أمر cout لكننا لم نكتبه
إذا ذهبنا إلى السطر الذي يسبق السطر السابع و هو السطر السادس
نجد المكتوب ما يلي :
كود:
int a=0
ﻻحظ أن اﻷمر لم ينته بالفاصلة المنقوطة ; و هو الخطأ الذي ارتكبه المبرمج
إذا عدلنا السطر و أنهيناه بفاصلة منقوطة بهذا الشكل :
كود:
int a=0;
نكون قد حللنا المشكلة smile

لم يكن صعبا أليس كذلك ؟

قد يكون هناك أكثر من خطئ في البرنامج و عندها يقوم المصرف بإعطاء قائمة باﻷخطاء و سطرها و وصفها في أسفل الواجهة كما شاهدنا
تحت قائمة اﻷخطاء مباشرة تجد أن المصرف كتب لنا عدد اﻷخطاء و اﻹنذارات في البرنامج
كود:
=== Build finished: 1 errors, 0 warnings ===
مكتوب أن هناك خطأ واحدا و صفرا من اﻹنذارات و هكذا نعرف عدد اﻷخطاء
سأترك الحديث عن اﻹنذارات لوقت ﻻحق

لنأخذ مثالا آخر عن اﻷخطاء
مثلا في البرنامج التالي :
كود:
#include <iostream> using namespace std; float average(float a,float b) { result=(a+b)/2; return result; } //main function int main () { float a=0; cin << a; cout << "average is " << average(a) << endl; return 0; } //**main function
في البرنامج السابق ظهرت لي اﻷخطاء التالية :
كود:
In function ‘float average(float, float)’: 5 | error: ‘result’ was not declared in this scope In function ‘int main()’: 11 | error: no match for ‘operator<<’ in ‘std::cin << a’ 4 | error: too few arguments to function ‘float average(float, float)’ 13 | error: at this point in file === Build finished: 4 errors, 0 warnings ===
أولا ذكر المصرف الدالة التي تحوي اﻷخطاء التي سيذكراها و هي الدالة average
بعدها ذكر الرسالة :
كود:
5 | error: ‘result’ was not declared in this scope
السطر الخامس كتبنا فيه :
كود:
result=(a+b)/2;
يقول الخطأ result was not declared أن أن result لم يتم اﻹعلان عنه
بكل بساطة فإن خطأنا هو أننا استخدمنا المتغير result قبل إعلانه
كان المفترض أن نكتب :
كود:
float result=(a+b)/2;
أي أن نعلن المتغير result قبل استخدامه wink

بعدها ذكر المصرف أن الدالة التي فيها اﻷخطاء اﻷخرى هي main أي الدالة الرئيسية
أول خطئ هو :
كود:
11 | error: no match for ‘operator<<’ in ‘std::cin << a’
أي أن استخدام العملية >> ليس موجودا مع cin
كل ما في اﻷمر أننا عكسنا اتجاه السهمين tongue
كان علينا أن نكتب :
كود:
cin >> a;
الخطآن الذان يليانه هما :
كود:
4 | error: too few arguments to function ‘float average(float, float)’ 13 | error: at this point in file
اﻷول في السطر الرابع و هو السطر الذي أعلنا فيه الدالة average
مكتوب أن عدد مدخلات الدالة أقل من المحدد
و في الخطئ الذي يليه كتب أن الخطأ في السطر الثالث عشر "في هذه النقطة"
أظهر المصرف أن خطأ استدعاء الدالة بمدخلات قليلة في سطر الدالة لتحديد الدالة التي تم استدعاءها
ثم ذكر السطر الذي تم اﻻستدعاء فيه و هو الثالث عشر
مع أن الخطأ كان واحدا لكن المصرف كتبه لنا على شكل خطأين لنعرف بالضبط ماهية الخطئ

كل ما فعلنا أننا استدعينا الدالة average التي تحسب متوسط عددين في السطر الثالث عشر و لكننا أعطيناها عددا واحدا
كان علينا أن نعطيها عددا آخر

مع كثرة اﻷخطاء التي ظهرت لنا و الكلام الطويل العريض إﻻ أن اﻷخطاء كانت بسيطة جدا و ليست معقدة

بعد هذا أتمنى أن تستطيعوا أن تفهموا أخطاء برامجكم و تصححوها wink
أو على اﻷقل أن تكونوا عارفين شيئا عنها و ﻻ تسألون "ما هو الخطأ ؟" بدون أن تعرفوا شيئا عنه

تحياتي
روح سامية
نماذج الصور المرفقة الصور المرفقة attachment 

أرسل "أخطاء في تصريف البرنامج ؟ الكثير من اﻷخطاء و ﻻ حل لها ؟ هنا الحل" إلى Facebook أرسل "أخطاء في تصريف البرنامج ؟ الكثير من اﻷخطاء و ﻻ حل لها ؟ هنا الحل" إلى del.icio.us أرسل "أخطاء في تصريف البرنامج ؟ الكثير من اﻷخطاء و ﻻ حل لها ؟ هنا الحل" إلى StumbleUpon أرسل "أخطاء في تصريف البرنامج ؟ الكثير من اﻷخطاء و ﻻ حل لها ؟ هنا الحل" إلى Google

تم تحديثة 11-02-2012 في 07:52 بواسطة الإسطوره جيرايا

الكلمات الدلالية (Tags): غير محدد تعديل الدالاّت
التصنيفات
برمجة , المدونة التقنية

التعليقات

  1. الصورة الرمزية الخاصة بـ axzablog
    مشكور أخ بسوم فعلا واجهتني هذه المشاكل عندما بدأت أتعلم لغة سي ++

    ولكن بعد قراءتي( تتوقع خطأ إملايءeek) لشاشة الأخطاء أسفل واجهة المترجم

    ومرة بعد مرة بدأت أفهم ماهية نوع الأخطاء؟ وفي أي سطر ؟ وأحيانا ربما تكون تحذيرات فقط وهكذا

    ولكن الأفضل دائماً أن تكون نتيجة الـ compile :
    0 أخطاء 0 تحذيرات

    وشكرا على مجهوداتك أخ بسوم مرة أخرى وأحببت أن أوضح تجربتي هنا فقط لا غير rolleyes
  2. avatar7145_4
    إقتباس الرسالة الأصلية كتبت بواسطة axzablog
    مشكور أخ بسوم فعلا واجهتني هذه المشاكل عندما بدأت أتعلم لغة سي ++

    ولكن بعد قراءتي( تتوقع خطأ إملايءeek) لشاشة الأخطاء أسفل واجهة المترجم

    ومرة بعد مرة بدأت أفهم ماهية نوع الأخطاء؟ وفي أي سطر ؟ وأحيانا ربما تكون تحذيرات فقط وهكذا

    ولكن الأفضل دائماً أن تكون نتيجة الـ compile :
    0 أخطاء 0 تحذيرات

    وشكرا على مجهوداتك أخ بسوم مرة أخرى وأحببت أن أوضح تجربتي هنا فقط لا غير rolleyes
    أهلا بكم أخي العزيز و كم أسعدني قراءة أول رد في مدونتي redface
    نحن بالخدمة و أتمنى قراءة ردود لبقية اﻷعضاء خصوصا من يواجه حتى اﻵن مشاكل معرفة اﻷخطاء

    نشكركم على ذكر تجربتكم و إن شاء الله يستفيد الجميع و شكرا مرة أخرى على أول رد في المدونة gooood

    أخيرا لم يكن هناك خطأ إملائي في كلمة "قراءتي" لكن كان هناك خطأ في كلمة "إملائ" حيث أنها "إملائي"

    تحياتي
    روح سامية
    تم تحديثة 09-06-2011 في 11:57 بواسطة روح سامية
  3. الصورة الرمزية الخاصة بـ ma_z_en
    كنت في بداية تعلمي انقر compile بحذر شديد خوفا من ظهور خطاء وبالتالي اجلس عليه عدة دقائق في وفي النهاية اكتشف ان الخطاء فاصله منقوطة لم اكتبها mad

    اما الان والحمد لله تجاوزت هذا واستطيع معرفة على الاقل السطر الذي يحتوي على الخطاء.
  4. الصورة الرمزية الخاصة بـ ma_z_en
    smilesmile
    تم تحديثة 13-02-2012 في 08:44 بواسطة ma_z_en
  5. avatar7145_4
    مرحبا بكم في المدونة
    الكل يمر بهذه التجربة لكن مع الوقت نكتشف أن الأخطاء أمر طبيعي في البرمجة و كل مبرمج يكتب برنامجا يحوي أخطاء ثم يصححها smile

    تحياتي

مكسات على ايفون  مكسات على اندرويد  Rss  Facebook  Twitter