Лабораторная работа №2
Условные конструкции
ОСНОВНЫЕ СВЕДЕНИЯ
Алгоритм разветвленной структуры - это алгоритм, в котором вычислительный процесс осуществляется по одной из ветвей. Если количество ветвей две – то используется условный блок, если больше – то множественный выбор. В программах используют соответственно условный оператор IF или оператор SWITCH для реализации разветвленного алгоритма.
Используемые операторы в сравнении
Операторы сравнения
Оператор | Синтаксис | |
Равенство | a == b | |
Неравенство | a!= b | |
Больше | a > b | |
Меньше | a < b | |
Больше или равно | a >= b | |
Меньше или равно | a <= b |
Логические операторы
Оператор | Синтаксис | |
Логическое отрицание, НЕ | !a | |
Логическое умножение, И | a && b | |
Логическое сложение, ИЛИ | a || b |
Условный оператор IF
Условный оператор (полная форма):
If (условие)
оператор;
Else
оператор;
Сокращенная форма:
If (условие)
оператор;
Если будет использоваться несколько операторов, то используются фигурные скобки:
{
оператор;
.
.
.
оператор;
}
Если оператор1 и оператор2 состоят из одного оператора, то в фигурные скобки они не заключаются. Если оператор1 и/или оператор2 являются составным оператором (несколько операторов), то он заключается в фигурные скобки. Условие всегда заключается в круглые скобки.
В качестве примера приведем программу вычисления наибольшего из значений функции y1=x²+1, y2=7-x²,y3=x+1 для любого х.
Этот же код можно реализовать с помощью математических фунций, которые находятся в библиотеке cmath. После изменения код будет выглядеть следующим образом:
|
Функция | Описание | Пример |
ФУНКЦИЯ cmath | ||
abs(a) | модуль или абсолютное значение от а | abs(-3.0)= 3.0 abs(5.0)= 5.0 |
sqrt(a) | корень квадратный из а,причём ане отрицательно | sqrt(9.0)=3.0 |
pow(a, b) | возведение ав степень b | pow(2,3)=8 |
ceil(a) | округление а до наименьшего целого, но не меньше чем а | ceil(2.3)=3.0 ceil(-2.3)=-2.0 |
floor(a) | округление а до наибольшего целого, но не больше чем а | floor(12.4)=12 floor(-2.9)=-3 |
fmod(a, b) | вычисление остатка от a/b | fmod(4.4, 7.5) = 4.4 fmod(7.5, 4.4) = 3.1 |
exp(a) | вычисление экспоненты еа | exp(0)=1 |
sin(a) | a задаётся в радианах | |
cos(a) | a задаётся в радианах | |
log(a) | натуральный логарифм a(основанием является экспонента) | log(1.0)=0.0 |
log10(a) | десятичный логарифм а | Log10(10)=1 |
asin(a) | арксинус a, где -1.0 < а < 1.0 | asin(1)=1.5708 |
Стандартная функция | ||
max(a,b) | Получение максимального значение между a иb | max(5.8, 9.0) = 9.0 |
min(a,b) | Получение минимального значение между a иb | min(5.8, 9.0) = 5.8 |
ВАЖНО!!!!
Функции из библиотеки cmath работают только с вещественным типом double!!! Чтобы пользоваться этими функциями с другими типами данных, необходимо временно переопределять тип данных!
В большинстве современных компиляторов это может происходить автоматически!
Условная тернарнаяоперация
Условная тернарная операция используется с тремя операндами. В изображении условной операции применяются два символа ‘?’ и ‘:’ и три выражения – операнда:
выражение_1? выражение_2: выражение_3;
Первым вычисляется значение выражения_1. Если оно истинно, т. е. не равно 0, то вычисляется значение выражения_2, которое становится результатом. Если при вычислении выражения_1 получится 0, то в качестве результата берётся значение выражения_3, например:
|
x<0? –x: x;
Выражение возвращает абсолютную величину переменной x.
Примерпрограммы вычисления наибольшего из значений функции y1=x²+1, y2=7-x²,y3=x+1 для любого х.
Множественный выбор
В программах с множественным выбором используется переключатель switch, который сравнивает значение выражения, указанного за ним, и выполняет один из операторов, метка которого совпадает с этим значением. Общий вид:
Switch (выражение)
{ case метка_1: список_операторов_1;
……………………………………….
case метка_n: список_операторов_n;
default: операторы; }
Значения выражения и меток должны быть целочисленными константами.
Например, определим количество дней по введенному номеру месяца.
В примере программы, если номер месяца превышает 12, выводится сообщение о неверном вводе месяца, для чего используется default. Оператор break служит для прерывания цикла проверки и перехода в конец переключателя. В случае отсутствия break, происходит переход на следующую ветвь.