Похожие презентации:
9ba174a5a6c64d81b01e2d9ad2fa539d (1)
1. Программирование на языке Python
1Программирование
на языке Python
§ 57. Циклические
алгоритмы
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
2. Что такое цикл?
Алгоритмы и программирование, язык Python, 10 класс2
Что такое цикл?
Цикл – это многократное выполнение одинаковых
действий.
Два вида циклов:
• цикл с известным числом шагов (сделать 10 раз)
• цикл с неизвестным числом шагов (делать, пока не
надоест)
Задача. Вывести на экран 10 раз слово «Привет».
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
3. Блок-схема цикла
Алгоритмы и программирование, язык Python, 10 класс3
Блок-схема цикла
начало
сделали 10 раз?
да
конец
нет
print("Привет!")
тело цикла
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
4. Как организовать цикл?
Алгоритмы и программирование, язык Python, 10 класс4
Как организовать цикл?
счётчик = 0
пока счётчик < 10:
print("Привет“)
увеличить счётчик на 1
результат операции
автоматически
сравнивается с нулём!
счётчик = 10
пока счётчик > 0:
print("Привет")
уменьшить счётчик на 1
? Какой способ удобнее для процессора?
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
5. Цикл с условием
Алгоритмы и программирование, язык Python, 10 класс5
Цикл с условием
Задача. Определить количество цифр в десятичной
записи целого положительного числа, записанного в
переменную n.
n
счётчик
счётчик = 0
пока n > 0:
1234
0
отсечь последнюю цифру n
123
1
увеличить счётчик на 1
12
2
? Как отсечь последнюю цифру?
n = n // 10
1
0
3
4
? Как увеличить счётчик на 1?
счётчик = счётчик + 1
К.Ю. Поляков, Е.А. Ерёмин, 2018
счётчик += 1
http://kpolyakov.spb.ru
6. Считаем цифры
Алгоритмы и программирование, язык Python, 10 класс6
Считаем цифры
начальное значение
счётчика
заголовок
цикла
условие
продолжения
count = 0
while n > 0 :
n = n // 10
count += 1
тело цикла
! Цикл с предусловием – проверка на входе в цикл!
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
7. Максимальная цифра числа
Алгоритмы и программирование, язык Python, 10 класс7
Максимальная цифра числа
Задача. Определить максимальную цифру в
десятичной записи целого положительного числа,
записанного в переменную n.
n = int(input())
пока остались
M = -1
цифры
последняя while n > 0:
цифра
d = n % 10
if d > M:
? Что плохо!
поиск
M = d
максимума
n = n // 10
отсечь
print( M )
последнюю
цифру
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
8. Цикл с условием
Алгоритмы и программирование, язык Python, 10 класс8
Цикл с условием
При известном количестве шагов:
k=0
while k < 10:
print ( "привет" )
k += 1
Зацикливание:
k=0
while k < 10:
print ( "привет" )
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
9. Сколько раз выполняется цикл?
Алгоритмы и программирование, язык Python, 10 класс9
Сколько раз выполняется цикл?
a = 4; b = 6
while a < b: a += 1
2 раза
a=6
a = 4; b = 6
while a < b: a += b
1 раз
a = 10
a = 4; b = 6
while a > b: a += 1
0 раз
a=4
a = 4; b = 6
while a < b: b = a - b
1 раз
b = -2
a = 4; b = 6
while a < b: a -= 1
зацикливание
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
10. Пример-1 (с предусловием)
Алгоритмы и программирование, язык Python, 10 класс10
Пример-1 (с предусловием)
Задача. Посчитать сумму положительных целых чисел,
вводимых с клавиатуры, пока не будет введён ноль
Начало
S=0
Ввод числа x
x 0
нет
да
S = S+ х
Ввод числа x
Вывод S
print ('Сумма чисел отличных от нуля')
S=0
x = int (input('Введите целое
положительное число'))
while x != 0 :
S=S+x
x = int (input('Введите целое положительное
число (или ноль – для завершения программы)'))
print ('Сумма чисел отличных от нуля S=‘ , S)
Конец
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
11. Цикл с постусловием
Алгоритмы и программирование, язык Python, 10 класс11
Цикл с постусловием
Задача. Обеспечить ввод положительного числа в
переменную n.
бесконечный
цикл
while True:
print ( "Введите положительное число:" )
n = int ( input() )
if n > 0: break
тело цикла
условие
прервать
выхода
цикл
• при входе в цикл условие не проверяется
• цикл всегда выполняется хотя бы один раз
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
12. Пример-2 (с постусловием)
Алгоритмы и программирование, язык Python, 10 класс12
Пример-2 (с постусловием)
Задача. Посчитать сумму положительных целых чисел,
вводимых с клавиатуры, пока не будет введён ноль
Начало
print ('Сумма положительны чисел
отличных от нуля')
S=0
while True:
x = int (input('Введите целое положительное
S=0
Ввод числа x
S = S+ х
x =0
да
нет
число (или ноль – для завершения программы)'))
S=S+x
if x==0: break
Вывод S
Конец
К.Ю. Поляков, Е.А. Ерёмин, 2018
print ('Сумма чисел отличных от нуля S=‘ , S)
http://kpolyakov.spb.ru
13. Пример-3 (c предусловием)
Алгоритмы и программирование, язык Python, 10 класс13
Пример-3 (c предусловием)
Задача. Протабулировать (найти значение функции)
y=x3 на отрезке [0;-12] с шагом 0,3
print ('Значения функции Y')
x=0
while x >= -12 :
y=x**3
print ('При х=',f '{x:6.2f}',' y=',f '{y:2.2f}')
x−=0.3
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
14. Пример-4 (c постусловием)
Алгоритмы и программирование, язык Python, 10 класс14
Пример-4 (c постусловием)
Задача. Протабулировать (найти значение функции)
y=x3 на отрезке [0;-12] с шагом 0,3
print ('Значения функции Y')
x=0
while True:
y=x**3
print ('При х=',f '{x:6.2f}',' y=',f '{y:2.2f}')
x−=0.3
if x< − 12 : break
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
15. Алгоритм Евклида
Алгоритмы и программирование, язык Python, 10 класс15
Алгоритм Евклида
Алгоритм Евклида. Чтобы найти НОД двух натуральных
чисел, нужно вычитать из большего числа меньшее до
тех пор, пока они не станут равны. Это число и есть
НОД исходных чисел.
НОД(14,21) = НОД(14,7) = НОД(7, 7) = 7
пока a != b:
если a > b:
a -= b # a = a - b
иначе:
b -= a # b = b - a
while a != b:
if a > b:
a -= b
else:
b -= a
НОД(1998,2) = НОД(1996,2) = … = НОД(2, 2) = 2
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
16. Алгоритм Евклида
Алгоритмы и программирование, язык Python, 10 класс16
Алгоритм Евклида
Модифицированный алгоритм Евклида. Заменять
большее число на остаток от деления большего на
меньшее до тех пор, пока меньшее не станет равно
нулю. Другое (ненулевое) число и есть НОД чисел.
НОД(1998,2) = НОД(0,2) = 2
пока a!=0
???: and b!=0:
если a > b:
a = a % b
иначе:
b = b % a
если a != 0:
вывести a
иначе:
вывести b
К.Ю. Поляков, Е.А. Ерёмин, 2018
? Какое условие?
? Как вывести
результат?
http://kpolyakov.spb.ru
17.
Алгоритмы и программирование, язык Python, 10 классАлгоритмы расчёта количества, суммы или
произведения определённых элементов в цикле
К.Ю. Поляков, Е.А. Ерёмин, 2018
17
http://kpolyakov.spb.ru
18.
Алгоритмы и программирование, язык Python, 10 классАлгоритмы расчёта количества, суммы или
произведения определённых элементов в цикле
К.Ю. Поляков, Е.А. Ерёмин, 2018
18
http://kpolyakov.spb.ru
19. Задачи-2
Алгоритмы и программирование, язык Python, 10 класс19
Задачи-2
«А»: Ввести с клавиатуры два натуральных числа и сравнить
количество шагов цикла для вычисления их НОД с
помощью обычного и модифицированного алгоритмов
Евклида.
Пример:
Введите два числа:
1998 2
НОД(1998,2)=2
Обычный алгоритм: 998
Модифицированный: 1
Сохранить программу:
D:\Ученики\Класс\Фамилия\Программирование\Циклы
под именем: while-A
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
20. Задачи-2
Алгоритмы и программирование, язык Python, 10 класс20
Задачи-2
«В»: Ввести натуральное число и определить, верно ли,
что в его записи есть две одинаковые цифры (не
обязательно стоящие рядом).
Пример:
Введите натуральное число:
12342
Да.
Пример:
Введите натуральное число:
12345
Нет.
Сохранить программу:
D:\Ученики\Класс\Фамилия\Программирование\Циклы
под именем: while-B
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
21. Задачи-2
Алгоритмы и программирование, язык Python, 10 класс21
Задачи-2
«С»: Напечатать значения функции
Программирование