4.62M
Категория: ПрограммированиеПрограммирование

Циклы

1.

Циклы
Ссылка на методичку

2.

Обсуждение:
Программирование
ввода промокода

3.

Новая задача
Директор «Долголетия» остался доволен
техническим решением. Теперь он попросил
дополнить сайт возможностью считывать
промокоды.
Обсуждение
рабочих задач
Кажется, эта задача похожа на предыдущую.
Готовы попробовать?
Алёна,
менеджер проектов

4.

Ввод промокода
Возможная задача.
Как определить правильность введённого промокода?
Составьте соответствующую блок-схему
Обсуждение
рабочих задач
Введена скидка на все товары по промокоду «лето». Написать программу,
запрашивающую ввод промокода. Если введено слово «лето», то напечатать:
«Промокод активирован!». Иначе –– «Ошибка!» и запросить промокод снова.

5.

Ввод промокода
Возможная задача.
Ввод промокода
покупателем
Да
Вывод:
«Промокод активирован!»
Промокод —
«лето»?
Нет
Вывод:
«Ошибка!»
Как изменить
блок-схему для
повторного ввода
промокода при
ошибке?
Обсуждение
рабочих задач
Введена скидка на все товары по промокоду «лето». Написать программу,
запрашивающую ввод промокода. Если введено слово «лето», то напечатать:
«Промокод активирован!». Иначе –– «Ошибка!» и запросить промокод снова.

6.

Ввод промокода
Возможная блок-схема:
Ввод промокода
Да
Нет
Что, если
покупатель
совершит ошибку
5 раз? 10? 100?
Промокод — «лето»?
Ввод промокода
«Промокод активирован!»
Да
«Промокод активирован!»
Промокод — «лето»?
Нет
«Ошибка!»
Обсуждение
рабочих задач
«Ошибка!»

7.

Ввод промокода
Возможная задача.
Введена скидка на все товары по промокоду «лето». Написать программу,
запрашивающую ввод промокода. Если введено слово «лето», то напечатать:
«Промокод активирован!». Иначе –– «Ошибка!» и запросить промокод снова.
Ввод промокода
Промокод не «лето»?
Нет
Да
Вывод: «Ошибка!»
Ввод промокода
«Промокод
активирован!»
Какой код ему
соответствует?
Обсуждение
рабочих задач
Алгоритм можно
оптимизировать:

8.

Необходимые инструменты
Для решения задачи нам потребуются:
Функции и операторы
Вывод и ввод данных
print() и input()
Логическое выражение
promo != ‘лето’
Повтор действий, пока истинно
логическое выражение
?
Обсуждение
рабочих задач
Инструменты
Костя,
старший разработчик

9.

Необходимые инструменты
Для решения задачи нам потребуются:
Функции и операторы
Вывод и ввод данных
print() и input()
Логическое выражение
promo != ‘лето’
Повтор действий, пока истинно
логическое выражение
?
Обсуждение
рабочих задач
Инструменты
Этот ещё неизвестный,
но важный инструмент
–– цикл.
Костя,
старший разработчик

10.

Цель рабочего дня —
дополнить магазин считыванием промокода
Ввод должен запрашиваться до тех пор, пока промокод
не окажется верным.
● узнаете, что цикл — это средство
программирования действий, повторяющихся,
пока остаётся истинным логическое выражение;
● узнаете и запрограммируете несколько видов
цикла;
● внедрите промокоды и другие механики скидок
в магазин «Долголетие».
Обсуждение
рабочих задач
Сегодня вы:

11.

Подтверждение
квалификации

12.

Как составить простое логическое
выражение? Составное?
Подтверждение
квалификации
Какие значения оно может
принимать?

13.

Логическое выражение принимает только значение True или False.
Простые логические выражения могут быть составлены с помощью
операторов сравнения:
>
<
==
!=
<=
>=
Больше
Меньше
Равно
Не равно
Меньше
или равно
Больше
или равно
Подтверждение
квалификации
Логический тип

14.

Логическое выражение принимает только значение True или False.
Простые логические выражения могут быть составлены с помощью
операторов сравнения:
>
<
==
!=
<=
>=
Больше
Меньше
Равно
Не равно
Меньше
или равно
Больше
или равно
Составное логическое выражение можно создать из простых,
связав их с помощью логических операторов:
Оператор
Название
Используется когда нужно:
and
Логическое И
потребовать выполнения двух простых
условий одновременно.
or
Логическое ИЛИ
потребовать выполнения хотя бы
одного из двух простых условий.
Подтверждение
квалификации
Логический тип

