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

البرنامج الأول

لقد ثبّت SDK وشغّلت مختبرًا أولًا. أظهرت الشاشة pine. هذه الصفحة تبقى مع شكل البرنامج نفسه وتسأل سؤالًا مختلفًا: أي سطر داخل الملف كتب تلك الكلمة، وأي أسطر لم تكتب شيئًا. أنت لا تثبّت .NET من جديد. سطر الإصدار من الصفحة السابقة يمكن أن يبقى كما كان. أبقِ الفئة العامة باسم Pine، وأبقِ Main، وأبقِ Console.WriteLine("pine");. الشاشة التي تشرحها ما زالت سطرًا واحدًا، وذلك السطر هو pine.

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

the whole Pine file

csharp
using System;

public class Pine
{
    public static void Main()
    {
        Console.WriteLine("pine");
    }
}

using System يجهّز الأسماء القصيرة

أول سطر مفيد هو using System;. اقرأه كسطر تجهيز، لا كجملة ستطبعها الشاشة. يجلب أسماء من فضاء الأسماء System بشكل قصير حتى يظهر Console بلا مسار طويل. أنت لا ترى كلمة using على الشاشة. ولا ترى System على الشاشة. احذف هذا السطر في تجربة خاطئة وقد يفشل الاسم القصير Console لاحقًا — تلك قصة ترجمة ليوم آخر. على هذه الصفحة يبقى السطر، وتبقى الشاشة pine لأن هذا السطر لا يكتب.

سطر الفئة يسمّي النوع

سطر النوع التالي هو public class Pine. اقرأه ثلاث كلمات بمهمة، لا كنص شاشة. public يعني أن شيفرة أخرى مسموح لها باستخدام هذا النوع. أنت لا ترى public على الشاشة. class يعني أن هذا الملف يعرّف وحدة واحدة مسماة. أنت لا ترى class على الشاشة. Pine هو اسم تلك الوحدة. في هذا الشكل التعليمي يطابق جذع اسم الملف ذلك الاسم. غيّر الاسم على هذا السطر ويجب أن تتغير عادة اسم الملف معه. تلك القاعدة عن النوع والملف. ليست عن الشاشة. انظر إلى الشاشة مرة أخرى. الشاشة لا تُظهر Pine. تُظهر pine. حرف P الكبير وp الصغير ليسا الكلمة نفسها. سطر الفئة لا يكتب اسمه أبدًا على الشاشة.

