Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_Л5_Услов_РЕ1_С++р.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
75 Кб
Скачать
☆

2. Использование условного оператора if…else для 3-х интервалов значений переменой

Выше исследовались случаи применения условного оператора if…else для 2-х интервалов значений переменой, т. е. рассматривались простые условия (логические выражения) типа х<a. При этом число а делит числовую ось х на два интервала (рис. 2.4).

Рис. 2.5. Графическая интерпретация логического выражения для двух интервалов значений х

Язык С++ и среда Visual С++2010 позволяют в случае необходимости применять в условном операторе if…else и более сложные логические выражения с использованием различных логических операций.

Рассмотрим случай, когда в условии оператора if…else указан некоторый интервал значений, с которым сравнивается переменная. Например, переменная х должна находиться в интервале значений от a до b (a<b) (рис. 2.6). В этом случае условие запишется следующим образом:

if (x>=a && x<=b) ,

где && - операция логического И.

Рис. 2.6. Графическая интерпретация логического выражения для трех интервалов значений х

5. Исследование вложенного условного оператора if…else

Во многих случаях использование простого (одинарного) оператора if…else не обеспечивает решение поставленной задачи. Очевидно, что данный оператор, например, не позволяет вычислительному процессу принять решение в случае, когда для какой-то переменной существует четыре и более интервала ее значений. В этом случае применяют вложенный условный оператор if…else.

На рис. 2.5 приведен пример структуры вложенного условного оператора if…else (в качестве базовой использована структура, изображенная на рис. 2.1).

Рис.2.1. Структура вложенного условного оператора if…else

2. Оператор выбора switch

Оператор switch (переключатель) предназначен для разветвления процесса вычислений на несколько направлений. Он обеспечивает выбор из нескольких вариантов на основании некоторого фиксированного параметра. Формат оператора следующий:

switch (выражение)

{

case константа_1: оператор_1;

case константа_2: оператор_2;

case константа_3: оператор_3;

...

case константа_n: оператор_n;

[default: оператор;]

}

Блок-сема алгоритма, реализующего работу оператора выбора switch, приведена на рис. 2.4.

Выполнение оператора switch начинается с вычисления выражения в скобках (оно должно быть целочисленным). Его значение последовательно сравнивается с константами, которые записаны следом за каждым оператором case. Затем управление передается тому оператору, который помечен константным выражением (меткой), значение которого совпало с вычисленным выражением в условии. После этого последовательно выполняются все остальные ветви, если выход из переключателя явно не указан.

Все константные выражения должны иметь разные значения, но быть одного и того же целочисленного типа. Несколько меток могут следовать подряд. Если совпадения не произошло, выполняются операторы, расположенные после слова default (а при его отсутствии управление передается следующему за switch оператору).

Рис. 2.4. Блок-схема алгоритма работы оператора switch

Задание 5. Проанализируем работу оператора switch на примере программы, реализующей простейший калькулятор на 4 действия. Здесь консольно вводятся две переменные a и b и знак операции, которую необходимо совершить с этими переменными. Оператор switch сравнивает введенный знак операции со знаком, содержащемся в четырех метках case, и производит необходимую арифметическую операцию. Результат выводится на экран. Если знак операции не совпадает с содержащимися в метках, то на экран выводится сообщение о неизвестной операции.

#include "stdafx.h"

#include <conio.h> //Файл conio.h обеспечивает задержку окна DOS на экране дисплея

#include <iostream> //Директива include подключает файл ввода–вывода iostream

using namespace std; //Подключает все имена из пространства имен std

int _tmain(int argc, _TCHAR* argv[]) //Объявление главной функции _tmain

{ //Начало главной функции

double a, b, res; //Объявление вещественных переменных

char operation; //Объявление символьной переменной

cout << "Vvedite a : "<<endl; //Вывод на экран надписи-приглашения Vvedite а :

cin >> a; //Ввод значения переменной а

cout << "Vvedite operation : "<<endl; //Вывод на экран надписи-приглашения Vvedite operation :

cin >> operation; //Ввод знака операции

cout << "Vvedite b : "<<endl; //Вывод на экран надписи-приглашения Vvedite b :

cin >> b; //Ввод значения переменной b

switch (operation) //Условие (с чем будет сравнение) в операторе switch

{ //Начало оператора switch

case '+': res = a + b; break; //Метка ”+” и вычисление переменной res для этой метки

case '-': res = a - b; break; //Метка ”-” и вычисление переменной res для этой метки

case '*': res = a * b; break; //Метка ”*” и вычисление переменной res для этой метки

case '/': res = a / b; break; //Метка ”/” и вычисление переменной res для этой метки

default : cout <<"Unknown operation"<<endl; //Вывод сообщения о неизвестной операции

} //Конец сложного оператора

cout << "Result : " << res; //Вывод на экран результата вычислений

getch(); //Функция задержки окна DOS на экране

return 0;

} //Конец главной функции