15.

Назовите значения выражений:
‘Off‘ != ‘Off‘ and 3 == 3
10.5 > 2.0 and 5.5 > 6.5
ans == ‘Да‘ and 2 == 20
2 > 3 or 6 > 3
ans == ‘Нет‘ or ans != ‘Нет‘
Подтверждение
квалификации
‘Иван‘ == ‘Иван‘ or 4 > 10

16.

‘Off‘ != ‘Off‘ and 3 == 3
False
Первое выражение ложно
(д. б. истинно первое и второе)
10.5 > 2.0 and 5.5 > 6.5
False
Второе выражение ложно
(д. б. истинно первое и второе).
‘Иван‘ == ‘Иван‘ or 4 > 10
True
Первое выражение истинно
(д. б. истинно первое или второе).
ans == ‘Да‘ and 2 == 20
False
Второе выражение ложно.
2 > 3 or 6 > 3
True
Второе выражение истинно.
ans == ‘Нет‘ or ans != ‘Нет‘
True
Одно из двух выражений точно
будет истинным.
Подтверждение
квалификации
Назовите значения выражений:

17.

Что такое условный оператор?
Подтверждение
квалификации
Какие виды условных операторов
вы знаете?

18.

Условный оператор
— это команда, выполняющая или не выполняющая
действие в зависимости от значения логического
выражения.
«Классический» условный оператор:
Выражение истинно
:
if
Выражение истинно
Выполнить действие 1
Выполнить действие 2
Выполнить действие 3
:
Выполнить действие 1
else :
Выполнить действие 2
Подтверждение
квалификации
if

19.

Условный оператор
— это команда, выполняющая или не выполняющая
действие в зависимости от значения логического
выражения.
Вложенный условный оператор:
Выражение_1 истинно
if
:
Выражение_2 истинно
Выполнить действие 1
:
Выполнить действие 1
elif
Выражение_2 истинно
Выполнить действие 2
else :
Выполнить действие 2
else :
Выполнить действие 3
:
Подтверждение
квалификации
if
Условный оператор нескольких
ветвей:
if Выражение_1 истинно :

20.

Какой код соответствует блоксхеме?
Да
Вывод:
«Промокод активирован!»
Промокод —
«лето»?
Нет
Вывод:
«Ошибка!»
Подтверждение
квалификации
Ввод промокода
покупателем

21.

Возможный код:
promo = input('Введите промокод:')
if promo == 'лето':
print('Промокод активирован!')
print('Ошибка!')
Подтверждение
квалификации
else:

22.

Квалификация подтверждена!
Подтверждение
квалификации
Отлично, вы готовы к «мозговому штурму»
и реализации рабочей задачи!

23.

«Мозговой штурм»:
Циклы

24.

Как запрограммировать повтор действий?
Мы знаем, как запрограммировать условие — предложение, которое
может быть истинным или ложным.
Теперь освоим конструкцию, повторяющую команды до тех пор, пока
условие остаётся истинным.
Ввод промокода
Промокод не «лето»?
Нет
Вывод: «Ошибка!»
Ввод промокода
«Промокод
активирован!»
«Мозговой
штурм»
Да

25.

Цикл
— это команда, выполняющая указанные действия до тех
пор, пока остаётся истинным логическое выражение
(условие).
Логическое
выражение
истинно?
Да
Выполнить действие А
Нет
«Мозговой
штурм»
Пример:
Цикл выполняет действие А до тех пор, пока истинно логическое выражение.

26.

Рассмотрим задачу
«Мозговой
штурм»
Задача 1а. Составить алгоритм, проверяющий, является ли введённый номер карты
покупателя выигрышным. Если номер — «45626», то напечатать: «Вы выиграли!». Иначе
— напечатать: «Повезёт в другой раз!» и запросить повторный ввод номера.

27.

Рассмотрим задачу
Задача 1а. Составить алгоритм, проверяющий, является ли введённый номер карты
покупателя выигрышным. Если номер — «45626», то напечатать: «Вы выиграли!». Иначе
— напечатать: «Повезёт в другой раз!» и запросить повторный ввод номера.
Ввод номера
Номер не «45626»?
Нет
Вывод: «Повезёт в
другой раз!»
Ввод номера
«Вы выиграли!»
«Мозговой
штурм»
Да

28.

