Программирование на С++
Тема 2. Операторы
-
Набор операторов языка С/С++ включает:
-
операторы описания переменных и других объектов;
-
операторы-выражения и операторы присваивания;
-
составной оператор (блок);
-
условный оператор и оператор варианта;
-
операторы цикла;
-
операторы перехода;
-
пустой оператор.
-
Всякий оператор завершается точкой с запятой.
-
Блок операторов заключает в себя ноль или несколько операторов с целью использовать их как один оператор в тех местах, где по правилам языка можно записать только один оператор. Блоки часто используют для ограничения области действия переменных и просто для улучшения читаемости программы.
Оператор 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
-
Вывод сообщения «Корней нет» и переход к п. 8
-
Вычисление корней
-
Вывод значений x1 и x2 на экран.
-
Конец алгоритма.
Пример использования оператора if
-
Блок-схема алгоритма решения задачи:
Пример использования оператора if
#include <iostream>
#include <math.h>
using namespace std;
int main(void)
{ float a, b, c, x1, x2, d;
// ввод значений коэффициентов квадратного уравнения
cout << "a = "; cin >> a;
cout << "b = "; cin >> b;
cout << "c = "; cin >> c;
// вычисление дискриминанта
d = b*b-4*a*c;
// если дискриминант отрицателен,
if (d < 0) cout << " Корней нет";
else
{ // иначе вычисление корней x1, x2
x1=(-b + sqrt(d))/(2*a);
x2=(-b - sqrt(d))/(2*a);
cout << "x1 = " << x1 <<"\t x2 = " << x2 << "\n";
}
}
Условный оператор if
-
Вложенные условные операторы if :
-
if(i)
-
{ if(j) оператор_1;
-
if(k) оператор_2; // этот if
-
else оператор_3; // ассоциирован с этим else
-
}
-
else оператор_4; // ассоциирован с if(i)
Условный оператор if
-
Оператор 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. Верно выполняйте запись условия проверки принадлежности диапазону