في الدرس السابق تحدثنا عن عمليات اتخاذ القرار وأنها عادة ً ما تستخدم في تركيبة if أو تركيبة if/esle والتي هي محور حديثنا في هذا الدرس . تحتوي لغة C# على ثلاث أنواع من تراكيب الاختيار : if : تقوم باختيار الحدث وتنفيذه إذا كان الشرط صحيح (True) ، وتقفز عنه إذا كان الشرط خاطئ(false) ، وتدعى (single-selection structure) أي تركيبة الاختيار المنفرد . if/else : تقوم باختيار الحدث وتنفيذه إذا كان الشرط صحيح (True) ، وتنفذ حدث آخر إذا كان الشرط خاطئ(false) ، وتدعى (double-selection structure) أي تركيبة الاختيار الثنائية . switch : تقوم باختيار حدث وتنفيذه من بين مجموعة من الأحداث ، وتدعى ( multiple-selection structure ) . وثلاث أنواع من تراكيب التكرار : While , do/while , for , foreach وسنتعرف عليهم لاحقاً . أما في هذا الدرس فسنتعرف على تركيبة if وتركيبة if/else . ملاحظة : if , else , switch , While , do/while , for , foreach كلها كلمات محجوزة keywords والجدول التالي يذكر قائمة الكلمات المحجوزة في C# : وسنتعلم معظمها إن شاء الله خلال الدروس . والآن بسم الله نبدأ : 1- تركيبة if للاختيار: وهي عبارة عن احتمالين إما تنفيذ ما تحتوي في حالة true أو عدم التنفيذ false . فلنفرض أن درجة للنجاح في امتحان هي 50 (الدرجة من 100) إذا ًَ خوارزمية التعبير أو الكود الوهمي (pseudocode) سيكون كما يلي : if student’s grade is grater than or equal to 50 Print “Passed” إذا كانت درجة الطالب أكبر أو تساوي 50 سيطبع ناجح ، وإذا كانت درجة الطالب أقل من 50 تهمل جملة if وتنفذ الجملة التالية لها . والآن سنقوم بترجمة ال pseudocode إلى لغة C# حيث يفهمها ال Compiler : C# if ( studentGrade >= 50) Console.WriteLine( “ Passed “) ;
في الدرس السابق تحدثنا عن عمليات اتخاذ القرار
وأنها عادة ً ما تستخدم في تركيبة if أو تركيبة if/esle والتي هي محور حديثنا في هذا الدرس . تحتوي لغة C# على ثلاث أنواع من تراكيب الاختيار : if : تقوم باختيار الحدث وتنفيذه إذا كان الشرط صحيح (True) ، وتقفز عنه إذا كان الشرط خاطئ(false) ، وتدعى (single-selection structure) أي تركيبة الاختيار المنفرد . if/else : تقوم باختيار الحدث وتنفيذه إذا كان الشرط صحيح (True) ، وتنفذ حدث آخر إذا كان الشرط خاطئ(false) ، وتدعى (double-selection structure) أي تركيبة الاختيار الثنائية . switch : تقوم باختيار حدث وتنفيذه من بين مجموعة من الأحداث ، وتدعى ( multiple-selection structure ) . وثلاث أنواع من تراكيب التكرار : While , do/while , for , foreach وسنتعرف عليهم لاحقاً . أما في هذا الدرس فسنتعرف على تركيبة if وتركيبة if/else . ملاحظة : if , else , switch , While , do/while , for , foreach كلها كلمات محجوزة keywords والجدول التالي يذكر قائمة الكلمات المحجوزة في C# :
وسنتعلم معظمها إن شاء الله خلال الدروس . والآن بسم الله نبدأ : 1- تركيبة if للاختيار: وهي عبارة عن احتمالين إما تنفيذ ما تحتوي في حالة true أو عدم التنفيذ false . فلنفرض أن درجة للنجاح في امتحان هي 50 (الدرجة من 100) إذا ًَ خوارزمية التعبير أو الكود الوهمي (pseudocode) سيكون كما يلي :
if student’s grade is grater than or equal to 50 Print “Passed”
إذا كانت درجة الطالب أكبر أو تساوي 50 سيطبع ناجح ، وإذا كانت درجة الطالب أقل من 50 تهمل جملة if وتنفذ الجملة التالية لها . والآن سنقوم بترجمة ال pseudocode إلى لغة C# حيث يفهمها ال Compiler :
if ( studentGrade >= 50) Console.WriteLine( “ Passed “) ;
والشكل التالي يوضح عمل تركيبة if :
2- تركيبة if/else للاختيار : وهي أيضا ً احتمالين لكن في كلا الحالتين يتم تنفيذ حدث ، وهذا يساعد المبرمج على تحديد حدثين مختلفين بالاعتماد على نتائج الشرط True أم False . فمثلا ً الكود الوهمي pseudocode التالي :
If student’s grade is greater than or equal to 50 Print “ Passed “ Else Print “Failed “
سيطبع ناجح (Passed) إذا تحقق الشرط True وهو أن الدرجة أكبر أو يساوي 50 . وسيطبع راسب (Failed) إذا لم يتحقق الشرط False وهو أن الدرجة أصغر من 50 . أي أنه لا يهمل جملة if أبدا ً ولا يخرج منها حتى يطبع شيء . والآن سنترجم هذا ال pseudocode إلى كود C# :
if (StudentGrade >= 50) Console.WriteLine( “ Passed “) ; else Console.WriteLine( “ Failed “) ;
والشكل التالي يوضع طريقة عمل تركيبة if/else الاختيارية : * وهناك طريقة أخرى لاستخدام تركيبة if/else وهي (? : ) ، وتحتوي على ثلاث جمل تنفيذية : جملة الشرط ، جملة التنفيذ الأولى في حالة تحقق الشرط True ، جملة التنفيذ الثانية في حالة عدم تحقق الشرط False ، فإذا أعدنا صياغة جملة if السابقة تصبح كالتالي : C# Console.WriteLine( StudentGrade >= 50 ? “ Passed “ : “ Failed “); * يمكن أيضا ً استخدام تركيبة if/else تركيبة if/else لتنفيذ جملة من عدد من الجمل ، فمثلا ً إذا فهمنا الكود الوهمي pseudocode التالي : If student’s grade is greater than or equal to 90 Print “ A “ Else If student’s grade is greater than or equal to 80 Print “ B “ Else If student’s grade is greater than or equal to 70 Print “ C “ Else If student’s grade is greater than or equal to 60 Print “ D “ Else If student’s grade is greater than or equal to 50 Print “ E “ Else Print “ F “ وحولناه إلى كود C# : C# if (studentGrade >= 90) Console.WriteLine(" A "); else if (studentGrade >= 80) Console.WriteLine(" B "); else if (studentGrade >= 70) Console.WriteLine(" C "); else if (studentGrade >= 60) Console.WriteLine(" D "); else if (studentGrade >= 50) Console.WriteLine(" E "); else Console.WriteLine(" F "); سيقوم بتنفيذ جملة واحدة فقط لا محالة . ويمكن كتابة الكود بشكل أبسط : C# if (studentGrade >= 90) Console.WriteLine(" A "); else if (studentGrade >= 80) Console.WriteLine(" B "); else if (studentGrade >= 70) Console.WriteLine(" C "); else if (studentGrade >= 60) Console.WriteLine(" D "); else if (studentGrade >= 50) Console.WriteLine(" E "); else Console.WriteLine(" F "); وكلاهما يعطي نفس النتائج . ملاحظة : * كل جملة else مرتبطة بجملة if سابقة لها . * إذا احتوت أي تركيبة على أكثر من جملة بداخلها يجب استخدام أقواس المجموعة ( { } ) ، أما إذا احتوت على تركيبة أخرى فقط فليس من الضروري استخدام أقواس المجموعة . C# if ( x > 5 ) if ( y > 5 ) Console.WriteLine( “ x and y are > 5 “ ) ; else Console.WriteLine( “ x is <= 5 “ ) ; في هذه الحالة else تعتبر تابعة لل if الثانية أي سيتم تنفيذ الجملة الثانية x is <= 5 في حال y <= 5 وقيمة x > 5 ، أم إذا كانت x <= 5 فستهمل هذه الجملة كلها . إذا أردنا جعل else تابعة لل if الأولى يجب وضع ما داخل ال if في أقواس كما يلي : C# if ( x > 5 ) { if ( y > 5 ) Console.WriteLine( “ x and y are > 5 “ ) ; } else Console.WriteLine( “ x is <= 5 “ ) ; والآن تنفذ مجموع الجمل الأولى في حال x > 5 وجملة else في حال x <= 5
والشكل التالي يوضع طريقة عمل تركيبة if/else الاختيارية :
* وهناك طريقة أخرى لاستخدام تركيبة if/else وهي (? : ) ، وتحتوي على ثلاث جمل تنفيذية : جملة الشرط ، جملة التنفيذ الأولى في حالة تحقق الشرط True ، جملة التنفيذ الثانية في حالة عدم تحقق الشرط False ، فإذا أعدنا صياغة جملة if السابقة تصبح كالتالي :
Console.WriteLine( StudentGrade >= 50 ? “ Passed “ : “ Failed “);
* يمكن أيضا ً استخدام تركيبة if/else تركيبة if/else لتنفيذ جملة من عدد من الجمل ، فمثلا ً إذا فهمنا الكود الوهمي pseudocode التالي :
If student’s grade is greater than or equal to 90 Print “ A “ Else If student’s grade is greater than or equal to 80 Print “ B “ Else If student’s grade is greater than or equal to 70 Print “ C “ Else If student’s grade is greater than or equal to 60 Print “ D “ Else If student’s grade is greater than or equal to 50 Print “ E “ Else Print “ F “
وحولناه إلى كود C# :
if (studentGrade >= 90) Console.WriteLine(" A "); else if (studentGrade >= 80) Console.WriteLine(" B "); else if (studentGrade >= 70) Console.WriteLine(" C "); else if (studentGrade >= 60) Console.WriteLine(" D "); else if (studentGrade >= 50) Console.WriteLine(" E "); else Console.WriteLine(" F ");
سيقوم بتنفيذ جملة واحدة فقط لا محالة . ويمكن كتابة الكود بشكل أبسط :
وكلاهما يعطي نفس النتائج . ملاحظة : * كل جملة else مرتبطة بجملة if سابقة لها . * إذا احتوت أي تركيبة على أكثر من جملة بداخلها يجب استخدام أقواس المجموعة ( { } ) ، أما إذا احتوت على تركيبة أخرى فقط فليس من الضروري استخدام أقواس المجموعة .
if ( x > 5 ) if ( y > 5 ) Console.WriteLine( “ x and y are > 5 “ ) ; else Console.WriteLine( “ x is <= 5 “ ) ;
في هذه الحالة else تعتبر تابعة لل if الثانية أي سيتم تنفيذ الجملة الثانية x is <= 5 في حال y <= 5 وقيمة x > 5 ، أم إذا كانت x <= 5 فستهمل هذه الجملة كلها . إذا أردنا جعل else تابعة لل if الأولى يجب وضع ما داخل ال if في أقواس كما يلي :
if ( x > 5 ) { if ( y > 5 ) Console.WriteLine( “ x and y are > 5 “ ) ; } else Console.WriteLine( “ x is <= 5 “ ) ;
والآن تنفذ مجموع الجمل الأولى في حال x > 5 وجملة else في حال x <= 5