...

/

العمليات الحسابية وأنواع البيانات

العمليات الحسابية وأنواع البيانات

تعرف على العمليات الحسابية وأنواع البيانات في Java.

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

العودة إلى مشروعنا

حتى الآن، قطعنا شوطًا كبيرًا في تعلم البرمجة اللازمة لبعض متطلبات المشروع. لنلقِ نظرةً أخرى على متطلبات عميلنا.

Press + to interact
Project requirements that require printing on the screen
Project requirements that require printing on the screen

وفقًا للمتطلبات 4 و6، يجب أن يكون تطبيقنا قادرًا على:

  • إجراء عمليات حسابية كالجمع والطرح والضرب والقسمة.

  • احسب الإجابة الفعلية لكل سؤال.

حسنًا، دعونا نبدأ مباشرة!

جمع رقمين

يجب أن يكون هذا سهلاً: إدخال رقمين وخصصهما لـ num1 و num2 ، ثم اطبع num1 + num2 . شغّل البرنامج أدناه وتحقق مما إذا كنا نحصل على إخراج المتوقع المدخلات 8 و 2. ما هو إخراج المتوقع من 8 + 2؟ لندخل "8" كرقم أول و"2" كرقم ثاني. شغّل البرنامج أدناه وتحقق مما إذا كنا نحصل على إخراج المتوقعة.

import java.util.Scanner;

public class MyJavaApp {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //Taking two numbers as input and storing inside two variables respectively
        System.out.print("First number: ");
        String num1 = scan.nextLine();
        System.out.print("Second number: ");
        String num2 = scan.nextLine();
        System.out.println("The answer to " + num1 + " + " + num2 + " is " + num1 + num2);
        
 }
}
Program to add two numbers

لكن انتظر لحظة! نحصل على إخراج "٨٢" بدلًا من "١٠". ما رأيك؟

أنواع البيانات وتحويلها

في الكود الخاص بنا:

  1. عند استخدام scan.nextLine() ، فإنها تأخذ ما نكتبه وتُرجع لنا سلسلة نصية. لذا، تُعامل الأرقام المخزنة في num1 و num2 كنصوص وليست أرقامًا رياضية.

في Java، String نوع بيانات أساسي يُستخدم لتمثيل النصوص أو تسلسلات الأحرف (سلسلة نصية). تُستخدم لتخزين ومعالجة الكلمات والجمل أو أي معلومات نصية في برنامج. تُحاط السلاسل النصية بعلامتي اقتباس مزدوجتين " " .

  1. عندما نحاول إضافة num1 و num2 باستخدام عامل + ، فإنه يتسلسل هذا هو إجراء ضم أو ربط السلاسل معًا لإنشاء سلسلة أطول. السلسلتين بدلًا من جمع الأرقام. لهذا السبب حصلنا على "82" بدلًا من "10".

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

العدد الصحيح هو عدد صحيح، سواء كان موجبًا أو سالبًا، دون أي أجزاء عشرية أو كسرية.

إذا كانت هناك طريقة لتحويل سلاسل إدخال إلى أعداد صحيحة أثناء البحث عن إدخال، فربما يمكننا جمع الرقمين بسهولة باستخدام + . وهناك طريقة واحدة يمكننا استدعاؤها: scan.nextInt() .

نوع البيانات int

عندما نعلم أن متغير سيخزن أعدادًا صحيحة بدلًا من سلسلة نصية، علينا تعريفه على هذا النحو. يحدث أمران في السطر 8. أولًا، نُخبر Java أن num1 عدد صحيح، ونُهيئه إدخال الواردة من لوحة المفاتيح، ولكن بدلًا من استدعاء nextLine() ، نستدعي scan.nextInt() . اقرأ الكود بعناية، سطرًا بسطر. ستجده مفهومًا.

import java.util.Scanner;

public class MyJavaApp {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //Taking two numbers as input and storing inside two variables respectively
        System.out.print("First number: ");
        int num1 = scan.nextInt();
        System.out.print("Second number: ");
        int num2 = scan.nextInt();
        int result = num1 + num2;
        System.out.println("The answer to " + num1 + " + " + num2 + " is " + result);
    }
}
Program to add two numbers

يؤدي تشغيل الكود أعلاه إلى إعطاءنا "10" - وهي النتيجة التي كنا نتوقعها.

من الأفضل دائمًا تحويل إدخال من لوحة المفاتيح إلى int في حالة الأرقام.

