2.61M
Category: programmingprogramming

Условия и циклы

1.

Условия и циклы

2.

Какой ты сегодня?
1
2
3

3.

Давайте договоримся?
• Уважение, мы всегда уважаем друг друга, уважаем ответы наших коллег.
• Мы не перебиваем друг друга, и всегда дослушиваем ответ даже если комуто кажется что он не правильный.
• Мы всегда со включенными камерами, кроме тех у кого есть временные
технические проблемы.
• Мы не спамим в чат, общаемся только по существу урока.
• Еда, телефон, включенный звук только при ответе.
• Не опаздываем на занятие.

4.

Цель на сегодня:
1.
2.
Подробно рассмотреть понятия условного и безусловного перехода.
Научиться писать условия и понять принципы ветвления программы.
3.
Изучить особенности оператора множественного выбора.
Даже путь в тысячу ли начинается с
первого шага
Пословица из трактата «Дао Дэ Цзин»

5.

Что это нам
даст?
Brain Storm
Для чего?
Зачем?

6.

Операторы языка
• В языке С++ можно выделить три основных типа операторов:
• элементарные операторы;
• операторы ветвления;
• операторы цикла.

7.

Элементарные операторы
Представляют собой любое выражение, за которым следует ; (точка с запятой).
int HP = 100;
Оператор
Но эта строка может быть и пустой(состоять из одной только ; ). Такой
оператор называется пустым оператором.
Тоже оператор
;
Вызов функции также рассматривается в С++ как оператор, но это особый
оператор передачи управления который мы рассмотрим на других уроках.

8.

Операторы ветвления
Известные также под именами "операторы перехода", "операторы передачи управления", предназначены
для изменения естественного в языке С++, построчного (т.е. строка за строкой), порядка выполнения
программы. В языке С++ определены два типа операторов ветвления: условный и безусловный.
Условные:
• if/else
• switch/case
Безусловные:
• goto
• break
• continue

9.

