Лабораторная работа №3
Тема: Операторы ветвления
Цель: Получить навыки по использованию операторов ветвления.
2.1. Простой оператор if
Оператор if имеет несколько вариаций. Рассмотрим вначале основную версию, называемую простым оператором if. Синтаксис простого оператора if отображен в следующем синтаксическом блоке.
Простoй_оператор_if ::=
if(<Логическое выражение>)
<Оператор>;
Следует сказать, что выражение логического типа всегда дает одно из двух значений: true (истина) или false (ложь). <Оператор> следующий за логическим выражением, исполняется лишь в том случае, если последнее истинно. Если выражение ложно, то <Оператор> не выполняется, а выполняется следующий за ним оператор.
Пример 2.1. Написать программу, которая выводит на консоль сообщение «Hello World», если введенное число равно 1 и «Следующий оператор», в обратном случае.
using System;
class Program
{
static void Main()
{
int a;
Console.WriteLine("Введите число");
a = Convert.ToInt32(Console.ReadLine());
// Простой оператор if
if (a == 1)
// Выполняется в случае, если результат проверки true
Console.WriteLine("Hello World!");
// Выполняется в случае, если результат проверки false
Console.WriteLine("Следующий оператор");
Console.ReadLine();
}
}
Результат работы программы, в случае если введенное число 1, представлен на рис.2.1.
Рис.2.1. Результат работы программы, в случае если введенное число 1
Результат работы программы, в случае если введенное число не равно 1, представлен на (рис.2.1).
Рис.2.2. Результат работы программы, в случае если введенное число не равно 1
2.2. Оператор if / else
Оператор if из предыдущего примера позволяет выполнить лишь один оператор, если условие имеет значение true. Далее мы рассмотрим случай, когда требуется выполнить несколько операторов.
Рассмотрим синтаксический блок :
Oперaтop_if_else ::=
if (<Логическое выражение>)
<Oперaтop 1>; | <Составной оператор1>
[else
<Оператор 2>; | <Составной оператор2>]
Примечания:
<Оператор1>; | <Составной_оператор1> исполняется лишь в том случае, когда <Логическое_выражение> равно true.
<Оператор2>; | <Составной_оператор2> исполняется лишь тогда, когда <Логическое_ выражение> равно false.
Символы [перед else и ] после <Составной_оператор2> (как всегда) обозначают, что все между ними не является обязательным.
Следует сказать, что символ | , в <Оператор>; | <Составной_оператор> означает, что выбор возможен из двух вариантов, окружающих его из этого следует, что можно использовать <Оператор> или <Составной_оператор>.
Составной оператор выглядит следующим образом:
Составной оператор ::=
{
<Оператор1>;
<Оператор1>;
...
<ОператорN>;
}
Рассмотрим пример.
Пример 2.2. Необходимо проверить является ли введенное с клавиатуры число четным, т.е. делиться ли оно на 2 без остатка. Ели оно является четным, то вывести сообщение «Число четное», если нет, то прибавить к числу единицу и вывести сообщение «Число нечетное».
В данном случае использование простого оператора if не возможно, т.к. в случае если число нечетное необходимо выполнить два оператора (прибавить единицу и вывести сообщение). Если использовать простой оператор if, получится результат представленный на рис.3.3. Код подобно программы представлен ниже.
class Program
{
static void Main()
{
int a;
Console.WriteLine("Введите число");
a = Convert.ToInt32(Console.ReadLine());
// Простой оператор if
if (a%2 == 0)
// Выполняется в случае, если результат проверки true
Console.WriteLine("Число четное");
// Выполняется в случае, если результат проверки false
a++;
Console.WriteLine("Число нечетное");
Console.ReadLine();
}
}
Результат работы программы представлен на рис.2.3. и рис.2.4.
Рис.2.3. Результат работы программы (число четное)
Рис.2.4. Результат работы программы (число нечетное)
Таким образом, можно увидеть, что сообщение «Число нечетное» выводится в любом случае. Чтобы избежать подобной ситуации, используем оператор if/else
class Program
{
static void Main()
{
int a;
Console.WriteLine("Введите число");
a = Convert.ToInt32(Console.ReadLine());
// Оператор if/else
if (a % 2 == 0)
// Работает если условие выполнено
Console.WriteLine("Число четное");
else
// Работает если условие не выполнено
{
a++;
Console.WriteLine("Число нечетное");
}
Console.ReadLine();
}
}
Результат работы программы представлен на рис. 2.5 и рис.2.6.
Рис.2.5. Результат работы программы (число нечетное)
Рис.2.6. Результат работы программы (число четное)