C#: التمرين: مراجعة الأساسيات

1. محول درجات الحرارة

الهدف: تنفيذ التحويل في كلا الاتجاهين بين درجتي مئوية وفهرنهايت. يختار المستخدم اتجاه التحويل ويدخل قيمة درجة الحرارة، ثم يعرض البرنامج النتيجة.

المتطلبات:

صيغ التحويل:

▶ مثال

CSHARP
Console.WriteLine("Temperature Converter");
Console.WriteLine("1. Celsius to Fahrenheit");
Console.WriteLine("2. Fahrenheit to Celsius");
Console.Write("Choose (1 or 2): ");
string choice = Console.ReadLine();

if (choice == "1")
{
    Console.Write("Enter Celsius temperature: ");
    double celsius = double.Parse(Console.ReadLine());
    double fahrenheit = celsius * 9 / 5 + 32;
    Console.WriteLine($"{celsius}°C = {fahrenheit:F2}°F");
}
else if (choice == "2")
{
    Console.Write("Enter Fahrenheit temperature: ");
    double fahrenheit = double.Parse(Console.ReadLine());
    double celsius = (fahrenheit - 32) * 5 / 9;
    Console.WriteLine($"{fahrenheit}°F = {celsius:F2}°C");
}
else
{
    Console.WriteLine("Invalid choice. Please enter 1 or 2.");
}
▶ جرّب الكود
TEXT 📖 للعرض فقط
Temperature Converter
1. Celsius to Fahrenheit
2. Fahrenheit to Celsius
Choose (1 or 2): 1
Enter Celsius temperature: 100
100°C = 212.00°F
TEXT 📖 للعرض فقط
Temperature Converter
1. Celsius to Fahrenheit
2. Fahrenheit to Celsius
Choose (1 or 2): 2
Enter Fahrenheit temperature: 32
32°F = 0.00°C

2. آلة حاسبة بسيطة

الهدف: إنشاء آلة حاسبة تدعم العمليات الحسابية الأساسية الأربع. يقوم المستخدم بإدخال رقمين وعلامة عملية، ويقوم البرنامج بعرض النتيجة مع معالجة حالة القسمة على الصفر.

المتطلبات:

▶ مثال

CSHARP
Console.Write("Enter the first number: ");
double num1 = double.Parse(Console.ReadLine());

Console.Write("Enter an operator (+ - * /): ");
string op = Console.ReadLine();

Console.Write("Enter the second number: ");
double num2 = double.Parse(Console.ReadLine());

double result;

switch (op)
{
    case "+":
        result = num1 + num2;
        Console.WriteLine($"{num1} + {num2} = {result}");
        break;
    case "-":
        result = num1 - num2;
        Console.WriteLine($"{num1} - {num2} = {result}");
        break;
    case "*":
        result = num1 * num2;
        Console.WriteLine($"{num1} * {num2} = {result}");
        break;
    case "/":
        if (num2 == 0)
        {
            Console.WriteLine("Error: Division by zero is not allowed!");
        }
        else
        {
            result = num1 / num2;
            Console.WriteLine($"{num1} / {num2} = {result}");
        }
        break;
    default:
        Console.WriteLine("Invalid operator!");
        break;
}
▶ جرّب الكود
TEXT 📖 للعرض فقط
Enter the first number: 10
Enter an operator (+ - * /): +
Enter the second number: 3.5
10 + 3.5 = 13.5
TEXT 📖 للعرض فقط
Enter the first number: 8
Enter an operator (+ - * /): /
Enter the second number: 0
Error: Division by zero is not allowed!

3. لعبة تخمين الأرقام

الهدف: يقوم البرنامج بتوليد عدد صحيح عشوائي يتراوح بين 1 و100. يقوم المستخدم بالتخمين مرارًا وتكرارًا، ويقدم البرنامج تلميحات مثل «أعلى من ذلك» أو «أقل من ذلك» حتى يتم العثور على الرقم الصحيح، ثم يعرض إجمالي عدد المحاولات.