Оператор if/else
Имеет следующий алгоритм
исполнения:
истина
Оператор 1
ложь
Условие
Оператор 2
Операторы if/else допускают
вложение одного оператора в
другой. Например:
И может иметь один из следующих форматов:
if (выражение)
{ // Этот блок операторов выполняется, если "выражение" истинно(Т)
оператор_1;
....
оператор_n;
}
или:
if (выражение)
{ // Этот блок операторов выполняется, если "выражение" истинно(Т)
оператор_1;
....
оператор_n;
}
else // Соответствует пунктирной ветке "F" на алгоритме этого оператора (F)
{ // Этот блок операторов выполняется, если "выражение" ложно
оператор_n + 1;
оператор_n + 2;
....
if (x == 3)
if (y == 5)
оператор_1;
else
оператор_2;
else
оператор_3;

10.

Оператор switch/case
#include <iostream>
main()
{
char op;
cout << "Введите символ арифметической операции: ";
cin >> op;
switch(op) {
case('+’):
cout << "Это символ операции сложения." << endl;
break;
case('-’):
cout << "Это символ операции вычитания." << endl;
break;
case('*’):
cout << "Это символ операции умножения." << endl;
break;
case('/’):
cout << "Это символ операции деления." << endl;
break;
default:
cout << "Это не символ арифметической операции." <<
endl;
}
Выражение op сравнивается с
символьными константами
и при совпадении выполняются
операторы, следующие за ключевым
словом case,
пока не встретится оператор break;
(оператор безусловного завершения
блока кода) завершения оператора
switch/case.
Если ни в одном из case(...):
константа не совпадает с аргументом
(op) оператора switch(op),
выполняется ветка "прочее", т.е. блок
операторов, следующих за ключевым
словом default. Но ветки default:
может и не быть, на
усмотрение программиста.

11.

Операторы цикла
Параметрический:
Число повторений известно
Цикл for
Два типа циклов
Итерационный:
Выполняется или не выполняется
Исходя из условия, которое проверяется
внутри цикла как до выполнения (циклы
for и while), так и после (цикл do/while)

12.

Оператор while()
Проверяет истинность «условия» каждый
раз перед выполнением тела цикла. Под
«условием» понимается любая операция
сравнения, любой оператор, или даже блок
операторов.
Если при первом же вычислении
«условия» результатом оказывается ложь,
тело цикла («оператор») не выполняется
ни разу. Вот пример цикла while:
#include <iostream>
main() {
int num, sum = 0;
cout << "Введите число от 1 до 10. Для завершения программы введите 0.
> ";
cin >> num;
while (num != 0) // Это заголовок цикла. Можно было
//написать: while(!num)
{ // В фигурных скобках {} тело цикла
sum += num;
cout << "Введите число от 1 до 10. Для
завершения
программы введите 0. > ";
cin >> num;
}
cout << "Сумма введенных чисел равна %d " << sum << endl;
}

13.

Оператор do/while()
Аналогичен оператору while(), но
проверка условия завершения
выполняется в конце цикла.
Как видим, применение цикла
do/while для нашего примера
оказалось немного выгоднее, чем
применение цикла while.
Отсутствуют двойное кодирование
подсказки и функции – оператора
буферизованного ввода числа cin.
Не повторять одни и те же
операторы при реализации одного
и того же алгоритма - пример
хорошего стиля кодирования.
#include < iostream >
main() {
int num, sum = 0;
do { // В фигурных скобках {} тело цикла
cout <<"Введите число от 1 до 10. Для завершения программы введите
0.\n";
cin >> num;
sum += num;
} while(num != 0); // Проверка условия в конце, однако это заголовок цикла
cout << "Сумма введенных чисел равна“ << sum;
}

14.

Оператор цикла for
Итак, на схеме алгоритма цикла for:
- инициализация - есть указание начальных условий цикла, выполняется это выражения
только один раз, перед началом выполнения цикла;
- условие является условием выполнения цикла, вычисляется и проверяется перед
каждой итерацией выполнения цикла. Если результат вычисления условия не равен
лжи, тело цикла выполняется, в противном случае цикл завершается, и управление
передается на следующий за циклом оператор;
- изменение - это модификатор начальных условий цикла, выполняется это выражение
после каждой итерации выполнения цикла. Таким образом, модификации могут
подвергаться, по желанию программиста, как исходные начальные условия,
установленные условием, так и (что происходит гораздо чаще) те же начальные
условия, но уже модифицированные в предыдущих итерациях цикла.
В качестве инициализации, условия и изменений допустимы любые корректные
выражения языка С++, в том числе и пустые операции (;). Но если опущено условие, то
считается, что условие выполнения очередной итерации такого цикла всегда истина.
Иными словами, в языке С++ допустим такой цикл:
for(;;); // Это пример определения бесконечного цикла

15.

Вот пример той же программы, что мы давали при разговоре про циклы
while и do/while, но с использованием оператора for:
#include <iostream>
main() {
int num, sum;
cout << "Введите число от 1 до 10. Для завершения программы введите
0. > ";
cin >> num;
for (sum = 0; num != 0; sum += num) // В фигурных скобках {} тело цикла
{
cout <<; "Введите число от 1 до 10. Для завершения программы
введите 0. > "
}
cout << "Сумма введенных чисел равна " << sum << endl;
}

16.

Практика
1. Написать программу, проверяющую что сумма двух (введенных
с клавиатуры) чисел лежит в пределах от 10 до 20
(включительно), если да – вывести строку "true", в противном
случае – "false";
2. Написать программу которая выводит на экран список всех
нечетных чисел он 1 до 50. Например: "Your numbers: 1 3 5 7 9 11
13 …". Для решения используйте любой С++ цикл.

17.

#include <iostream>
using namespace std;
int main()
{
int a = 0, b = 0;
cout << "Enter a: " << endl;
cin >> a;
cout << "Enter b: " << endl;
cin >> b;
if (a + b >= 10 && a + b <= 20) {
cout << "True" << endl;
}
else
{
cout << "False" << endl;
}
}
Написать программу, проверяющую что сумма двух
(введенных с клавиатуры) чисел лежит в пределах от
10 до 20 (включительно), если да – вывести строку
"true", в противном случае – "false";

18.

#include <iostream>
using namespace std;
int main()
{
for (size_t i = 0; i < 50; i++)
{
if (i % 2 == 1)
{
cout << i << " " << endl;
}
}
}
Написать программу которая выводит на экран
список всех нечетных чисел он 1 до 50.
Например: "Your numbers: 1 3 5 7 9 11 13 …". Для
решения используйте любой С++ цикл.

19.

Итоги сегодняшнего занятия:
1. Подробно рассмотрели понятия условного и безусловного
перехода.
2. Научились писать условия и поняли принципы ветвления
программы.
3. Изучили особенности оператора множественного выбора.
С каждым днем вы становитесь лучше.
English     Русский Rules