الحرف بعد ذلك السطر هو قوس معقوف افتتاحي {. القوس الإغلاقي المطابق لاحقًا في الملف ينهي جسم الفئة. كل ما بين هذين القوسين ينتمي إلى الفئة Pine. الأقواس أسوار. تخبر C# أين تبدأ هذه الوحدة وأين تنتهي. السور ليس نصًا للشاشة. لن ترى { أو } بجانب pine. إن حذفت القوس الافتتاحي، الملف مكسور والمترجم يكتب خطأ بدل أن يبقى صامتًا. ذلك الخطأ ليس موضوع هذه الصفحة. هذه الصفحة تبقي كلا القوسين، والشاشة تبقى pine.

سطر Main هو حيث يبدأ وقت التشغيل

السطر التالي هو public static void Main(). هذا السطر الذي يشير إليه الناس عندما يُسألون أين يبدأ البرنامج، وهم محقون بشأن البداية. ويخطئون إن قالوا بعد ذلك إن الشاشة تُظهر Main. يبحث وقت التشغيل عن دالة بهذا الشكل عندما تشغّل المشروع. يبدأ التشغيل عند هذا السطر. البدء ليس نفس الشيء كالكتابة. الكلمات على السطر تعليمات عن كيفية البدء. ليست كلمات للشاشة.

خذ الكلمات واحدة تلو الأخرى، وافحص كل واحدة مقابل الشاشة. public مرة أخرى يعني أن الدالة يمكن بدؤها من الخارج. static يعني أن وقت التشغيل يمكنه بدء هذه الدالة دون بناء كائن أولًا. لم تقابل الكائنات بعد، فالحقيقة الوحيدة التي تحتاجها هي أن static مطلوب في هذا الشكل التعليمي وأنه لا يُطبع. void يعني أن هذه الدالة لا تُرجع قيمة لمن استدعاها. لا قصة مستدعٍ على هذه الصفحة، وvoid ليس على الشاشة. Main هو الاسم الذي يبحث عنه وقت التشغيل في هذا الشكل. الشاشة ما زالت لا تُظهر تلك الأحرف الأربعة. الأقواس المستديرة تعلّم قائمة المعاملات. على هذه الصفحة القائمة فارغة. الأقواس الفارغة لا تُطبع أيضًا.

إذن سطر Main يمكن أن يكون صحيحًا بطريقتين في آن واحد. وقت التشغيل بدأ هناك فعلًا. الشاشة لم تستلم كلمة واحدة من ذلك السطر. إن استراحت عيناك على Main لأنه في وسط الملف، حرّكهما. الكلمة التي تتذكرها من الشاشة هي pine، وpine غير مكتوب على هذا السطر.

السطر الداخلي يكتب pine

داخل Main، بين أقواسه المعقوفة الخاصة، يوجد سطر آخر. ذلك السطر هو Console.WriteLine("pine");. هذا هو السطر الذي يكتب الشاشة. له مسافة بادئة في الملف حتى ترى أنه داخل Main. المسافة البادئة مسافات. المسافات لا تُكتب على الشاشة أيضًا. يشغّل وقت التشغيل هذا السطر الداخلي لأنه داخل الدالة حيث يبدأ البرنامج. الشاشة تستخدم ما يكتبه هذا السطر الداخلي. لا تستخدم اسم الدالة الخارجية.

اقرأ السطر الداخلي من اليسار. Console هو مساعد الشاشة الذي يستخدمه هذا المسار. WriteLine يعني اكتب هذا، ثم أنهِ السطر. الجزء داخل الأقواس المستديرة هو ما يُكتب. داخل الأقواس تجلس كلمة pine بين علامتي اقتباس مزدوجتين. علامات الاقتباس تعلّم pine كنص. ليست جزءًا من النص. أزلها في ذهنك والكلمة المتبقية هي pine، وذلك هو كل الشاشة. اتركها في الملف. بلا علامات الاقتباس لا يعامل المترجم pine كحرفي نصي. الفاصلة المنقوطة في النهاية تُنهي الجملة لـ C#. أنت لا ترى فاصلة منقوطة على الشاشة. ترى pine، ثم ينتهي السطر لأن WriteLine أنهاه.

إليك سطر الكتابة وحده، حتى لا تخفيه الأسطر الأخرى.

only this line writes the screen

csharp
Console.WriteLine("pine");

لا شيء في أمر dotnet run يختار كلمة pine. الأمر يبدأ المشروع فقط. الكلمة تأتي من علامات الاقتباس. لو حملت علامات الاقتباس كلمة أخرى، لأظهرت الشاشة تلك الكلمة بدلًا منها، وهذه الصفحة لا تفعل ذلك. علامات الاقتباس على هذه الصفحة تحمل pine، فالشاشة pine. سطر واحد. بلا سطر ثانٍ. بلا علامات اقتباس على الشاشة. بلا كلمة Main. بلا كلمة Pine.

📊 Which line the screen shows

السطر الشاشة
using System; لا شيء من هذا السطر
public class Pine لا شيء من هذا السطر
public static void Main() لا شيء من هذا السطر
Console.WriteLine("pine") pine

ما يخطئ الناس في قراءته

الخطأ المعتاد أن تقرأ الملف من الأعلى وتفترض أن الكلمة الأكثر ألفة هي المخرجات. Main يبدو مهمًا، وهو مهم، لأن وقت التشغيل لن يبدأ هذا الشكل بدونه. الأهمية ليست مخرجات. يمكنك تغطية سطر Main بإصبعك وسطر الكتابة ما زال Console.WriteLine("pine");. لا يمكنك تغطية سطر الكتابة وما زلت تشرح الشاشة. خطأ آخر أن تقول إن الشاشة تُظهر Pine لأن الفئة اسمها Pine. الشاشة تستخدم الكلمة بين علامات الاقتباس، وتلك الكلمة مكتوبة بـ p صغير. خطأ ثالث أن تعد الأسطر. الملف يُظهر عدة أسطر وعدة أقواس. الشاشة تُظهر واحدًا. الأقواس، وكلمات public وstatic وvoid، واسم Main، واسم Pine، وusing System; كلها ما زالت في الملف بعد التشغيل. التشغيل لا يحذفها. ولا يطبعها أيضًا.

الشاشة تأتي من سطر واحد

يمكنك وضع إصبع على Console.WriteLine("pine"); وقول إن هذا السطر الذي تأتي منه الشاشة. يمكنك وضع إصبع على public static void Main() وقول إن وقت التشغيل يبدأ هناك وأن كلمة Main ليست على الشاشة. يمكنك وضع إصبع على public class Pine وقول إن هذا الاسم يطابق النوع التعليمي ولا يطابق الشاشة. الصفحة التالية تضع ملاحظة في الملف. الملاحظة لشخص يقرأ الملف. الشاشة ستبقى pine، لأن الملاحظة ليست WriteLine ثانيًا.
أبقِ عادات Java المتبقية بـ System.out.println("mint") بعيدًا عن هذه الصفحة عندما تتدرب على سطر كتابة C#. أبقِ اختلاق مسارات ASP.NET بعيدًا عن هذه الصفحة. أبقِ معاملة dotnet --version ككلمة الشاشة بعيدًا عن هذه الصفحة — سطر الإصدار كان إثبات تثبيت، لا مخرجات هذا البرنامج. عندما تستطيع تسمية سطر الكتابة ورفض التخمينات الخاطئة من Main وPine، يكون البرنامج الأول قد أدى عمله وأنت جاهز لـ C# Comments إن واصلت.

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

جاهز للبدء

اختبر معرفتك

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

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

📝 التعليمات

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