Блок операторов заключает в себя ноль или несколько операторов с целью использовать их как один оператор в тех местах, где по правилам языка можно записать только один оператор. Блоки часто используют для ограничения области действия переменных и просто для улучшения читаемости программы.
Оператор if
Оператор if
#include <iostream>
using namespace std;
int main(void)
{ int a, b, c;
cout << " a = "; cin >> a;
cout << " b = "; cin >> b;
if (a != b)
{ c = a + b;
cout << " c = " << c << "\n";
}
else
cout << "a равно b \n";
}
Условный оператор if
Работает условный оператор следующим образом. Сначала вычисляется значение выражения-условия. Если оно не равно нулю, то есть имеет значение истина (true), выполняется оператор_1. В противном случае, когда значение выражения равно нулю, то есть имеет значение ложь (false), то оператор_2.
Если в задаче требуется, чтобы в зависимости от значения условия выполнялся не один оператор, а несколько, их необходимо заключать в фигурные скобки, как составной оператор. В этом случае компилятор воспримет группу операторов как один.
Оператор if
if (условие)оператор;
или
if (условие)
{ оператор1;
оператор2;
…
}
#include <iostream>
using namespace std;
int main(void)
{ int a, b, c;
cout << " a = "; cin >> a;
cout << " b = "; cin >> b;
c = 0;
if (a != b)
c = a + b;
cout << " c = " << c << "\n";
}
Условный оператор if
Альтернативная ветвь else в условном операторе может отсутствовать, если в ней нет необходимости. В таком усеченном виде условный оператор работает так: оператор (группа операторов) либо выполняется, либо пропускается, в зависимости от значения выражения-условия.
В примере применения условного оператора без альтернативной ветки else значение переменной с изменяется только при условии, что а не равно b. Вывод на экран значения переменной с выполняется в любом случае.
Пример использования оператора if
Задача 1:
Написать программу решения квадратного уравнения ax2 + bx + c =0.
Исходные данные: вещественные числа a, b, с – коэффициенты квадратного уравнения.
Результаты работы программы: вещественные числа x1 и x2 – корни квадратного уравнения, либо сообщение о том, что корней нет.
Вспомогательные переменные: вещественная переменная d, в которой будет храниться дискриминант квадратного уравнения.
Пример использования оператора if
Словесный алгоритм решения задачи:
Начало алгоритма.
Ввод числовых значений переменных a, b, c.
Вычисление значения дискриминанта d по формуле d = b2 - 4ac
Если d < 0, то переход к п. 5, иначе переход к п. 6
Оператор if является вложенным, если он вложен, т.е. находится внутри другого оператора if или else. В практике программирования вложенные условные операторы используются довольно часто. Во вложенном условном операторе ветка else всегда ассоциирована с ближайшим if в том же блоке, если этот if не ассоциирован с другой веткой else.
Последняя ветка else не ассоциирована с if(j) потому, что она находится в другом блоке. Эта ветка else ассоциирована с if(i). Внутренняя ветка else ассоциирована с if(k), потому что этот if — ближайший.
В настоящее время большинство компиляторов допускают значительно большее количество уровней вложенности. Однако на практике необходимость в глубине вложенности, большей, чем несколько уровней, возникает довольно редко, так как увеличение глубины вложенности быстро запутывает программу и делает ее нечитаемой.
В следующем примере вложенный оператор if используется в программе для игры в магическое число. С его помощью играющий получает сообщение о характере ошибки.
Пример использования оператора if
Задача 2:
Написать программу простой игры "угадай магическое число".
Исходные данные: целое число magic – магическое число и целое число guess - попытка игрока .
Результаты работы программы: сообщения о том, верно или не верно угадано число.
Пример использования оператора if
Пример использования оператора if
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main(void)
{ int magic; // магическое число
int guess; // попытка игрока
srand(time(NULL));
magic = 1+rand()%101; //генерация магического числа
cout << "Угадай магическое число: "; cin >> guess;
if (guess == magic)
{ cout << "** Верно **";
cout << "Магическое число равно " << magic;
}
else
{ cout << "** Неверно, ";
// вложенный if
if(guess > magic) cout << "слишком большое\n";
else cout << "слишком малое\n";
}
}
Условный оператор if
Замечание 1 if (a = 0) b=1; // Не правильно!
if (a == 0) b=1; // Правильно!
Замечание 2 if (0 < x < 1) y=5; // Не правильно!
if (0 < x && x < 1) y=5; // Правильно!
Условный оператор if
Замечание 1. Не путайте операцию проверки равенства (==) и операцию присваивания (=). Например, в записи
if (a=0) b=1; синтаксической ошибке нет. Операция присваивания a=0 формирует результат, его значение проверяется в качестве условия. В данном примере присваивание b=1 не будет выполнено никогда, так как переменная a всегда будет принимать значение, равное нулю, то есть ложь. Верная запись if (a==0) b=1;
Замечание 2. Верно выполняйте запись условия проверки принадлежности диапазону