المتطلبات:

▶ مثال

CSHARP
Random random = new Random();
int target = random.Next(1, 101);
int guess;
int attempts = 0;

Console.WriteLine("Number Guessing Game (1-100)");

do
{
    Console.Write("Enter your guess: ");
    guess = int.Parse(Console.ReadLine());
    attempts++;

    if (guess > target)
    {
        Console.WriteLine("Too high!");
    }
    else if (guess < target)
    {
        Console.WriteLine("Too low!");
    }
    else
    {
        Console.WriteLine($"Congratulations! The answer is {target}. You got it in {attempts} attempts.");
    }
} while (guess != target);
▶ جرّب الكود
TEXT 📖 للعرض فقط
Number Guessing Game (1-100)
Enter your guess: 50
Too low!
Enter your guess: 75
Too high!
Enter your guess: 62
Too low!
Enter your guess: 68
Congratulations! The answer is 68. You got it in 4 attempts.

4. أنماط النجوم

الهدف: استخدام حلقات for المتداخلة لطباعة نمطين شائعين من النجوم — مثلث قائم الزاوية وهرم — للتدرب على الحلقات وتسلسل السلاسل.

المتطلبات:

▶ مثال

CSHARP
Console.Write("Enter the number of rows: ");
int rows = int.Parse(Console.ReadLine());

Console.WriteLine("Right Triangle:");
for (int i = 1; i <= rows; i++)
{
    for (int j = 1; j <= i; j++)
    {
        Console.Write("*");
    }
    Console.WriteLine();
}

Console.WriteLine("Pyramid:");
for (int i = 1; i <= rows; i++)
{
    for (int s = 1; s <= rows - i; s++)
    {
        Console.Write(" ");
    }
    for (int j = 1; j <= 2 * i - 1; j++)
    {
        Console.Write("*");
    }
    Console.WriteLine();
}
▶ جرّب الكود
TEXT 📖 للعرض فقط
Enter the number of rows: 5
Right Triangle:
*
**
***
****
*****
Pyramid:
    *
   ***
  *****
 *******
*********

❓ أسئلة شائعة

س ماذا يحدث إذا تلقى double.Parse مدخلاً غير رقمي؟
ج يُطلق استثناء FormatException. في المشاريع الفعلية، استخدم double.TryParse للتحويل الآمن.
س لماذا يبلغ الحد الأعلى لـ Random.Next(1, 101) 101؟
ج تستخدم الطريقة فترة نصف مفتوحة — حيث يُولِّد Next(1, 101) أعدادًا صحيحة من 1 إلى 100، باستثناء 101.
س كيف يتم حساب عدد النجوم في كل صف من الهرم؟
ج يحتوي الصف i على 2 * i - 1 نجمة — الصف 1 يحتوي على 1 نجمة، والصف 2 يحتوي على 3 نجوم، والصف 3 يحتوي على 5 نجوم، وهكذا دواليك.
س ما الفرق بين do...while وwhile؟
ج do...while تنفذ نص الدالة مرة واحدة على الأقل؛ أما while فقد لا تنفذها على الإطلاق. تتطلب لعبة التخمين تخمينًا واحدًا على الأقل، لذا فإن do...while هو الخيار الأنسب.

📖 ملخص

📝 تمارين

  1. أضف حلقة إلى محول درجة الحرارة بحيث يمكن للمستخدم إجراء التحويل مرارًا وتكرارًا حتى يقوم بإدخال q للخروج.
  2. إضافة دعم عملية «الجزء المتبقي» (%) إلى الآلة الحاسبة البسيطة.
  3. تحسين لعبة تخمين الأرقام: عندما يقوم المستخدم بإدخال قيمة غير رقمية، اطلب منه المحاولة مرة أخرى بدلاً من إيقاف تشغيل التطبيق.
  4. اطبع نمطًا هرميًّا مقلوبًا (الصف الأوسع في الأعلى، والأضيق في الأسفل).
Web-Tutorial.com

فريق Web-Tutorial التقني

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

100%