أمثلة على عبارات التكرار IF، Switch، For، While في لغة C#

⚡ ملخص ذكي

تتحكم العبارات الشرطية والحلقات في لغة C# في سير البرنامج من خلال تشغيل أو تكرار أجزاء من التعليمات البرمجية بناءً على منطق معين. وتتيح عبارات if و switch و while و for للبرنامج اتخاذ القرارات والتكرار بكفاءة.

  • 🔀 التحكم في التدفق: تُغير العبارات الشرطية ترتيب التنفيذ بحيث لا يقوم البرنامج بتشغيل سوى العبارات التي تتطابق مع منطق البرنامج.
  • ❓ شرط الشرط: تقوم عبارة if بتقييم تعبير منطقي، وتنفذ كتلة واحدة عندما يكون صحيحًا، وكتلة أخرى عندما يكون خاطئًا.
  • 🔢 عبارة التبديل: تقوم عبارة switch بمقارنة قيمة واحدة مع عدة تسميات للحالات وتستخدم break للتوقف بمجرد العثور على تطابق.
  • 🔁 حلقة While: تقوم حلقة while بتكرار مجموعة من التعليمات طالما أن شرطها يظل صحيحًا، وهو ما يناسب عددًا غير معروف من التكرارات.
  • 🔄 حلقة For: تقوم حلقة for بتهيئة واختبار وزيادة عداد في سطر واحد، وهو أمر مثالي عندما يكون عدد التكرارات معروفًا.
  • 🤖 مساعدة الذكاء الاصطناعي: يقوم GitHub Copilot بصياغة منطق if و switch و loop، بينما يعيد ML.NET استخدام نفس الشروط لتفرع مسارات التعلم الآلي.

عبارات C# الشرطية

التحكم في التدفق والعبارات الشرطية

التحكم في التدفق والبيانات الشرطية متوفرة في أي لغة برمجة لتغيير تدفق البرنامج.

على سبيل المثال، إذا أراد شخص ما تنفيذ مجموعة معينة من العبارات بناءً على منطق معين، فسيكون التحكم في التدفق والعبارات الشرطية مفيدًا.

سوف تحصل على فهم أفضل عندما نستعرض البيانات المختلفة المتوفرة في لغة C#.

يرجى ملاحظة أن كافة التعليمات البرمجية أدناه تم إجراؤها على ملف Program.cs.

1) إذا كان البيان

تُستخدم عبارة if لتقييم تعبير منطقي قبل تنفيذ مجموعة من التعليمات. إذا كانت نتيجة التعبير صحيحة، فسيتم تنفيذ مجموعة من التعليمات، وإلا فسيتم تنفيذ مجموعة أخرى.

في المثال أدناه، تتم مقارنة قيمة متغير يُسمى "القيمة". إذا كانت قيمة المتغير أقل من 10، فسيتم تنفيذ أمر واحد، وإلا فسيتم تنفيذ أمر آخر.

إذا البيان

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program 
 {
  static void Main(string[] args) 
  {
   Int32 value = 11;
   
   if(value<10)
   {
    Console.WriteLine("Value is less than 10");
   }
   else
   {
    Console.WriteLine("Value is greater than 10");
   }
    Console.ReadKey();
  }
 }
}

Code تفسير:-

  1. نحدد أولاً متغيرًا يسمى value ونضعه على القيمة 11.
  2. نستخدم بعد ذلك عبارة "if" للتحقق مما إذا كانت القيمة أقل من 10 للمتغير. وستكون النتيجة إما صحيحة أو خاطئة.
  3. إذا تم تقييم شرط if على أنه صحيح، فإننا نرسل بعد ذلك الرسالة "القيمة أقل من 10" إلى وحدة التحكم.
  4. إذا تم تقييم شرط if على خطأ، فإننا نرسل الرسالة "القيمة أكبر من 10" إلى وحدة التحكم.

إذا تم إدخال الكود أعلاه بشكل صحيح وتم تنفيذ البرنامج بنجاح، سيتم عرض الإخراج التالي.

الإخراج:

إذا البيان