Цикл
Цикл может быть запрограммирован с помощью оператора while:
while (в англ. — «пока»).
while
Выражение истинно
:
Блок действий
начинается с
двоеточия
Выполнить действие 1
Выполнить действие 3
Выполнить действие 4
4 пробела
«Мозговой
штурм»
Выполнить действие 2

29.

Рассмотрим задачу
«Мозговой
штурм»
Задача 1б. Составить программу, проверяющую, является ли введённый номер карты
покупателя выигрышным. Если номер — «45626», то напечатать: «Вы выиграли!». Иначе
— напечатать: «Повезёт в другой раз!» и запросить повторный ввод номера.

30.

Рассмотрим задачу
Задача 1б. Составить программу, проверяющую, является ли введённый номер карты
покупателя выигрышным. Если номер — «45626», то напечатать: «Вы выиграли!». Иначе
— напечатать: «Повезёт в другой раз!» и запросить повторный ввод номера.
card_number = int(input('Введите номер карты:'))
while card_number != 45626:
print('Повезёт в другой раз!')
card_number = int(input('Введите номер карты:'))
«Мозговой
штурм»
print('Вы выиграли!')

31.

Рассмотрим задачу
«Мозговой
штурм»
Задача 2. Составить программу, запрашивающую отзывы у клиентов. При запуске
программа запрашивает ввод до тех пор, пока не будет введено «off». За каждый
введенный отзыв программа печатает благодарность: «Спасибо за обратную связь!»

32.

Рассмотрим задачу
Задача 2. Составить программу, запрашивающую отзывы у клиентов. При запуске
программа запрашивает ввод до тех пор, пока не будет введено «off». За каждый
введенный отзыв программа печатает благодарность: «Спасибо за обратную связь!»
feedback = input('Введите отзыв (off - завершить):')
while feedback != 'off':
print('Спасибо за обратную связь!')
«Мозговой
штурм»
feedback = input('Введите отзыв (off - завершить):')
Возможное решение. Можно ли его оптимизировать?

33.

Рассмотрим задачу
Задача 2. Составить программу, запрашивающую отзывы у клиентов. При запуске
программа запрашивает ввод до тех пор, пока не будет введено «off». За каждый
введенный отзыв программа печатает благодарность: «Спасибо за обратную связь!»
while input('Введите отзыв (off - завершить):') != 'off':
print('Спасибо за обратную связь!')
«Мозговой
штурм»
Запрос и возврат отзыва

34.

Рассмотрим задачу
«Мозговой
штурм»
Задача 3. Составить программу, выводящую стоимость всех покупок со скидкой 10%.
Программа запрашивает ввод покупок до тех пор, пока не введен «0». Затем
выводится стоимость покупок со скидкой 10%.

35.

Рассмотрим задачу
Задача 3. Составить программу, выводящую стоимость всех покупок со скидкой 10%.
Программа запрашивает ввод покупок до тех пор, пока не введён «0». Затем
выводится общая стоимость всех покупок со скидкой 10%.
price = int(input('Введите цену (0 - завершить):'))
total_price = 0
while price != 0:
total_price += price
print('Стоимость без скидки:', total_price)
total_price = total_price * 0.9
print('Стоимость со скидкой:', total_price)
«Мозговой
штурм»
price = int(input('Введите цену (0 - завершить):'))

36.

Перед тем, как продолжить :
1. Что напечатает программа, если сразу ввести «0»?
2. Какую цену без скидки напечатает программа,
если последовательно ввести: «100», «120», «215»,
«0»?
4. Что произойдёт, если пользователь напечатает
«250 руб»?
«Мозговой
штурм»
3. Какую цену со скидкой напечатает программа,
если последовательно ввести: «50», «100», «50»,
«0»?

37.

Платформа:
«Долголетие»

38.

Выполните задания на платформе
learn.algoritmika.org
Долголетие:
Оформление заказа
«Долголетие: оформление заказа»

39.

Перерыв

40.

«Мозговой штурм»:
Цикл со счётчиком

41.

Пожелание заказчика
Директор «Долголетия» попросил запрограммировать
подсчёт попыток ввода. Аномальное количество попыток
засчитываться не будет.
«Мозговой
штурм»
Иначе мошенники смогут взломать базу промокодов!

42.

Рассмотрим задачу
«Мозговой
штурм»
Задача 1. Составить программу, запрашивающую промокод и считающую количество
предпринятых попыток. После ввода верного промокода «новый год» программа
печатает: «Промокод засчитан с __ попытки» и завершает работу.
Как посчитать количество попыток?

43.

Счётчик
— это переменная, хранящая число шагов цикла.
Пример 1:
Счётчик, хранящий все шаги цикла
Логическое
выражение
истинно?
Да
Выполнить действие А
Увеличить счётчик на 1
Нет
«Мозговой
штурм»
Счётчик = 0

44.

Счётчик
— это переменная, хранящая число шагов цикла.
Пример 2:
Счётчик, хранящий все шаги цикла, на которых выполнялось условие
Счётчик = 0
Нет
Да
Да
Выполнить действие 1
Увеличить счётчик на 1
Логическое выражение 2
истинно?
Нет
Выполнить действие 2
«Мозговой
штурм»
Логическое выражение 1
истинно?

45.

Рассмотрим задачу
Задача 1. Составить программу, запрашивающую промокод и считающую количество
предпринятых попыток. После ввода верного промокода «новый год» программа
печатает: «Промокод засчитан с __ попытки» и завершает работу.
Воспользуемся первым видом счётчика:
promo = input('Введите промокод:')
attempts = 1
while promo != 'новый год':
print('Ошибка!')
promo = input('Введите промокод:')
print('Промокод засчитан с', attempts, 'попытки')
«Мозговой
штурм»
attempts += 1

46.

Рассмотрим задачу
Задача 1. Составить программу, запрашивающую промокод и считающую количество
предпринятых попыток. После ввода верного промокода «новый год» программа
печатает: «Промокод засчитан с __ попытки» и завершает работу.
Воспользуемся первым видом счётчика:
promo = input('Введите промокод:')
attempts = 1
while promo != 'новый год':
print('Ошибка!')
promo = input('Введите промокод:')
print('Промокод засчитан с', attempts, 'попытки')
Цикл со счётчиком
«Мозговой
штурм»
attempts += 1

47.

Рассмотрим задачу
«Мозговой
штурм»
Задача 2. Составить программу, запрашивающую цены товаров до тех пор, пока не
будет введён «0» и вычисляющая общую сумму покупок. Если число товаров чётное,
то включается акция «Цены пополам», и вся сумма делится пополам. В завершение
программа печатает сумму к оплате.
Как посчитать количество покупок?

48.

Рассмотрим задачу
Задача 2. Составить программу, запрашивающую цены товаров до тех пор, пока не
будет введён «0» и вычисляющая общую сумму покупок. Если число товаров чётное,
то включается акция «Цены пополам», и вся сумма делится пополам. В завершение
программа печатает сумму к оплате.
price = int(input('Введите цену (0 - остановить):'))
amount = 0
total_price = 0
while price != 0:
amount += 1
price = int(input('Введите цену (0 - остановить):'))
if amount % 2 == 0:
print('Акция «Цены пополам»')
total_price = total_price/2
print('К оплате:', total_price)
«Мозговой
штурм»
total_price += price

49.

Перед тем, как продолжить :
1. Что напечатает предыдущая программа, если
последовательно ввести: «50», «120», «80», «0»?
2. Сколько раз сработает цикл, если пользователь
последовательно введёт: «35», «20», «0»?
«Мозговой
штурм»
3. Можно ли создать бесконечно работающий цикл?
Если да, то приведи пример такого цикла.

50.

Платформа:
«Долголетие»

51.

Выполните задания на платформе
learn.algoritmika.org
Долголетие:
Подсчёт действий
«Долголетие: подсчёт действий»

52.

Завершение
рабочего дня

53.

Для завершения работы
пройдите техническое интервью
1. Что такое цикл? Как задать условие цикла? Какое
служебное слово нужно для создания цикла?
Костя,
Подведение итогов
рабочего дня
2. Что такое счётчик? Для чего он может
использоваться в цикле?
Алёна,
старший разработчик менеджер проектов

54.

Поздравляем с окончанием
рабочего дня!
1. Узнали, что цикл — это средство
программирования действий,
повторяющихся, пока остаётся истинным
логическое выражение.
2. Запрограммировали цикл while со
счётчиком и без.
3. Внедрили промокоды и другие механики
скидок в магазине «Долголетие».
Подведение итогов
рабочего дня
Сегодня вы:

55.

Оценка эффективности
проделанной работы
Ответьте с коллегами на вопросы:
2. Что получилось не так, как хотелось?
3. Что нужно сделать, чтобы в следующий раз
избежать неудачи?
Подведение итогов
рабочего дня
1. Что получилось лучше всего?

56.

«Долголетие:
доп задания»
Подведение итогов
рабочего дня
Дополнительные задания для
повышения эффективности
English     Русский Правила