فهرس المقرر
تدريب عملي

التدريب العملي 1: إنشاء دوال واستدعاؤها

دالة sendMessage بثلاث صور (تحميل زائد) تُستدعى من main.

4, 98 sum(a, b, c)return s; 21 argumentsreturn int z = sum(4, 9, 8);

من الدرس 1. الدوال المعرّفة من قبل المستخدم · كل التدريبات

١نص المسألة

اكتب برنامجًا فيه دالة اسمها sendMessage بثلاث صور (تحميل زائد overloading): الأولى بلا معاملات تطبع رسالة ثابتة، والثانية تستقبل نصًّا وتطبعه، والثالثة تستقبل اسم المرسَل إليه ونص الرسالة وتطبعهما مفصولين بفاصلة. استدعِ الدوال من main لتحصل على المخرجات المطلوبة.

٢الخوارزمية المقترحة

  1. عرّف داخل الكلاس دالة static void sendMessage() تطبع: Hello, this is sendMessage function
  2. عرّف دالة ثانية بالاسم نفسه sendMessage(String text) تطبع النص المرسل.
  3. عرّف دالة ثالثة sendMessage(String to, String text) تطبع to ثم فاصلة ثم text.
  4. في main: استدعِ sendMessage() ثم اطبع رسالة main، ثم استدعِ sendMessage() مرة أخرى.
  5. استدعِ النسخة الثانية بالنص «مرحبا»، ثم الثالثة بالقيمتين Mohammed و This is my first lab.

٣خطوات التطبيق

في NetBeans

  1. أنشئ مشروعًا جديدًا: File‏ ← ‏New Project‏ ← ‏Java with Ant‏ ← ‏Java Application، واسمه JavaApplication1.
  2. اكتب الدوال الثلاث خارج main وداخل الكلاس.
  3. نفّذ بـ Run (F6) وقارن الناتج.

في OneCompiler

  1. افتح OneCompiler من زر «▶ شغّل المشروع» أسفل الحل، أو من موقع onecompiler.com/java.
  2. في OneCompiler تُكتب كل الكلاسات في ملف واحد Main.java؛ زر التشغيل يجمعها لك تلقائيًّا.
  3. إذا كان البرنامج يقرأ من لوحة المفاتيح، فاكتب المدخلات في خانة STDIN التي تظهر تحت الكود في محرّر OneCompiler، ثم اضغط Run.

٤المخرجات المطلوبة

نفّذ برنامجك، ويجب أن تظهر المخرجات التالية:

Output – (run)×
run:
Hello, this is sendMessage function
Hi. I am the main () function
Hello, this is sendMessage function
مرحبا
Mohammed, This is my first lab
BUILD SUCCESSFUL (total time: 0 seconds)

٥الحل المقترح

حاول بنفسك أولًا، ثم قارن حلّك بالحل المقترح (كود التدريب من مذكرة العملي):

👁 اعرض الحل المقترح
package javaapplication1;public class JavaApplication1 {     static void sendMessage(){        System.out.println("Hello, this is sendMessage function");    }     public static void main(String[] args) {        sendMessage();        System.out.println("Hi. I am the main () function");        sendMessage();        sendMessage("مرحبا");        sendMessage("Mohammed", "This is my first lab");    }     static void sendMessage(String text){        System.out.println(text);    }     static void sendMessage(String to, String text){        System.out.println(to + ", " + text);    }}
مخطط المشروع مستخرج من الكود. انقر على أي كلاس لفتح كوده.
JavaApplication1
JavaApplication1~ sendMessage() : void+ main(args : String[]) : void~ sendMessage(text : String) : void~ sendMessage(to : String, text : String) : void
Output – JavaApplication1 (run)×
run:
Hello, this is sendMessage function
Hi. I am the main () function
Hello, this is sendMessage function
مرحبا
Mohammed, This is my first lab
BUILD SUCCESSFUL (total time: 0 seconds)

أسئلة المناقشة

أسئلة مناقشة على التدريب 1. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».

1السؤال الأول: اختر الإجابة الصحيحة

1) ما الهدف من تعريف أكثر من نسخة من الدالة sendMessage في نفس البرنامج?
2) ما الفرق بين الدالة sendMessage() والدالة sendMessage(String text)?
3) ماذا يحدث إذا استدعينا الدالة sendMessage() مع ثلاثة معاملات?
4) لماذا تم تعريف الدوال باستخدام الكلمة المفتاحية static?
5) أي استدعاء صحيح للدالة sendMessage من الكود أعلاه?
6) تسمى عملية تعريف أكثر من دالة بنفس الاسم ولكن بمعاملات مختلفة?
7) إذا تم استدعاء sendMessage("مرحبا")، فسيتم تنفيذ أي دالة?

2السؤال الثاني: صح أم خطأ

1) عند تنفيذ الكود، تظهر رسالة "Hi. I am the main () function" أولاً.
الصواب: خطأ
2) جميع الدوال في الكود أعلاه من نوع void ولا تعيد أي قيمة.
الصواب: صح
3) يمكن أن توجد أكثر من دالة بنفس الاسم في Java إذا اختلف عدد أو نوع المعاملات.
الصواب: صح
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».