Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция2.docx
Скачиваний:
34
Добавлен:
20.02.2016
Размер:
34.4 Кб
Скачать

3. Оператор ?:

В языке C++ имеется оператор, который часто может использоваться вместо оператора if else. Его общая форма выглядит следующим образом:

выражение1 ? выражение2 : выражение3

Если выражение1 истинно, то значением всего ус­ловного выражения является значение выражения2.

В противном случае значением всего выражения явля­ется значение выражения3.

Ниже приведено несколько примеров, в которых демонстрируется работа этого опе­ратора:

5 > 3 ? 10 : 12  //5 > 3 истинно, поэтому значением выражения является число 10

3 = =9 ? 25 : 18 //3 = = 9 ложно, поэтому значением выражения является число 18

По сравнению с последовательностью if else услов­ный оператор более лаконичен, по и то же время имеет менее понятный синтаксис.

Однако он позволяет использовать условное выражение в общем большом выражении. Например. Составить программу для расчета выражения: y=a+ max(a,b) – b3

Сначала решим пример, обычным способом. Найдем max(a,b) с помощью оператора if.

 

#include <iostream.h>

#include <conio.h>

#include <math.h>

void main()

{

float a,b,max,c;

 

clrscr();

cout<<"Введите значения переменных a и b: ";

cin>>a>>b;

 

if (a>b)

max=a;

else

max=b;

 

c=pow(a,2)+max+pow(b,3);

 

cout<<"Функция равна: "<<c;

 

getch();

return;

}

 

 

Теперь найдем max(a,b) с помощью оператора?: Это позволяет сократить текст программы.

 

#include <iostream.h>

#include <conio.h>

#include <math.h>

void main()

{

float a,b,c;

 

clrscr();

cout<<"Введите значения переменных a и b: ";

cin>>a>>b;

 

c=pow(a,2)+(a>b ? a : b)+pow(b,3);

 

cout<<"Функция равна: "<<c;

 

getch();

return;

Допускается вложение нескольких операторов ?: друг в друга. Например: найдем максимальное из трех чисел.

 

//подключаем заголовочные файлы

#include <iostream.h>

#include <conio.h>

 

void main()

{

//описываем переменные

float a,b,c,d;

 

//очищаем экран

clrscr();

 

//вводим исходные данные

cout<<"Введите три числа: ";

cin>>a>>b>>c;  

//находим максимальное из 3 чисел с помощью оператора ?:

d=(a>b && a>c ? a : (b>a && b>c ? b : c));

//выводи результат

cout<<"Максимальное число равно: "<<d<<"\n";

 

//делаем паузу для просмотра результата

cout<<"Для продолжения нажмите любую клавишу...";

getch();

return;

(начало)

 

4. Оператор switch

В задачах с большим числом условий последовательность if else if else можно рас­ширять до нужного числа веток выполнения программы. Однако оператор switch C++ больше подходит для выполнения выбора из расширенного списка. Общая форма оператора switch выглядит следующим образом:

switch   (целочисленное выражение)

{

case метка1 : оператор(ы);

case метка2 : оператор(ы);

. . .

case меткаn : оператор(ы);

default : оператор(ы);

}

Оператор switch в языке C++ действует в качестве переключателя, который указывает компьютеру, какую строку программы нужно выполнять следующей. Встре­тив ключевое слово switch, программа переходит к стро­ке, помеченной значением, соответствующим значению целочисленного выражения. Значением целочис­ленного выражения, как следует из его названия, долж­но быть выражение, при вычислении дающее целочис­ленное значение. Кроме того, каждая метка должна быть выражением целочисленной константы. Если целочислен­ное выражение не соответствует ни одной из меток, программа переходит к строке, помеченной меткой default. Эта метка необязательна. Если ее опустить и при этом совпадение с метками отсутствует, программа пе­реходит к оператору, следующему за switch.

Оператор switch существенно отличается от аналогич­ных операторов таких языков, как Pascal. После того, как программа переходит к конкрет­ной строке в операторе switch, она по порядку выпол­няет все операторы, которые следуют за этой строкой, если только явно не указано иное. Выполнение опера­ции не останавливается автоматически на следующем варианте. Для остановки выполнения в конце конкрет­ной группы операторов необходимо использовать опе­ратор break. В результате выполнение продолжится с оператора, следующего за switch.

Оператор switch не предназначен для обра­ботки диапазонов. Каждая метка варианта оператора switch должна быть отдельным значением. Кроме того, это значение должно быть целым, поэтому оператор switch не будет выполнять проверку значений с плавающей точкой. И значение метки вари­анта должно быть константой. Если реализация вариан­тов требует использования диапазонов, осуществления проверки значений с плавающей точкой или сравнения двух переменных, следует использовать оператор if else.

Чаще всего оператор switch используется для обработки выбора пользователя из меню программы.

Пример. Пусть имеется две переменные a и b. Необходимо выдать на экран меню вида:

1 – сумма

2 – разность

3 – произведение

4 – частное.

В зависимости от выбора пользователя нужно посчитать выбранное значение.

 

#include <iostream.h>

#include <conio.h>

#include <math.h>

 

void main()

{

float a=10,b=5,c;

int k=1;

 

clrscr();

 

//выдаем меню

cout<<"1 - сумма\n" ;

cout<<"2 - разность\n" ;

cout<<"1 - произведение\n" ;

cout<<"1 - частное\n" ;

//запрашиваем выбор из меню

cout<<"Сделайте выбор - ";

cin>>k;

 

//обрабатываем выбор из меню

switch (k)

{

//если выбран первый режим

case 1 :

c=a+b;

cout<<"Сумма="<<c;

break;

//если выбран второй режим

case 2 :

c=a-b;

cout<<"Разность="<<c;

break;

//если выбран третий режим

case 3:

c=a*b;

cout<<"Произведение="<<c;

break;

//если выбран четвертый режим

case 4 :

c=a/b;

cout<<"Частное="<<c;

break;

//если выбран неверный режим (не 1, не 2, не 3, не 4)

default:

cout<<"Вы выбрали неверный режим";

}

getch();

return;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]