מדריך C# – משפטי if מקוננים

‏ • Sela

בחלק קודם למדנו כיצד להשתמש במשפט if-else. בחלק זה נרחיב את הידע ונלמד כיצד לכתוב משפטי if מקוננים.

משפטי if מקוננים

פירוש הביטוי משפטי if מקוננים הוא: משפט if שנמצא בתוך משפט if אחר.
לדוגמא נרצה לכתוב תוכנית שקולטת מהמשתמש שם ויום בשבוע ומדפיסה הודעה לפי הלוגיקה הבאה:

  • אם שם המשתמש הוא "arik" והיום בשבוע הוא "friday" או "saturday" תודפס ההודעה "go back to sleep"
  • אם שם המשתמש הוא "arik" והיום בשבוע אינו "friday" או "saturday" תודפס ההודעה "go to work"
  • אם שם המשתמש אינו "arik" תודפס ההודעה "unknown user"

להלן הפתרון, שימו לב לשימוש במשפט if בתוך משפט ה if הראשון:

// get user name 
Console.Write("Enter user name: ");
string name = Console
.ReadLine();

// get day
Console.Write("Enter day: ");
string day = Console
.ReadLine();

// print message according to user name and day
if (name == "arik"
)
{
   
if ((day == "friday") || (day == "saturday"
))
    {
       
Console.WriteLine("go back to sleep"
);
    }
   
else
    {
       
Console.WriteLine("go to work"
);
    }
}

else
{
   
Console.WriteLine("unknown user");
}

משפט if מרובה

לפעמים נרצה לבצע בדיקה רבה של תנאים ובכל תנאי לבצע פקודות שונות. לצורך כך נכתוב מספר תנאי if מקוננים.

לדוגמא, נרצה לכתוב תוכנית שמקבלת ציון מספרי בין 0 ל 100 מהמשתמש ומדפיסה ציון באותיות לפי הכללים הבאים:

  • אם הציון בין 90 ל 100 יודפס הציון "A"
  • אם הציון בין 80 ל 89 יודפס הציון "B"
  • אם הציון בין 70 ל 79 יודפס הציון "C"
  • אם הציון בין 60 ל 69 יודפס הציון "D"
  • בכל מקרה אחרי יודפס הציון "F"

להלן פתרון אפשרי:

string gradeString = Console.ReadLine();
int grade = Convert.ToInt32(gradeString);
if
((grade >= 90) && (grade <= 100))
{
   
Console.WriteLine("A"
);
}

else
{
   
if
((grade >= 80) && (grade <= 89))
    {
       
Console.WriteLine("B"
);
    }
   
else
    {
       
if
((grade >= 70) && (grade <= 79))
        {
           
Console.WriteLine("C"
);
        }
       
else
        {
           
if
((grade >= 60) && (grade <= 69))
            {
               
Console.WriteLine("D"
);
            }
           
else
            {
               
Console.WriteLine("F");
            }
        }
    }
}

הערה: הפקודה Convert.ToInt משמשת להמרה של המחרוזת gradeString למשתנה מספרי grade.

לחילופין נוכל לבחור לכתוב זאת קצת אחרת ונקבל תוכנית שהרבה יותר נוחה לקריאה:

string gradeString = Console.ReadLine();
int grade = Convert.ToInt32(gradeString);
if
((grade >= 90) && (grade <= 100))
{
   
Console.WriteLine("A"
);
}

else if
((grade >= 80) && (grade <= 89))
{
   
Console.WriteLine("B"
);
}

else if
((grade >= 70) && (grade <= 79))
{
   
Console.WriteLine("C"
);
}

else if
((grade >= 60) && (grade <= 69))
{
   
Console.WriteLine("D"
);
}

else
{
   
Console.WriteLine("F");
}

תגיות: , , ,

arikp

אריק פוזננסקי הוא יועץ בכיר ומרצה בסלע. הוא השלים שני תארי B.Sc. במתמטיקה ומדעי המחשב בהצטיינות יתרה בטכניון. לאריק ידע נרחב בטכנולוגיות מיקרוסופט, כולל .NET עם C#, WPF, Silverlight, WinForms, Interop, COM/ATL, C++ Win32 ו reverse engineering.

תגובות בפייסבוק