ممارسة: أساسيات Java
هذا الدرس هو تطبيق عملي للمرحلة الأولى، يجمع بين المتغيرات والجمل الشرطية والحلقات والمصفوفات.
متطلبات المشروع
بناء آلة حاسبة بسيطة تدعم:
- العمليات الأساسية: جمع، طرح، ضرب، قسمة
- التحقق من المدخلات
- تاريخ العمليات
- تكرار العمليات حتى الخروج
الكود الكامل
JAVA
import java.util.Scanner;
import java.util.ArrayList;
public class Calculator {
private static ArrayList<String> history = new ArrayList<>();
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("=== الآلة الحاسبة ===");
int choice;
do {
showMenu();
choice = getIntInput("اختر: ");
switch (choice) {
case 1: calculate(); break;
case 2: showHistory(); break;
case 3: clearHistory(); break;
case 0: System.out.println("شكراً لاستخدامك الآلة الحاسبة!"); break;
default: System.out.println("خيار غير صالح");
}
} while (choice != 0);
scanner.close();
}
private static void showMenu() {
System.out.println("\n--- القائمة ---");
System.out.println("1. عملية حسابية");
System.out.println("2. عرض السجل");
System.out.println("3. مسح السجل");
System.out.println("0. خروج");
}
private static void calculate() {
double num1 = getDoubleInput("أدخل الرقم الأول: ");
char op = getOperator();
double num2 = getDoubleInput("أدخل الرقم الثاني: ");
double result;
String operation;
switch (op) {
case '+':
result = num1 + num2;
operation = num1 + " + " + num2 + " = " + result;
break;
case '-':
result = num1 - num2;
operation = num1 + " - " + num2 + " = " + result;
break;
case '*':
result = num1 * num2;
operation = num1 + " × " + num2 + " = " + result;
break;
case '/':
if (num2 == 0) {
System.out.println("خطأ: لا يمكن القسمة على صفر!");
return;
}
result = num1 / num2;
operation = num1 + " ÷ " + num2 + " = " + result;
break;
default:
System.out.println("عملية غير صالحة!");
return;
}
System.out.println("النتيجة: " + operation);
history.add(operation);
}
private static char getOperator() {
System.out.print("أدخل العملية (+، -، *، /): ");
return scanner.nextLine().charAt(0);
}
private static void showHistory() {
if (history.isEmpty()) {
System.out.println("السجل فارغ!");
return;
}
System.out.println("\n--- سجل العمليات ---");
for (int i = 0; i < history.size(); i++) {
System.out.println((i + 1) + ". " + history.get(i));
}
}
private static void clearHistory() {
history.clear();
System.out.println("تم مسح السجل!");
}
private static int getIntInput(String prompt) {
System.out.print(prompt);
while (!scanner.hasNextInt()) {
System.out.print("أدخل رقماً صحيحاً: ");
scanner.next();
}
int value = scanner.nextInt();
scanner.nextLine();
return value;
}
private static double getDoubleInput(String prompt) {
System.out.print(prompt);
while (!scanner.hasNextDouble()) {
System.out.print("أدخل رقماً: ");
scanner.next();
}
double value = scanner.nextDouble();
scanner.nextLine();
return value;
}
}
ناتج ejemplo
TEXT
=== الآلة الحاسبة ===
--- القائمة ---
1. عملية حسابية
2. عرض السجل
3. مسح السجل
0. خروج
اختر: 1
أدخل الرقم الأول: 10
أدخل العملية (+، -، *، /): +
أدخل الرقم الثاني: 5
النتيجة: 10.0 + 5.0 = 15.0
اختر: 2
--- سجل العمليات ---
1. 10.0 + 5.0 = 15.0
اختر: 0
شكراً لاستخدامك الآلة الحاسبة!
المفاهيم المستخدمة
| المفهوم | التطبيق |
|---|---|
| المتغيرات | num1، num2، result، choice |
| الجمل الشرطية | switch للقائمة والعمليات |
| الحلقات | do-while للقائمة الرئيسية |
| المصفوفات | ArrayList لسجل العمليات |
| التحقق من المدخلات | getIntInput، getDoubleInput |
❓ أسئلة شائعة
س لماذا نستخدم ArrayList بدلاً من Array؟
ج لأن ArrayList ديناميكي — يمكن إضافة عناصر دون تحديد الحجم مسبقًا.
س كيف يمكن تحسين الآلة الحاسبة؟
ج يمكن إضافة عمليات مثل الجذر التربيعي، الأس، النسبة المئوية.
📖 ملخص
- الجمع بين المتغيرات والجمل الشرطية والحلقات والمصفوفات
- التحقق من المدخلات مهم لتجربة مستخدم جيدة
- ArrayList مناسب للبيانات الديناميكية
- السجل يتيح للمستخدم مراجعة العمليات السابقة
📝 تمارين
- تحسين: أضف عملية الجذر التربيعي (^) والنسبة المئوية (%)
- حفظ: احفظ السجل في ملف نصي
- واجهة رسومية: حوّل الآلة الحاسبة إلى واجهة رسومية باستخدام JavaFX
الدرس التالي
في الدرس التالي، سنتعلم الدوال المتقدمة — كتابة دوال فعالة.



