Similar presentations:
Операторы C и C++ (вычислительные структуры). С / С++. Тема 03
1. НРТК
С / С++Тема 03. Операторы C и C++ (вычислительные
структуры)
НРТК, 2022 г. 1
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
2. Темы
Оператор присваивания
Оператор ветвления if
Переключатель switch
Цикл for
Цикл с предусловием while
Цикл с постусловием do-while
НРТК, 2022 г. 2
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
3. Оператор (операция) присваивания
• Оператор присваивания — операция,возвращающая присваиваемое значение
• Простой пример:
int a, b, c;
a = b = c * 3;
• Непростой пример:
int a, b, c;
a = (b = 5) + (c = 3);
НРТК, 2022 г. 3
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
4. Оператор if
• Синтаксис:if(<условие>) <S1> [else <S2>]
<S1>, <S2>
— операторы или группы операторов,
заключенные в фигурные скобки (блоки)
• Часть else может быть опущена, если не нужна
• Примеры:
if ( a > b )
max = a;
else
max = b;
if ( a < 0 )
a = -a;
НРТК, 2022 г. 4
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
5. Использование if
if ( a != b ) a = a + 1; b = b – 1;if ( a == b ) { a = a - 1; b = b + 1; }
if ( a !=
{
a = a +
b = b }
else
{
a = a b = b +
}
НРТК, 2022 г. 5
b )
1;
1;
1;
1;
if ( a < b )
a = a + 1;
b = b – 1;
if ( a < b )
a = a + 1;
b = b – 1;
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
6. Поговорим об <условии>
Поговорим об <условии>• Условие — выражение
• Можно использовать операции
– сравнения (отношения): == (равно), != (не равно), <,
>, <=, >=
– логики (булевской алгебры) : && (логическое «И»),
|| (логическое «ИЛИ»), ! (логическое «НЕ»)
– Пример: проверка условия a ≤ x ≤ b:
if ( a <= x && x <= b )...
– вычисляется только «достаточная» часть условия:
if ( ( 1 < 2 ) && ( b > 0 ) ) ...
• Тип выражения условия — любой, приводимый
к целочисленному
НРТК, 2022 г. 6
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
7. Поговорим об <условии>
Поговорим об <условии>• Пример:
if ( a + 7 ) ...
• Значение условия:
– вычисляется значение выражения <условие> и
приводится к целому типу
– если результат равен нулю, то <условие> — ложно
– если результат не равен нулю, то <условие> —
истинно
• Операции:
– отношения: ==, !=, <, >, <=, >=
– логические операции: &&, ||, !
– функции, возвращающие 0 (ложь) или 1 (истина)
НРТК, 2022 г. 7
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
8. <Условие>: примеры
<Условие>: примерыif ( a != 0 ) ...
if ( k = 0 ) ...
if ( a ) ...
if ( 0 == k ) ...
if ( k = 17 ) ...
if ( a > 0 & a < 10) ...
a = ( b == 7 )*d + ( c != 3 )*f;
a = 0;
if ( b == 7 ) a = a + d;
if ( c != 3 ) a = a + f;
НРТК, 2022 г. 8
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
9. Вложенные операторы if
if ( a != b ){
c = a + b;
}
else
{
c = a – b;
}
if ( a < 0 )
if ( b < c )
else ...
if ( a < b )
a = a + 1;
else
b = b - 1;
if ( c < a )
a = a - 1;
else
b = b + 1;
if ( a != b )
{
if ( a < b )
a = a + 1;
else
b = b - 1;
c = a + b;
}
else
{
c = a – b;
if ( c < a )
a = a - 1;
else
b = b + 1;
}
НРТК, 2022 г. 9
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
10. Пример: решение квадратного ур-я
double a, b, c;double d, x1, x2, re, im;
d = b * b – 4.0 * a * c;
if ( d > 0.0 )
{
d = sqrt(d);
x1 = (-b + d) / (2.0 * a);
x2 = (-b - d) / (2.0 * a);
}
else if ( d < 0.0 )
{
d = sqrt(-d);
re = -b / (2.0 * a);
im = d / (2.0 * a);
}
else
x1 = x2 = -b / (2.0 * a);
НРТК, 2022 г. 10
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
11. Переключатель switch
• Синтаксис:switch(<выражение>)
{
case <константное выражение1>: <S1>
case <константное выражение2>: <S2>
...
[default: <Sdef>]
}
• <S1>, <S2>, …, <Sdef> — группы операторов
• Выполняются все <S>, начиная с того,
<константное выражение> которого совпало со
значением <выражения>
• Если ничего не подошло, то выполняется <Sdef>
НРТК, 2022 г. 11
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
12. Переключатель switch
• Пример:switch( n )
{
case 1: cout << "Понедельник";
case 2: cout << "Вторник";
case 3: cout << "Среда";
case 4: cout << "Четверг";
case 5: cout << "Пятница";
case 6: cout << "Суббота";
case 7: cout << "Воскресенье";
default: cout << "Неверный номер";
}
• Этот пример при n = 1 выведет:
ПонедельникВторникСредаЧетвергПятницаСубботаВоскресен
ьеНеверный номер
НРТК, 2022 г. 12
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
13. Переключатель switch
• Выход из блока — оператор break• Пример:
switch( n )
{
case 1: cout << "Понедельник"; break;
case 2: cout << "Вторник";
break;
case 3: cout << "Среда";
break;
case 4: cout << "Четверг";
break;
case 5: cout << "Пятница";
break;
case 6: cout << "Суббота";
break;
case 7: cout << "Воскресенье"; break;
default: cout << "Неверный номер";
}
• Если забыть case, то программа останется
корректной, но исполняться будет неверно!
НРТК, 2022 г. 13
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
14. Пример: решение квадратного ур-я
double a, b, c, d, x1, x2, re, im;int flag;
d = b * b – 4.0 * a * c;
if ( d > 0.0 ) flag = 2;
else if ( d < 0.0 ) flag = 3; else flag = 1;
switch ( flag )
{
case 1:
x1 = x2 = -b / (2.0 * a);
break;
case 2:
d = sqrt(d);
x1 = (-b + d) / (2.0 * a);
x2 = (-b - d) / (2.0 * a);
break;
case 3:
d = sqrt(-d);
re = -b / (2.0 * a);
im = d / (2.0 * a);
}
НРТК, 2022 г. 14
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
15. Еще пример
if ( a == 1 )b = b + 1;
else
if ( a == 2 )
c = c + 1;
else
if ( a == 3 )
b = b - 1;
else
if ( a == 4 )
c = c - 1;
else
if ( a == 5 )
b = b + 2;
else
c = c - 2;
НРТК, 2022 г. 15
switch ( a
{
case 1:
case 2:
case 3:
case 4:
case 5:
default:
}
)
b
c
b
c
b
c
=
=
=
=
=
=
Операторы C и C++ (вычислительные структуры)
b
c
b
c
b
c
+
+
+
-
1;
1;
1;
1;
2;
2;
break;
break;
break;
break;
break;
break;
Созонов А.А.
16. Задачи
• Вычисление суммы страхового взноса– страховой взнос определяется как процент от
суммы страховки
– при страховании девочек возрастом до 5 лет этот
процент равен 4%, а для девочек старше 5 лет
зависит от суммы страховки: при сумме страховки
до 15 000 он равен 5%, а при сумме свыше 15 000 —
3%
– при страховании мальчиков до 8 лет страховой
процент равен 10%, а для мальчиков старше 8 лет
он составляет 1,5% при сумме страховки до 20 000 и
2,5% при сумме страховки свыше 20 000
НРТК, 2022 г. 16
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
17. Задачи
• Определение вида треугольника позаданным длинам его сторон
• Вывод числа дней в месяце по его номеру
• Задачи для самостоятельной работы
НРТК, 2022 г. 17
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
18. Цикл с предусловием while
• Синтаксис:while (<условие>) <S>
— оператор или группа операторов,
заключенная в фигурные скобки (блок) —
тело цикла
• Цикл выполняется пока <условие> истинно (не
равно 0)
• Условие проверяется перед выполнением
тела цикла
• Проблемы с условием — как у if
<S>
НРТК, 2022 г. 18
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
19. Цикл с предусловием while
• Пример: вычисление суммы цифр числа:sum =
while
{
c =
sum
n =
}
0;
( n )
n % 10;
= sum + c;
n / 10;
• Версия №2:
sum =
while
{
sum
n =
}
НРТК, 2022 г. 19
0;
( n )
= sum + n % 10;
n / 10;
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
20. Цикл с предусловием while
• Версия №3:sum =
n = n
while
sum
0;
* 10;
( n = n / 10 )
= sum + n % 10;
• Версия №4:
sum = 0;
n *= 10;
while ( n /= 10 )
sum += n % 10;
НРТК, 2022 г. 20
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
21. Цикл с предусловием while
• Если условие всегда истинно, то циклвыполняется бесконечно:
while( 1 ) cout << "Я зависла" << endl;
• Если условие изначально ложно, то тело не
выполнится ни разу:
while( 10 > 20 )
cout << "Вы никогда этого не увидите" <<endl;
• Пример (вычисление машинного ε):
double epsilon = 1.0;
while( epsilon / 2.0 + 1.0 > 1.0 )
epsilon /= 2.0;
НРТК, 2022 г. 21
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
22. Цикл с постусловием do - while
• Синтаксис:do <S> while(<условие>)
<S> — оператор или группа
операторов,
заключенная в фигурные скобки (блок) —
тело цикла
Цикл выполняется пока <условие> истинно (не
равно 0)
<Условие> проверяется после выполнения тела
цикла
Тело цикла выполнится по крайней мере один
раз
Можно написать бесконечный цикл, проблемы
с условием — как у if
НРТК, 2022 г. 22
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
23. Цикл с постусловием do - while
• Пример: вычисление n!:fac = 1;
do
{
fac = fac * n;
n = n - 1;
} while ( n );
• Версия №2:
fac = 1;
do
fac *= n--;
while ( n );
НРТК, 2022 г. 23
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
24. Цикл do - while: еще пример
• Ввод данных с контролем правильности:double R;
do
{
cout << "Введите радиус: ";
cin >> R;
if ( R <= 0 )
cout << "Неверное значение радиуса" <<endl;
} while ( R <= 0 );
НРТК, 2022 г. 24
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
25. Цикл for
• Синтаксис:for([<выражение1>]; [<условие>]; [<выражение2>])<S>
— оператор или группа операторов,
заключенная в фигурные скобки (блок) —
тело цикла
• Это почти эквивалентно:
<S>
[<выражение1>];
while ( <условие> )
{
<S>;
[<выражение2>];
}
НРТК, 2022 г. 25
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
26. Цикл for: примеры
• Вычисление n!:fac = 1;
for ( i = 2; i <= n; i++ )
fac *= i;
• Суммирование квадратов первых n
натуральных чисел:
s = 0;
for( i = 1; i <= n; i++ ) s += i * i;
for( i = 0; i <= n; s += ++i * i );
for( i = 0; i <= n; ) s += ++i * i;
• Бесконечные циклы:
for (; 1; ) cout << "Я зависла" << endl;
for (; ; ) cout << "Я зависла" << endl;
НРТК, 2022 г. 26
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
27. Цикл for: пример
• Суммирование отрезка ряда: 1+a-a2+a3+… +(-1)n-1an:int n, i;
double a, da, sum;
cout << "a, n = ";
cin >> a >> n;
da = 1.0;
sum = 1.0;
for ( i = 1; i <= n; i++ )
{
da = da * a;
if ( i % 2 ) sum = sum – da;
else
sum = sum + da;
}
НРТК, 2022 г. 27
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
28. Безусловный переход goto
• Синтаксис:goto <идентификатор>;
...
<идентификатор>: <инструкция>
• Осуществляет переход к выполнению
программы начиная с <инструкции>
• Пример:
for ( int i = 0; i < m; i++ )
for ( int j = 0; j < n; j++ )
if ( f(i, j) == a ) goto found;
// Не найдено
found:
// Найдено
НРТК, 2022 г. 28
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
29. Безусловный переход goto
• Еще пример:l1:
l2:
l3:
if (
if (
cout
goto
cout
goto
if (
cout
a > b ) goto l3;
b > c ) goto l2;
<< "Наибольшее число =" << c;
l4;
<< "Наибольшее число =" << b;
l4;
a < c ) goto l1;
<< "Наибольшее число =" << a;
l4:;
НРТК, 2022 г. 29
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
30. Break и continue
• Синтаксис:break
continue
• Выход из цикла и переход к следующей
итерации цикла соответственно, т.е:
while ( ... )
{
...
goto cnt;
goto brk;
...
// Или do-while, или for
// Это continue
// Это break
cnt:;
}
brk:;
НРТК, 2022 г. 30
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
31. Пример
int x, sum = 0, i;int pos_count = 0;
cout << "Вводите числа:" << endl;
for(i = 0; ;i++)
{
cin >> x;
if(x < 0)
continue;
if(x == 0)
break;
sum += x;
pos_count++;
}
cout << "Введено " << i << " чисел" << endl;
cout << "из них " << pos_count << " положительных, ";
cout << "сумма положительных = " << sum << endl;
НРТК, 2022 г. 31
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
32. Задачи
• Вычисление квадратного корня из заданногочисла
• Подсчет суммы положительных чисел и их
количества
• Задачи для самостоятельной работы
НРТК, 2022 г. 32
Операторы C и C++ (вычислительные структуры)
Созонов А.А.
33.
НРТК, 2022 г. 33Операторы C и C++ (вычислительные структуры)
Созонов А.А.