يمكننا أن نرى بوضوح أن عبارة "if" تم تقييمها على أنها خاطئة. ومن ثم تم إرسال الرسالة "القيمة أكبر من 10" إلى وحدة التحكم.

2) بيان التبديل

عبارة التبديل هي تحسين لعبارة "if". إذا كان لديك تعبيرات متعددة تحتاج إلى تقييمها في طلقة واحدة، فستصبح كتابة عبارات "if" متعددة مشكلة.

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

دعونا نرى كيف يعمل هذا مع المثال التالي. هنا، نقارن مرة أخرى قيمة متغير يُسمى "القيمة". ثم نتحقق مما إذا كانت القيمة تساوي 1، أو 2، أو أي قيمة أخرى مختلفة تمامًا.

بيان التبديل

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args) 
  {
   Int32 value=11;
   switch(value) 
   {
     case 1: Console.WriteLine("Value is 1");	
     break;
     case 2: Console.WriteLine("Value is 2");
     break;
     default: Console.WriteLine("value is different");
     break;
   }
  }
 }
}

Code تفسير:-

  1. نحدد أولاً متغيرًا يسمى "القيمة" ونضعه على القيمة 11.
  2. ثم نستخدم عبارة "switch" للتحقق من قيمة المتغير "value".
  3. يتم استخدام بيانات الحالة لتعيين شروط مختلفة. وبناء على الشروط يمكن تنفيذ مجموعة من العبارات. يمكن أن تحتوي عبارة التبديل على حالات حالة متعددة. يتحقق بيان الحالة الأول لمعرفة ما إذا كانت قيمة المتغير تساوي 1.
  4. إذا كان بيان الحالة الأول صحيحًا، فستتم كتابة الرسالة "القيمة هي 1" إلى وحدة التحكم.
  5. يتم استخدام عبارة Break للانفصال عن عبارة التبديل بأكملها، بمجرد تحقق الشرط.
  6. الشرط الافتراضي هو شرط خاص. هذا يعني فقط أنه إذا لم يتم تقييم أي تعبير حالة على أنه صحيح، فقم بتشغيل مجموعة العبارات للشرط الافتراضي.

إذا تم إدخال الكود أعلاه بشكل صحيح وتم تنفيذ البرنامج بنجاح، فسيتم عرض الناتج التالي. يطبع الناتج القيمة الافتراضية "Value is different"، نظرًا لعدم استيفاء أي شرط.

الإخراج:

بيان التبديل

3) أثناء الحلقة

يتم استخدام حلقة while لأغراض تكرارية. لنفترض أنك إذا كنت تريد تكرار مجموعة معينة من العبارات لعدد معين من المرات، فسيتم استخدام حلقة while.

في مثالنا أدناه، نستخدم عبارة while لعرض قيمة المتغير 'i'. يتم استخدام عبارة while لعرض القيمة 3 مرات.

حائط اللوب

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args) 
  {
   Int32 value=3,i=0;
   
   while(i<value)
   {
    Console.WriteLine(i);
    i=i+1;
   }
    Console.ReadKey(); 
  }
 }
}

Code تفسير:-

  1. اثنان عدد صحيح المتغيرات يتم تعريفهما، أحدهما القيمة والآخر هو "i". يتم استخدام متغير القيمة كحد أعلى يجب أن نكرر بياننا while عنده. و"i" هو المتغير الذي ستتم معالجته أثناء التكرار.
  2. في عبارة while، يتم التحقق باستمرار من قيمة "i" مقابل الحد الأعلى.
  3. نعرض هنا قيمة "i" على وحدة التحكم. نقوم أيضًا بزيادة قيمة "i".

إذا تم إدخال الكود أعلاه بشكل صحيح وتم تنفيذ البرنامج بنجاح، سيتم عرض الإخراج التالي.

الإخراج:

حائط اللوب

هنا يمكنك أن ترى أن عبارة while يتم تنفيذها ثلاث مرات وتزداد في نفس الوقت. وفي كل مرة، يتم عرض القيمة الحالية للمتغير 'i'.

4) للحلقة

