مشروع صغير في Java | آلة حاسبة بسيطة (شرح خطوة بخطوة)

25:00 دقائق مجاني

نطبّق كل ما تعلمناه في برنامج واحد متكامل: متغيرات، إدخال، شروط، String، وتحقق من الأخطاء.

ما الذي سنبنيه؟

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

📦

المتغيرات

⌨️

إدخال المستخدم

🔀

الشروط if/else

📝

String وequals

🛡️

التحقق من الأخطاء

🔢

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

التخطيط قبل الكود — خطوات البرنامج

قاعدة ذهبية: قبل كتابة أي كود، فكّر في الخطوات بلغة بشرية أولاً. هذا يُسمى Pseudocode.

🗺️ خطة البرنامج

1 اطلب من المستخدم إدخال الرقم الأول
2 اطلب منه إدخال الرقم الثاني
3 اطلب منه اختيار العملية (+ أو - أو * أو /)
4 نفّذ العملية المناسبة باستخدام if/else
5 إذا اختار القسمة والرقم الثاني صفر → رسالة خطأ
6 اطبع النتيجة النهائية
💡

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

أداة Scanner — كيف نقرأ إدخال المستخدم؟

لقراءة إدخال المستخدم في Java نستخدم كلاساً خاصاً يُسمى Scanner — يجب استيراده أولاً.

استخدام Scanner
// ① استيراد Scanner — في أعلى الملف
import java.util.Scanner;

// ② إنشاء Scanner
Scanner in = new Scanner(System.in);

// ③ قراءة أنواع مختلفة
int    num  = in.nextInt();      ← عدد صحيح
double dec  = in.nextDouble();   ← عدد عشري
String word = in.next();         ← كلمة واحدة
String line = in.nextLine();     ← سطر كامل
الدالة تقرأ مثال
nextInt() عدد صحيح 5, -3, 100
nextDouble() عدد عشري 3.14, 9.99
next() كلمة واحدة "+", "hello"
nextLine() سطر كامل "Ahmed Ali"

الكود الكامل للمشروع

Calculator.java
import java.util.Scanner;

public class Calculator {

  public static void main(String[] args) {

    Scanner in = new Scanner(System.in);

    // ① قراءة الرقم الأول
    System.out.print("أدخل الرقم الأول: ");
    double a = in.nextDouble();

    // ② قراءة الرقم الثاني
    System.out.print("أدخل الرقم الثاني: ");
    double b = in.nextDouble();

    // ③ قراءة العملية
    System.out.print("اختر العملية (+ - * /): ");
    String op = in.next();

    double result = 0;

    // ④ تنفيذ العملية المناسبة
    if (op.equals("+")) {
        result = a + b;

    } else if (op.equals("-")) {
        result = a - b;

    } else if (op.equals("*")) {
        result = a * b;

    } else if (op.equals("/")) {
        // ⑤ التحقق من القسمة على صفر
        if (b == 0) {
            System.out.println("خطأ: لا يمكن القسمة على صفر!");
            return;
        }
        result = a / b;

    } else {
        System.out.println("خطأ: عملية غير صحيحة!");
        return;
    }

    // ⑥ طباعة النتيجة
    System.out.println("النتيجة: " + a + " " + op + " " + b + " = " + result);
  }
}

🖥️ مثال على التشغيل:

أدخل الرقم الأول: 10
أدخل الرقم الثاني: 3
اختر العملية (+ - * /): +
النتيجة: 10.0 + 3.0 = 13.0

شرح النقاط المهمة داخل الكود

① import import java.util.Scanner;

يجب استيراد Scanner في أول الملف قبل الكلاس. بدونها ستظهر رسالة خطأ "cannot find symbol".

② nextDouble()

استخدمنا double بدل int حتى يقبل البرنامج الأعداد العشرية مثل 3.5 و 9.99. وهو يقبل الأعداد الصحيحة أيضاً.

③ op.equals("+")

استخدمنا .equals() لمقارنة العملية — وليس ==. هذا تطبيق مباشر للقاعدة التي تعلمناها في درس String.

④ if (b == 0)

قبل القسمة، نتحقق أن المقسوم عليه ليس صفراً — القسمة على صفر تسبب ArithmeticException وتوقف البرنامج بشكل مفاجئ.

⑤ return

return في دالة void تعني: أنهِ الدالة هنا — لا تكمل تنفيذ بقية الكود. نستخدمها عند حدوث خطأ لإيقاف البرنامج بأمان.

تطوير المشروع — تمارين للمبتدئ 💪

جرّب تطوير المشروع خطوة بخطوة — حتى لو استغرق وقتاً:

1️⃣

أضف عملية باقي القسمة %

أضف شرطاً جديداً يتحقق من العملية "%" ويحسب الباقي.

else if (op.equals("%")) {
result = (int) a % (int) b;
}
2️⃣

اجعل البرنامج يعيد السؤال

ضع كود الآلة الحاسبة داخل حلقة while(true) مع خيار للخروج.

while (true) {
// ... كود الآلة الحاسبة
if (op.equals("exit")) break;
}
3️⃣

أضف رسالة ترحيب ووداع

اطبع رسالة في البداية وأخرى في النهاية — يُحسّن تجربة المستخدم.

أخطاء شائعة في هذا المشروع ⚠️

خطأ ١

نسيان import Scanner

❌ بدون import

public class Calculator { Scanner in = ...

cannot find symbol: Scanner

✅ مع import

import java.util.Scanner; public class Calculator {
خطأ ٢

مقارنة العملية بـ == بدل equals

❌ قد لا يعمل

if (op == "+")

✅ صحيح

if (op.equals("+"))
خطأ ٣

عدم التحقق من القسمة على صفر

بدون التحقق، إدخال 0 كمقسوم عليه سيتسبب في ArithmeticException ويوقف البرنامج فجأة.

🎉 أتممت الوحدة الرابعة!

في هذا المشروع طبّقت:

Scanner لقراءة إدخال المستخدم

if/else if/else لتنفيذ العمليات

.equals() لمقارنة النصوص

التحقق من الأخطاء واستخدام return

🏆 ما أنجزته حتى الآن:

المتغيرات ← الشروط ← الحلقات ← الدوال ← Class وObject ← Constructor ← Encapsulation ← final ← static ← Arrays ← String ← مشروع تطبيقي!

⏭️ الخطوة القادمة:

سنجعل الكلاس لا يحتوي بيانات فقط، بل يحتوي سلوكاً (Methods) أيضاً — ونبدأ بناء برامج أكثر احترافية وتنظيماً.