مشروع صغير في Java | آلة حاسبة بسيطة (شرح خطوة بخطوة)
نطبّق كل ما تعلمناه في برنامج واحد متكامل: متغيرات، إدخال، شروط، String، وتحقق من الأخطاء.
ما الذي سنبنيه؟
هذا المشروع هدفه تجميع المفاهيم التي تعلمتها في برنامج واحد حقيقي — آلة حاسبة تسأل المستخدم عن رقمين وعملية، ثم تطبع الناتج مع التحقق من الأخطاء.
المتغيرات
إدخال المستخدم
الشروط if/else
String وequals
التحقق من الأخطاء
أنواع البيانات
التخطيط قبل الكود — خطوات البرنامج
قاعدة ذهبية: قبل كتابة أي كود، فكّر في الخطوات بلغة بشرية أولاً. هذا يُسمى Pseudocode.
🗺️ خطة البرنامج
المبرمجون المحترفون يرسمون خطة البرنامج قبل الكود. هذا يوفّر وقتاً ويقلّل الأخطاء كثيراً.
أداة Scanner — كيف نقرأ إدخال المستخدم؟
لقراءة إدخال المستخدم في Java نستخدم كلاساً خاصاً يُسمى 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" |
الكود الكامل للمشروع
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 java.util.Scanner;
يجب استيراد Scanner في أول الملف قبل الكلاس. بدونها ستظهر رسالة خطأ "cannot find symbol".
استخدمنا double بدل int حتى يقبل البرنامج الأعداد العشرية مثل 3.5 و 9.99. وهو يقبل الأعداد الصحيحة أيضاً.
استخدمنا .equals() لمقارنة العملية — وليس ==. هذا تطبيق مباشر للقاعدة التي تعلمناها في درس String.
قبل القسمة، نتحقق أن المقسوم عليه ليس صفراً — القسمة على صفر تسبب ArithmeticException وتوقف البرنامج بشكل مفاجئ.
return في دالة void تعني: أنهِ الدالة هنا — لا تكمل تنفيذ بقية الكود. نستخدمها عند حدوث خطأ لإيقاف البرنامج بأمان.
تطوير المشروع — تمارين للمبتدئ 💪
جرّب تطوير المشروع خطوة بخطوة — حتى لو استغرق وقتاً:
أضف عملية باقي القسمة %
أضف شرطاً جديداً يتحقق من العملية "%" ويحسب الباقي.
else if (op.equals("%")) { result = (int) a % (int) b;}
اجعل البرنامج يعيد السؤال
ضع كود الآلة الحاسبة داخل حلقة while(true) مع خيار للخروج.
while (true) { // ... كود الآلة الحاسبة if (op.equals("exit")) break;}
أضف رسالة ترحيب ووداع
اطبع رسالة في البداية وأخرى في النهاية — يُحسّن تجربة المستخدم.
أخطاء شائعة في هذا المشروع ⚠️
نسيان 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) أيضاً — ونبدأ بناء برامج أكثر احترافية وتنظيماً.