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

المعاملات

اكتب تابعًا باسم greet يأخذ كلمة واحدة داخله. داخل الأقواس اكتب string name. في الجسم اكتب hi، ومسافة، ثم name بـ Console.WriteLine("hi " + name);. من Main استدعِ greet("lena");. يجب أن تُظهر الشاشة سطرًا واحدًا: hi lena. حروف lena ليست مكتوبة ثابتة داخل التابع. تصل عبر الاستدعاء وتجلس في الاسم name لذلك المرور. هذا التسليم هو ما تعلّمه هذه الصفحة. أبقِ اسم الصنف العام Pine.

اسم داخل الأقواس

في صفحة التوابع بقيت الأقواس بعد ring فارغة. سطر الكتابة كان دائمًا ding. هنا تحمل الأقواس اسمًا بنوعه حتى يستطيع كل استدعاء إرسال قيمة مختلفة. ذلك الاسم المكتوب بنوعه هو المعامل. القيمة التي تكتبها في الاستدعاء هي الحجة لذلك المرور.
افتح ملف Pine. اسم الصنف يبقى Pine. هذه الصفحة لا تعيد تسمية النوع. احذف أي عرض ring(); بأقواس فارغة إن كان ذلك كل ما يحمله Main بعد وما زلت جاهزًا لشكل هذه الصفحة. احذف أي بقايا foreach. احذف أي سطر ReadLine. الملف الذي تحتفظ به لا ينتظر الكتابة.
خارج Main، وما زلت داخل أقواس الصنف المعقوفة، تبدأ الترويسة في هذا الشكل للمبتدئين بـ static void. بين الأقواس يجلس string ثم name — النوع أولًا، ثم اسم المعامل. C# يكتب النوع string بحرف s صغير في هذا الشكل. الجسم يستخدم name بلا علامات اقتباس حوله، مربوطًا بالنص الثابت "hi " بعلامة زائد. الاقتباس حول "hi " يعلّم الحروف الثابتة. name العاري يعلّم القيمة التي وصلت من الاستدعاء. احفظ الملف قبل التشغيل. البرنامج الكامل الأول في الصندوق التالي.

الملف الذي تحتفظ به

هذه النسخة التي تشغّلها أولًا. Main يحمل الاستدعاء بقيمة داخل الأقواس. greet يحمل سطر الكتابة الذي يستخدم تلك القيمة.

greet takes a string

csharp
using System;

public class Pine
{
    public static void Main()
    {
        greet("lena");
    }

    static void greet(string name)
    {
        Console.WriteLine("hi " + name);
    }
}

اقرأه من الأعلى. using System; يجهّز أسماء قصيرة. public class Pine يسمّي النوع. public static void Main() حيث يبدأ وقت التشغيل. الاستدعاء greet("lena"); يرسل النص إلى المعامل. static void greet(string name) يحمل Console.WriteLine("hi " + name);. سطر واحد على الشاشة: hi lena.

شغّله بـ dotnet run. يكتب البرنامج سطرًا واحدًا ويتوقف. لا ينتظر أن تكتب شيئًا. إن انتظر dotnet run، فما زال ReadLine في الملف. احذف ذلك السطر وأبقِ greet("lena"); مع تابع greet أعلاه. الشاشة تُظهر hi lena. إن أظهرت الشاشة فقط ding، فما زال استدعاء قديم ring(); يعمل. إن أظهرت الشاشة حروف name، فسطر كتابة يضع اقتباسًا حول تلك الكلمة: Console.WriteLine("name");. لا تعيد تثبيت .NET SDK لشاشة تُظهر السطر الخطأ.

امشِ تشغيلًا كاملًا بالترتيب. يبدأ C# عند Main. الاستدعاء greet("lena"); يرسل النص lena إلى المعامل name. داخل greet، يبني WriteLine كلمة hi، ومسافة، ثم تلك القيمة، فتُظهر الشاشة hi lena. ثم ينتهي greet وينتهي Main. لم تكتب Console.WriteLine("hi lena"); داخل Main. كتبت الجزء الثابت مرة تحت greet ومرّرت lena من الاستدعاء.
المعامل فارغ حتى يملأه الاستدعاء. في الاستدعاء الأول يحمل name قيمة lena لذلك المرور فقط. في استدعاء لاحق بـ "sam" يحمل نفس اسم المعامل قيمة مختلفة. لا تنشئ تابعًا ثانيًا للكلمة الثانية؛ ترسل حجة جديدة إلى نفس الترويسة.

نفس التابع، كلمات مختلفة

