C#: التمرين: مراجعة الأساسيات
1. محول درجات الحرارة
الهدف: تنفيذ التحويل في كلا الاتجاهين بين درجتي مئوية وفهرنهايت. يختار المستخدم اتجاه التحويل ويدخل قيمة درجة الحرارة، ثم يعرض البرنامج النتيجة.
المتطلبات:
- اطلب من المستخدم اختيار الاتجاه (1: من درجة مئوية إلى فهرنهايت، 2: من فهرنهايت إلى درجة مئوية)
- قراءة قيمة درجة الحرارة من المستخدم
- استخدم صيغة التحويل وأظهر النتيجة (بمنزلتين عشريتين)
- التعامل مع الاختيارات غير الصحيحة بعرض رسالة توضيحية مفيدة
صيغ التحويل:
- من درجة مئوية إلى فهرنهايت:
F = C * 9 / 5 + 32 - من فهرنهايت إلى مئوية:
C = (F - 32) * 5 / 9
▶ مثال
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. آلة حاسبة بسيطة
الهدف: إنشاء آلة حاسبة تدعم العمليات الحسابية الأساسية الأربع. يقوم المستخدم بإدخال رقمين وعلامة عملية، ويقوم البرنامج بعرض النتيجة مع معالجة حالة القسمة على الصفر.
المتطلبات:
- اطلب من المستخدم إدخال رقمين وعلامة عملية حسابية (+، -، *، /)
- استخدم عبارة
switchلمطابقة العامل وتنفيذ العملية المقابلة - التحقق من وجود عملية قسمة على الصفر وعرض رسالة خطأ واضحة ومفهومة
- عرض رسالة في حالة استخدام عوامل حسابية غير صالحة
▶ مثال
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. يقوم المستخدم بالتخمين مرارًا وتكرارًا، ويقدم البرنامج تلميحات مثل «أعلى من ذلك» أو «أقل من ذلك» حتى يتم العثور على الرقم الصحيح، ثم يعرض إجمالي عدد المحاولات.
المتطلبات:
- استخدم الفئة
Randomلتوليد عدد صحيح عشوائي يتراوح بين 1 و100 - استخدم حلقة
whileللسماح للمستخدم بالتخمين مرارًا وتكرارًا - بعد كل تخمين، قدم تلميحًا بـ«أعلى من اللازم» أو «أقل من اللازم»
- عند الإجابة الصحيحة، اعرض رسالة تهنئة والعدد الإجمالي للمحاولات
▶ مثال
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 المتداخلة لطباعة نمطين شائعين من النجوم — مثلث قائم الزاوية وهرم — للتدرب على الحلقات وتسلسل السلاسل.
المتطلبات:
- المثلث القائم الزاوية: اطبع i نجمة في الصف i
- الهرم: اطبع العدد المناسب من المسافات البادئة والنجوم في كل صف لتوسيط النجوم
- يتم تحديد عدد الصفوف بناءً على ما يدخله المستخدم
▶ مثال
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 هو الخيار الأنسب.📖 ملخص
- قام محول درجات الحرارة بممارسة
if...else ifفي الجمل الشرطية والعمليات الحسابية - تم استخدام الآلة الحاسبة البسيطة لممارسة
switchفي معالجة التفرع وعمليات القسمة على الصفر - لعبة تخمين الأرقام التي تم التدرب عليها باستخدام حلقات
do...whileوفئةRandom - استخدمت أنماط النجوم حلقات
forالمتداخلة وتقنيات ربط السلاسل
📝 تمارين
- أضف حلقة إلى محول درجة الحرارة بحيث يمكن للمستخدم إجراء التحويل مرارًا وتكرارًا حتى يقوم بإدخال
qللخروج. - إضافة دعم عملية «الجزء المتبقي» (
%) إلى الآلة الحاسبة البسيطة. - تحسين لعبة تخمين الأرقام: عندما يقوم المستخدم بإدخال قيمة غير رقمية، اطلب منه المحاولة مرة أخرى بدلاً من إيقاف تشغيل التطبيق.
- اطبع نمطًا هرميًّا مقلوبًا (الصف الأوسع في الأعلى، والأضيق في الأسفل).