 |
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
|
|
نشاط [ F.Abdelaziz ]
قوة السمعة:
|
|
01-04-2018, 10:21 PM
المشاركة 11
|
|
تاسعا : صنع (إتخاذ) القرار Decision Making: عوامل المساواة Equality والعلاقات (الصلات) Relational
"الشرط" condition هو "تعبير" يمكن أن يكون صحيحًا true أو خطأ false . يقدم هذا القسم إصدارًا بسيطًا من عبارة if فى السى شارب والتى تسمح للتطبيق باتخاذ قرار بناءً على قيمة الشرط . على سبيل المثال ، يحدد الشرط "الدرجة أكبر من أو تساوي 60" ما إذا كان الطالب قد اجتاز الاختبارًا أم لا. إذا كان الشرط الموجود في عبارة if صحيحًا ، فسيتم تنفيذ جسم عبارة if. إذا كان الشرط خاطئًا ، فلن يتم تنفيذ الجسم . سنرى مثالا قريبا.
الشروط في عبارات if يمكن تشكيلها باستخدام عوامل المساواة ( == , != ) وعوامل العلاقات ( > , < , >= , <= ) الموضحة في الشكل21. لدى كل من عاملى التساوى ( == , != ) نفس المستوى من الأسبقية ، ولكل من عوامل العلاقات
( > , < , >= , <= ) نفس مستوى الأسبقية ، ولعاملى المساواة أسبقية أقل من عوامل العلاقات . انها جميعا ترتبط من اليسار إلى اليمين .