غيّر فقط Main ليستدعي greet مرتين بحجتين مختلفتين. اترك تابع greet نفسه كما هو.

greet with two arguments

csharp
using System;

public class Pine
{
    public static void Main()
    {
        greet("lena");
        greet("sam");
    }

    static void greet(string name)
    {
        Console.WriteLine("hi " + name);
    }
}

هذا الملف الثاني. يعلّم نفس التابع باستدعاءين. شغّل dotnet run. يجب أن تُظهر الشاشة سطرين: hi lena، ثم hi sam. الاستدعاء الأول يملأ name بـ lena. الاستدعاء الثاني يملأ name بـ sam. لم تنسخ WriteLine تحت greet. غيّرت فقط القيم داخل الاستدعاءات.
إن استدعيت greet() بأقواس فارغة بينما الترويسة ما زالت تقول string name، يكتب البناء خطأً — يجب أن يوفّر الاستدعاء string. إن تركت ring(); قديمًا بأقواس فارغة من صفحة التوابع في نفس Main، فذلك الاستدعاء لا يطابق greet، وقد يكتب تابع ring المتبقي ding بجانب أسطر hi. صفِّ Main إلى استدعاءات greet التي يحتاجها هذا الدرس. بعد أن ترى سطرين، أعد ملف الاستدعاء الواحد المحتفظ به إن كان ذلك الشكل الذي تريد حفظه: greet("lena"); واحد في Main.

عدد صحيح كقيمة

المعاملات ليست للنص فقط. اكتب تابعًا ثانيًا يأخذ int باسم n ويكتبه. استدعِه من Main بأعداد صحيحة مثل show(9); و show(4);.

show takes an int

csharp
using System;

public class Pine
{
    public static void Main()
    {
        show(9);
        show(4);
    }

    static void show(int n)
    {
        Console.WriteLine(n);
    }
}

هذا الملف الثالث. ليس الملف الذي تحتفظ به لشكل greet. شغّل dotnet run. يجب أن تُظهر الشاشة سطرين: 9، ثم 4. بلا اقتباس حول 9 أو 4 في الاستدعاء — هما قيمتا int، لا نص. داخل show، يكتب Console.WriteLine(n) العدد الذي وصل. بعد أن ترى هذين السطرين، أعد عرض greet. كلا النسختين C# صالح. تعلّمان الفكرة نفسها: الاستدعاء يرسل قيمة، والمعامل يحملها للجسم.
اقرأ تشغيل int مرة أخرى. الاستدعاء الأول يضع n على 9 ويكتب 9. الاستدعاء الثاني يضع n على 4 ويكتب 4. الاسم n يُعلن مرة في الترويسة كـ int n. كل استدعاء يعطيه قيمة جديدة لذلك المرور. تمرير كلمة مقتبسة إلى show، مثل show("nine");، لا يطابق int في هذا الشكل — يكتب البناء خطأً. تمرير عدد عارٍ إلى greet، مثل greet(3);، لا يطابق string — يكتب البناء خطأً مجددًا. طابق نوع الحجة مع نوع المعامل.

خلط شائع هو كتابة اسم المعامل كنص: Console.WriteLine("name");. ذلك يكتب حروف n-a-m-e. لا يكتب lena. أبقِ Console.WriteLine("hi " + name) بلا اقتباس حول name حين تريد حروف الحجة على الشاشة. خلط آخر هو إعلان المعامل في Main بدل ترويسة التابع. الاسم المكتوب بنوعه ينتمي داخل greet(...) أو show(...)، لا داخل أقواس Main في هذه الصفحة. () الفارغة من صفحة ring لا تكفي حين تطلب الترويسة string name.

void ما زال يعني أن شيئًا لا يعود عبر الاستدعاء. يمكنك وضع string name أو int n داخل أقواس التابع، وتمرير قيمة مطابقة في الاستدعاء، وكتابة تلك القيمة من الجسم. استدعاءان بحجتين يكتبان سطرين مختلفين دون نسخ التابع. الصفحة التالية هي return، حيث يعيد التابع قيمة إلى Main بدل الكتابة فقط داخل الجسم.

الشاشة تحمل الحجة

الملف الذي تحتفظ به يكتب hi lena عندما يستدعي Main الأمر greet("lena");. الاسم name في سطر الكتابة بلا اقتباس حوله. الاقتباس حول name يكتب حروفًا، لا الحجة. () الفارغة على الاستدعاء لا تطابق ترويسة تطلب string name.

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

جاهز للبدء

اختبر معرفتك

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

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

📝 التعليمات

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