...

/

المقارنة والمشغلات المنطقية

المقارنة والمشغلات المنطقية

تعلم كيفية مقارنة القيم.

سنغطي ما يلي...

المقارنة والمشغلات المنطقية

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

Press + to interact
canvasAnimation-image
1 / 3

هذا يُزودنا بالمهارات اللازمة لحل العديد من المشكلات الشيقة، ولكن لا تزال هناك بعض المشكلات التي لا تستطيع البرامج المتسلسلة حلها. في بعض الأحيان، قد يتطلب الحل تنفيذًا غير متتالي أيضًا:

Press + to interact
canvasAnimation-image
1 / 3

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

متطلبات المشروع

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

Press + to interact
The project requirements that require a comparison
The project requirements that require a comparison

تخيل أن أليكس، طالبة في المرحلة الابتدائية، تستخدم تطبيقنا وتنجح في الإجابة على ثلاثة أسئلة بشكل صحيح. وعندما تستخدم بيتي، طالبة أخرى، تطبيقنا، تجيب على جميع الأسئلة الخمسة بشكل صحيح. لن نكتب برنامجين مختلفين - أحدهما لأليكس والآخر لبيتي. ولكن يجب أن يحسب نفس الكود أن درجة أليكس هي 3 ودرجة بيتي هي 5.

بالطبع، لا يستطيع تطبيقنا معرفة النتيجة النهائية لمستخدمه مسبقًا. سيعرفها برنامجنا فقط أثناء تنفيذ أليكس وبيتي للكود.

ملحوظة: كيف يعرف الكود إذا كان المستخدم قد أدخل الإجابة الصحيحة للسؤال؟

حتى الآن، رأينا كيفية حساب الإجابة المتوقعة الصحيحة، في حالة وجود سؤال؛ على سبيل المثال، إذا كان السؤال4 * 7 :

import java.util.Scanner;

public class MyJavaApp {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("What is 4 * 7? ");
        int userAnswer = scan.nextInt();
        int correctAnswer = 4 * 7;
        
    }
}
Computing the correct answer

إذن لدينا رقمان في متغيرين بأسماء مناسبة. كيف نعرف إذاuserAnswer هل هو صحيح؟ لأنه إذا تأكدنا من صحته، فعلينا تحديث درجة المستخدم بمقدار ١. السطر ٩ يدعوك؛ ما الذي يمكن فعله هناك مباشرةً بعد أنcorrectAnswer وuserAnswer ؟

حسنًا، نعلم ما يدور في ذهنك. أنت تعتقد أن الأمر بسيط، يكفي مقارنة الرقمين لمعرفة إن كانا متساويين أم لا!

حسنًا، لدينا رمز للمساواة، نعرفه منذ الصغر، لكننا نستخدمه في Java لتعيين قيمة متغير. حتى أننا استخدمناه في السطرين 7 و8 . ولكن لم لا نجرّب استخدامه لمقارنة رقمين أيضًا لنتأكد من تساويهما؟

import java.util.Scanner;

public class MyJavaApp {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("What is 4 * 7? ");
        int userAnswer = scan.nextInt();
        int correctAnswer = 4 * 7;
        
        userAnswer = correctAnswer;
        
    }
}
Trying to compare two values

هل لم ينجح الأمر كما هو مخطط له، أم أنه نجح؟ كيف لنا أن نعرف؟ علينا أن نكون قادرين على اختبار فرضياتنا. ماذا لو أضفناprint العبارة قبل وبعد السطر العاشر ؟ بهذه الطريقة، قد نعرف ماuserAnswer = correctAnswer يفعل.

import java.util.Scanner;

public class MyJavaApp {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("What is 4 * 7? ");
        int userAnswer = scan.nextInt();
        int correctAnswer = 4 * 7;
        System.out.println("User's answer: " + userAnswer + " Correct answer: " + correctAnswer);
        userAnswer = correctAnswer;
        System.out.println("User's answer: " + userAnswer + " Correct answer: " + correctAnswer);
    }
}
Comparing answer

أدخل "28" ويبدو أنه يعمل! لكن أعد تشغيله. هذه المرة، أعطِ إجابة خاطئة، لنقل "20"، وانظر ماذا سيحدث! من الواضح أن السطر العاشر يُعطي قيمة فيcorrectAnswer لuserAnswer . ولكننا أردنا أن نستخدم= للتحقق من أن الرقمين متساويان أم لا.

المساواة وليس التعيين

منذ واحد= إذا تم استخدام Java لأغراض التعيين، فما هو الخيار الأمثل التالي لمعامل المساواة؟ ماذا عن معامل يساوي مزدوجًا؟== ؟

import java.util.Scanner;

public class MyJavaApp {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("What is 4 * 7? ");
        int userAnswer = scan.nextInt();
        int correctAnswer = 4 * 7;
        System.out.println("User's answer: " + userAnswer + " Correct answer: " + correctAnswer);
        userAnswer == correctAnswer;
        System.out.println("User's answer: " + userAnswer + " Correct answer: " + correctAnswer);    
    }
}
The correct way of comparing is through the == operator

ومع ذلك، نحتاج إلى تغليف الكود الموجود في السطر 10 داخلprint على أمل معرفة ما== لقد كان حتى.

import java.util.Scanner;

public class MyJavaApp {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("What is 4 * 7? ");
        int userAnswer = scan.nextInt();
        int correctAnswer = 4 * 7;
        System.out.println("User's answer: " + userAnswer + " Correct answer: " + correctAnswer);
        System.out.println(userAnswer == correctAnswer);
        System.out.println("User's answer: " + userAnswer + " Correct answer: " + correctAnswer);    
    }
}
The output of comparison

قم بتشغيله لمدة "28" ثم "20". عند التنفيذ، يتم طباعة السطر 10True أولا، ثمFalse هذا هو عامل المقارنة الذي أردناه!

يستخدم المبرمجون في كثير من الأحيانprint لتشخيص برامجهم.

كلمة أخيرة عن==

من الناحية المفاهيمية، فكر في== كطريقة مدمجة أخرى تأخذ رقمين وتعيدهماTrue أوFalse .

مشغلات المقارنة الأخرى

لقد رأينا== في تجلياته الكاملة. هناك عوامل مقارنة أخرى أيضًا:

Comparison Operators

Operators

Description

Example Usage

==

The two numbers are exactly equal.

2 == 2 would return True

!=

The two numbers are not equal.

2 != 2 would return False

>

The first number is greater than the second.

2 > 2 would return False

>=

The first number is greater than or equal to the second.

2 >= 2 would return True

<

The first number is less than the second.

2 < 2 would return False

<=

The first number is less than or equal to the second.

2 <= 2 would return True

كيف نقوم بتحديث درجة المستخدم؟

الآن، نحن نعرف كيفية المقارنةuserAnswer لcorrectAnswer للمساواة. نعرف أيضًا كيفية تحديث النتيجة بمقدار 1 (score = score + 1 مع ذلك، يتطلب مشروع عميلنا من برمجتنا تحديث النتيجة فقط إذا أجاب المستخدم على السؤال بشكل صحيح، وليس في غير ذلك. كيف نفعل ذلك؟ لننتقل إلى الدرس التالي.