أخطاء برمجية شائعة 5 :
يمكن أن يؤدي الخلط بين عامل المساواة ، == ، وعامل التخصيص ، = ، إلى حدوث خطأ منطقي أو خطأ في بناء الجملة. يجب قراءة عامل المساواة على أنه “is equal to,” ، ويجب قراءة عامل التخصيص على أنه “gets” أو "يحصل" أو “gets the value of.” . لتجنب الخلط ، يقرأ بعض المبرمجين عامل المساواة على أنه “double equals” أو“equals equals.” .
• إستخدام عبارة if
يستخدم الشكل 22 ستة عبارات if لمقارنة عددين صحيحين تم إدخالهما بواسطة المستخدم . إذا كان الشرط الموجود في أي من عبارات if هذه صحيحًا ، فسوف يتم تنفيذ عبارة التخصيص المصاحبة لهذه العبارة . يستخدم التطبيق الفئة Console للمطالبة وقراءة سطرين من النص من المستخدم ، يتم إستخراج الأعداد الصحيحة من هذا النص بالطريقة ToInt32 للفئة Convert ، وتخزينها في المتغيرات number1 و number2 . ثم يقارن التطبيق الأعداد ويعرض نتائج المقارنات التى تكون صحيحة true .
كود:
1 // Fig.22: Comparison.cs
2 // Comparing integers using if statements, equality operators
3 // and relational operators.
4 using System;
5
6 public class Comparison
7 {
8 // Main method begins execution of C# app
9 public static void Main( string[] args )
10 {
11 int number1; // declare first number to compare
12 int number2; // declare second number to compare
13
14 // prompt user and read first number
15 Console.Write( "Enter first integer: " );
16 number1 = Convert.ToInt32( Console.ReadLine() );
17
18 // prompt user and read second number
19 Console.Write( "Enter second integer: " );
20 number2 = Convert.ToInt32( Console.ReadLine() );
21
22 if ( number1 == number2 )
23 Console.WriteLine( "{0} == {1}", number1, number2 );
24
25 if ( number1 != number2 )
26 Console.WriteLine( "{0} != {1}", number1, number2 );
27
28 if ( number1 < number2 )
29 Console.WriteLine( "{0} < {1}", number1, number2 );
30
31 if ( number1 > number2 )
32 Console.WriteLine( "{0} > {1}", number1, number2 );
33
34 if ( number1 <= number2 )
35 Console.WriteLine( "{0} <= {1}", number1, number2 );
36
37 if ( number1 >= number2 )
38 Console.WriteLine( "{0} >= {1}", number1, number2 );
39 } // end Main
40 } // end class Comparison
Output
Enter first integer: 42
Enter second integer: 42
42 == 42
42 <= 42
42 >= 42
***************************
Enter first integer: 1000
Enter second integer: 2000
1000 != 2000
1000 < 2000
1000 <= 2000
*****************************
Enter first integer: 2000
Enter second integer: 1000
2000 != 1000
2000 > 1000
2000 >= 1000
Fig. 22 | Comparing integers using if statements, equality operators and relational operators.
• إعلان الفئة "مقارنة" Class Comparison
إعلان الفئة Comparison يبدأ عند السطر 6 :
كود:
public class Comparison
• الدالة الرئيسية Main الخاصة بهذه الفئة (السطور 9-39 ( ، هى بداية تنفيذ التطبيق .
• إعلانات المتغيرات Variable Declarations
السطور 11-12 :
كود:
int number1; // declare first number to compare
int number2; // declare second number to compare
تعلن عن متغيرات نوع int تستخدم لتخزين القيم المدخلة بواسطة المستخدم .
• قراءة المدخلات من المستخدم :
# السطور 14-16 :
كود:
// prompt user and read first number
Console.Write( "Enter first integer: " );
number1 = Convert.ToInt32( Console.ReadLine() );
تطلب من المستخدم إدخال العدد الصحيح الأول (السطر15 ) ، وقراءة القيمة المدخلة (السطر 16 ) . يتم تخزين القيمة المدخلة فى المتغير number1 .
# السطور 18-20 :
كود:
// prompt user and read second number
Console.Write( "Enter second integer: " );
number2 = Convert.ToInt32( Console.ReadLine() );
تقوم بتنفيذ نفس المهمة ، لكن يتم تخزين القيمة المدخلة فى المتغير number2 .
• مقارنة الأعداد Comparing Numbers
السطور 22-23 :
كود:
if ( number1 == number2 )
Console.WriteLine( "{0} == {1}", number1, number2 );
تقارن قيم المتغيرات number1 و number2 لتحديد ما إذا كانت متساوية. تبدأ عبارة if دائمًا بالكلمة الرئيسية (المحجوزة) if ، متبوعة بشرط بين قوسين . تتوقع عبارة if عبارة واحدة في جسمها. المسافة البادئة لبيان الجسم الموضح هنا ليست مطلوبة ، ولكنها تحسّن من قراءة الكود بالتشديد على أن العبارة في السطر 23 هي جزء من عبارة if التي تبدأ في السطر 22 . لا ينفّذ السطر 23 إلا إذا كانت الأعداد المخزنة في المتغيرات number1 و number2 متساوية (على سبيل المثال ، يكون الشرط صحيح true ). عبارات if فى السطور 25–26, 28–29, 31–32, 34–35 , 37–38 تقارن الأعداد number1 و number2 بالعوامل !=, <, >, <= , >= على التوالي . إذا كان الشرط الموجود في أي من عبارات if صحيح true ، فسيتم تنفيذ عبارة الجسم المقابل.
خطأ برمجى شائع 6
إن حذف الأقواس اليسرى و/أو اليمنى للشرط في عبارة if عبارة عن خطأ في بناء الجملة — فالأقواس مطلوبة.
خطأ برمجى شائع 7
عكس العوامل!=, >= <= , كما في =!, => , =<, ، يمكن أن يؤدي إلى أخطاء في بناء الجملة أو المنطق.
خطأ برمجى شائع 8
يكون خطأ في بناء الجملة إذا كانت العوامل ==, !=, >= , <= تحتوي على مسافات بين رموزها ، كما في
= =, ! =, > = , < = على التوالي .
ممارسات البرمجة الجيدة 11
ضع مسافة بادئة لجسم عبارة if لتميزها ولتحسين قابلية قراءة التطبيق .
• لا توجد فاصلة منقوطة ( في نهاية السطر الأول من عبارة if
لا توجد فاصلة منقوطة ( في نهاية السطر الأول من كل عبارة if . مثل هذه الفاصلة المنقوطة قد ينتج عنها خطأ منطقي في وقت التنفيذ . فمثلا
كود:
if ( number1 == number2 ); // logic error
Console.WriteLine( "{0} == {1}", number1, number2 );
في الواقع يمكن تفسيرها من قبل C# كما يلى :
كود:
if ( number1 == number2 )
; // empty statement
Console.WriteLine( "{0} == {1}", number1, number2 );
حيث تكون الفاصلة المنقوطة في سطر مستقلة بذاتها - تسمى العبارة الفارغة - هي العبارة التي سيتم تنفيذها إذا كان الشرط في عبارة if صحيحًا. عند تنفيذ العبارة الفارغة ، لا يتم تنفيذ أي مهمة في التطبيق . ثم يستمر التطبيق بعبارة الإخراج ، والذي يتم تنفيذها دائمًا ، بغض النظر عما إذا كان الشرط صحيحًا أم خطأ ، لأن بيان الإخراج ليس جزءًا من عبارة if.
خطأ برمجى شائع 9
وضع الفاصلة المنقوطة فورًا بعد القوس الأيمن للشرط في عبارة if يكون عادة خطأ منطقي.
• المسافة الفارغة (البيضاء) Whitespace
لاحظ استخدام المسافات البيضاء في الشكل 22. تذكر أن أحرف المسافات البيضاء ، مثل علامات التبويب والسطور الجديدة والمسافات ، يتم تجاهلها من قبل المترجم . لذا قد يتم تقسيم العبارات على عدة أسطر ويمكن أن تكون متباعدة وفقًا لتفضيلاتك دون التأثير على معنى أي تطبيق . من غير الصحيح أن يتم تقسيم المعرّفات وسلاسل الأحرف والعوامل ذات الأحرف المتعددة (مثل >= ). من الناحية المثالية ، ينبغي أن تظل البيانات صغيرة ، ولكن هذا ليس ممكنا دائما.
ممارسة جيدة للبرمجة 12
لا تضع أكثر من بيان واحد في كل سطر في التطبيق . هذا التنسيق يعزز قابلية القراءة.
ممارسات البرمجة الجيدة 13
يمكن نشر عبارة مطولة على عدة أسطر. إذا كان من الواجب تقسيم عبارة واحدة عبر أسطر ، فاختر نقاط الفصل التي تكون منطقية ، مثل بعد فاصلة في قائمة مفصولة بفواصل ، أو بعد عامل في تعبير مطول. إذا تم تقسيم العبارة عبر سطرين أو أكثر ، قم بترك مسافة بادئة لكل السطور اللاحقة حتى نهاية العبارة.
• أسبقية ومشاركة Precedence and Associativity العوامل التى ناقشناها حتى الآن
يوضح الشكل 23 أسبقية العوامل المقدمة في هذا الدرس . يتم إظهار العوامل من الأعلى إلى الأسفل بتناقص ترتيب الأسبقية. كل هذه العوامل ، باستثناء عامل التخصيص ، = ، يربط من اليسار إلى اليمين . الجمع يتم ربطه من اليسار ، لذلك يتم تقييم تعبير مثل x + y + z كما لو كان مكتوبًا (x + y) + z .
عامل التخصيص ، = ، يربط من اليمين إلى اليسار ، لذلك يتم تقييم تعبير مثل x = y = 0 كما لو كان قد تم كتابته
x = (y = 0), ، وهى تقوم أولاً بتعيين قيمة 0 إلى المتغير y ثم تعيين نتيجة ذلك التعيين إلى المتغير x.
ممارسات البرمجة الجيدة 14
عند كتابة التعبيرات التي تحتوي على العديد من العوامل. تأكد من تنفيذ العمليات في التعبير بالترتيب الذي تتوقعه. إذا كنت غير متأكد من ترتيب التقييم في تعبير معقد ، فاستخدم الأقواس لإجبار الترتيب ، كما تفعل في التعبيرات الجبرية.
لاحظ أن بعض العوامل ، مثل التعيين ، = ، ترتبط من اليمين إلى اليسار بدلاً من اليسار إلى اليمين .

|