إضافة العمليات الحسابية

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

العمليات الحسابية في Java

في Java، المعاملات الحسابية هي رموز خاصة تُجري عمليات على المتغيرات والقيم، تمامًا كما هو الحال عند حل المعادلات الحسابية البسيطة. بالنسبة للأعداد، رأينا كيف يجمع عامل + عددين. المعاملات الحسابية الأخرى المتاحة في Java هي - للطرح، * للضرب، و / للقسمة.

دعونا نلقي نظرة على مثال لكل مشغل قيد الاستخدام.

Press + to interact
Java
public class MyJavaApp {
public static void main(String[] args) {
int num1 = 7;
int num2 = 3;
// addition
System.out.println("7 + 3 is " + (num1 + num2));
// subtraction
System.out.println("7 - 3 is " + (num1 - num2));
// multiplication
System.out.println("7 * 3 is " + (num1 * num2));
// division
System.out.println("7 / 3 is " + (num1 / num2));
}
}

بعد تشغيل البرنامج السابق، ربما لاحظت أننا لا نحصل على إخراج الأخير قيمة كسرية، مع أن 7 / 3 ليس عددًا صحيحًا. هذا لأنه في Java ، عند قسمة عددين صحيحين باستخدام عامل / ، تكون النتيجة أيضًا عددًا صحيحًا - في هذه الحالة، 2. ولكن في الواقع، الإجابة أقرب إلى 2.333، وهو ليس عددًا صحيحًا.

كما هو الحال مع نوع بيانات int للأعداد الصحيحة، لدينا أيضًا نوع بيانات أساسي للأعداد ذات القيم العشرية (مثل 2.333) يُعرف باسم double . لذلك، عندما نعلم أنه سيتم تعيين قيمة لهذا النوع من متغير ، يجب أن نعلن عن double ، وهو ما نفعله متغير المسمى result في السطر 3 أدناه:

Press + to interact
Java
public class MyJavaApp {
public static void main(String[] args) {
double result = 2.333;
System.out.println(result);
}
}

الآن بعد أن علمنا أن لدينا مشغلين متاحين في Java، يمكننا بسهولة حساب الإجابة الصحيحة لكل سؤال.

في البرنامج أدناه، دعنا نأخذ إجابة المستخدم ثم نطبع إجابته الصحيحة (التي يحسبها برنامجنا).

import java.util.Scanner;

public class MyJavaApp {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int n1 = 4;
        int n2 = 9;

        String question = "What is " + n1 + " + " + n2 + "?"; 
        System.out.println(question);
        int userAnswer = scan.nextInt();
        System.out.println("Your answer is: "+ userAnswer);
        // Computing the correct answer
        System.out.println("The correct answer is: " + (n1 + n2));
        
 }
}
Printing the user’s answer and the correct answer

يمكننا أن نفعل الشيء نفسه لجميع المشغلين، كما هو موضح أدناه:

import java.util.Scanner;

public class MyJavaApp {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int n1 = 4;
        int n2 = 9;
        int userAnswer;

        String question = "What is " + n1 + " + " + n2 + "? "; 
        System.out.print(question);
        userAnswer = scan.nextInt();
        System.out.println("Your answer is: "+ userAnswer);
        // Computing the correct answer
        System.out.println("The correct answer is: " + (n1 + n2));
        
        question = "What is " + n1 + " - " + n2 + "? "; 
        System.out.print(question);
        userAnswer = scan.nextInt();
        System.out.println("Your answer is: "+ userAnswer);
        // Computing the correct answer
        System.out.println("The correct answer is: " + (n1 - n2));

        question = "What is " + n1 + " * " + n2 + "? "; 
        System.out.print(question);
        userAnswer = scan.nextInt();
        System.out.println("Your answer is: "+ userAnswer);
        // Computing the correct answer
        System.out.println("The correct answer is: " + (n1 * n2));

        question = "What is " + n1 + " / " + n2 + "? "; 
        System.out.print(question);
        userAnswer = scan.nextInt();
        System.out.println("Your answer is: "+ userAnswer);
        // Computing the correct answer
        System.out.println("The correct answer is: " + (n1 / n2));        
 }
}
Printing the user’s answer and the correct answer for different arithmetic operations

هذا كل شيء! لقد تعلمنا دمج المتطلبين الرابع والسادس.

مراجعة الدرس

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