الدرس الثامن تركيبة if وتركيبة if/else
في الدرس السابق تحدثنا عن عمليات اتخاذ القرار
وأنها عادة ً ما تستخدم في تركيبة 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:
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# :
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 “
ElseIf student’s grade is greater than or equal to 70
Print “ C “
ElseIf student’s grade is greater than or equal to 60
Print “ D “
ElseIf student’s grade is greater than or equal to 50
Print “ E “
Else Print “ F “
وحولناه إلى كود C# :
C#
if )studentGrade <= 90(
Console.WriteLine)" A "(;
elseif )studentGrade <= 80(
Console.WriteLine)" B "(;
elseif )studentGrade <= 70(
Console.WriteLine)" C "(;
elseif )studentGrade <= 60(
Console.WriteLine)" D "(;
elseif )studentGrade <= 50(
Console.WriteLine)" E "(;
else
Console.WriteLine)" F "(;
سيقوم بتنفيذ جملة واحدة فقط لا محالة .
ويمكن كتابة الكود بشكل أبسط :
C#
if )studentGrade <= 90(
Console.WriteLine)" A "(;
elseif )studentGrade <= 80(
Console.WriteLine)" B "(;
elseif )studentGrade <= 70(
Console.WriteLine)" C "(;
elseif )studentGrade <= 60(
Console.WriteLine)" D "(;
elseif )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 “ ( ;
والآن تنفذ مجموع الجمل الأولى في حال