أولوية المعاملات
جزء من قسم Logic & Flow في رحلة C# على Coddy — الدرس 38 من 66.
تحدد أولوية العمليات الترتيب الذي يتم بموجبه تقييم العمليات في التعبير. يعد فهم الأولوية أمراً بالغ الأهمية لكتابة تعبيرات منطقية صحيحة.
انظر إلى هذا المثال:
int result = 5 + 3 * 2;ما هي قيمة result؟ إنها 11، وليست 16، لأن الضرب له أسبقية أعلى من الجمع.
إليك ترتيب أسبقية مبسط (من الأعلى إلى الأدنى):
- الأقواس
() - الضرب/القسمة
* / % - الجمع/الطرح
+ -
- معاملات المقارنة
< > <= >= - معاملات المساواة
== !=
- عامل AND المنطقي
&& - عامل OR المنطقي
|| - عوامل التعيين
= += -=إلخ.
لنرى كيف ينطبق هذا:
bool result = 5 > 3 && 10 < 20 || 7 == 8;أولاً، يتم تقييم المقارنات: 5 > 3 هو true، و 10 < 20 هو true، و 7 == 8 هو false.
ثم، عملية AND المنطقية: true && true هي true.
وأخيراً، عملية OR المنطقية: true || false هي true.
إذًا النتيجة هي true.
استخدم الأقواس لجعل الكود الخاص بك أكثر وضوحًا:
bool result = (5 > 3 && 10 < 20) || (7 == 8);التحدي
سهلقم بإنشاء دالة باسم EvaluateExpression تأخذ ثلاثة أعداد صحيحة (a, b, c) وتعيد قيمة منطقية (boolean).
يجب أن تعيد الدالة نتيجة هذا التعبير:a > b || a == c && b < c
ثم، قم بإنشاء دالة أخرى باسم EvaluateWithParentheses تقوم بتقييم:(a > b || a == c) && b < c
يجب أن يقرأ برنامجك ثلاثة أعداد صحيحة من وحدة التحكم (console) ويطبع نتائج كلا التقييمين في أسطر منفصلة.
ورقة مرجعية
تحدد أسبقية العمليات الترتيب الذي يتم بموجبه تقييم العمليات في التعبير.
ترتيب الأسبقية (من الأعلى إلى الأقل):
- الأقواس
() - الضرب/القسمة
* / % - الجمع/الطرح
+ - - عمليات المقارنة
< > <= >= - عمليات التساوي
== != - AND المنطقية
&& - OR المنطقية
|| - عمليات التعيين
= += -=إلخ.
مثال:
int result = 5 + 3 * 2; // النتيجة هي 11، وليست 16تعبير منطقي معقد:
bool result = 5 > 3 && 10 < 20 || 7 == 8;
// يتم التقييم إلى: true && true || false = true || false = trueاستخدم الأقواس للتوضيح:
bool result = (5 > 3 && 10 < 20) || (7 == 8);جرّب بنفسك
using System;
class Program
{
public static bool EvaluateExpression(int a, int b, int c)
{
// اكتب الكود الخاص بك هنا
}
public static bool EvaluateWithParentheses(int a, int b, int c)
{
// اكتب الكود الخاص بك هنا
}
static void Main(string[] args)
{
Console.WriteLine("Enter three integers:");
int a = int.Parse(Console.ReadLine());
int b = int.Parse(Console.ReadLine());
int c = int.Parse(Console.ReadLine());
// استدعِ الدوال الخاصة بك واطبع النتائج
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادتعريف وتهيئة المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادالمصفوفات المتعرجة (Jagged Arrays)عمليات المصفوفات الشائعةمراجعة - المصفوفات متعددة الأبعاد4تقنيات التحكم في التدفق
الإرجاع المبكرشروط الحمايةجمل القفز (goto)Break و Continueتسطيح الشروط المتداخلة7المعاملات المنطقية المتقدمة
التقييم المختصرالمعاملات المنطقية الشرطيةأولوية المعاملاتمراجعة - المعاملات المتقدمة2اتخاذ القرارات المتقدم
الشروط المتعددةالمنطق البولياني المعقدمقارنة بين If و Switchجمل Switch المتداخلةمراجعة - القرارات المتقدمة5معالجة الاستثناءات
أساسيات Try-Catchأنواع الاستثناءاتكتل Catch المتعددةالتعامل مع الملفاتكتلة FinallyUsing مقابل Try-Finallyاستثناءات مخصصةمراجعة - معالجة الأخطاء8نظام تحليل البيانات
إعداد جمع البياناتمنطق إدخال البيانات11HashSet الجزء الأول
ما هو الـ HashSet؟إضافة عنصرحذف عنصرالتحقق من وجود عنصرالفراغ والحجمملخص - HashSet3تحسينات الحلقات التكرارية
أداء الحلقات التكراريةالتكرار عبر البيانات المعقدةأنواع الحلقات التكراريةإعادة هيكلة الحلقات التكراريةملخص - الحلقات المحسنة6التعامل مع الـ Null
أساسيات الـ Null Referenceأنواع القيم القابلة للـ Nullأنماط التحقق من الـ Nullالبرمجة الدفاعيةملخص - أمان الـ Null