Урок программирование циклов 9 класс босова

Урок по теме «Программирование цикла с предусловием»
Раздел программы: «Алгоритмизация и основы программирования»
Тип урока: комбинированный
Технология: развитие критического мышления
Цели урока:
Обучающая: создать условия для формирования представления об алгоритме циклической структуры с проверкой условия в начале цикла, о его исполнении, научить применять новый оператор для решения вычислительных и диалоговых задач.
Развивающая: развивать логическое, алгоритмическое, критическое мышление учащихся через установление причинно-следственных связей, формирование социальной направленности любой деятельности, освоение способов эффективного взаимодействия процессе учебной коммуникации.
Воспитательная: развитие познавательного интереса
План урока:
I. Определяем тему урока | стадия вызова |
II. Изучаем новый оператор | стадия осмысления: самостоятельная работа учащихся с информационным текстом; |
III. Проводим вычислительный эксперимент | стадия рефлексии |
IV. Проверяем, закрепляем полученные знания | стадия рефлексии |
Учитель самостоятельно распределяет учащихся по группам, учитывая уровень развития уч-ся, взаимоотношения между ребятами и равные возможности групп.
Ход урока
Здравствуйте ребята!
Ребята, сегодняшний урок мы проведём в форме групповой работы, работы в парах и в индивидуальной, итогом, которого будет отчёт группы по проделанной работе и индивидуальная проверочная работа.
Учитель: Чтобы сконцентрироваться, проведём небольшую разминку! 2 мин
– Какая деятельность называется программированием?
– Что такое программа для компьютера?
– Какие команды мы изучили?
– С помощью этих команд, какие алгоритмы мы научились программировать?
Стадия вызова
Учитель: Ребята, сегодня тему урока вы будете определять самостоятельно, в группе.
Чтобы это сделать я предлагаю вам просмотреть алгоритмы, которые выполняются в природе и технике и определить:
Что это за алгоритмы?
Что объединяет эти алгоритмы?
Смотрим слайды презентации №1,2,3
Как выдумаете, какая тема урока?
Обсудите этот вопрос и запишите свои идеи в отчёте. – 1 мин (отчёт – приложение 2)
Каждая группа представляет свой вариант
Возможный вариант ответа: Мы будем изучать циклы
Учитель: Совершенно верно! Но нам нужно уточнить какие циклы, т.к. мы знаем три вида циклов. Для уточнения рассмотрим алгоритм из нашей повседневной жизни
Смотрим слайд: на слайде№4 алгоритм и блок-схема к этому алгоритму
Учитель: Каждая группа по очереди отвечает на вопросы к слайду – 3 мин
А теперь запишите в отчёт и объявите окончательный вариант темы урока.
Учитель: Ребята вы молодцы – правильно сформулировали смысл темы урока. Но давайте более конкретно и точно запишем в тетрадях тему: слайд № 5
Учитель: А сейчас группы выполняют второе задание (выбрать любой алгоритм и составить для него блок-схему): на работу 2 мин
Представьте результаты работы на доске. Каждая группа если есть, указывает на ошибки. Исправление ошибок.
Стадия осмысления
Учитель: Следующее задание индивидуальное:
Теперь, когда, вы научились составлять циклические алгоритмы, изучим команду, к-ая даёт указание компьютеру выполнить одни и те же действия много раз. Для этого напишите конспект в тетрадях ориентируясь на вопросы, практическое задание быстрее выполнить в парах. (см. Приложение 1)
На работу вам даётся 10-12 мин
Рефлексия
Учитель: Ребята, сейчас снова работаем в группе. Вы узнали правила записи оператора, особенности его работы. Применим новые знания для решения экологической задачи. Прочитайте условие задачи.
(Учащимся раздаются инф. листы с условием задачи, см. приложение 3, 4)
Частично задача решена. Вам осталось начертить алгоритм, набрать программу, проанализировать результаты.
Ребята распределите работу между всеми участниками группы. – 10 мин
Каждая группа представляет отчёт по эксперименту.
Учитель: И в заключение урока закрепим новые знания небольшой индивидуальной проверочной работой.
Подпишите листы с фрагментом программы. (приложение4)
Отвечать на вопросы нужно так – либо ставить номер команды, либо подчёркивать слова, либо обводить рамкой команды.
Вопросы для проверки:
- В какой строке записано условие выполнения цикла.
- Подчеркните служебные слова оператора цикла.
- Обведите рамкой тело цикла
- В каких строках выводятся результаты программы?
Учитель: Поменяйтесь работами друг с другом, посмотрите правильные ответы на слайде №6, поставьте оценку.
Сдайте отчёты групп и проверочные работы.
Учитель: Молодцы, все справились замечательно
Окончательные результаты будут объявлены на следующем уроке.
Домашнее задание – выучить оператор, знать, как он работает
Дидактические материалы к уроку:
- Презентация с изображениями циклических алгоритмов из природы, техники, слайд с темой урока, слайд с правильной практической работой.
- Отчеты для групп
- Информационные листы с новой темой и вычислительным экспериментом
- Тексты программы
- Карточки для проверочной работы
Приложение 1
Циклическая форма организации действий в алгоритмах. Блок-схемы, словенское описание циклов. Цикл «Пока» в языке программирования Бейсик.
Алгоритмы, который мы составляли на предыдущих уроках, обладают одним общим свойством: при их выполнении каждое действие совершается один раз или вообще не совершается. В жизни, однако, часто встречаются инструкции, в которых требуется один и тот же набор действий выполнять много раз подряд: «иди, пока не придёшь», закручивай гайку, пока не завернешь её до отказа» и т.д. используя только развилки(ветвления), такие алгоритмы не запишешь. Для этого нужна новая форма организации действий.
Цикл с предусловием.
Словесная запись:
Пока Q повторять:
P1
P2
…
Pn
Конец цикла
Эта запись означает, что исполнитель сначала проверяет, выполняется ли условие Q. Если да, то совершаются действия P1, P2, … , Pn (последовательность этих действий называют телом цикла), после чего условие Q проверяется снова и так далее. Если же Q не выполняется, то исполнитель переходит к действию, записанному после строки «Конец цикла». Может случиться и так, что условие Q, не выполнено с самого начала, тогда действия, составляющие тело цикла, не совершаться ни разу.
Итак, циклом (повтором) называется такая форма организации действий, при которой одна и та же последовательность действий совершается несколько раз (или ни разу) до тех пор, пока выполняется некоторое условие.
В языке Бейсик цикл «Пока» оформляется следующим способом:
while <условие>
тело цикла
wend
Цикл с предусловием используется для программирования процессов, в которых число повторений оператора цикла неизвестно, а задаётся некоторое условие его окончания. Сначала идёт оператор while с условием, при котором цикл выполняется. Ключевое слово wend является последней строкой цикла. Всякий раз, доходя до wend , компьютер проверяет, выполняется ли условие, указанное оператором while. Если оно не выполняется , то программа переходит к исполнению операторов, следующих за wend. Если же выполняется, , то цикл повторяется снова.
Примеры программ
Пример 1.
Следующая программа, прежде, чем допустить пользователя для продолжения работы, запрашивает у него пароль:
CLS
While words$ <> “TERMINATOR”
Input “введите пароль”;words$
Wend
Print ”Правильно! Вы допущены к продолжению работы!”
End
Пример 2. Вычисление суммы
Input ”введите кол-во элементов ” ; n
S = 0: i = 1
While i <= n
S = s + 1/i
i = i+1
Wend
Print “ сумма “, n ,”элементов = “, s
Вопросы для конспекта:
- Какая форма организаций действий называется циклом?
- Как в словесных алгоритмах оформляются циклы?
- Что такое тело цикла?
- Для чего служит указатель «конец цикла»?
- Как с помощью блок-схемы изображаются циклы?
- Как оформляется на Бейсике цикл «Пока»?
Задание для самостоятельной работы. Наберите тексты программ в среде QBasic , запустите программы на исполнение, проанализируйте результаты. Составьте блок- схемы для данных программ в тетрадях.
Приложение 2
Группа №1:
1.
2.
3.
4.
- Запишите все варианты возможной темы урока:
- Начертите блок-схему для любого сюжета
- Напишите выводы по вычислительному эксперименту.
Вопросы для вывода:
- Через сколько дней концентрация вредного вещества станет допустимой?
- Предположим, что программу для эксперимента написали без нового изученного оператора. Как бы изменилась программа?
- Какие достоинства у нового оператора?
- Оцените работу своих товарищей по следующим критериям:
– принимал активное участие в работе группы;(а)
– пассивное (п)
– проявлял инициативность иногда (и)
Приложение 3
Вычислительный эксперимент «Экологическая задача» для группы 1
Задача. Расположенный на берегу реки металлургический завод осуществил сброс сточных вод, в результате чего концентрация вредных веществ в реке резко увеличилась. С течением времени эта концентрация, естественно уменьшается.
Требуется вывести на экран сообщение, каков будет уровень реки через сутки, двое суток и т.д до тех пор, пока концентрация не станет меньше предельно допустимой.
Математическая модель:
Исходные данные:
C – начальная концентрация вредных веществ ,
D- предельно допустимая концентрация,
K>1- коэффициент(узнаётся из справочника) показывает, что концентрация C уменьшается в K раз в сутки, зависит от района, где протекает река, типа примесей и т.п., устанавливается специалистами –экологами.
Результат:
Последовательность значений концентрации вредных веществ через сутки, двое суток и т.д, номер суток – N
Связь между исходными данными и результатом:
C0= C, C n+1=
Алгоритм:
Запросить начальное значение концентрации C, предельно допустимую концентрацию D и коэффициент K.
Присвоить номеру суток N значение 0.
Пока C > D повторять :
Присвоить номеру суток N значение N+1.
Присвоить концентрации C значение .
Вывести сообщение «Номер суток, концентрации».
Вывести значения N, C.
Конец цикла.
Программа на Бейсике:
Cls
Input “ C,D,K”;C,D,K
N = 0
While C > D
N = N + 1
C = C / K
Print “ Номер суток, концентрации “;
Print N, C
Wend
End
Таблица исходных данных :
вещество | C, мг/л | D, мг/л | K |
Свинец | 10 | 0,03 | 1,12 |
Вычислительный эксперимент «Экологическая задача» для группы 2
Задача. Расположенный на берегу реки металлургический завод осуществил сброс сточных вод, в результате чего концентрация вредных веществ в реке резко увеличилась. С течением времени эта концентрация, естественно уменьшается.
Требуется вывести на экран сообщение, каков будет уровень реки через сутки, двое суток и т.д до тех пор, пока концентрация не станет меньше предельно допустимой.
Математическая модель:
Исходные данные:
C – начальная концентрация вредных веществ ,
D- предельно допустимая концентрация,
K>1- коэффициент(узнаётся из справочника) показывает, что концентрация C уменьшается в K раз в сутки, зависит от района, где протекает река, типа примесей и т.п., устанавливается специалистами –экологами.
Результат:
Последовательность значений концентрации вредных веществ через сутки, двое суток и т.д, номер суток – N
Связь между исходными данными и результатом:
C0= C, C n+1=
Алгоритм:
Запросить начальное значение концентрации C, предельно допустимую концентрацию D и коэффициент K.
Присвоить номеру суток N значение 0.
Пока C > D повторять :
Присвоить номеру суток N значение N+1.
Присвоить концентрации C значение .
Вывести сообщение «Номер суток, концентрации».
Вывести значения N, C.
Конец цикла.
Программа на Бейсике:
Cls
Input “ C,D,K”;C,D,K
N = 0
While C > D
N = N + 1
C = C / K
Print “ Номер суток, концентрации “;
Print N, C
Wend
End
Таблица исходных данных :
вещество | C, мг/л | D, мг/л | K |
Мышьяк | 5 | 0,05 | 1,05 |
Приложение 4
Cls Input “ C,D,K”;C,D,K N = 0 While C > D N = N + 1 C = C / K Print “ Номер суток, концентрации “; Print N, C Wend End | Блок-схема |
Cls Input “ C,D,K”;C,D,K N = 0 While C > D N = N + 1 C = C / K Print “ Номер суток, концентрации “; Print N, C Wend End | Блок -схема |
Cls Input “ C,D,K”;C,D,K N = 0 While C > D N = N + 1 C = C / K Print “ Номер суток, концентрации “; Print N, C Wend End Ответ: | Cls Input “ C,D,K”;C,D,K N = 0 While C > D N = N + 1 C = C / K Print “ Номер суток, концентрации “; Print N, C Wend End Ответ: |
Карточки для самостоятельной работы | |
Cls Input “ C,D,K”;C,D,K N = 0 While C > D N = N + 1 C = C / K Print “ Номер суток, концентрации “; Print N, C Wend End | Cls Input “ C,D,K”;C,D,K N = 0 While C > D N = N + 1 C = C / K Print “ Номер суток, концентрации “; Print N, C Wend End |
Cls Input “ C,D,K”;C,D,K N = 0 While C > D N = N + 1 C = C / K Print “ Номер суток, концентрации “; Print N, C Wend End | Cls Input “ C,D,K”;C,D,K N = 0 While C > D N = N + 1 C = C / K Print “ Номер суток, концентрации “; Print N, C Wend End |
Cls Input “ C,D,K”;C,D,K N = 0 While C > D N = N + 1 C = C / K Print “ Номер суток, концентрации “; Print N, C Wend End | Cls Input “ C,D,K”;C,D,K N = 0 While C > D N = N + 1 C = C / K Print “ Номер суток, концентрации “; Print N, C Wend End |
Cls Input “ C,D,K”;C,D,K N = 0 While C > D N = N + 1 C = C / K Print “ Номер суток, концентрации “; Print N, C Wend End | Cls Input “ C,D,K”;C,D,K N = 0 While C > D N = N + 1 C = C / K Print “ Номер суток, концентрации “; Print N, C Wend End |
условие
Группа операторов
Источник
Конспект урока по информатике
в 9 классе Кизнерской сельской школы
Клюкиной Светланы Сергеевны
Учебник: Босова Л.Л., Босова А.Ю.
Тема четверти: Начала программирования.
Тема урока: Программирование циклических алгоритмов.
Тип урока: Изучение новой темы.
Цель урока: Познакомиться с правилами записи оператора while, repeat; уметь решать задачи в Pascal с циклом.
План урока:
Организационный момент (1мин.)
Проверка домашнего задания (4 мин).
Изучение нового материала (15 мин.)
Закрепление изученного материала (20 мин.)
Подведение итогов урока, рефлексия (3 мин.)
Домашнее задание (2 мин.)
Приемы, используемые на уроке: фронтальная работа, работа в парах.
ТСО и оборудование: компьютеры, проектор, экран.
Оформление доски: дата, тема.
Ход урока:
1. Орг. момент
– Здравствуйте, ребята, садитесь.
– Я проверила ваши самостоятельные работы. Оценки получились следующими…
2. Проверка домашнего задания.
№11 стр.204
– Как выполнил домашнее задание покажет нам…
If a>5 then c:=1
Else if a>5 then c:=2
Else c:=3
Какое значение имеет переменая а, если в результате выполнения условного оператора переменной с присваивается значение 3?
Ответ: 5
3. Изучение нового материала.
– Итак, вы уже заметили, что алгоритмы, которые мы составляли на предыдущих уроках, обладают одним общим свойством: при их выполнении каждое действие совершается один раз или вообще не совершается.
В жизни, однако, часто встречаются инструкции, в которых требуется один и тот же набор действий выполнить много раз подряд: «иди, пока не придёшь», «закручивай гайку, пока не завернёшь её до отказа» и т.д. Для этого нужна новая форма организации действий. О ней мы и поговорим сегодня на уроке.
– Давайте откроем тетради, запишем дату (19.02.16) и тему урока «Программирование циклических алгоритмов».
– Как вы думаете, что такое цикл?
– Записываем в тетрадях : Цикл – это многократное повторение действий.
– Цикл с заданным условием продолжения работы (с предусловием) (цикл-ПОКА) программируется на языке Паскаль с помощью оператора while.
Общий вид оператора:
While<условие> do <оператор>
Пока условие выполняется – делай.
Здесь
<условие> -это логическое выражение;
пока оно истинно, выполняется тело цикла;
<оператор> – это простой или составной оператор, с помощью которого записано тело цикла.
Порядок выполнения оператора цикла с предусловием:
1. Сначала проверяется условие, если оно верно, то выполняется оператор.
2. Затем опять проверяется условие и снова выполняется оператор, пока условие не перестанет выполняться.
3. Если условие не верно, то оператор игнорируется и управление передается следующему за циклом оператору.
Блок-схема цикла с предусловием
Пример цикла с предусловием:
while n <9 do n:=n+1;
В этом операторе значение переменной n на каждом шаге цикла возрастает на 1. Сначала из ячейки памяти выбирается предыдущее значение переменной n. Затем это значение увеличивается на 1. Однако, сколько шагов будет у цикла, зависит от значения переменной n до цикла. Если до цикла n=0, то выполнение оператора тела цикла n:=n+1 повторится 9 раз, при n=8 – 1 раз, а при n=9 – цикл выполняться не будет.
Давайте разберем программу.
Вычислить у=х2 при х=2, 4, 6, 8, 10.
Program n_2; (Заголовок программы)
Var X,Y:Integer; (объявление переменных)
Begin(начало)
X:=2; (первоначально x=2)
While x<=10 Do (пока x<=10 делай)
Begin
Y:=Sqr(X); (y= x в квадрате)
Writeln(‘X=’,X:3, ‘Y=’,Y:5); (вывод x)
X:=X+2; (x изменяется на 2, т.к. 2,4,6,8,10)
End;
End.(конец)
– Для каждого Begin свой end.
Запишите SQR- возвести в квадрат, SQRT- квадратный корень.
Что должно выйти на экран?
X= 2Y= 4
X= 4Y= 16
X= 6Y= 36
X= 8Y= 64
X= 10Y= 100
– Молодцы
– Так же есть цикл с заданным условием окончания работы ( с постусловием)
Общий вид оператора:
repeat <оператор1; оператор2; …; > until <условие>
повторяй до тех пор
Здесь:
<оператор1>; <оператор2>; … – операторы, образующие тело цикла;
<условие> – логическое выражение; если оно ложно, то выполняется тело цикла.
Проверяет условие после выполнения тела цикла.
Блок-схема Цикла с постусловием.
Выполнение цикла продолжается, если проверка логического условия дает результат «ложь». Если логическое условие выполняется, то происходит выход из цикла. Иными словами, если в цикле while проверялось условие продолжения цикла, то в цикле repeat… until — условие окончания.
Разберем программу «График тренировок спортсмена»
program n_15;
var i: integer; x: real;
begin
writeln (‘График тренировок’);
i:=1;
x:=10;
repeat
i:=i+1;
x:=x+0.1*x;
until x>=25;
writeln (‘Начиная с ‘, i, ‘-го дня спортсмен будет пробегать 25 км’)
end.
Начиная с 11-го дня спортсмен будет пробегать 25 км
Закрепление изученного материала.
Открываем Pascal, пишем программы, которые разбирали на уроке.
Подведение итогов урока, рефлексия.
– Что мы сегодня узнали нового?
– Что такое цикл?
– Как выглядит общий вид оператора с предусловием? (while<условие>do<оператор>)
– Как переводятся слова while – do?
– Как выглядит вид цикла с постусловием? (repeat- until)
Домашнее задание.
Записываем домашнее задание. Выучить определения в тетради.№1, стр. 210.
Урок окончен, до свидания!
Список литературы:
Информатика и ИКТ: учебник для 9 класса: в 2 ч. Ч.1/Л. Л. Босова, А. Ю. Босова. – М.:БИНОМ. Лаборатория знаний, 2012. – 244 с.
Информатика и ИКТ: поурочные разработки для 9 класса. – Режим доступа: https://metodist.lbz.ru/authors/informatika/3/files/metod9-1-68.pdf , свободный. – Загл. с экрана. – Яз.рус.
Хостинг документов ученикам и учителям. – Режим доступа: https://doc4web.ru/informatika/konspekt-uroka-po-informatike-ciklicheskie-algoritmi-klass.html , свободный. – Загл. с экрана. – Яз.рус.
Циклические алгоритмы. – Режим доступа: https://physic.kemsu.ru/pub/library/learn_pos/Free_Pascal/Free%20Pascal/soder/3_3_2.htm , свободный. – Загл. с экрана. – Яз.рус.
Библиотека программиста. – Режим доступа: https://www.programmer-lib.ru/pascal_page.php?id=26 , свободный. – Загл. с экрана. – Яз.рус.
Дата: ___________ Подпись учителя: ___________
5
Источник
Конспект урока в 9 классе
«Программирование циклов с заданным условием продолжения работы и с заданным числом повторений»
Тип урока: урок обобщения и закрепления.
Цель: Обобщение и закрепление знаний по программированию циклов с заданным условием продолжения работы и с заданным числом повторений.
Задачи урока:
Образовательные:
Обобщение и закрепление знаний по программированию циклов с заданным условием продолжения работы и с заданным числом повторений;
Выполнение онлайн викторины в сервисе Quizizz.
Воспитательные:
воспитание информационной культуры учащихся, внимательности (умение слушать одноклассников, учителя), дисциплинированности, аккуратности (работа с памяткой).
Развивающие:
Развитие логического и алгоритмического мышления.
Развивать познавательную активность учащихся, интерес к предмету, формировать навыки самоконтроля;
Орг. момент
Здравствуйте ребята, уважаемые коллеги, рада приветствовать вас на уроке. Сегодня на уроке мы обобщим, закрепим и систематизируем знания по теме: «Программирование циклов с заданным числом повторений и с заданным условием продолжения работы». Для быстрого включения в работу я предлагаю вам пройти тест для проверки теоретических знаний по данной теме.
Актуализация знаний
Учащиеся отвечают на вопросы компьютерного теста в среде Quizizz.
Ссылка: https://quizizz.com/admin/quiz/5ab138286b0f7c001b270abf
1. Алгоритм, в котором команды выполняются многократно, – …
2. Цикл «До» – это цикл …
3. Цикл «Пока» – это цикл …
4. Цикл «Для» – это цикл …
5. Особенностью цикла «До» является то, что …
6. Особенностью цикла «Пока» является то, что …
7. Особенностью цикла «Для» является то, что …
8. Операторы цикла «До» -…
9. Операторы цикла «Пока» -…
10. Операторы цикла «Для» -…
11. Сколько раз повторится цикл for i:=1 to 10 do …?
Разбор ошибок теста.
Перед Вами памятка, которую мы будем заполнять, после урока вы оставите её себе.
Работа с памяткой. Необходимо заполнить пропуски. Один человек работает у доски.
Перечислите известные вам типовые задачи программирования?
(Ответы учеников)
Перед вами заготовленные условия, давайте вспомним как они программируются на языке Паскаль
Выполним задание. Найти ошибки в программе. (Работа в парах)
Использование задач для подготовки к ОГЭ: https://inf.sdamgia.ru/
Напишите программу, которая в последовательности натуральных чисел определяет количество чисел, кратных 6 и оканчивающихся на 4. Программа получает на вход количество чисел в последовательности, а затем сами числа. Количество чисел не превышает 1000. Введённые числа по модулю не превышают 30 000. Программа должна вывести одно число: количество чисел, кратных 6 и оканчивающихся на 4.
Входные данные | Выходные данные |
3 24 25 54 | 2 |
Program kolichestvo;
var
n, a, s: integer;
i: real;
begin
readln(n);
for i:=1 to n do
begin
readln(a);
if (a mod 10=6) and (a div 10 = 4) then
s := s + а;
end;
writeln(s);
end.
(Обсуждаем ошибки в программе)
Практическая работа.
Напишите программу, которая в последовательности целых чисел определяет их количество и подсчитывает сумму положительных чётных чисел, не превосходящих 256. Программа получает на вход целые числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность).
Количество чисел не превышает 1000. Введённые числа по модулю не превышают 30 000. Программа должна вывести два числа: длину последовательности и сумму положительных чётных чисел, не превосходящих 256.
Пример работы программы:
2. Напишите программу для решения следующей задачи. Камера наблюдения регистрирует в автоматическом режиме скорость проезжающих мимо неё автомобилей, округляя значения скорости до целых чисел. Необходимо определить:
1) разность максимальной и минимальной скоростей автомобилей;
2) количество автомобилей, скорость которых не превышала 30 км/ч.
Программа получает на вход число проехавших автомобилей N (1 ≤ N ≤ 30), затем указываются их скорости. Значение скорости не может быть меньше 1 и больше 300. Программа должна сначала вывести разность максимальной и минимальной скоростей автомобилей, затем количество автомобилей, скорость которых не превышала 30 км/ч.
Пример работы программы:
Рефлексия
Подведение итогов урока. Предлагаю ученикам фигуру человека, в которой необходимо написать мысли, мнение по данной теме.
Домашнее задание. В случае нехватки времени продумать алгоритм решение задачи №2.
Источник