План урока:
Понятие циклического алгоритма
Программирование циклического алгоритма
Операторы цикла
Решение задач с использованием операторов while, repeat, for
Понятие циклического алгоритма
В жизни людей очень часто встречаются циклы. Будь то жизнь маленького ребёнка или взрослого человека, а то и пожилых людей. Эти циклы можно расписать как выполнение одних и тех же действий, пока выполняется определённое условие. К примеру, взрослый человек находится на работе до момента, когда наступит время его ухода. И так изо дня в день, однако, есть и исключения в виде выходных. В жизни детей можно привести такой пример, как обязанность каждый день ходить в школу до момента, когда наступят выходные или каникулы.
Циклические алгоритмы – это алгоритмы, в которых некоторая часть операций повторяется многократно.
Цикл – конструкция с оператором, который повторяется определённое или неопределённое заранее количество раз. Действия, выполняющиеся последовательно внутри цикла, называют телом цикла.
В разных средах программирования циклические конструкции могут быть реализованы по-разному, но неизменным остается главный признак, отличающий циклы от линейных операций и ветвлений – возможность перемещения по программе не только «сверху-вниз», но и «снизу-вверх», для возврата к уже выполненным ранее действиям.
Циклы разделяют на три типа в зависимости от метода организации повторений:
- Цикл, в котором задано условие окончания работы;
- Когда известно условие продолжения работы цикла;
- Когда известно число повторений цикла.
Программирование циклического алгоритма
Выбрав среду программирования Паскаль необходимо познакомиться с операторами, с помощью которых можно разработать программу с циклом. Ими являются while, repeat, for. Оператор while был разобран ещё на прошлом уроке, однако забывать о нём нельзя.
Цикл с предусловием
Цикл с предусловием реализует циклический алгоритм, записанный на языке программирования, с использованием определённого условия, истинность которого проверяется перед каждой итерацией цикла. Выполнение цикла прекращается, когда условие становится ложным.
Цикл с постусловием
Цикл с постусловием – это алгоритм циклической структуры, в котором проверка условия продолжения осуществляется после выполнения тела цикла.
Тело цикла с постусловием всегда выполняется как минимум один раз, независимо от истинности или ложности условия. Это его ключевое отличие от цикла с предусловием.
Такие циклы удобны, когда в условии используется результат выполнения тела цикла. Например, если мы хотим найти в тексте слово «стоп», мы должны сначала прочитать очередное слово, и только потом проверить, является ли оно искомым или следует продолжить поиск.
Цикл с заданным числом повторений
Этот вид цикла вместо логического условия выполнения использует параметр (счетчик) – специальную переменную, которая на каждом шаге цикла получает очередное значение из определенного диапазона. Цикл повторяется до тех пор, пока не будут перебраны все элементы диапазона. Таким образом, определяя диапазон, мы определяем заранее заданное число повторений.
Операторы цикла
Для программирования циклических алгоритмов и корректного выполнения программ с их использованием, необходимо знать операторы цикла. Чаще всего, в языке Паскаль используют операторы цикла: for, repeat и while. Разберем их подробнее.
Оператор while
Оператор while используется, когда нужно создать цикл с предусловием. Его схема в циклическом алгоритме выглядит следующим образом:
Если переводить его дословно, то можно сказать, что он работает по принципу «пока <условие> выполнять действие <оператор 1>», а заканчивается при переходе программы на слово end. Перед выполнением операторов внутри цикла условие обязательно проверяется и уже дальше, в зависимости от его истинности, программа либо выполняет тело цикла, либо переходит к последующим операторам.
Решение задач с использованием оператора while
Для более чёткого понимания решения задач нужно разобрать циклические алгоритмы, примеры которых приведены в решениях.
Задача 1. На вход подаются целые числа. До тех пор, пока не будет введено число, которое больше 17, программа должна вывести сумму полученного числа и числа 8. Когда вводимое число будет больше 17, то после выполнения программы цикл завершается.
Решение.
Шаг 1. Для начала необходимо дать программе название.
Шаг 2. Учитывая, что на вход подаётся целое число, указать тип данных, в данном случае – integer.
Шаг 3. Запись командного блока. Нужно написать слово, обозначающее начало, begin.
Шаг 4. Нужно дать переменной a значение 1, чтобы цикл начался автоматически.
Шаг 5. Запись цикла. Поскольку известно условие окончания работы, для этой задачи необходимо написать «пока a меньше или равно 17» и сделать переход к последующим операторам путём написания составного цикла.
Шаг 6. Первоначальный вывод программы. Необходимо написать то, что программа будет выдавать в первую очередь. В данном случае, она будет запрашивать целое число, запрос так и пишется: «Введите целое число: » .
Шаг 7. Запись необходимых операторов. Используя оператор readln программа считывает данные и переводит курсор на новую строку. Далее она производит операции над поступившими данными.
Шаг 8. Запись суммы. Исходя из условия задачи необходимо сделать так, чтобы программа выводила сумму входящего числа и числа 8. Осуществить это можно используя оператор writeln.
Шаг 9. Запись вывода программы после цикла. После того, как программа выполнит свою работу в цикле, необходимо показать, что она из него вышла. Можно просто попрощаться, как в данном случае.
Шаг 10. Проверка правильности записи алгоритма. В конце программного блока, после слова end нельзя забывать точку, её обязательно нужно поставить.
Оператор repeat
Оператор цикла repeat until используется для создания циклического алгоритма с постусловием. Его схема выглядит так:
Дословно оператор Паскаля repeat можно перевести как «повторяй <оператор 1>, до <условие>». В зависимости от истинности условия, либо происходит переход на повторение «оператора 1», либо осуществляется выход из цикла к последующим операторам.
Оператор repeat имеет два важных отличия от оператора while:
- в операторе repeat сначала выполняется тело, а затем проверяется условие;
- в операторе repeat прописывается условие завершения цикла, тогда как в операторе while – условие его продолжения.
Решение задач с использованием оператора repeat
Задача 1. Придумать алгоритм и написать по нему программу, результатом выполнения которой будет вывод последовательности натуральных чисел от 1 до введенного пользователем числа.
Решение.
Шаг 1. Название программы. В данном случае – «задача 1».
Шаг 2. Учитывая, что на вход подаются целые числа, требуется указать тип данных – integer.
Шаг 3. Командный блок. Запись начального слова begin.
Шаг 4. Вывод запроса программы. Поскольку программе необходимо целое число, нужно попросить пользователя ввести его. Осуществляется это с помощью процедуры writeln и текста «Введите целое число, которое больше 1: ».
Шаг 5. Необходимо присвоить переменной i значение 1 для того, чтобы последовательность начиналась с натурального числа.
Шаг 6. Запись цикла. Учитывая, что используется цикл с постусловием, необходимо сначала записать оператор, который будет повторяться, затем увеличить i на 1, чтобы образовывалась последовательность, и уже после этого прописать условие повторения. В данной задаче цикл перестаёт повторяться тогда, когда переменная i принимает значение больше введённого числа, которое является последним членом последовательности.
Шаг 7. Проверка программы на правильность в выводе. В результате своей работы программа должна вывести последовательность натуральных чисел от 1 до n, через пробел.
Оператор for
Используя оператор for можно задать нужное количество повторений одних и тех же действий. По-другому его называют оператором циклов с известным числом повторений. Он имеет два соединительных слова – это to и downto. Различие между ними в том, что при использовании первого к предыдущему значению переменной цикла прибавляется единица, а при написании второго – вычитается единица. Схемы оператора имеют следующий вид:
Дословно его можно перевести как «для переменной в значении от начального к конечному выполнять <оператор 1> ».
Решение задач с использованием оператора for
Рассмотреть пример с оператором for можно при написании короткого алгоритма для следующей задачи.
Задача 1. Напишите на одном из языков программирование алгоритм, который выводит квадраты чисел от 1 до 10.
Решение.
Шаг 1. Необходимо дать программе название.
Шаг 2. Поскольку на вход числа не подаются, тип указывается в зависимости от данных, которые изначально находятся в программе. В данном случае – это целые числа.
Шаг 3. Запись блока с командами алгоритма.
Шаг 4. Перебор последовательности чисел осуществляется в цикле for, в котором счетчик i пробегает значения от 1 до 10, а расчет и вывод квадратов осуществляется в процедуре write.
Решение задач с использованием операторов while, repeat, for
Задача 1 Разработать алгоритм программы, которая выведет таблицу умножения чисел от 1 до 10 на 9.
Решение
Для решения можно написать два вида кода. Однако, этапы разработки программы, задачи, которые ей необходимо выполнить, очень похожи на прошлые примеры, и она ничем не отличается от решения обычной задачи. Поскольку различие в этих двух кодах лишь в использованном операторе while и for, то рассматривать их по-отдельности нет смысла. Последовательность написания первого кода выглядит так:
Шаг 1. Нужно назвать программу.
Шаг 2. Так как пользователь не вводит никаких данных, то их можно ввести в сам код программы. Тип используемых данных в данном случае – это integer.
Шаг 3. Написание команд. Изначально нужно сделать так, чтобы программа вывела название того, для чего она предназначена. В данной задаче это «Таблица умножения на 9».
Шаг 4. Запись цикла for. С помощью него программа будет последовательно умножать числа от 1 до 10 на 9 и составлять таблицу умножения путём вывода каждого значения по схеме «9x, i, =, p», где i – умножаемое на 9 число, p – результат произведения 9 и i.
Шаг 6. Программа завершает свою работу. Необходимо проверить правильность выведенных данных и, если это необходимо, поправить код для более корректной работы.
Алгоритм является классической совокупностью четко установленных норм для поиска решения задачи. Класс задач – произвольный. В структуру может входить последовательность действий, список инструментария, необходимый для поиска ответа на исходный вопрос задания.
Циклом называют некоторое повторение действия, вычисления.
Цикличный алгоритм, примеры которого можно встретить в повседневной жизни, описывает действия. Они повторяются до момента решения поставленной задачи. Иногда число повторений – обязательное условие задания. Информатика разделяет все структуры повторения на три вида:
- Циклический алгоритм со счетчиком. Конкретная работа должна быть выполнена установленное количество раз. В таких видах конструкций условие уже содержит параметр, указывающий число повторных операций. Простой пример циклического алгоритма со счетчиком: требуется распечатать задание на контрольную на весь класс. В классе 21 ученик. Действие повторится 21 раз;
- Циклический конструктив с условиями. Вычисление или процесс выполняется до того момента, пока не будет сделана работа. После наступит окончание проекта. Данный вид используют в ситуациях, когда число повторений, необходимых для достижения цели, неизвестно. Если рассматривать условный алгоритм с циклом, примеры найти не составит труда. Садовнику необходимо посадить дерево. Он должен выкопать яму. Заранее неизвестно, сколько движений лопатой ему нужно сделать. Он ориентируется на результат;
- Повторение с предварительным условием. Исполнитель изначально проверяет заданные параметры, после приступает к осуществлению действия;
- Цикл с последующим условием. Задача выполняется один раз, после проводится проверка ее параметров.
Составление циклических алгоритмов – информатика и программирование
Главное правило составления конструктивов – конечность. Процесс должен осуществляться до определенного момента. Если окончание не наступает – структуру называют зацикленной. Состав структур с повторениями:
- Название процедуры. Исполнитель указывает основные условия. Они определяют, сколько раз повторится операция;
- Тело алгоритма. Это оператор, он может быть составным или простым. Повторяется в ходе процесса. Допускается содержание разных операторов. Они отвечают за ввод, вывод, присваивание. Отдельная группа условных операций и других. Все операторы, находящиеся внутри системы, – это вложенные конструкции.
Часто встречается задание: приведите пример циклического алгоритма. Чтобы справиться с этой задачей, рекомендуется следовать принципам последовательности составления конструктивов:
- Выявление последовательностей, требующих повторения.
- Определение количества циклических оборотов до начала его работы.
- Использование системы со счетчиком, если количество повторов уже задано.
- Использование структуры с последующим условием при минимум одном исполнении процесса.
- При отсутствии данной информации или возможности нулевого цикла применяется система с предварительным условием.
- Определение пределов для вида со счетчиком.
- Выявление параметров повторов, окончания для последовательностей с условиями.
- Поиск известных переменных до старта. Крайне важны коэффициенты, находящиеся в оперативном условии, если есть предварительные параметры.
- Запись операторов, вычисляющих, выводящих переменные.
- Создание алгоритмической схемы.
- Выбор данных, которыми можно воспользоваться для теста программного продукта.
Циклический алгоритм примеры – информатика
- Укажите процесс, который демонстрирует работу циклического алгоритма.
Рассмотрим пример классической структуры с повторами. Она состоит из четырех частей:
- Присвоение начального обозначения параметру;
- Выполнение основных операций, повторяющихся на цикличных витках;
- Ввод величины шага, проведение соответствующих изменений;
- Ввод условия для окончания или повторного проведения операций;
- Проверка итогов.
Сумма рассчитывается с помощью данной системы. Рассмотрим процесс на примере i-1nxiyi. Действуем по следующей схеме:
- Устанавливается стартовое значение для суммы – нулевое;
- Исследуется первый параметр i, равный единице;
- Выводится xi, yi для вычисления СУММ=СУММ+Xi x Yi;
- Суммирование проводится циклично. Следующее действие i=i+1;
- Повторение выполняется до того, как будет получено нужное значение. Его необходимо вывести.
- Приведите пример циклического алгоритма из жизни.
На уроке физики ученики должны использовать одинаковую формулу до того момента, пока выражение не станет верным. Без этого они не получат нужный результат.
Цель: изучение алгоритмической структуры циклы, создание моделей и алгоритмов для решения практических задач.
Ход урока
I. Актуализация знаний
- Повторить понятие алгоритма, основные конструкции алгоритмического языка.
- Уметь разрабатывать математическую модель, алгоритм и блок схему решения задачи.
- Иметь понятие о языках программирования и их назначении.
- Уметь работать в среде программирования.
- Знать структуры программы.
- Уметь записывать выражения, содержащие числовые и символьные величины.
- Знать структуры операторов и особенности их работы.
- Уметь применять операторы при написании программ с линейными и ветвящимися структурами.
- Уметь на компьютере создавать и запускать программы на отладку.
II. Теоретический материал урока
Большинство практических задач требует многократного повторения одних и тех же действий, т. е. повторного использования одного или нескольких операторов. (Презентация)
Пусть требуется ввести и обработать последовательность чисел. Если чисел всего пять, можно составить линейный алгоритм. Если их тысяча, записать линейный алгоритм можно, но очень утомительно и нерационально. Если количество чисел к моменту разработки алгоритма неизвестно, то линейный алгоритм принципиально невозможен.
Другой пример. Чтобы найти фамилию человека в списке, надо проверить первую фамилию списка, затем вторую, третью и т.д. до тех пор, пока не будет найдена нужная или не будет достигнут конец списка. Преодолеть подобные трудности можно с помощью циклов.
Циклом называется многократно исполняемый участок алгоритма (программы). Соответственно циклический алгоритм — это алгоритм, содержащий циклы.
Различают два типа циклов: с известным числом повторений и с неизвестным числом повторений. При этом в обоих случаях имеется в виду число повторений на стадии разработки алгоритма.
Существует 3 типа циклических структур:
- Цикл с предусловием;
- Цикл с послеусловием;
- Цикл с параметром;
Иначе данные структуры называют циклами типа «Пока», «До», «Для».
Графическая форма записи данных алгоритмических структур:
Цикл с предусловием (иначе цикл пока) имеет вид:
Форматы записи операторов алгоритма | Блок-схема | Форматы записи операторов на Паскале |
Пока (условие) нц серия команд кц |
while условие do begin серия команд; end; |
где
условие – выражение логического типа.
Цикл может не выполняться ни разу, если значение логического выражения сразу же оказывается ложь.
Серия команд, находящихся между begin и end, выполняются до тех пор, пока условие истинно.
Для того чтобы цикл завершился, необходимо, чтобы последовательность инструкций между BEGIN и END изменяла значение переменных, входящих в условие.
Цикл с постусловием (иначе цикл до) имеет вид:
Форматы записи операторов алгоритма | Блок-схема | Форматы записи операторов на Паскале |
В алгоритмическом языке нет команды которая могла бы описать данную структуру, но ее можно выразить с помощью других команд (Например, ветвления). | repeat серия команд until условие |
где
условие – выражение логического типа.
Обратите внимание:
Последовательность инструкций между repeat и until всегда будет выполнено хотя бы один раз;
Для того чтобы цикл завершился, необходимо, чтобы последовательность операторов между repeat и until изменяла значения переменных, входящих в выражение условие.
Инструкция repeat, как и инструкция while, используется в программе, если надо провести некоторые повторяющиеся вычисления (цикл), однако число повторов заранее не известно и определяется самим ходом вычисления.
Цикл с параметром (иначе цикл для) имеет вид:
Форматы записи операторов алгоритма | Блок-схема | Форматы записи операторов на Паскале |
Для i от а до b шаг h делай Нц Серия команд кц |
h = +1 for i:= a to b do begin серия команд end; h = -1 for i:= b downto a do begin Cерия команд; end; |
где
i – параметр цикла;
a – начальное значение цикла;
b – конечное значение цикла;
h – шаг изменения параметра.
Структура данного цикла иначе называют циклом i раз.
Эта команда выполняется таким образом: параметру i присваивается начальное значение а, сравнивается с конечным значением b и, если оно меньше или равно конечному значению b, выполняется серия команд. Параметру присваивается значение предыдущего, увеличенного на величину h – шага изменения параметра и вновь сравнивается с конечным значением b.
На языке программирования Паскаль шаг изменения параметра может быть равным одному или минус одному.
Если между begin и end находится только один оператор, то операторные скобки можно не писать. Это правило работает для цикла типа «Пока» и «Для».
Рассмотрим пример решения задач с использованием данных структур
Пример.
Вычислить произведение чисел от 1 до 5 используя различные варианты цикла
Математическая модель:
Р= 1· 2· 3· 4· 5=120
Составим алгоритм в виде блок-схемы.
Для проверки правильности алгоритма заполним трассировочную таблицу.
Шаг | Операция | Р | i | Проверка условия |
1 | P:=1 | 1 | ||
2 | i:=1; | 1 | 1 | |
3 | i<=5 P:=P*I i:=i+1 |
1 | 1 | 1<=5, да (истина) |
4 | i<=5 P:=P*I i:=i+1 |
2 | 2 | 2<=5, да (истина) |
5 | i<=5 P:=P*I i:=i+1 |
6 | 3 | 3<=5, да (истина) |
6 | i<=5 P:=P*I i:=i+1 |
24 | 4 | 4<=5, да (истина) |
7 | i<=5 P:=P*I i:=i+1 |
120 | 5 | 5<=5, да (истина) |
8 | i<=5 P:=P*I i:=i+1 |
6<=5, нет (ложь) |
Проверка условия происходит в несколько шагов: проверка условия и выполнение команд на одной из ветвей. Поэтому в трассировочной таблице записываются не команды алгоритма, а отдельные операции, выполняемые компьютером на каждом шаге.
Шаг первый: Р присваивается значение один.
Шаг второй: i присваивается значение один.
Шаг третий: при i равном единице проверяем условие один меньше или равен пяти, да, условие истинно, значит Р присваивается значение один умноженное на один, будет два. Для i: один плюс один, будет два.
Шаг четвертый: при i равном двум проверяем условие два меньше или равен пяти, да, условие истинно, значит Р присваивается значение 2 умноженное на один, будет 2. Для i: два плюс один, будет три.
Шаг пятый: при i равном трем проверяем условие три меньше или равен пяти, да, условие истинно, значит Р присваивается значение два умноженное на три, будет шесть. Для i: три плюс один, будет четыре.
Шаг шестой: при i равном четырем проверяем условие четыре меньше или равен пяти, да, условие истинно, значит Р присваивается значение шесть умноженное на четыре, будет двадцать четыре. Для i: четыре плюс один, будет пять.
Шаг седьмой: при i равном пяти проверяем условие пять меньше или равен пяти, да ,условие истинно, значит Р присваивается значение двадцать четыре умноженное на пять, будет сто двадцать. Для i: пять плюс один, будет шесть.
Шаг восьмой: при i равном шести проверяем условие шесть меньше или равен пяти, нет, условие ложно, тогда мы выходим из цикла, а в результате получаем последнее значение равное сто двадцати.
Program Pr1;
Var i: integer;
Begin
P:=1;
i:=1;
While i<=5 do
begin
P:=P*i;
i:=i+1;
end;
Write (‘P=’, P);
end.
Для цикла с постусловием построим блок-схему и трассировочную таблицу. (слайд16)
В результате получаем последнее значение равное сто двадцати на седьмом шаге
И для Цикла с параметром построим блок-схему и трассировочную таблицу. (слайд17)
В результате получаем последнее значение равное сто двадцати на шестом шаге
Задача:
Вывести на экран числа от 1 до 5 в:
- прямом порядке;
- обратном порядке.
Математическая модель:
- 1 2 3 4 5;
- 5 4 3 2 1.
Блок-схема и программа решения задачи представлена для чисел в прямом порядке и обратном порядке.
(слайд 21)
Запишем рассмотренные алгоритмы на языке программирования Паскаль.
(слайд 22)
III. Подведение итогов урока
И так мы рассмотрели следующие вопросы:
- Алгоритмическая структура цикл;
- Виды алгоритмических структур:
- Цикл с предусловием;
- Цикл с послеусловием;
- Цикл с параметром;
- Рассмотрели способы записи данных структур;
- Разобрали примеры решения задач с помощью этих структур.
Алгоритм циклической структуры
Алгоритм циклической структуры
Как вы помните, любой алгоритм можно составить из нескольких базовых структур. В простейшей — линейной — команды выполняются однократно в той последовательности, как записаны. Если на каком-то этапе исполнитель должен выбирать один вариант из нескольких, используют разветвленную структуру. Но чаще всего автоматизируют те действия, которые нужно выполнять много раз подряд. И здесь на помощь приходит циклическая структура.
В алгоритме циклической структуры (цикле) серия команд (тело цикла) повторяется многократно. При этом нужно указать, либо сколько раз исполнитель должен выполнить тело цикла, либо при каком условии исполнитель будет повторять тело цикла еще раз.
Разновидности циклической структуры
Разновидности циклической структуры
Задается количество повторений
Цикл с параметром
Задается условие продолжения/окончания повторений
блок-схема
фрагмент программы
for i:=1 to 10 do
write(i, ‘ ‘);
Результат:
1 2 3 4 5 6 7 8 9 10
for k:=8 downto 1 do
write(k*k, ‘ ‘);
n:=1;
while n < 100 do
begin
write(n, ‘ ‘);
n:=n*2;
end;
Результат:
1 2 4 8 16 32 64
m:=1;
repeat
write(m, ‘ ‘);
m:=m*3;
until m > 500;
Результат:
1 3 9 27 81 243
Результат:
64 49 36 25 16 9 4 1
(В примерах фрагментов программ ключевые слова операторов цикла выделены полужирным шрифтом).
Если тело цикла состоит более чем из одной команды, в операторах for…to…do и while…do ее необходимо, как и в условном операторе, заключать в операторные скобки begin…end (см. пример цикла с предусловием).
При составлении циклического алгоритма, нужно…
При составлении циклического алгоритма, нужно…
- Определить, какая последовательность действий должна повторяться.
- Выяснить, что будет известно о количестве повторений тела цикла до начала цикла.
- Если число повторений известно, можно использовать цикл с параметром.
- Если тело цикла обязательно выполняется хотя бы один раз, можно использовать цикл с постусловием.
- Если число повторений неизвестно и может быть нулевым, необходимо использовать цикл с предусловием.
- Определить пределы изменения параметра (для цикла с параметром) либо условие повторения/окончания (для циклов с условием).
- Определить, значения каких переменных должны быть известны до начала цикла (особое внимание обратить на переменные, входящие в условие оператора цикла с предусловием). Операторы для ввода или вычисления этих переменных должны быть записаны до заголовка цикла.
- Записать алгоритм на языке программирования.
- Подобрать данные для тестирования программы (предусмотреть несколько наборов данных, в том числе для предельных случаев, например, для случая, когда тело цикла с предусловием не должно выполняться ни разу).
Циклическим называется алгоритм, в котором серия команд выполняется определённое количество раз.
Циклы бывают: с параметром (счётчиком), с условием. Циклы с условием ещё называют итерационными.
Циклы с параметром (счётчиком) выполняются заданное число раз.
Программа на Pascal | Программа на Python |
for (i)(:) (= n) to (k) do begin … end; |
for (i) in range((n)): … |
Пример
Дан ряд чисел от (1) до (20), нужно найти сумму ряда.
Чтобы найти сумму, нужно выполнить алгоритм (20) раз. Обозначим слагаемое через (i) и на каждом повторе будем добавлять в переменную (S). Запишем программу.
Рис. (1). Программа на Pascal
Рис. (2). Программа на Python
Примечание: в программном коде на Python в строке for i in range указываем (21), т. к. последнее число в заданный диапазон не входит.
Добавим в программу условие, например: нужно сложить не все цифры диапазона, а только чётные. Условие проверяет чётность числа.
Рис. (3). Программа на Pascal
Рис. (4). Программа на Python
Усложним условие: дан ряд из (N) чисел, посчитать количество чисел, кратных (5) и не кратных (3).
Рис. (5). Программа на Pascal
Рис. (6). Программа на Python
Циклы с условием
В Pascal используются циклы с постусловием (repeat… until) и предусловием (while), а в Python используется только while.
В чём отличие?
Цикл repeat… until — цикл, в котором серия команд повторяется, пока не выполнено условие, а в цикле while серия команд выполняется, пока выполняется условие.
В цикле while серия команд может не выполниться ни разу, в цикле repeat такого произойти не может — хоть раз, но выполнится.
В Python нет цикла repeat, но его можно организовать с помощью цикла while, например так:
Рис. (7). Программа с использованием постусловия
While True будет выполняться бесконечно, но при вводе с клавиатуры числа больше (0) цикл закончится.
Рассмотрим задачу: определить количество чётных цифр в числе.
Составим алгоритм решения задачи.
1. Вводим число.
2. «Отсекаем» последнюю цифру числа ((a)(:) (= x) (mod) (10)).
3. Проверяем: если цифра чётная ((if) (a) (mod) (2 = 0) (then) (k)(:) (= k + 1)), то добавляем в переменную, например (k), единицу ((k)(:) (= k + 1)).
4. Уменьшаем количество цифр на одну, команда (x) (div) (10) уменьшает число на (1) разряд.
5. Повторяем цикл, пока есть цифры в числе (while (x > 0) (do)).
Рис. (8). Программа на Pascal
Рис. (9). Программа на Python
Решение задачи «Как на ЕГЭ» № (17)
Рассматривается множество целых чисел, принадлежащих полуинтервалу ((1310; 13154]), которые делятся на (3) и не делятся на (9, 11, 19).
Найди количество таких чисел и разницу между максимальным и минимальным числом.
Составим алгоритм решения.
1. Для решения будем использовать цикл for, диапазон от (1311) (круглая скобка) до (13154) включительно.
2. С помощью определения остатка от деления находим количество чисел, кратных (3) и не кратных (9), (11), (19).
3. Найдём максимальное число, которое попадает под условие (максимальным будет число, которое попадает под условие позже всего).
4. Найдём минимальное число, которое попадает под условие (минимальное число можно найти, «прокрутив» последовательность в обратном порядке).
5. Найдём разницу между минимальным и максимальным числом.
Рис. (10). Программа на Pascal
Ответ:
(k = 2265).
Разница max-min (= 11835).
Рис. (11). Программа на Python
Ответ:
(k = 2265).
Разница max-min (= 11835).
Как на ЕГЭ. Задание № (14).
Для решения задания рассмотрим программу на Python.
Алгоритм решения.
1. Запишем число в переменную, например (x).
2. Организуем цикл while, пока (x) больше (0), будем выполнять следующие действия:
- определим остаток от деления (x) на основание системы счисления (например, (2)).
- Если будем считать количество единиц в числе, то добавим в переменную, например (k), единицу.
- Уменьшим число, т. е. поделим нацело на (2).
3. Напечатаем (k).
Значение арифметического выражения:
42018+8512−22017−130
записали в системе счисления с основанием (2). Сколько значащих нулей содержится в этой записи?
Рис. (12). Программа на Python |
Ответ: (483).
Источники:
Рис. 1. Программа на Pascal. © ЯКласс.
Рис. 2. Программа на Python.© ЯКласс.
Рис. 3. Программа на Pascal. © ЯКласс.
Рис. 4. Программа на Python. © ЯКласс.
Рис. 5. Программа на Pascal. © ЯКласс.
Рис. 6. Программа на Python. © ЯКласс.
Рис. 7. Программа с использованием постусловия. © ЯКласс.
Рис. 8. Программа на Pascal. © ЯКласс.
Рис. 9. Программа на Python. © ЯКласс.
Рис. 10. Программа на Pascal. © ЯКласс.
Рис. 11. Программа на Python. © ЯКласс.
Рис. 12. Программа на Python. © ЯКласс.