المعاملات في Java
اكتب دالة اسمها greet تأخذ كلمة واحدة. داخل الأقواس اكتب String name. في الجسم اطبع hi ومسافة ثم name: System.out.println("hi " + name);. من main استدعِ greet("lena");. يجب أن تظهر الشاشة سطرًا واحدًا: hi lena. حروف lena ليست مكتوبة ثابتة داخل الدالة. تصل عبر الاستدعاء وتجلس في الاسم name لتلك المرّة. ذلك التسليم هو ما تعلّمه هذه الصفحة.
اسم داخل الأقواس
في صفحة الدوال بقيت الأقواس بعد ring فارغة. الطباعة كانت دائمًا ding. هنا تحمل الأقواس اسمًا مُنوَّعًا حتى يستطيع كل استدعاء إرسال قيمة مختلفة. ذلك الاسم المُنوَّع هو المعامل. القيمة التي تكتبها في الاستدعاء هي الوسيط لتلك المرّة.
أنشئ ملف برنامج صغير باسم Tip.java. يجب أن يطابق public class في السطر الأول اسم الملف: public class Tip. لا تُبقِ اسم فئة قديمًا مثل Chime أو Pack في هذا الملف؛ المترجم يتوقع أن يتوافق اسم الفئة مع اسم الملف.
خارج main، وما زلت داخل أقواس الفئة المجعدة، اكتب:
static void greet(String name) {
System.out.println("hi " + name);
}
رأس الدالة على شكل المبتدئ لهذه الصفحة ما زال يبدأ بـ static void. بين الأقواس يجلس أولًا String ثم name — النوع أولًا، ثم اسم المعامل. الجسم يستخدم name بلا علامات اقتباس حوله، موصولًا بالنص الثابت "hi " بعلامة زائد. علامات الاقتباس حول "hi " تميّز الحروف الثابتة. الاسم العاري يميّز القيمة التي وصلت من الاستدعاء. احفظ الملف قبل الترجمة.
Tip.java مع greet
هذه هي النسخة التي تترجمها أولًا. main يحتفظ بالاستدعاء وقيمة داخل الأقواس. greet يحتفظ بالطباعة التي تستخدم تلك القيمة.
public class Tip {
public static void main(String[] args) {
greet("lena");
}
static void greet(String name) {
System.out.println("hi " + name);
}
}
من المجلد الذي يحوي Tip.java شغّل javac Tip.java. عندما تتوافق الأقواس العادية والمجعدة والفواصل المنقوطة، لا يكتب javac سطرًا من عنده. ثم شغّل java Tip — وليس java Tip.java. احذف نهاية .java من الأمر الثاني. الأمران نفسهما يعملان على Windows وعلى macOS؛ هذه الصفحة لا تحتاج إملاء صدفة مختلفًا لأي نظام. يجب أن يطبع البرنامج سطرًا واحدًا ويتوقف: hi lena. لا يطلب منك الكتابة. إذا انتظر الطرفية إدخال لوحة المفاتيح، فما زال استدعاء nextLine من تمرين أقدم داخل الملف. احذف ذلك الاستدعاء وأبقِ greet("lena"); مع دالة greet أعلاه. سطر خاطئ على الشاشة لا يعني أنك تحتاج تثبيت JDK جديدًا.
امشِ تشغيلًا كاملًا بالترتيب. Java يبدأ من main. الاستدعاء greet("lena"); يرسل النص lena إلى المعامل name. داخل greet يبني println كلمة hi ومسافة ثم تلك القيمة، فتظهر الشاشة hi lena. ثم تنتهي greet وينتهي main. لم تكتب System.out.println("hi lena"); داخل main. كتبت الجزء الثابت مرة واحدة تحت greet وأرسلت lena من الاستدعاء.
نفس الدالة، كلمات مختلفة
غيّر main فقط حتى يستدعي greet مرتين بوسيطين مختلفين:
public static void main(String[] args) {
greet("lena");
greet("sam");
}
اترك دالة greet نفسها كما هي. ترجم وشغّل من جديد: javac Tip.java ثم java Tip. يجب أن تظهر الشاشة سطرين: hi lena ثم hi sam. الاستدعاء الأول يملأ name بـ lena. الاستدعاء الثاني يملأ name بـ sam. لم تنسخ println تحت greet. غيّرت فقط القيم داخل الاستدعاءات.
إذا استدعيت greet() بأقواس فارغة بينما الرأس ما زال يقول String name، يكتب javac خطأً — يجب أن يزوّد الاستدعاء بـ String. إذا أبقيت ring(); قديمًا بأقواس فارغة من صفحة Chime في نفس main، فذلك الاستدعاء لا يطابق greet، ودالة ring المتبقية قد تطبع ding بجانب أسطر hi. صفِّ main إلى استدعاءات greet التي يحتاجها هذا الدرس.
عدد صحيح كقيمة
المعاملات ليست للنص فقط. اكتب دالة ثانية تأخذ int:
static void show(int n) {
System.out.println(n);
}
استدعِها من main بأعداد صحيحة:
show(9);
show(4);
public class Tip {
public static void main(String[] args) {
show(9);
show(4);
}
static void show(int n) {
System.out.println(n);
}
}
ترجم وشغّل: javac Tip.java ثم java Tip. يجب أن تظهر الشاشة سطرين: 9 ثم 4. لا تضع علامات اقتباس حول 9 أو 4 في الاستدعاء — هما قيمتا int وليستا نصًا. داخل show يكتب println(n) العدد الذي وصل. بعد أن ترى ذينك السطرين يمكنك إعادة عرض greet. كلا النسختين Java صالحتان. تعلّمان الفكرة نفسها: الاستدعاء يرسل قيمة، والمعامل يحتفظ بها للجسم.
اقرأ تشغيل int مرة أخرى. الاستدعاء الأول يضبط n على 9 ويطبع 9. الاستدعاء الثاني يضبط n على 4 ويطبع 4. الاسم n يُعلَن مرة واحدة في الرأس كـ int n. كل استدعاء يعطيه قيمة جديدة لتلك المرّة. تمرير كلمة مقتبسة إلى show مثل show("nine"); لا يطابق int على هذا الشكل — يكتب javac خطأً. تمرير عدد عارٍ إلى greet مثل greet(3); لا يطابق String — يكتب javac خطأً مرة أخرى. طابق نوع الوسيط مع نوع المعامل.
خلط شائع هو طباعة اسم المعامل كنص: System.out.println("name");. ذلك يكتب الحروف n-a-m-e. لا يكتب lena. أبقِ println("hi " + name) بلا علامات اقتباس حول name عندما تريد حروف الوسيط على الشاشة. خلط آخر هو إعلان المعامل داخل main بدل رأس الدالة. الاسم المُنوَّع ينتمي داخل greet(...) أو show(...)، لا داخل أقواس main في هذه الصفحة. String[] args في main موضوع جلسة لاحقة؛ لا تُعِد تسمية args إلى name وتتوقع أن ترى greet ذلك.
أين تتركك هذه الصفحة
يمكنك وضع String name أو int n داخل أقواس الدالة، وتمرير قيمة مطابقة في الاستدعاء، وطباعة تلك القيمة من الجسم. استدعاءان بوسيطين يطبعان سطرين مختلفين دون نسخ الدالة. void ما زال يعني أن شيئًا لا يعود عبر الاستدعاء. الصفحة التالية هي return؛ هناك تعيد الدالة قيمة إلى main بدل الطباعة فقط داخل الجسم.
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى