VirQ. Условия (if...else) в C#
Язык C# входит в ТОП-5
самых популярных языков
программирования
Главная /
Учебник
/
Условия (if...else)
Статей на сайте: 61

Условия (if...else)


Вся наша жизнь построена на условиях. Мы не хватаем горячую кружку, потому что можно обжечься. Не выходим в закрытую дверь, т.к. это невозможно.
Выглядит в жизни это так:
Если дверь закрыта, тогда открыть её
Если кружка горячая, не брать

Есть так же дополнительное ключевое слово "иначе" (else), которое может дополнить наше условие
Если (if) дверь закрыта, тогда открыть её; иначе (else) - можно спокойно выйти
Если (if) кружка горячая, не брать; иначе (else) брать

В программировании это выглядит так:
[code] Console.WriteLine("Сколько вам лет?"); int n = int.Parse(Console.ReadLine()); if (n < 16) Console.WriteLine("Несовершеннолетний"); if (n >= 16 && n < 20) Console.WriteLine("Студент"); if (n >= 20 && n < 60) Console.WriteLine("Рабочий"); if (n >= 60) Console.WriteLine("Пенсионер"); Console.ReadKey(); [/code]
О функциях класса Console смотрите ссылки внизу страницы.

Знак "&&" означает "И"
Выглядеть в рабочем виде это будет так:
Console
×
Сколько вам лет?
27
Рабочий

В данном случае компьютер выводит ответ, кем является человек в зависимости от его возраста.

Вот ещё пример:
[code] if (!File.Exists("D:\\123.txt")) File.WriteAllText("D:\\123.txt", ""); [/code]
Перевод: если файл по адресу D:\123.txt не существует, тогда создать такой файл, записав в него пустую строку. Будет создан файл размером 0 байт. Такое условие необходимо, если вы собираетесь читать файл D:\123.txt в коде вашей программы, но предварительно необходимо делать проверку, существует ли он. Адрес D:\123.txt пишется с двойным бэкслэшем \\ по причине, что символ \ является экранирующим в регулярных выражениях.
Можно добавить к строке @, тогда адрес можно писать через одинарный \
[code] if (!File.Exists(@"D:\123.txt")) File.WriteAllText(@"D:\123.txt", ""); [/code]
Условия часто проверяются, когда идёт проверка ввода данных с клавиатуры, т.к. компьютер должен проверять правильность ввода данных. Когда необходимо изменить 2 или более строки за счёт 1 условия, необходимо использовать фигурные скобки { }
[code] Console.WriteLine("Введите 1 сторону прямоугольника"); double a = double.Parse(Console.ReadLine()); Console.WriteLine("Введите 2 сторону прямоугольника"); double b = double.Parse(Console.ReadLine()); if (a <= 0) { Console.WriteLine("1 сторона должна быть положительным числом"); Console.ReadKey(); return; } if (b <= 0) { Console.WriteLine("2 сторона должна быть положительным числом"); Console.ReadKey(); return; } Console.WriteLine("Площадь прямоугольника равна: " + a * b); Console.ReadKey(); [/code]
Оператор "return" - обрыв всей программы. Он тут используется в том случае, если одна или другая сторона меньше либо равна 0.
Итого получаем результат (введём с ошибкой специально):
Console
×
Введите 1 сторону прямоугольника
16
Введите 2 сторону прямоугольника
-7
2 сторона должна быть положительным числом

Если же введём правильно, получим вот что:
Console
×
Введите 1 сторону прямоугольника
16
Введите 2 сторону прямоугольника
3
Площадь прямоугольника равна: 48


Пример с else будет таким:
[code] Console.WriteLine("Сколько вам лет?"); int a = int.Parse(Console.ReadLine()); if (a <= 0 || a >= 150) Console.WriteLine("Столько не живут"); else Console.WriteLine("И мне столько же"); [/code]

Бывает, что не только блок if может содержать более 1 строки кода. Но и else точно так же:
[code] Console.WriteLine("Сколько вам лет?"); int a = int.Parse(Console.ReadLine()); if (a <= 0 || a >= 150) { Console.WriteLine("Столько не живут"); if (a <= 0) Console.WriteLine("Введите положительное число"); if (a >= 150) Console.WriteLine("Введите возраст меньше 150 лет"); } else { int d = a * 365; Console.WriteLine("Вы прожили " + d + " дней"); } Console.ReadKey(); [/code]
Знак "||" - означает "ИЛИ"
Проверим 3 разными способами:
Случай 1:
Console
×
Сколько вам лет?
-50
Столько не живут
Введите положительное число

Случай 2:
Console
×
Сколько вам лет?
20
Вы прожили 7300 дней

Случай 3:
Console
×
Сколько вам лет?
200
Столько не живут
Введите возраст меньше 150 лет

Когда действие, которое необходимо выполнить после некоего условия, находится в едином экземпляре, то фигурные скобки ставить не обязательно:
[code] if (a < 0) a = 0; [/code]
В этой короткой записи говорится: "Если переменная "а" была отрицательной, тогда к ней присвоить 0". Мы таким образом изменяем значение переменной.

Условия могут быть вложенными друг в друга. Например, проверяем, что файл D:\123.txt имеет размер > 5 кб.
Объясню сразу, где это может использоваться. Скажем, если вы скачиваете программно 1000 файлов, то некоторые могут скачаться с ошибкой. Вы точно знаете, что > 5 кб, это верный размер (мини-изображения, допустим). Если же < 5 кб, это какая-то ошибка.
[code] FileInfo file = new FileInfo(@"D:\123.txt"); if (file.Length > 5 * 1024) Console.WriteLine("Верный размер"); else Console.WriteLine("Размер неверный"); [/code]
Это не совсем верный подход, хотя при существовании такого файла работать будет.
5 * 1024 = это 5120 байт. В программировании "кило" - это 1024, а не 1000, как в любой другой физической/математической величине.
Дополнительно о методах класса FileInfo

Однако, если файла не существует, вы не можете через FileInfo проверить его размер. Чтобы ошибки не было, нужно сперва проверить, существует ли такой файл:
[code] if (File.Exists(@"D:\123.txt")) { FileInfo file = new FileInfo(@"D:\123.txt"); if (file.Length > 5 * 1024) Console.WriteLine("Верный размер"); else Console.WriteLine("Размер неверный"); } else Console.WriteLine("Файл не существует"); [/code]
Теперь у нас получилось условие, вложенное в другое условие.

Ещё один вид условий, это Тернарная операция

Дополнительная информация о том, как вывести результат в консоли или WinForm