جاري التحميل...

الدوال في Java

اكتب دالة اسمها ring تطبع كلمة واحدة: ding. ضع أسطر الطباعة تلك تحت static void ring() مع أقواس فارغة. داخل main اكتب فقط ring(); — الاسم، ثم أقواس فارغة، ثم فاصلة منقوطة. ترجم وشغّل. يجب أن تظهر الشاشة سطرًا واحدًا: ding. main لا تحتفظ بـ println الخاصة بـ ding. الدالة تحتفظ بها. ذلك الفصل هو ما تعلّمه هذه الصفحة.

أسطر تعيش تحت ring

حتى الآن كان معظم عمل الطباعة يجلس مباشرة داخل main. ذلك ما زال صالحًا. الدالة تعطي الأسطر نفسها اسمًا خاصًا بها. تكتب الأسطر مرة واحدة تحت ذلك الاسم. ثم يطلبها main بكتابة الاسم كاستدعاء.
أنشئ ملف برنامج صغير باسم Chime.java. يجب أن يطابق public class في السطر الأول اسم الملف: public class Chime. لا تُبقِ اسم فئة قديمًا مثل Pack أو Skip في هذا الملف؛ المترجم يتوقع أن يتوافق اسم الفئة مع اسم الملف.
خارج main، وما زلت داخل أقواس الفئة المجعدة، اكتب:
static void ring() {
System.out.println("ding");
}
كلمة static تبقى على هذا الشكل للمبتدئين حتى يستطيع main استدعاء ring دون بناء كائن. كلمة void تعني أن هذه الدالة لا تُرجع قيمة للمستدعي — تشغّل جسمها فقط. الاسم ring هو الوسم الذي ستكتبه في main. الأقواس الفارغة () تعني أن دالة هذه الصفحة لا تستقبل قيمًا. الأقواس المجعدة تحتفظ بالجسم. System.out.println("ding"); يكتب الحروف الأربعة d-i-n-g. احفظ الملف قبل الترجمة.

Chime.java الذي تترجمه

هذا هو البرنامج الصغير الكامل لهذه الصفحة. main يحتفظ بالاستدعاء فقط. ring يحتفظ بالطباعة.

ring تطبع ding

java
public class Chime {
    public static void main(String[] args) {
        ring();
    }

    static void ring() {
        System.out.println("ding");
    }
}

من المجلد الذي يحوي Chime.java شغّل javac Chime.java. عندما تتوافق الأقواس العادية والمجعدة والفواصل المنقوطة، لا يكتب javac سطرًا من عنده. ثم شغّل java Chime — وليس java Chime.java. احذف نهاية .java من الأمر الثاني. الأمران نفسهما يعملان على Windows وعلى macOS؛ هذه الصفحة لا تحتاج إملاء صدفة مختلفًا لأي نظام. يجب أن يطبع البرنامج سطرًا واحدًا ويتوقف: ding. لا يطلب منك الكتابة. إذا انتظر الطرفية إدخال لوحة المفاتيح، فما زال استدعاء nextLine من تمرين أقدم داخل الملف. احذف ذلك الاستدعاء وأبقِ ring(); داخل main مع دالة ring أعلاه. سطر خاطئ على الشاشة لا يعني أنك تحتاج تثبيت JDK جديدًا.

امشِ التشغيل مرة بالترتيب. Java يبدأ من main. الجملة الوحيدة داخل main هي ring();. ذلك الاستدعاء يقفز إلى دالة ring. داخل ring يكتب println كلمة ding. ثم تنتهي ring، ولا يبقى شيء في main، فينتهي البرنامج. لم تضع System.out.println("ding"); داخل main على هذه الصفحة. وضعته تحت ring وطلبته بالاسم. إذا أظهرت الشاشة ding، فقد وصل الاستدعاء إلى الجسم. إذا بقيت الشاشة فارغة بعد ترجمة نظيفة، فإما أن main لم يستدعِ ring أصلًا، أو أن main ما زال يحمل أقواسًا مجعدة فارغة بلا استدعاء داخلها.

استدعِ ring من main أكثر من مرة

