ممارسة: أساسيات 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 ديناميكي — يمكن إضافة عناصر دون تحديد الحجم مسبقًا.
س كيف يمكن تحسين الآلة الحاسبة؟
ج يمكن إضافة عمليات مثل الجذر التربيعي، الأس، النسبة المئوية.

📖 ملخص

📝 تمارين

  1. تحسين: أضف عملية الجذر التربيعي (^) والنسبة المئوية (%)
  2. حفظ: احفظ السجل في ملف نصي
  3. واجهة رسومية: حوّل الآلة الحاسبة إلى واجهة رسومية باستخدام JavaFX

الدرس التالي

في الدرس التالي، سنتعلم الدوال المتقدمة — كتابة دوال فعالة.

100%