К.Ю. Поляков, Е.А. Ерёмин, Программирование на языке Паскаль § 58. Циклические алгоритмы 1
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Что такое цикл? 2 Цикл – это многократное выполнение одинаковых действий. Два вида циклов: цикл с известным числом шагов (сделать 10 раз) цикл с неизвестным числом шагов (делать, пока не надоест) Задача. Вывести на экран 10 раз слово «Привет». Можно ли решить известными методами? ?
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Повторения в программе 3 вывод 'Привет', нс... вывод 'Привет', нс... вывод 'Привет', нс Что плохо? ?
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Повторения в программе 4 алг Привет нач нц 10 раз вывод "Привет!", нс кц кон алг Привет нач нц 10 раз вывод "Привет!", нс кц кон Как выглядит блок-схема? ? конец цикла начало цикла вывод 'Привет!', нс тело цикла
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Блок-схема цикла 5 начало конец да нет тело цикла
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Как организовать цикл? 6 счётчик:= 0 пока счётчик < 10 вывод 'привет', нс увеличить счётчик на 1 счётчик:= 0 пока счётчик < 10 вывод 'привет', нс увеличить счётчик на 1 счётчик:= 10 пока счётчик > 0 вывод 'привет', нс уменьшить счётчик на 1 счётчик:= 10 пока счётчик > 0 вывод 'привет', нс уменьшить счётчик на 1 Какой способ удобнее для процессора? ? результат операции автоматически сравнивается с нулём!
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Число шагов – переменная 7 цел N вывод 'Сколько раз? ' ввод N нц N раз вывод 'Привет!', нс кц цел N вывод 'Сколько раз? ' ввод N нц N раз вывод 'Привет!', нс кц Ввести количество повторений с клавиатуры: Можно ли сделать без цикла? ?
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Повторения в программе 8 writeln ('Привет');... writeln ('Привет');... writeln ('Привет'); Что плохо? ?
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Блок-схема цикла 9 начало конец да нет тело цикла
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Как организовать цикл? 10 счётчик:= 0 пока счётчик < 10 writeln('привет'); увеличить счётчик на 1 счётчик:= 0 пока счётчик < 10 writeln('привет'); увеличить счётчик на 1 счётчик:= 10 пока счётчик > 0 writeln('привет'); уменьшить счётчик на 1 счётчик:= 10 пока счётчик > 0 writeln('привет'); уменьшить счётчик на 1 Какой способ удобнее для процессора? ? результат операции автоматически сравнивается с нулём!
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Цикл с условием 11 Задача. Определить количество цифр в десятичной записи целого положительного числа, записанного в переменную n. счётчик:= 0 пока n > 0 отсечь последнюю цифру n увеличить счётчик на 1 счётчик:= 0 пока n > 0 отсечь последнюю цифру n увеличить счётчик на 1 nсчётчик Как отсечь последнюю цифру? ? n:= n div 10 Как увеличить счётчик на 1? ? счётчик:= счётчик + 1
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Цикл с условием 12 count:= 0; while do begin end; count:= 0; while do begin end; n:= n div 10; count:= count + 1 тело цикла начальное значение счётчика n > 0 условие продолжения заголовок цикла Зачем begin-end ? ? Цикл с предусловием – проверка на входе в цикл! !
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Цикл с условием 13 k:= 0 нц пока k < 10 вывод 'привет', нс k:= k + 1 кц k:= 0 нц пока k < 10 вывод 'привет', нс k:= k + 1 кц При известном количестве шагов: k:= 0 нц пока k < 10 вывод 'привет', нс кц k:= 0 нц пока k < 10 вывод 'привет', нс кц Зацикливание:
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Цикл с условием 14 k:= 0; while k < 10 do begin writeln('привет'); k:= k + 1 end; k:= 0; while k < 10 do begin writeln('привет'); k:= k + 1 end; При известном количестве шагов: k:= 0; while k < 10 do writeln('привет'); k:= 0; while k < 10 do writeln('привет'); Зацикливание:
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Сколько раз выполняется цикл? 15 a:= 4; b:= 6; while a < b do a:= a + 1; a:= 4; b:= 6; while a < b do a:= a + 1; 2 раза a = 6 2 раза a = 6 a:= 4; b:= 6; while a < b do a:= a + b; a:= 4; b:= 6; while a < b do a:= a + b; 1 раз a = 10 1 раз a = 10 a:= 4; b:= 6; while a > b do a:= a + 1; a:= 4; b:= 6; while a > b do a:= a + 1; 0 раз a = 4 0 раз a = 4 a:= 4; b:= 6; while a < b do b:= a - b; a:= 4; b:= 6; while a < b do b:= a - b; 1 раз b = -2 1 раз b = -2 a:= 4; b:= 6; while a < b do a:= a - 1; a:= 4; b:= 6; while a < b do a:= a - 1; зацикливание
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Цикл с постусловием 16 нц кц при ; нц кц при ; условие окончания заголовок цикла вывод 'Введите n > 0: ' ввод n n > 0 тело цикла при входе в цикл условие не проверяется цикл всегда выполняется хотя бы один раз в последней строке указывают условие окончания цикла, а не условие его продолжения
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Цикл с постусловием 17 repeat until ; repeat until ; условие окончания заголовок цикла write('Введите n > 0: '); read(n) n > 0 тело цикла при входе в цикл условие не проверяется цикл всегда выполняется хотя бы один раз в последней строке указывают условие окончания цикла, а не условие его продолжения
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 18 «A»: Напишите программу, которая получает два целых числа A и B (0 < A < B) и выводит квадраты всех натуральных чисел в интервале от A до B. Пример: Введите два целых числа: *10=100 11*11=121 12*12=144 «B»: Напишите программу, которая получает два целых числа и находит их произведение, не используя операцию умножения. Учтите, что числа могут быть отрицательными. Пример: Введите два числа: *(-15)=-150
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 19 «C»: Ввести натуральное число N и вычислить сумму всех чисел Фибоначчи, меньших N. Предусмотрите защиту от ввода отрицательного числа N. Пример: Введите число N: Сумма 17709
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи-2 20 «A»: Ввести натуральное число и найти сумму его цифр. Пример: Введите натуральное число: Сумма цифр 15. «B»: Ввести натуральное число и определить, верно ли, что в его записи есть две одинаковые цифры, стоящие рядом. Пример: Введите натуральное число: Нет. Пример: Введите натуральное число: Да.
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи-2 21 «C»: Ввести натуральное число и определить, верно ли, что в его записи есть две одинаковые цифры (не обязательно стоящие рядом). Пример: Введите натуральное число: Да. Пример: Введите натуральное число: Нет.
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Конец фильма ПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики ГБОУ СОШ 163, г. Санкт-Петербург ЕРЕМИН Евгений Александрович к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь
Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Источники иллюстраций 23 1.old-moneta.ruold-moneta.ru logos.cs.uic.edulogos.cs.uic.edu 6.ru.wikipedia.org ru.wikipedia.org 7. иллюстрации художников издательства «Бином» 8. авторские материалы