Операторы. Условный оператор if. Оператор switch. Операторы цикла

Страницы работы

Фрагмент текста работы

Программирование на С++ Тема 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. Верно выполняйте запись условия проверки принадлежности диапазону

Похожие материалы

Информация о работе