تُستخدم حلقة "for" أيضًا لأغراض التكرار. على سبيل المثال، إذا أردت تكرار مجموعة معينة من التعليمات لعدد محدد من المرات، فسيتم استخدام حلقة "for".

في مثالنا أدناه، نستخدم عبارة "for" لعرض قيمة المتغير "i". يتم استخدام عبارة "for" لعرض القيمة 3 مرات.

لحلقة

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args) 
  {
   for(Int32 i=0;i<3;i++)
   {
    Console.WriteLine(i);
   }
    Console.ReadKey(); 
  
  }
 }
}

Code تفسير:-

  1. يتم استخدام الكلمة الأساسية "for" لبدء عبارة "for Loop".
  2. في "حلقة for"، نحدد 3 أشياء. الأول هو تهيئة قيمة المتغير، والتي سيتم استخدامها في "حلقة for".
  3. والثاني هو مقارنة قيمة "i" مع الحد الأعلى. في حالتنا، الحد الأعلى هو قيمة 3 (i<3).
  4. وأخيرًا، نقوم بزيادة قيمة "i" وفقًا لذلك.
  5. نعرض هنا قيمة "i" على وحدة التحكم.

إذا تم إدخال الكود أعلاه بشكل صحيح وتم تنفيذ البرنامج بنجاح، سيتم عرض الإخراج التالي.

الإخراج:

لحلقة

يمكنك هنا أن ترى أن عبارة "for" تم تنفيذها ثلاث مرات. وفي كل مرة، تم عرض القيمة الحالية للمتغير "i".

الأسئلة الشائعة

تُستخدم عبارة if للتعامل مع النطاقات والشروط المنطقية المعقدة، بينما تُقارن عبارة switch قيمة واحدة مع عدة حالات ثابتة. تُعدّ عبارة switch أكثر وضوحًا عند التعامل مع العديد من القيم المنفصلة، ​​بينما تُناسب عبارة if-else النطاقات والمتغيرات المتعددة والمعاملات المنطقية.

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

تختبر حلقة while شرطها قبل كل تكرار، لذا قد لا تُنفذ أي مرة. أما حلقة do-while فتختبر الشرط بعد تنفيذ الجزء الرئيسي منها، لذا فهي تُنفذ دائمًا مرة واحدة على الأقل، وهذا مناسب للقوائم والتحقق من صحة المدخلات.

تُنهي عبارة break الحلقة أو عبارة switch فورًا، بينما تتخطى عبارة continue ما تبقى من التكرار الحالي وتنتقل إلى التكرار التالي. كلتاهما تُغيران مسار التنفيذ، لكن عبارة break فقط هي التي تُنهي الحلقة بالكامل.

يُعدّ عامل الشرط الثلاثي ?: شكلاً مختصراً من جملة if-else. فهو يُقيّم شرطاً، ويُعيد القيمة الأولى عندما يكون الشرط صحيحاً، والقيمة الثانية عندما يكون خاطئاً، مما يُنتج عملية إسناد موجزة في سطر واحد.

تُكرر حلقة foreach المرور على كل عنصر من عناصر مجموعة مثل المصفوفة أو القائمة دون الحاجة إلى فهرس أو عداد. وهي تقرأ المجموعة بأمان وتمنع أخطاء الإزاحة بمقدار واحد وأخطاء تجاوز النطاق الشائعة.

نعم. يقترح GitHub Copilot استخدام كتل if و switch و while و for من تعليق أو اسم دالة داخل Visual Studio و VS Code. Revراجع كل اقتراح للتأكد من صحة الشروط وحدود الحلقة، لأن برنامج Copilot قد يُدخل أخطاء بمقدار واحد.

تستخدم مسارات ML.NET عبارات شرطية بلغة C# للتفرع بناءً على قيم الميزات، وحلقات تكرارية لمعالجة صفوف التدريب. وتُستخدم نفس منطق if و switch و for لإعداد البيانات وتوجيه التنبؤات، مع الحفاظ علىping سير عمل التعلم الآلي ذو كتابة قوية.

تلخيص هذه التدوينة بـ: