ЗАРАНЕЕ известно, сколько раз повторять
Цикл с параметром (for)
1 Для приседаний�(начни с 1; пока не дошёл до 5; каждый раз +1)
Почему “постусловие”�Потому что условие проверяется после выполнения.
�
Программирование циклических алгоритмов
- писать код на языке программирования, используя операторы цикла
- строить алгоритмические модели задач с использованием языка программирования
- строить трассировочную таблицу
Цикл - это многократное выполнение одинаковых действий.
Что такое цикл?
Два вида циклов:
1. Цикл с переменной или с известным числом шагов
2. Цикл с условием или с неизвестным числом шагов
Задача. Вывести на экран 5 раз слово «Привет».
Можно ли решить известными методами?
?
Повторения в программе
cout << "Привет\n";
cout << "Привет\n";
cout << "Привет\n";
cout << "Привет\n";
cout << "Привет\n";
Что плохо?
?
Цикл while
while (Условие) {
тело цикла;
}
Цикл while повторяет действие, пока условие верно
while (условие) {� // тело цикла�}
Блок-схема цикла
начало
конец
да
нет
сделали 10 раз?
вывод "Привет!"
счётчик = 0
пока счётчик < 10
cout << "Привет\n";
увеличить счётчик на 1
счётчик = 10
пока счётчик > 0
cout << "Привет\n";
уменьшить счётчик на 1
Сколько раз выполняется цикл?
a = 0;
for(int i = 0; i < 3; i++) a = a + 1;
a = ?
a = 0;
for(int i = 3; i <1; i++ ) a = a + 1;
a = ?
int a = 0;
while (a < 3)
{
cout << “Привет”;
}
a = ?
Сколько раз выполняется цикл?
a = 0;
for(int i = 0; i < 3; i++) a = a + 1;
a = 3
a = 0;
for( i = 3; i <1; i++ ) a = a + 1;
a = 0
int a = 0;
while (a < 3)
{
cout << “Привет”;
}
a = Бесконечно
Практическая работа
Создай программу, следуя модели на блок-схеме:
Дескрипторы:
- использует цикл с постусловием
- использует операторы присвоения
- определяет условие цикла
- формулирует тело цикла
- правильно выводит результат
- строит трассировочную таблицу
i:=1
P:=1
P:=P*i
1
i>5
ко
P
да
нач
i=3
P=2
P=P^i
i=i+1
i<5
кон
P
нет
Шаг | Р | i | Проверка условия |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
i:=1
P:=1
P:=P*i
1
i>5
ко
P
да
нач
i=3
P=2
P=P^i
i=i+1
i<5
кон
P
нет
Шаг | Р | i | Проверка условия |
1 | 2 | | |
2 | | 3 | |
3 | 8 | 4 | 4<5 (истина) |
4 | 4096 | 5 | 5<5(ложь) |
i:=1
P:=1
P:=P*i
1
i>5
ко
P
да
нач
i=3
P=2
P=P^i
i=i+1
i<5
кон
P
нет
Задание �Нарисуйте блок-схему и напишите программу
Задачи
Рефлексия
Цикл с условием
Цикл while выполняет некоторый код, пока его условие истинно, то есть возвращает true. Он имеет следующее формальное определение
While (условие)
{
// выполняемые действия
}
Цикл while является самым простым из 4-х циклов, которые есть в языке C++. Он очень похож на ветвление if/else:
Цикл while объявляется с использованием ключевого слова while. В начале цикла обрабатывается условие. Если его значением является true (любое ненулевое значение), то тогда выполняется тело цикла. Однако, в отличие от оператора if, после завершения выполнения тела цикла, управление возвращается обратно к while и процесс проверки условия повторяется. Если условие опять является true, то тогда тело цикла выполняется еще раз. Например, следующая программа выводит все числа от 0 до 9:
#include <iostream>≠
Using namespace std;
int main()
{
int count = 0;
while (count < 10)
{
cout << count << " ";
count++;
}
cout << "done!";
return 0;
}
Результат выполнения программы:0 1 2 3 4 5 6 7 8 9 done!
Цикл с условием
�2 3 4 5 6 7 8 9 10 | #include <iostream> Using namespace std; int main() { int count = 0; while (count < 10) // это условие никогда не будет false cout << count << " "; // поэтому эта строка будет выполняться постоянно return 0; // а эта строка никогда не выполнится } |
Поскольку переменная count не увеличивается на единицу в этой программе, то условие count < 10 всегда будет true. Следовательно, цикл никогда не будет завершен, и программа будет постоянно выводить 0 0 0 0 0....
Прерывание цикла: Break�
Обычно цикл завершается при вычислении условия в false.
Но мы можем выйти из цикла в любой момент с помощью специальной директивы break.
Например, следующий код подсчитывает сумму вводимых чисел до тех пор, пока пользователь их вводит, а затем – выдаёт:
int sum = 0;
while (true)
{
int value = int.Parse(Console.ReadLine());
sum = value;
break;
}
cout << ("Сумма: " + sum);
Задание (Код на С++, блок-схема, трассировочная таблица)
1. Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти длину незанятой части отрезка A.(while)
2.Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти количество отрезков B, размещенных на отрезке A (while)
3. Даны целые числа K и N (N > 0). Вывести N раз число K (while)
4. Даны два целых числа A и B (A < B). Найти произведение всех целых чисел от A до B включительно. (while)
5. Организовать беспрерывный ввод чисел с клавиатуры, пока пользователь не введет 0. После ввода нуля, показать на экран количество чисел, которые были введены, их общую сумму.(do while)
Виды циклов в языке С++ - online presentation (ppt-online.org)
Шаг | i (до) | Условие i <= n | Действие | Вывод | i (после) |
1 | 1 | 1 ≤ 3 → true | cout << k | 7 | 2 |
2 | 2 | 2 ≤ 3 → true | cout << k | 7 | 3 |
3 | 3 | 3 ≤ 3 → true | cout << k | 7 | 4 |
4 | 4 | 4 ≤ 3 → false | выход из цикла | — | — |
k = 7, n = 3
4Даны числа A и B (A < B).�Нужно найти произведение всех целых чисел от A до B включительно.
Слово «произведение» = умножить все числа подряд.
A = 2 «От A до B включительно» — это числа: 2, 3, 4, 5
B = 5
2 × 3 × 4 × 5 = 120
5 Ты вводишь число �2️⃣ Компьютер смотрит:
4
13