מדריך C# – משפטי if מקוננים
בחלק קודם למדנו כיצד להשתמש במשפט 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");
}
תגובות בפייסבוק