Рассмотрим случай, когда вы собираетесь пойти на рынок, и ваш сосед по комнате говорит вам: «Если у них есть клубника по скидке, купи». Это условное утверждение, означающее, что вы выполните какое-то действие («купите»), только если условие («у них есть клубника по скидке») верно.
Такие условия распространены в программировании, поскольку они позволяют нам реализовать в наших программах условное поведение. Самый простой вид условного оператора в C++ называется оператором if . Оператор if позволяет нам выполнять одну (или несколько) строк кода только в том случае, если выполняется какое-то условие.
Простейший оператор if принимает следующую форму:
if (условие) инструкция_выполняемая_если_условие_верно;
Для удобства чтения он чаще записывается следующим образом:
if (условие) инструкция_выполняемая_если_условие_верно;
Условие (также называемое условным выражением) – это выражение, результатом которого является логическое значение.
Если условие оператора if оценивается как логическое значение true , то выполняется инструкция_выполняемая_если_условие_верно . Если вместо этого условие принимает логическое значение false , то инструкция_выполняемая_если_условие_верно пропускается.
#17. Условный оператор if. Конструкция if-else | Python для начинающих
Пример программы с использованием оператора if
Рассмотрим следующую программу:
#include int main() < std::cout ; std::cin >> x; if (x == 0) std::cout
Вот результат одного запуска этой программы:
Enter an integer: 0 The value is zero
Давайте рассмотрим, как это работает более подробно.
Сначала пользователь вводит целое число. Затем вычисляется условие x == 0 . Оператор равенства ( == ) используется для проверки равенства двух значений. operator== возвращает true , если операнды равны, и false , если они не равны. Поскольку x имеет значение 0, а 0 == 0 истинно, это выражение оценивается как истинное.
Поскольку условие оценивается как true , выполняется следующая инструкция, выполняющая печать « The value is zero ».
Вот результат еще одного запуска этой программы:
Enter an integer: 5
В этом случае x == 0 оценивается как false . Следующая инструкция пропускается, программа завершается и больше ничего не печатается.
Предупреждение
Операторы if условно выполняют только одну инструкцию. О том, как условно выполнять несколько инструкций, мы говорим в уроке «7.2 – Операторы if и блоки».
if — else
Учитывая пример, приведенный выше, что, если бы мы хотели сообщить пользователю, что введенное число не равно нулю?
7.9. Примеры программ с условным оператором
Приведем несколько примеров законченных программ, использующих РВП.
Пр. Проверить, может ли быть построен прямоугольный треугольник по длинам сторон a,b,c.
Проблема с решением этой задачи – не в проверке условия теоремы Пифагора, а в том, что в условии не сказано, какая из сторон может быть гипотенузой. Решений возможно несколько – запрашивать у пользователя ввод данных по возрастанию длины сторон, проверять все три возможных условия теоремы Пифагора и т.п. Используем наиболее естественное решение – перед проверкой условия теоремы Пифагора упорядочим величины a,b,cтак, чтобы выполнялись соотношенияa≤b≤c. Для этого используем прием с обменом значений переменных из главы 4.
Урок. «Условный оператор на языке Паскаль Пример программы»
write (‘Введите длину 1 стороны (больше 0):’);
write (‘Введите длину 2 стороны (больше 0):’);
write (‘Введите длину 3 стороны (больше 0):’);
if (a>b) then begin
if (a>c) then begin
if (b>c) then begin
(‘Прямоугольный треугольник может быть построен!’)
(‘Прямоугольный треугольник не может быть построен!’)
Пр. Определить, попадает ли точка плоскости, заданная координатами (a,b) в прямоугольник, заданный координатами двух углов (x1,y1) и (x2,y2).
Как и в предыдущей задаче, было бы не совсем корректно требовать от пользователя вводить данные в определенном порядке – гораздо лучше при необходимости поменять x- иy-координаты прямоугольника так, чтобы пара переменных (x1,y1) содержала координаты левого нижнего угла прямоугольника, а (x2,y2) – правого верхнего.
writeln (‘Введите координаты первого угла:’);
writeln (‘Введите координаты второго угла:’);
if x1>x2 then begin
if y1>y2 then begin
writeln (‘Введите координаты точки:’);
writeln (‘Точка попадает в прямоугольник’)
writeln (‘Точка НЕ попадает в прямоугольник’);
Пр. Вводится денежная сумма в рублях и копейках. Программа печатает введенную сумму с правильной формой слов «рубли» и «копейки», например, «123 рубля 15 копеек».
Окончание, используемое для слов «рубли» и «копейки», зависит от последней цифры суммы, которую можно получить, взяв остаток от деления на 10 (1058 рублей, 38рублейи т.д.). Исключения – суммы с последними двумя цифрами от 11 до 19 включительно, которые всегда произносятся «рублей» и «копеек» (511рублей, но 51рубль). Используя эту информацию, составим программу.
write (‘Введите количество рублей, затем пробел и количество копеек:’);
write (‘Правильно сказать: ‘,r,’ ‘);
if (o100>10) and (o100<20) or (o10>4) or (o10=0) then write (‘рублей’)
else write (‘рубль’);
if (o100>10) and (o100<20) or (o10>4) or (o10=0) then write (‘копеек’)
else write (‘копейка’);
Источник: studfile.net
Условные операторы
Условные операторы – это конструкции, которые используют условные выражения для управления ходом выполнения программы.
Условный оператор if
Условный оператор if – используется в случаях, когда выполнение инструкции, или набора инструкций, зависит от некоторого логического выражения.
В языке C#, есть две формы условного оператора if: с неполным и полным ветвлением.
if с неполным ветвлением
Оператор с неполным ветвлением имеет следующий синтаксис:
if (условное_выражение) инструкция;
Пример на языке C#:
int a = 0; int b = 12; if (a < b) Console.WriteLine(a);
Для выполнения нескольких инструкция, необходимо взять их в операторные скобки:
double c = 8; double d = 4; if (d != 0) < var f = c / d; Console.WriteLine(z); >
if с полным ветвлением
В операторе if с полным ветвлением, дополнительно используется ключевое слово else:
int n = 8; int m = 0; if (m == 0) < Console.WriteLine(«Делить на ноль нельзя!»); > else < var r = n / m; Console.WriteLine(r); >
В оператор if, вместо инструкций можно вложить другие операторы ветвления, строя таким образом сложную логику работы приложения..
Пример использования оператора if
Рассмотрим задачу определения какой четверти координатной плоскости принадлежит точка с координатами (x, y). Будем считать, что точка не может лежать на осях.
Код программ для определения в какой четверти лежит заданная точка:
using System; class Program < static void Main(string[] args) < Console.Write(«x hljs-comment»>//читаем данные из консоли, и конвертируем их в int int x = Convert.ToInt32(Console.ReadLine()); Console.Write(«y hljs-keyword»>int y = Convert.ToInt32(Console.ReadLine()); //переменная для хранения номера четверти string q; //код для проверки if (y > 0) < if (x > 0) q = «I»; else // x < 0 q = «II»; > else // y < 0< if (x < 0) q = «III»; else // x > 0 q = «IV»; > Console.WriteLine($»Точка лежит в четверти»); Console.ReadLine(); > >
Тернарный условный оператор ?:
Тернарный оператор – единственный оператор языка С#, который работает сразу с тремя операндами, в зависимости от результата условия, которое задано в первом операнде, возвращает значение второго(если первый — true), или третьего(если первый — false) операнда. При этом второй и третий должны быть одинакового типа данных.
int a = 3; int b = 4; int m = a < b ? a : b; //m = a = 3 //аналог записи if(a < b) < m = a; >else < m = b; >int n = a > b ? a : b; //n = b = 4 //аналог записи if(a > b) < n = a; >else
Тернарный оператор в качестве операндов может принимать другие тернарные операторы.
Если переписать код программы из предыдущего примера, с использованием тернарного оператора, то получим:
using System; class Program < static void Main(string[] args) < Console.Write(«x hljs-keyword»>int x = Convert.ToInt32(Console.ReadLine()); Console.Write(«y hljs-keyword»>int y = Convert.ToInt32(Console.ReadLine()); string q = y > 0 ? (x > 0 ? «I» : «II») : (x < 0 ? «III» : «IV»); Console.WriteLine($»Точка лежит в четверти»); Console.ReadLine(); > >
Как можно видеть, вся логика работы программы уместилась в одну строку кода.
Условный оператор switch
Конструкция switch позволяет сравнивать значение выражения сразу с несколькими вариантами.
Рассмотрим код, который конвертирует оценку пятибалльной шкалы из числа в текстовое представление:
Console.Write(«Введите оценку от 1 до 5: «); var r = Convert.ToByte(Console.ReadLine()); string v; if (r == 1 || r == 2) < v = «Неудовлетворительно»; > else if (r == 3) < v = «Удовлетворительно»; > else if (r == 4) < v = «Хорошо»; > else if (r == 5) < v = «Отлично»; > else < v = «Ошибка»; > Console.WriteLine(v);
С использованием switch код будет выглядеть так:
switch (r) < case 1: case 2: v = «Неудовлетворительно»; //этот код выполняется когда r равен 1 или 2 break; case 3: v = «Удовлетворительно»; break; case 4: v = «Хорошо»; break; case 5: v = «Отлично»; break; default: v = «Ошибка»; break; >
Выражение соответствия в скобках после switch, сравнивается с вариантами(метками), которые находяться за ключевым словом case. Если они эквивалентны, то выполняются инструкции до оператора break, который указывает на то, что нужно выйти из блока switch. В случае когда сравниваемое значение не соответствует ни одному из вариантов, выполняется блок default.
Для перехода с одного блока case в другой, можно использовать оператор goto case:
var s = «a»; var t = 1; switch (s) < case «a»: t += 10; goto case «c»; case «b»: t += 100; break; case «c»: t += 1000; break; > // после выхода t = 1011;
Блок default не обязательный. Если он не указан, а соответствия нет, то происходит выход из switch.
Использование break после операторов return, throw и goto case не обязательное.
Начиная с C# версии 7.0, выражение соответствия может быть любым выражением отличным от null. В предыдущих версиях языка допускались только: целочисленные, символьные, строковые, логические типы данных и перечисления.
Источник: programm.top