إذا كنت قادمًا إلى البرمجة من خلفية رياضية ، فيمكن لهذه التفاصيل الدقيقة أن تلحظك بسهولة.

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

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

مقارنات في C ++

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

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

instagram viewer

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

على سبيل المثال ، في لغة البرمجة C ++ ، فإن "==يتحقق عامل التشغيل من تساوي قيمتين. إذا كانت القيم متساوية ، فإن النتيجة ترجع صحيحًا. خلاف ذلك ، ستكون النتيجة خاطئة.

لو (أ == ب)
{
يعودحقيقي;
}
آخر
{
يعودخطأ شنيع;
}

مثال على مشكلة المقارنة

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

على سبيل المثال ، على الرغم من أن التعبير 3 <15 <10 غير صحيح رياضيًا ، فإن C ++ تعتبر نتيجته صحيحة. يمكنك إثبات ذلك من خلال كتابة برنامج الاختبار البسيط التالي.

أولاً ، قم بإنشاء ملف باسم test.cpp. افتح هذا الملف باستخدام ملف محرر الكود المفضل وأضف الكود التالي إليه.

#يشمل
int أ = 15;

intرئيسي()
{
لو (3 10)
{
الأمراض المنقولة جنسيا::كوت << "فو" << الأمراض المنقولة جنسيا::إندل;
}
آخر
{
الأمراض المنقولة جنسيا::كوت << "بوو" << الأمراض المنقولة جنسيا::إندل;
}

يعود0;
}

يمكنك استخدام هذا الأمر لتجميع التعليمات البرمجية وتشغيلها:

اختبار g ++ test.cpp -o

لديك الآن برنامج يسمى امتحان. قم بتشغيل البرنامج وفحص مخرجاته.

تعتبر لغة C ++ 3 <15 <10 صحيحة عند تشغيل هذا البرنامج. لماذا قد تظهر النتيجة بهذه الطريقة ، على الرغم من أنها عبارة غير صحيحة رياضيا؟

أسباب مشكلة المقارنة في C ++

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

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

افحص مشكلة المقارنة مرة أخرى واقرأ العبارة من اليسار إلى اليمين ؛ سترى أن هناك مقارنتين مختلفتين. المقارنة الأولى بين الرقمين 3 و 15. هذه قيمة حقيقية لأن 3 أقل من 15.

المقارنة الثانية بين تلك النتيجة والرقم 10. نظرًا لأنه يحتاج إلى إجراء مقارنة رقمية ، فإن C ++ تحول بصمت القيمة الحقيقية المنطقية إلى 1. 1 أقل من 10 ، وبالتالي فإن النتيجة الإجمالية صحيحة.

في الختام ، على الرغم من أنها تبدو مغالطة رياضية ، إلا أن هذه العبارة صحيحة بالنسبة لـ C ++ وأجهزة الكمبيوتر.

كيفية حل مشاكل المقارنة في C ++

يستخدم C ++ ، إلى جانب معظم لغات البرمجة الأخرى ، صيغة مختلفة للمقارنة المنطقية عن الرياضيات التقليدية. يعني التعبير الرياضي 3 و أ أقل من 15. " ومع ذلك ، كما رأيت ، يفسر C ++ هذا التعبير بشكل مختلف.

للتمثيل وفي C ++ ، استخدم عامل التشغيل &&. يمكنك بعد ذلك تجميع التعبيرات المنطقية معًا وبناء منطق باستخدام عوامل مثل && لتمثيل و ، || لتمثيل أو ، و ! لتمثيل لا. لغات مثل تستخدم Java نفس العوامل المنطقية.

باستخدام عامل التشغيل المنطقي الصحيح ، يمكنك إصلاح الخطأ في المثال السابق:

#يشمل
int أ = 15;

intرئيسي()
{
لو (3 10)
{
الأمراض المنقولة جنسيا::كوت << "فو" << الأمراض المنقولة جنسيا::إندل;
}
آخر
{
الأمراض المنقولة جنسيا::كوت << "بوو" << الأمراض المنقولة جنسيا::إندل;
}

يعود0;
}

سيختبر هذا الرمز الآن ما إذا كانت القيمة a أكبر من 3 وما إذا كانت القيمة a أقل من 10. قم بتجميع البرنامج وتشغيله ولاحظ النتيجة.

المثال السابق طبع "foo" ، لكن البرنامج الآن يطبع "boo" على النحو المنشود. القيمة المنطقية للجانب الأيسر من المقارنة (3 صح وخطأ دائما خطأ شنيع، يتم تقييم التعبير العام إلى false ، لذلك فشل الشرط و آخر يدير كتلة.

حاول تبديل AND (&&) عامل التشغيل إلى OR (||) ومراقبة النتيجة المختلفة.

أهمية الشيكات المنطقية في C ++

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

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