تعريف الدوال

تعديل
نسخ الدرس
تحميل الدرس

تعريف الدوال (Defining Methods)

الدوال (Methods) هي كتل من الشيفرة القابلة لإعادة الاستخدام. بدلاً من كتابة نفس الشيفرة مراراً، نُعرّف دالة مرة واحدة ونستدعيها عند الحاجة.

لماذا نستخدم الدوال؟

صيغة تعريف الدوال

تبدأ الدالة بكلمة def وتنتهي بـ end:

مثال بسيط

المعاملات (Parameters)

المعاملات هي المتغيرات التي تستقبلها الدالة:

الفرق بين المعاملات والوسائط

  • المعاملات (Parameters): المتغيرات في تعريف الدالة
  • الوسائط (Arguments): القيم الفعلية عند استدعاء الدالة

معاملات متعددة

يمكن للدالة استقبال أكثر من معامل:

الناتج:

القيم الافتراضية للمعاملات

يمكن تحديد قيم افتراضية للمعاملات:

عدة معاملات مع قيم افتراضية

الناتج:

قاعدة مهمة

المعاملات ذات القيم الافتراضية يجب أن تأتي بعد المعاملات الإلزامية:

تسمية الدوال

روبي تتبع اتفاقية snake_case لأسماء الدوال:

اتفاقيات تسمية خاصة

الدوال داخل الدوال

يمكن استدعاء دالة من داخل دالة أخرى:

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

الدوال مع الحلقات

الناتج:

المتغيرات المحلية

المتغيرات داخل الدالة محلية - لا يمكن الوصول إليها من خارجها:

نطاق المتغيرات

أمثلة عملية

مثال 1: حاسبة بسيطة

مثال 2: تنسيق النصوص

مثال 3: التحقق من البيانات

مثال 4: رسائل الترحيب

جدول ملخص

المفهومالوصفالمثال
تعريف دالةإنشاء دالة جديدةdef greet ... end
معاملمتغير في تعريف الدالةdef greet(name)
وسيطقيمة فعلية عند الاستدعاءgreet("أحمد")
قيمة افتراضيةقيمة تُستخدم إذا لم يُمرر وسيطdef greet(name = "زائر")
متغير محليمتغير يعمل داخل الدالة فقطresult = 100 داخل الدالة

أخطاء شائعة

1. نسيان end

2. عدد وسائط خاطئ

3. ترتيب المعاملات الافتراضية

نصائح مهمة

  1. اختر أسماء واضحة - اسم الدالة يجب أن يصف ما تفعله
  2. دالة واحدة = مهمة واحدة - لا تجعل الدالة تفعل أشياء كثيرة
  3. استخدم القيم الافتراضية - لتجعل الدوال أكثر مرونة
  4. الدوال الصغيرة أفضل - يسهل فهمها واختبارها

تمرين: دالة ترحيب مخصصة

حان وقت التطبيق! في محرر الشيفرة على اليسار:

المطلوب:

  1. عرّف دالة greet تستقبل معاملين:
    • name - اسم الشخص (إلزامي)
    • greeting - التحية (افتراضياً "مرحباً")
  2. الدالة تطبع: [التحية] [الاسم]!
  3. استدعِ الدالة:
    • مع اسم "أحمد" فقط (تستخدم التحية الافتراضية)
    • مع اسم "سارة" وتحية "أهلاً"

تلميحات:

  • تعريف الدالة: def greet(name, greeting = "مرحباً")
  • داخل الدالة استخدم دمج المتغيرات: "#{greeting} #{name}!"
  • للاستدعاء: greet("أحمد") ثم greet("سارة", "أهلاً")

الناتج المتوقع:


تذكّر: الدوال تجعل شيفرتك منظمة وقابلة لإعادة الاستخدام!