1
Программирование на алгоритмическом языке
Тема 4. Циклы
![]() |
Цикл – это многократное выполнение одинаковых действий.
![]() |
Задача. Вывести на экран 5 раз слово «Привет».
Особенность: одинаковые действия выполняются 5 раз.
![]() |
алг Привет нач вывод "Привет", нс
вывод "Привет", нс вывод "Привет", нс
вывод "Привет", нс вывод "Привет", нс кон
![]() |
начало цикла
алг Привет нач нц 5 раз вывод "Привет!", нс
кц кон
нц 5 раз
тело цикла
конец цикла
вывод "Привет!", нс
кон
![]() |
![]() |
|
Задача: ввести количество повторения с клавиатуры.
![]() |
«3»: Ввести натуральное число и вывести в строчку все числа от 1 до этого числа.
Пример:
Введите натуральное число:
4
Ответ: 1 2 3 4
«4»: Ввести два целых числа, найти их произведение, не используя операцию умножения.
Пример:
Введите два числа: 4 15
4*15=60
«5»: Ввести натуральное число N и найти сумму всех чисел от 1 до N (1+2+3+…+N).
Пример:
Введите число слагаемых: 100
Сумма чисел от 1 до 100 равна 5050
![]() |
|
![]() |
|||||||||||
![]() |
![]() |
![]() |
![]() |
![]() |
|||||||
N := N + 1
N := N + 1
![]() |
![]() |
алг Привет 2 нач цел N N:= 0 нц пока N
<> 5 вывод "Привет!", нс
N:= N +
1 кц кон
алг Привет 3 нач цел N N:= 5 нц пока N
<> ??? вывод "Привет!", нс ??? кц кон ??? ???
Вместо знаков
вопроса добавьте числа
и операторы так,
чтобы цикл выполнился
ровно 5 раз:
![]() |
|
|
2
4
алг Пример 2 нач цел N N:= 1 нц пока N
<= 5 вывод N, нс N:= N + 2 кц кон алг Пример 2 нач цел N N:= 1 нц пока N
<= 5 вывод
N, нс N:= N
+ 2 кц кон
1
5
|
|
4
8
12
16
алг Пример 4 нач цел N N:= 1 нц
пока N <= 5
вывод N*N*N, нс
N:= N +
1 кц кон алг Пример 4
нач цел N N:= 1 нц
пока N <= 5
вывод N*N*N, нс
N:= N +
1 кц кон
1
27
125
|
|
64
8
«3»: Ввести натуральное число вывести квадраты и кубы всех чисел от 1 до этого числа.
Пример:
Введите натуральное число: 3
1: |
1 |
1 |
2: |
4 |
8 |
3: |
9 |
27 |
«4»: Ввести два целых числа a и b (a ≤ b) и вывести квадраты все чисел от a до b.
Пример:
Введите два числа: 4 5
4*4=16
5*5=25
«5»: Ввести два целых числа a и b (a ≤ b) и вывести сумму квадратов всех чисел от a до b.
Пример:
Введите два числа: 4 10
Сумма квадратов 371
![]() |
Пример: Распилить бревно на поленья. Сколько поленьев получится?
Задача: Ввести целое число (<2000000) и определить число цифр в нем.
Идея решения: Отсекаем последовательно последнюю цифру, увеличиваем счетчик.
n |
count |
123 |
0 |
12 |
1 |
1 |
2 |
0 |
3 |
Проблема: Неизвестно, сколько шагов надо сделать.
Решение: Надо остановиться, когда n = 0, т.е. надо делать
«пока n <> 0».
![]() |
![]() |
|
алг Число цифр нач
, n1
цел
n, count
; n1:=
n
вывод "Введите целое число", нс ввод n
нц пока n<>0 count:= count
+ 1 n:=
div(n,10) кц
count:= 0
n,
вывод "В числе ", кон
" нашли ", count, " цифр"
? Что плохо?
нц пока a < b
b:= b -
2 кц
Особенности:
•
нц пока a < 10
и b >
5 a:= a + 5; b:= b
- 2 кц a < 10 и b > 5
можно
использовать сложные условия:
![]() |
• можно записывать в одну строчку, разделяя команды точкой с запятой:
![]() |
Особенности:
• условие проверяется при каждом входе в цикл
•
![]() |
|
• если условие никогда не станет ложным, программа
a:= 4;
b:= 6 нц пока
a < b;
d:= a +
b кц
зацикливается
![]() |
![]() |
|
|
|
|
|
Задания
«3»: Ввести целое число и определить, верно ли, что в нём ровно 3 цифры.
Пример:
Введите |
число: |
Введите |
число: |
123 |
|
1234 |
|
Да. |
|
Нет. |
|
«4»: Ввести целое число и найти сумму его цифр.
Пример:
Введите целое число:
1234
Сумма цифр числа 1234 равна 10.
«5»: Ввести целое число и определить, верно ли, что в его записи есть две одинаковые цифры, стоящие рядом.
Пример:
Введите целое число: Введите целое число: 1232 1224
Нет. Да.
«6»: Ввести целое число и определить, верно ли, что в его записи есть две одинаковые цифры, НЕ обязательно стоящие рядом.
Пример:
Введите целое число: Введите целое число: 1234 1242
Нет. Да.
«3»: Ввести целое число и определить, верно ли, что в нём ровно 1 цифра «9».
Пример:
Введите |
число: |
Введите |
число: |
193 |
|
1994 |
|
Да. |
|
Нет. |
|
«4»: Ввести целое число и определить, верно ли, что все его цифры четные.
Пример:
Введите |
число: |
Введите |
число: |
2684 |
|
2994 |
|
Да. |
|
Нет. |
|
«5»: Ввести целое число и определить, верно ли, что все его цифры расположены в порядке возрастания.
Пример:
Введите целое число: Введите целое число: 1238 1274
Да. Нет.
«6»: Ввести целое число и «перевернуть» его, так чтобы первая цифра стала последней и т.д.
Пример:
Введите целое число: Введите целое число: 1234 782
4321 287
![]() |
НОД = наибольший общий делитель двух натуральных чисел – это наибольшее число, на которое оба исходных числа делятся без остатка.
Перебор:
1.
1. Записать в переменную k минимальное из
двух чисел. 2. Если
a и b без остатка делятся на k, то стоп. 3. Уменьшить k на 1. 4. Перейти к шагу 2.
Записать в переменную k минимальное из двух
чисел.
2. Если a и b без остатка делятся на k, то стоп.
3. Уменьшить k на 1.
4. Перейти к шагу 2.
это цикл с условием!
© К. Поляков, 2010-2011 http://kpolyakov.narod.ru
? Почему алгоритм
обязательно закончится?
![]() |
Надо: вычислить наибольший общий делитель (НОД) чисел a и b.
Заменяем
большее из двух чисел разностью большего и меньшего до тех пор, пока они не станут
равны. Это и есть
НОД.
НОД(a,b)= НОД(a-b, b) = НОД(a, b-a) НОД(a,b)= НОД(a-b, b) = НОД(a, b-a)
Пример:
Евклид
(365-300 до. н. э.)
НОД (14, 21) = НОД (14, 21-14) = НОД (14, 7)
= НОД (7, 7) = 7
много шагов при большой
разнице чисел:
НОД (1998, 2) = НОД (1996, 2) = … = 2
![]() |
![]() |
![]() |
|
Модифицированный алгоритм
Евклида Заменяем большее
из двух чисел остатком от деления
большего на меньшее
до тех пор, пока меньшее не
НОД(a,b)= НОД(mod(a,b), b) = НОД(a, mod(b,a))
станет
равно нулю. Тогда большее — это НОД.
![]() |
Пример:
НОД (14, 21) = НОД (14, 7) = НОД (0, 7) = 7
НОД(2·a,2·b)= 2·НОД(a, b) НОД(2·a,b)= НОД(a, b)
| при нечетном b
Еще один вариант:
![]() |
«3»: Составить программу для вычисления НОД с помощью алгоритма Евклида.
«4»: Составить программу для вычисления НОД с помощью модифицированного алгоритма Евклида и заполнить таблицу:
a |
64168 |
358853 |
6365133 |
17905514 |
549868978 |
b |
82678 |
691042 |
11494962 |
23108855 |
298294835 |
НОД(a,b) |
|
|
|
|
|
«5»: Выполнить задание на «4» и подсчитать число шагов алгоритма для каждого случая.
a |
64168 |
358853 |
6365133 |
17905514 |
549868978 |
b |
82678 |
691042 |
11494962 |
23108855 |
298294835 |
НОД(a,b) |
|
|
|
|
|
шагов |
|
|
|
|
|
![]() |
Задача: вывести кубы чисел от 1 до 8.
![]() |
2. Как они должны изменяться?
![]() |
Цикл с переменной
Задача: вывести кубы натуральных чисел от 1 до 8.
алг Кубы нач цел N, кубN N:= 1 нц
пока N <= 8 кубN:= N*N*N вывод кубN, нс N:=
N + 1 кц кон
алг Кубы нач
цел N, кубN
N:= 1
нц пока
N <= 8
3 действия с N
кубN:= N*N*N вывод кубN, нс N:= N + 1
кц
кон
Задача: вывести кубы натуральных чисел от 1 до 8.
алг Кубы нач цел N, кубN кон
алг Кубы
нач
цел N, кубN
для 1,2,3,…,8
нц для N от 1 до 8 кубN:= N*N*N вывод кубN, нс
кц кон
![]() |
алг Кубы нач цел N, кубN кон
Задача: вывести кубы чётных чисел от 2 до 8.
![]() |
![]() |
|
|
|
|
![]() |
![]() |
![]() |
Особенности:
• переменная цикла может быть только целой (цел)
• начальное и конечное значения и шаг – целые
•
нц для
n от 1 до 4 вывод n кц
можно записывать в одну строчку, разделяя команды точкой с запятой:
![]() |
• если шаг > 0 и конечное значение < начального, цикл не выполняется ни разу (проверка условия в начале цикла, цикл с предусловием)
• если шаг < 0 и конечное значение > начального, цикл не выполняется ни разу
![]() |
|
|
|
|
![]() |
«3»: Ввести натуральное число N и вывести числа от N до 1 (через одно) в порядке убывания.
Пример:
Введите натуральное число: 8
Ответ: 8 6 4 2
«4»: Ввести два целых числа a и b (a ≤ b) и вывести кубы всех чисел от a до b.
Пример:
Введите два числа:
4 6
4*4*4=64
5*5*5=125
6*6*6=216
«5»: Ввести целое число a и вывести сумму квадратов всех чисел от 1 до a с шагом 0.1.
Пример:
Введите последнее число: 3
Сумма 91.7
12 + 1.12 + 1.22 +…+ a2
«4»: Ввести a и b и вывести квадраты и кубы чисел от a до b.
Пример:
Введите |
границы |
интервала: |
4 6 |
|
|
4: 16 |
64 |
|
5: 25 |
125 |
|
6: 36 |
216 |
|
«5»: Вывести квадраты и кубы 10 чисел следующей последовательности: 1, 2, 4, 7, 11, 16, …
Пример:
1: |
1 |
1 |
2: |
4 |
8 |
4: |
16 |
64 |
...
46: 2116 97336
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.