غيّر main فقط حتى يستدعي الدالة نفسها مرتين:
public static void main(String[] args) {
ring();
ring();
}
اترك دالة ring نفسها كما هي. ترجم وشغّل من جديد: javac Chime.java ثم java Chime. يجب أن تظهر الشاشة سطرين، كل منهما ding. الاستدعاء الأول يشغّل الجسم مرة. الاستدعاء الثاني يشغّل الجسم نفسه مرة أخرى. ذلك إعادة الاستخدام هو سبب تسمية الأسطر. لم تنسخ println مرة ثانية تحت ring. كتبت استدعاءً ثانيًا في main.
إذا أخرجت ring(); الثاني وتركت استدعاءً واحدًا فقط، تعود الشاشة إلى ding واحد. تعريف الدالة لا يطبع من تلقاء نفسه. فقط استدعاء من main (أو لاحقًا من دالة أخرى) يشغّل الجسم. ملف يعرّف ring دون أن يستدعيها من main يمكن أن يُترجم ومع ذلك تظهر شاشة فارغة عند تشغيل java Chime، لأن main لا يفعل شيئًا.

قطع ترويسة الدالة

على هذه الصفحة الترويسة هي static void ring(). اقرأها من اليسار إلى اليمين. static يتيح لـ main استدعاء الدالة على شكل المبتدئين هذا. void تعني أنه لا تعود قيمة عبر الاستدعاء. ring هو الاسم. () فارغة عمدًا: هذه الجلسة لا تمرّر كلمات أو أرقامًا إلى الدالة. الصفحة التالية، parameters، تضع أسماء داخل تلك الأقواس. الصفحة التي بعدها، return، تغيّر void عندما تحتاج قيمة راجعة. أبقِ الاثنين للاحق. اليوم الأقواس الفارغة وvoid كافيتان.

📊 قطعة الترويسة على هذه الصفحة

القطعة على هذه الصفحة
static main يستطيع استدعاء ring دون كائن
void ring لا تُرجع قيمة
ring الاسم الذي تكتبه في الاستدعاء
() لا تدخل قيم على هذه الصفحة
{ ... } الجسم الذي يطبع ding

يجب أن يطابق الاستدعاء في main الاسم تمامًا: ring(); بحرف r صغير، وأقواس فارغة، وفاصلة منقوطة. كتابة Ring(); بحرف R كبير اسم مختلف لـ Java. كتابة ring بلا () ليست استدعاءً على هذا الشكل. كتابة System.out.println("ring"); تطبع الحروف الأربعة لكلمة ring؛ ولا تشغّل جسم الدالة. أبقِ الاستدعاء ring(); عندما تريد ding على الشاشة.

بقايا شائعة هي عرض Pack القديم مع for-each ما زال جالسًا في main بجانب الاستدعاء الجديد. عندها قد تظهر الشاشة 2 و4 و6، أو red وblue، بدل ding — أو النوعين مختلطين. نظّف main حتى استدعاءات ring(); التي يحتاجها هذا الدرس. خلط آخر هو وضع الدالة داخل أقواس main المجعدة. دوال هذه الصفحة تجلس داخل الفئة، بجانب main، لا متداخلة داخله. javac لا يعامل دالة مدفونة داخل main على أنها ring التي تستدعيها. أغلق أقواس ring قبل أن ينتهي main، وأغلق أقواس main قبل أن تنتهي الفئة، حتى يملك كل كتلة أسطره فقط.

جاهز للصفحات التالية

تستطيع كتابة static void ring()، ووضع أسطر println داخل أقواسها المجعدة، واستدعاء ring() من main حتى تظهر الشاشة ding. الاستدعاء مرتين يطبع ding مرتين دون نسخ الجسم. الأقواس الفارغة وvoid تبقيان على هذه الصفحة عمدًا. parameters ستضع قيمًا داخل الأقواس. return ستتيح لدالة أن تُرجع رقمًا أو نصًا إلى main. هاتان هما الصفحتان التاليتان بعد هذه.

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع

❓
7
الأسئلة
🎯
70%
للنجاح
♾️
∞
الوقت
🔄
∞
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى