Вы находитесь на странице: 1из 23

РАЗДЕЛ 9.

3А: МАССИВЫ (ЯЗЫК ПРОГРАММИРОВАНИЯ С++)

Вложенные циклы. Часть 2


Цели обучения:

9.4.3.2 осуществлять трассировку


циклических алгоритмов c вложенными
циклами
Вопросы на повторение

1. Что такое ВЛОЖЕННЫЕ ЦИКЛЫ и как они называются по отношению к


друг другу?
Цикл называется вложенным, если он размещается внутри другого цикла.
Вложенный цикл по отношению к циклу в тело которого он вложен будет
именоваться внутренним циклом, и наоборот цикл в теле которого существует
вложенный цикл будет именоваться внешним по отношению к вложенному.

2. Приведите пример вложенных циклов из реальной жизни?


Смена месяцев (когда пройдет 12 месяцев - сменится год), смена дней (когда
пройдет 30 дней - сменится месяц), смена суток (когда пройдет 24 часа -
сменится день), смена часов (когда пройдет 60 минут - сменится час)
Пример 1 (Вы его решали на прошлом
уроке)
• Есть один интересный распространённый
пример, для демонстрации работы
вложенных циклов. Рассмотрим его:
применяя циклы, необходимо нарисовать
прямоугольник размером 5 х 10 из
символов @.
Вывод
Код
• #include <iostream>
• using namespace std;

• int main()
• {
• for (int i = 0; i <5; i++) // этот цикл отвечает за кол-во строк
• {
• for (int j = 0; j < 10; j++) // этот - за кол-во символов в каждой строке
• {
• cout << '@‘<<“ “;
• }
• cout << endl; // переход на строку ниже
• }
• return 0;
• }
Трассировочная таблица (Пример 3-Слайд 15)
Трассировочная таблица (Пример 3-Слайд 15)
Компактная версия
Практические работы.
Написать код и трассировочную таблицу

• Нарисовать квадрат из звездочек. (4х4)

• Нарисовать прямоугольный
треугольник из звездочек с высотой 5.

• Нарисовать равнобедренный
треугольник из звездочек.
Нарисовать квадрат из звездочек. (4х4).
Код задачи
• #include <iostream>
• using namespace std;
• int main()
• {
• for (int i = 0; i <5; i++) // этот цикл отвечает за кол-во строк
• {
• for (int j = 0; j < 5; j++) // этот - за кол-во символов в каждой
строке
• {
• cout << ‘*‘<<“ “;
• }
• cout << endl; // переход на строку ниже
• }
• return 0;
• }
Трассировочная таблица
Нарисовать прямоугольный треугольник
из звездочек с высотой 5. Код задачи
• #include <iostream>
• using namespace std;
• int main()
• {
• for (int i = 0; i <5; i++) // этот цикл отвечает за кол-во строк
• {
• for (int j = 0; j <=i; j++) // этот - за кол-во символов в каждой
строке
• {
• cout << ‘*‘<<“ “;
• }
• cout << endl; // переход на строку ниже
• }
• return 0;
• }
Трассировочная таблица
Нарисовать прямоугольный треугольник из
звездочек с высотой 4. Код задачи
• #include <iostream>
• using namespace std;
• int main() {
• for (int i = 0; i < 4; i++)
• {
• for (int j = 1; j < 4 - i; j++)
• {
• cout << ' ';
• }
• for (int j = 4 - 2 * i; j <= 4; j++)
• {
• cout << '*';
• }
• cout << endl;
• }
• return 0;
• }
Трассировочная таблица
Практические работы
1. В этой задаче вам предстоит построить
лесенку из чисел. Программа принимает
на вход целое положительное число n
(n<=15) - количество уровней, ваша задача
вывести n уровней, в каждом из которых
стоят числа от 1 до значения уровня.
Постройте трассировочную таблицу к
задаче.
Каким должен быть результат если n=7
Ответ Практической работы
• #include <iostream>
• using namespace std;
• int main()
• {
• int n;
• cin>>n;
• for(int i=1;i<=n;i++)
• {
• cout<<endl;
• for(int j=1;j<=i;j++){
• cout<<j<<" ";
• }
• }
• return 0;
• }
Вопросы

• Какие два условия нужно обязательно учитывать при оформлении

вложенных циклов?

 Внутренний цикл должен полностью входить во внешний.

 Нельзя использовать одну и ту же переменную в качестве

параметра внутреннего и внешнего циклов.

• Можно ли использовать одну и ту же переменную в качестве

параметра внутреннего и внешнего циклов?

• Нельзя использовать одну и ту же переменную в качестве

параметра внутреннего и внешнего циклов.


Домашняя работа
• Совершенным числом называется целое
положительное число, равное сумме своих
положительных делителей, исключая само
число. Например, 6 имеет делители 1, 2 и 3
(исключая само себя), а 1 + 2 + 3 = 6,
поэтому 6 — совершенное число.
Напишите программу, которая выводит все
совершенные числа от 1 до 100.
Рефлексия

Я понял, что …
Я еще поработаю над …
Я не понял …
• #include <iostream>
• using namespace std;
• int main()
• {

• int h; cin >> h;
• for (int i = 0; i<h; i++)
• {
• for (int j = 1; j < h - i; j++)
• cout << ' ';
• for (int j = h - 2*i; j <= h; j++)
• cout << '*';
• cout << endl;
• }
• system("pause");
• return 0;
• }
Вложенные циклы for
Как выглядит таблица?

Начало
Таблица умножения на 3 и 4 3×1=3 4×1=4
#include<iostream.h> 3×2=6 4×2=8
i = 3, 4 3×3=9 4 × 3 = 12
void main() 3 × 4 = 12 4 × 4 = 16
j = 1, 10
{ 3 × 5 = 15 4 × 5 = 20
3 × 6 = 18 4 × 6 = 24
v=i·j
int i, j, v; 3 × 7 = 21 4 × 7 = 28
Вывод i, j, v
for(i = 3; i < 5; i++) 3 × 8 = 24 4 × 8 = 32
{ 3 × 9 = 27 4 × 9 = 36
3 × 10 = 30 4 × 10 = 40
for(j = 1; j < 11; j++)
Конец {
v = i * j;
cout << i << " * " << j << " = " << v << endl;
}
Изменение внешнего
cout << endl; цикла происходит только
}
тогда, когда полностью
}
отработает внутренний
цикл

Вам также может понравиться