الدوال — الأساسيات
الدوال (Methods) هي كتل من الكود يمكن إعادة استخدامها. في هذا الدرس، سنتعلم كيفية تعريف واستدعاء الدوال.
تعريف الدالة
JAVA
access_modifier return_type method_name(parameters) {
// الكود هنا
return value; // إذا كان نوع الإرجاع ليس void
}
مثال: دالة بسيطة
JAVA
public static void sayHello() {
System.out.println("مرحباً!");
}
// الاستدعاء
sayHello(); // مرحباً!
المعلمات (Parameters)
دالة بمعلمة واحدة
JAVA
public static void greet(String name) {
System.out.println("مرحباً، " + name + "!");
}
// الاستدعاء
greet("أحمد"); // مرحباً، أحمد!
دالة بعدة معلمات
JAVA
public static void printInfo(String name, int age) {
System.out.println("الاسم: " + name + "، العمر: " + age);
}
// الاستدعاء
printInfo("أحمد", 25); // الاسم: أحمد، العمر: 25
المعلمات الافتراضية (Java 8+)
JAVA
// لا توجد معلمات افتراضية في Java، لكن يمكنك استخدام overload
public static void greet(String name) {
System.out.println("مرحباً، " + name + "!");
}
public static void greet() {
System.out.println("مرحباً، ضيف!");
}
القيم المرجعة (Return)
دالة تُرجع قيمة
JAVA
public static int add(int a, int b) {
return a + b;
}
// الاستدعاء
int result = add(5, 3); // result = 8
دالة تُرجع String
JAVA
public static String getFullName(String firstName, String lastName) {
return firstName + " " + lastName;
}
// الاستدعاء
String name = getFullName("أحمد", "محمد"); // "أحمد محمد"
دالة تُرجع boolean
JAVA
public static boolean isEven(int number) {
return number % 2 == 0;
}
// الاستدعاء
boolean even = isEven(4); // true
boolean odd = isEven(5); // false
void مقابل return
| void | return |
|---|---|
| لا تُرجع قيمة | تُرجع قيمة |
public static void print() |
public static int add() |
return; أو بدون return |
return قيمة; |
مثال
JAVA
// void — لا تُرجع قيمة
public static void printArray(int[] arr) {
for (int num : arr) {
System.out.print(num + " ");
}
System.out.println();
}
// return — تُرجع قيمة
public static int findMax(int[] arr) {
int max = arr[0];
for (int num : arr) {
if (num > max) max = num;
}
return max;
}
تحميل الدوال (Method Overloading)
يمكن أن تحمل الدالة نفس الاسم بشرط أن تختلف في المعلمات:
JAVA
public static int add(int a, int b) {
return a + b;
}
public static double add(double a, double b) {
return a + b;
}
public static int add(int a, int b, int c) {
return a + b + c;
}
// الاستدعاء
add(5, 3); // 8 (int)
add(5.0, 3.0); // 8.0 (double)
add(5, 3, 2); // 10 (int)
النطاق (Scope)
المتغيرات المحلية
JAVA
public static void myMethod() {
int x = 10; // نطاق x داخل myMethod فقط
System.out.println(x); // ✅ صحيح
}
// System.out.println(x); // ❌ خطأ: x غير معرّف هنا
المتغيرات في الحلقات
JAVA
for (int i = 0; i < 5; i++) {
int temp = i * 2; // نطاق temp داخل الحلقة فقط
System.out.println(temp);
}
// System.out.println(i); // ❌ خطأ
// System.out.println(temp); // ❌ خطأ
❓ أسئلة شائعة
س ما الفرق بين الدالة والإجراء (Procedure)؟
ج في Java، لا يوجد فرق — كل شيء دالة. الدوال void تسمى إجراءات في لغات أخرى.
س لماذا نستخدم static في main؟
ج لأن Java تستدعي main بدون إنشاء كائن. static تسمح باستخدام الدالة مباشرة.
س هل يمكن أن تحتوي الدالة على دوال أخرى؟
ج لا، لا يمكن تعريف دالة داخل دالة في Java. لكن يمكنك استدعاء دوال من داخل دوال.
📖 ملخص
- الدوال هي كتل كود قابلة لإعادة الاستخدام
- المعلمات تمرر البيانات إلى الدوال
- return يُرجع قيمة من الدالة
- void لا يُرجع قيمة
- Overloading: نفس الاسم بعلمات مختلفة
- النطاق: المتغيرات المحلية متاحة فقط داخل الدالة
📝 تمارين
- حاسبة: اكتب دوال للجمع والطرح والضرب والقسمة
- تحويل الوحدات: اكتب دوال لتحويل بين الدرجات والسلسيوس والفارنهايت
- المصفوفات: اكتب دوال لإيجاد الحد الأقصى والأدنى والمتوسط
الدرس التالي
في الدرس التالي، سنتعلم الدوال المتقدمة — Lambda والدوال المتكررة.



