مشروع آلة حاسبة بسيطة في Java خطوة بخطوة

📖 الدرس 14 من 16 ⏱ 9 دقيقة قراءة 🎬 25:00 دقائق ✓ مجاني

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

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

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

📦

المتغيرات

⌨️

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

🔀

الشروط if/else

📝

String وequals

🛡️

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

🔢

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

1

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

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

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

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

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

2

أداة 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"
3

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

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
4

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

① 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 تعني: أنهِ الدالة هنا — لا تكمل تنفيذ بقية الكود. نستخدمها عند حدوث خطأ لإيقاف البرنامج بأمان.

5

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

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

1️⃣

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

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

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

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

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

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

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

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

6

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

خطأ ١

نسيان 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 ويوقف البرنامج فجأة.

7

كيف أبني مشروعًا فعليًا (طريقتي العملية)

هذا أول مشروع متكامل لك، ودعني أشاركك الطريقة التي أبني بها أي برنامج، صغُر أم كبُر — فهي أهم ما يميّز من ينجز عمن يتعثّر.

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

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

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

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

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

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

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

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

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

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

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

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

✍️ كتبه: أ. يوسف
معلّم حاسب آلي وأخصائي تقنية معلومات، حاصل على الماجستير في تقنية المعلومات، بخبرة تتجاوز 20 عامًا في تطوير البرمجيات وأمن المعلومات. تعرّف على خبرتي كاملة ←