التوابع
اكتب تابعًا باسم ring يكتب كلمة واحدة: ding. ضع أسطر الكتابة تلك تحت static void ring() بأقواس فارغة. داخل Main اكتب فقط ring(); — الاسم، ثم أقواس فارغة، ثم فاصلة منقوطة. شغّل البرنامج. يجب أن تُظهر الشاشة سطرًا واحدًا: ding. Main لا يحمل WriteLine لـ ding. التابع يحمله. هذا الفصل هو ما تعلّمه هذه الصفحة. أبقِ اسم الصنف العام Pine.
أسطر تعيش تحت ring
حتى الآن كان معظم عمل الكتابة مباشرة داخل Main. ذلك ما زال يعمل. التابع يعطي الأسطر نفسها اسمًا خاصًا بها. تكتب الأسطر مرة واحدة تحت ذلك الاسم. ثم يطلبها Main بكتابة الاسم كاستدعاء.
افتح ملف Pine. اسم الصنف يبقى Pine. هذه الصفحة لا تعيد تسمية النوع. احذف أي foreach يمرّ على plants أو slots إن بقي ذلك الشكل. احذف for معدودًا فيه break أو continue إن كان ما زال هناك. احذف أي سطر ReadLine. الملف الذي تحتفظ به بلا انتظار للكتابة وبلا عرض حلقة متبقٍ في Main.
خارج Main، وما زلت داخل أقواس الصنف المعقوفة، ستكتب static void ring() بجسم يشغّل Console.WriteLine("ding");. البرنامج الكامل في الصندوق التالي لتنسخه نظيفًا.
كلمة static تبقى في هذا الشكل للمبتدئين حتى يستطيع Main استدعاء ring دون بناء كائن. كلمة void تعني أن هذا التابع لا يعيد قيمة للمستدعي — يشغّل جسمه فقط. الاسم ring هو التسمية التي تكتبها في Main. الأقواس الفارغة () تعني أن تابع هذه الصفحة لا يأخذ قيمًا داخلة. الأقواس المعقوفة تحمل الجسم. احفظ الملف قبل التشغيل.
الملف الذي تحتفظ به
هذا هو البرنامج الصغير الكامل لهذه الصفحة. Main يحمل الاستدعاء فقط. ring يحمل سطر الكتابة. لا عدّاد فهرس ولا مرور مصفوفة في هذا الملف المحتفظ به.
using System;
public class Pine
{
public static void Main()
{
ring();
}
static void ring()
{
Console.WriteLine("ding");
}
}
اقرأ من الأعلى. using System; يجهّز الأسماء القصيرة. public class Pine يسمّي النوع. public static void Main() هو حيث يبدأ وقت التشغيل. الجملة الوحيدة في Main هي ring();. تحت Main، وما زلت داخل الصنف، static void ring() يحمل Console.WriteLine("ding");. سطر واحد على الشاشة: ding.
شغّله بـ dotnet run. البرنامج يكتب سطرًا واحدًا ويتوقف. لا ينتظر أن تكتب شيئًا. إذا انتظر dotnet run، فما زال ReadLine في الملف. احذف ذلك السطر وأبقِ ring(); في Main مع تابع ring أعلاه. الشاشة تُظهر ding. إذا أظهرت الشاشة leaf وmint، فما زال بقايا foreach يكتب. إذا أظهرت الشاشة أحرف ring، فسطر الكتابة يضع علامات اقتباس حول تلك الكلمة: Console.WriteLine("ring");. لا تعيد تثبيت .NET SDK لشاشة تُظهر السطر الخطأ.
امشِ تشغيلًا كاملًا بالترتيب. C# يبدأ من Main. الجملة الوحيدة في Main هي ring();. ذلك الاستدعاء يقفز إلى تابع ring. داخل ring، يكتب WriteLine كلمة ding. ثم ينتهي ring، ولا يبقى شيء في Main، فينتهي البرنامج. لم تضع Console.WriteLine("ding"); داخل Main في هذه الصفحة. وضعته تحت ring وطلبته بالاسم. إذا أظهرت الشاشة ding، فقد وصل الاستدعاء إلى الجسم. إذا بقيت الشاشة فارغة بعد بناء نظيف، فـ Main لم يستدعِ ring أبدًا.
فكّر في ring كرفّ مُسمّى لأسطر الكتابة. Main لا يحتاج تكرار تلك الأسطر. يحتاج فقط اسم الرف مكتوبًا كاستدعاء. لذلك يستطيع Main قصير أن ينتج سطر شاشة واضحًا: العمل يعيش تحت اسم التابع، والاستدعاء هو الطلب. متى اتضح هذا النمط، إضافة استدعاء آخر ليست سوى طلب آخر إلى رف أسطر الكتابة نفسه.
استدعِ ring من Main أكثر من مرة
غيّر Main فقط ليستدعي التابع نفسه مرتين. اترك تابع ring نفسه دون تغيير. الجسم ما زال يكتب ding مرة لكل استدعاء.
using System;
public class Pine
{
public static void Main()
{
ring();
ring();
}
static void ring()
{
Console.WriteLine("ding");
}
}
هذا هو الملف الثاني. ليس الملف الذي تحتفظ به لشكل الاستدعاء الواحد، لكنه يعلّم التابع نفسه. شغّل dotnet run. يجب أن تُظهر الشاشة سطرين، كل منهما يقول ding. الاستدعاء الأول يشغّل الجسم مرة. الاستدعاء الثاني يشغّل الجسم نفسه مرة أخرى. إعادة الاستخدام هذه هي سبب تسمية الأسطر. لم تنسخ WriteLine مرة ثانية تحت ring. كتبت استدعاءً ثانيًا في Main.
إذا تركت ring(); واحدًا فقط، تعود الشاشة إلى ding واحد. تعريف التابع لا يكتب من تلقاء نفسه. فقط استدعاء من Main يشغّل الجسم. ملف يعرّف ring دون استدعائه يمكن أن يُبنى ويُظهر شاشة فارغة عند التشغيل. بعد أن ترى سطرين، أعد الملف المحتفظ به باستدعاء واحد إن كان ذلك الشكل الذي تريد حفظه: ring(); واحد في Main.
قطع ترويسة التابع
في هذه الصفحة الترويسة هي static void ring(). اقرأها من اليسار إلى اليمين. static يسمح لـ Main باستدعاء التابع في هذا الشكل للمبتدئين. void يعني أن لا قيمة تعود عبر الاستدعاء. ring هو الاسم. () فارغة عمدًا: هذه الجلسة لا تمرّر كلمات أو أرقامًا إلى التابع. الصفحة التالية، parameters، تضع أسماء داخل تلك الأقواس. الصفحة بعدها، return، تغيّر void عندما تحتاج قيمة عائدة. أبقِ الاثنين للاحق. اليوم () الفارغة وvoid كافيان.
📊 Header piece on this page
| Piece | On this page |
|---|---|
static |
Main can call ring without an object |
void |
ring does not hand a value back |
ring |
the name you type in the call |
() |
no values go in on this page |
{ ... } |
the body that writes ding |
الاستدعاء في Main يجب أن يطابق الاسم تمامًا: ring(); بحرف r صغير، وأقواس فارغة، وفاصلة منقوطة. كتابة Ring(); بحرف R كبير اسم مختلف لـ C#. كتابة ring بلا () ليست استدعاءً في هذا الشكل. كتابة Console.WriteLine("ring"); تكتب الأحرف الأربعة لكلمة ring؛ ولا تشغّل جسم التابع. أبقِ الاستدعاء ring(); عندما تريد ding على الشاشة.
بقايا شائعة هي مرور foreach قديم على plants ما زال جالسًا في Main بجانب الاستدعاء الجديد. عندها قد تُظهر الشاشة leaf وmint، أو 2 و4 و6، بدل ding — أو النوعين مخلوطين. امسح Main حتى استدعاءات ring(); التي يحتاجها هذا الدرس. خلط آخر هو وضع التابع داخل أقواس Main المعقوفة. توابع هذه الصفحة تجلس داخل الصنف، بجانب Main، لا متداخلة داخل Main.
foreach من الصفحة السابقة مرّ على قيم مخزّنة مسبقًا في مصفوفة. هذه الصفحة لا تمرّ على مصفوفة. تسمّي تابع void وتستدعيه. لا تترك foreach (string plant in plants) في نفس Main وتتساءل لماذا تُظهر الشاشة leaf بدل ding. Main المحتفظ به لهذه الجلسة يجب أن يحمل استدعاء ring(); فقط. جسم التابع يحمل سطر الكتابة لـ ding.
يمكنك الآن كتابة static void ring()، ووضع WriteLine في أقواسه المعقوفة، واستدعاء ring() من Main حتى تُظهر الشاشة ding. الاستدعاء مرتين يكتب ding مرتين دون نسخ الجسم. الأقواس الفارغة وvoid تبقيان في هذه الصفحة عمدًا. الصفحة التالية هي parameters، حيث تدخل الأسماء داخل الأقواس حتى يستخدم التابع قيمًا تمرّرها من Main.
الشاشة هي جسم التابع
الملف الذي تحتفظ به يكتب ding مرة عندما يكون لـ Main استدعاء واحد. الاسم ring في الاستدعاء، وأحرف ring ليست على الشاشة ككلمة مطبوعة إلا إذا وضعتها بين علامات اقتباس. () الفارغة تجلس على الترويسة وعلى الاستدعاء معًا. تداخل ring داخل Main ليس الشكل الذي يبنيه هذا الدرس.
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى