С++. Условные операторы

Содержание

Слайд 2

ОПЕРАТОРЫ С++ Программа на языке С++ состоит из последовательности операторов, каждый

ОПЕРАТОРЫ С++

Программа на языке С++ состоит из последовательности операторов, каждый из

них определяет значение некоторого действия;
Все операторы разделены на 4 группы:
- операторы следования;
- операторы ветвления;
- операторы цикла;
- операторы передачи управления.
Слайд 3

ОПЕРАТОРЫ СЛЕДОВАНИЯ К ним относятсяся : оператор выражение и составной оператор.

ОПЕРАТОРЫ СЛЕДОВАНИЯ

К ним относятсяся : оператор выражение и составной оператор.
Выражение,

завершающееся точкой с запятой, рассматривается как оператор (вычислении значения выражения или выполнении законченного действия);
++i; //оператор инкремента
х+=у; //оператор сложение с присваиванием
f(a, b); //вызов функции
x= max (a, b) + a*b; //вычисление сложного выражения
Частным случаем оператора выражения является пустой оператор ;
(используется, когда по синтаксису оператор требуется, а по смыслу — нет)
Составной оператор или блок представляет собой последовательность операторов, заключенных в фигурные скобки.
Блок обладает собственной областью видимости: объявленные внутри блока имена доступны только внутри блока;
Составные операторы применяются в случае, когда правила языка предусматривают наличие только одного оператора, а логика программы требует нескольких операторов.
Слайд 4

ОПЕРАТОРЫ ВЕТВЛЕНИЯ К ним относятся : условный оператор if и оператор

ОПЕРАТОРЫ ВЕТВЛЕНИЯ

К ним относятся : условный оператор if и оператор выбора

switch,
они позволяют изменить порядок выполнения операторов в программе;
Условный оператор if
if используется для разветвления процесса обработки данных на два направления.
if имеет 2 формы: сокращенную или полную.
Формат сокращенного оператора if: if (В) S;
В –логич. или арифметич. выражение, истинность которого проверяет­ся; S - один оператор: простой или составной.
При выполнении сокращенной формы оператора if сначала вычисляется выражение В, затем проводится анализ его результата: если В истинно, то выполняется оператор S; если В ложно, то оператор S пропускается.
C помощью сокращенной формы оператора If можно либо выполнить оператор S, либо пропустить его.
Слайд 5

ФОРМАТ ПОЛНОГО ОПЕРАТОРА IF IF (B) S1 ; ELSE S2; SI,

ФОРМАТ ПОЛНОГО ОПЕРАТОРА IF IF (B) S1 ; ELSE S2;

SI, S2-

один оператор: простой или составной.
При выполнении полной формы оператора if сначала вычисляется выражение В, затем анализируется его результат: если В истинно, то выполняется оператор S1 а оператор S2 пропускается; если В ложно, то выполняется оператор S2, a S1 - пропускается.
C помощью полной формы оператора if можно выбрать одно из двух альтернативных действий процесса обработки данных.
Слайд 6

Примеры записи условного оператора if. if (a > 0) х=у; //

Примеры записи условного оператора if.
if (a > 0) х=у; // сокращенная

форма с простым оператором
if (++i>0) {x=y; y=2*z;} // сокращенная форма с составным оператором
if (а > 0 || b<0) x=y; eise x=z; //полная форма с простым оператором
if (i+j-1<0) { х= 0; у= 1;} else {x=1; у:=0;} //полная форма с составными оператором
Операторы S1 и S2 могут являться операторами if, такие операторы наз. вложенные;
Ключевое слово else связывается с ближайшим предыдущим словом if, которое еще не связано ни с одним else.
Слайд 7

ВЛОЖЕННЫЕ ВЕТВЛЕНИЯ IF/ELSE

ВЛОЖЕННЫЕ ВЕТВЛЕНИЯ IF/ELSE

Слайд 8

ВЛОЖЕННЫЕ ВЕТВЛЕНИЯ IF/ELSE

ВЛОЖЕННЫЕ ВЕТВЛЕНИЯ IF/ELSE

Слайд 9

ИСПОЛЬЗОВАНИЕ ЛОГИЧЕСКИХ ОПЕРАТОРОВ В ВЕТВЛЕНИЯХ IF/ELSE

ИСПОЛЬЗОВАНИЕ ЛОГИЧЕСКИХ ОПЕРАТОРОВ В ВЕТВЛЕНИЯХ IF/ELSE

Слайд 10

Сложные условия Сложное условие – это условие, состоящее из нескольких простых

Сложные условия

Сложное условие – это условие, состоящее из нескольких простых условий

(отношений), связанных с помощью логических операций:
! – НЕ (not, отрицание, инверсия)
&& – И (and, логическое умножение, конъюнкция, одновременное выполнение условий)
|| – ИЛИ (or, логическое сложение, дизъюнкция, выполнение хотя бы одного из условий)
Простые условия (отношения)
< <= > >= == !=

равно

не равно

Слайд 11

Сложные условия Порядок выполнения сложных условий: выражения в скобках ! (НЕ,

Сложные условия

Порядок выполнения сложных условий:
выражения в скобках
! (НЕ, отрицание)
<, <=,

>, >=
==, !=
&& (И)
|| (ИЛИ)
Пример:
2 1 6 3 5 4
if ( !(a > b) || c != d && b == a)
{
...
}
Слайд 12

Истинно или ложно при a = 2; b = 3; c

Истинно или ложно при a = 2; b = 3; c

= 4;
!(a > b)
a < b && b < c
!(a >= b) || c == d
a < c || b < c && b < a
a > b || !(b < c)
Для каких значений x истинны условия:
x < 6 && x < 10
x < 6 && x > 10
x > 6 && x < 10
x > 6 && x > 10
x < 6 || x < 10
x < 6 || x > 10
x > 6 || x < 10
x > 6 || x > 10

Сложные условия

1

1

0

(-∞, 6)


(6, 10)

(10, ∞)

(-∞, 10)

(-∞, 6) ∪ (10,∞)

(-∞, ∞)

(6, ∞)

x < 6

x > 10

x < 10

x > 6

1

1

Слайд 13

Сложные условия Задача. Фирма набирает сотрудников от 25 до 40 лет

Сложные условия

Задача. Фирма набирает сотрудников от 25 до 40 лет включительно.

Ввести возраст человека и определить, подходит ли он фирме (вывести ответ «подходит» или «не подходит»).
Особенность: надо проверить, выполняются ли два условия одновременно.
Слайд 14

Вариант 1. Алгоритм начало ввод x 'подходит' конец да нет x

Вариант 1. Алгоритм

начало

ввод x

'подходит'

конец

да

нет

x >= 25?

да

нет

x <= 40?

'не подходит'

'не подходит'

Слайд 15

Вариант 2. Алгоритм начало ввод x 'подходит' да нет x >= 25 и x 'не подходит'

Вариант 2. Алгоритм

начало

ввод x

'подходит'

да

нет

x >= 25 и
x <= 40?

'не подходит'

Слайд 16

ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ Даны три действительных числа. Возвести в куб

ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ

Даны три действительных числа. Возвести в куб те

из них, значения которых неотрицательны. Результат вычисления вывести на экран монитора.
Написать программу вычисления значения функции
Написать программу выбора наибольшего из трёх чисел.
Даны x, y. Если x и y отрицательны, то каждое значение заменить его модулем; если отрицательно только одно из них, то оба значения увеличить на 0.5; если оба значения неотрицательны, то оба значения увеличить в 10 раз. Результат вывести на экран.
Даны три числа a, b, c. Выяснить, верно ли, что aОпределить, является ли частное чисел a и b, округлённое до ближайшего целого чётным числом.
Слайд 17

Оператор выбора Задача: Ввести номер месяца и вывести количество дней в

Оператор выбора

Задача: Ввести номер месяца и вывести количество дней в этом

месяце.
Решение: Число дней по месяцам:
28 дней – 2 (февраль)
30 дней – 4 (апрель), 6 (июнь), 9 (сентябрь), 11 (ноябрь)
31 день – 1 (январь), 3 (март), 5 (май), 7 (июль), 8 (август), 10 (октябрь), 12 (декабрь)
Особенность: Выбор не из двух, а из нескольких вариантов в зависимости от номера месяца.
Слайд 18

Алгоритм начало конец оператор выбора ни один вариант не подошел ввод

Алгоритм

начало

конец

оператор выбора

ни один вариант не подошел

ввод M

да

нет

M = 1?

D = 31;

нет

M

= 2?

D = 28;

да

нет

M = 12?

D = 31;

да

вывод D

ошибка

Слайд 19

Оператор выбора switch предназначен для разветвления процесса вычислений на несколько направлений.

Оператор выбора switch
предназначен для разветвления процесса вычислений на несколько направлений.


Формат оператора:
switch (<выражение>)
{case <константное_выражение_1>: [<оператор 1>] ;
break;
case <константное_выражение_2>: [<оператор 2>];
break
…………………………..
case <константное_выражение_n>: [<оператор n>];
break;
[default: <оператор> ]}
Выражение, стоящее за ключевым словом switch, должно иметь арифметический тип или тип указатель.
Все константные выражения должны иметь разные значения, но совпадать с типом выражения, стоящим после switch.
Ключевое слово case и расположенное после него константное выражение называют также меткой case.
Слайд 20

Выполнение оператора начинается с вычисления выражения, расположенного за ключевым словом switch.

Выполнение оператора начинается с вычисления выражения, расположенного за ключевым словом switch.


Полученный результат сравнивается с меткой case.
Если результат выражения соответствует метке case, то выполняется оператор, стоящий после этой метки.
Затем последовательно выполняются все операторы до конца оператора switch , если только их выполнение не будет прервано с помощью оператора передачи управления break
При использование оператора break происходит выход из switch и управление переходит к первому после него оператору.
Если совпадения выражения ни с одной меткой case не произошло, то выполняется оператор, стоящий после слова default, а при его отсутствии управление передается следующему за switch оператору.
Слайд 21

все выражения case должны производить уникальные значения. То есть вы не сможете сделать следующее:

все выражения case должны производить уникальные значения.
То есть вы не

сможете сделать следующее:
Слайд 22

Можно использовать сразу несколько кейсов для одного выражения. Следующая функция использует

Можно использовать сразу несколько кейсов для одного выражения. Следующая функция использует

несколько кейсов для проверки, соответствует ли параметр p числу из ascii-таблицы:
Слайд 23

НЕСКОЛЬКО СТЕЙТМЕНТОВ ВНУТРИ БЛОКА SWITCH вы можете использовать несколько стейтментов под

НЕСКОЛЬКО СТЕЙТМЕНТОВ ВНУТРИ БЛОКА SWITCH

вы можете использовать несколько стейтментов под

каждым кейсом, не определяя новый блок:
Слайд 24

ОБЪЯВЛЕНИЕ ПЕРЕМЕННОЙ И ЕЁ ИНИЦИАЛИЗАЦИЯ ВНУТРИ CASE можете объявлять, но не инициализировать переменные внутри блока case:

ОБЪЯВЛЕНИЕ ПЕРЕМЕННОЙ И ЕЁ ИНИЦИАЛИЗАЦИЯ ВНУТРИ CASE

можете объявлять, но не инициализировать

переменные внутри блока case:
Слайд 25

ОБЪЯВЛЕНИЕ ПЕРЕМЕННОЙ И ЕЁ ИНИЦИАЛИЗАЦИЯ ВНУТРИ CASE Обратите внимание, что, хотя

ОБЪЯВЛЕНИЕ ПЕРЕМЕННОЙ И ЕЁ ИНИЦИАЛИЗАЦИЯ ВНУТРИ CASE

Обратите внимание, что, хотя переменная

z была определена в первом кейсе, она также используется и во втором кейсе.
Все кейсы считаются частью одной и той же области видимости, поэтому, объявив переменную в одном кейсе, мы можем спокойно использовать её без объявления и в других кейсах.
Слайд 26

ОБЪЯВЛЕНИЕ ПЕРЕМЕННОЙ И ЕЁ ИНИЦИАЛИЗАЦИЯ ВНУТРИ CASE Если в кейсе нужно

ОБЪЯВЛЕНИЕ ПЕРЕМЕННОЙ И ЕЁ ИНИЦИАЛИЗАЦИЯ ВНУТРИ CASE

Если в кейсе нужно объявить

и/или инициализировать новую переменную, то это лучше всего сделать, используя блок стейтментов внутри кейса:
Слайд 27

Оператор выбора Задача: Ввести номер месяца и вывести количество дней в

Оператор выбора

Задача: Ввести номер месяца и вывести количество дней в этом

месяце.
Решение: Число дней по месяцам:
28 дней – 2 (февраль)
30 дней – 4 (апрель), 6 (июнь), 9 (сентябрь), 11 (ноябрь)
31 день – 1 (январь), 3 (март), 5 (май), 7 (июль), 8 (август), 10 (октябрь), 12 (декабрь)
Особенность: Выбор не из двух, а из нескольких вариантов в зависимости от номера месяца.
Слайд 28

Алгоритм начало конец оператор выбора ни один вариант не подошел ввод

Алгоритм

начало

конец

оператор выбора

ни один вариант не подошел

ввод M

да

нет

M = 1?

D = 31;

нет

M

= 2?

D = 28;

да

нет

M = 12?

D = 31;

да

вывод D

ошибка

Слайд 29

Программа main() { int M, D; printf("Введите номер месяца:\n"); scanf("%d", &M);

Программа

main()
{
int M, D;
printf("Введите номер месяца:\n");
scanf("%d", &M);
switch (

M ) {
case 2: D = 28;
case 4: case 6: case 9: case 11: D = 30;
case 1: case 3: case 5: case 7:
case 8: case 10: case 12:
D = 31;
default: D = -1;
}
if (D > 0)
printf("В этом месяце %d дней.", D);
else printf("Неверный номер месяца");
}

ни один вариант не подошел

break;

break;

break;

выйти из
switch

Слайд 30

Пример. Известен порядковый номер дня недели. Вывести на экран его название.

Пример. Известен порядковый номер дня недели. Вывести на экран его название.
#include


int main()
{int x;
cin >>x;
switch (x)
{ case 1: cout <<"понедельник"; break;
case 2: cout <<"вторник"; break;
case 3: cout <<"среда"; break;
case 4: cout <<"четверг"; break;
case 5: cout <<"пятница"; break;
case 6: cout <<"суббота"; break;
case7: cout <<"воскресенье";break;
default: cout <<"вы ошиблись";}
return 0;}
Слайд 31

Оператор выбора Задача: Ввести букву и вывести название животного на эту

Оператор выбора

Задача: Ввести букву и вывести название животного на эту букву.


Особенность: выбор по символьной величине.

main()
{
char c;
printf("Введите первую букву названия животного:\n");
scanf("%c", &c);
switch ( c ) {
case 'а': printf("Антилопа"); break;
case 'б': printf("Бизон"); break;
case 'в': printf("Волк"); break;
default: printf("Я не знаю!");
}
}

Слайд 32

Оператор выбора Особенности: после switch может быть имя переменной или арифметическое

Оператор выбора

Особенности:
после switch может быть имя переменной или арифметическое выражение целого

типа (int)
или символьного типа (char)
нельзя ставить два одинаковых значения:

switch ( i+3 ) {
case 1: a = b; break;
case 2: a = c;
}

switch ( x ) {
case 1: a = b; break;
case 1: a = c;
}

Слайд 33

Дан номер фигуры (1- квадрат, 2 - треугольник); по номеру фигуры

Дан номер фигуры (1- квадрат, 2 - треугольник);
по номеру фигуры

запросить необходимые данные для вычисления площади;
произвести вычисление площади фигуры и вывести полученные данные на экран.
#include
#include
using namespace std;
int main()
{ int x;
cout << “Программа подсчитывает площадь:\n1. квадрата;\n2. треугольника.\nЗ. выход из программы’’;
cout <<“Укажите номер фигуры или завершите работу с программой.\n”;
cin >> x;
switch (x)
{case 1 :{cout <<"введите длину стороны квадрата\n";
float a; cin >>a;
if (a>0) cout«"Площадь квадрата со стороной" <<а <<"равна\t” <<а*а;
else cout «"Квадрат не существует\n";
break;}
case 2: {cout« "введите длины сторон треугольника\n";
float a,b,c,p, s; cin >>a >>b >>c;
if (a+b>c && a+c>b && b+c>a)
{p=(a+b+c)/2; s= sqrt(p*(p-a)*(p-b)*(p-c));
cout <<"Площадь треугольника со сторонами" < else cout<<"Tpeyгольник не существуетет\n";
break;}
case 3:break;
default: cout <<"Номер фигуры указан не верно\n";}
return 0;}