загрузка...

Информатика: Новый полный справочник для подготовки к ЕГЭ - 2018 год

Раздел 10. Программирование

Циклы

Конспект

Цикл с предусловием (цикл ПОКА)

Обеспечивает выполнение блока команд, составляющего тело цикла, пока условие остается истинным (выход из цикла — по ложности условия).

image196

Условие проверяется до начала выполнения цикла, поэтому возможна ситуация, что тело цикла не будет выполнено ни разу.

Цикл с постусловием (цикл ДО)

Обеспечивает выполнение команд, составляющих тело цикла, пока условие не станет истинным (цикл выполняется, пока условие ложно).

image197

Условие проверяется после выполнения цикла, поэтому тело цикла всегда выполняется хотя бы один раз.

Цикл с параметром (цикл со счётчиком, цикл ДЛЯ)

Обеспечивает выполнение блока команд, составляющего тело цикла, количество раз, заданное начальным, конечным значениями переменной-счётчика (параметра цикла) и шагом её изменения.

image198

Первоначально переменной-счётчику (в данном примере — переменной i) присваивается начальное значение iH и выполняется тело цикла. После выполнения тела цикла значение счётчика увеличивается на заданную величину шага Δi и выполняется проверка: не превысило ли значение счётчика заданное конечное значение iK. Если не превысило, то вновь выполняется тело цикла. Иначе происходит выход из цикла.

Внимание!

В цикле с параметром количество выполнений тела цикла задано однозначно. В циклах же ПОКА и ДО количество выполнений тела цикла заранее не известно и определяется ситуацией. Поэтому необходимо проследить, чтобы во время выполнения циклов ПОКА и ДО происходило какое-то изменение переменных, задействованных в условии цикла (чтобы в какой-то момент истинность условия изменилась и цикл завершился). Несоблюдение этого требования приводит к бесконечному выполнению цикла («зацикливанию» программы).

Конструкции циклов в языке Паскаль

Цикл с предусловием:

image199

Цикл с постусловием:

Цикл со счётчиком:

Цикл с шагом 1

Цикл с шагом —1

Тело цикла может включать в себя другой цикл. «Глубина вложенности» циклов теоретически может быть любой.

При выполнении вложенных циклов:

• начинает выполняться внешний цикл:

— выполняется тело внешнего цикла, в том числе целиком — внутренний цикл;

• проверяется условие внешнего цикла, если оно соблюдено, снова выполняется внешний цикл:

— выполняется тело внешнего цикла, в том числе целиком — внутренний цикл;

• и т.д.

Правила построения вложенных циклов:

• циклы не должны «пересекаться», т.е. внутренний цикл должен начинаться и полностью завершаться внутри тела внешнего цикла;

• во внутреннем и во внешнем циклах ДЛЯ должны использоваться разные переменные-счётчики.

Операторы досрочного завершения цикла

Оператор языка Паскаль

Описание

continue

Оператор продолжения — выполнение данного оператора прекращает текущее выполнение тела цикла и передаёт управление на проверку условия цикла.

break

Оператор прерывания — выполнение данного оператора прекращает выполнение цикла и передаёт управление на следующий оператор после цикла.

Разбор типовых задач

Задача 1. Определите, что будет напечатано в результате работы следующего фрагмента программы:

Бейсик

Паскаль

Си

Алгоритмический язык

Решение

Строится таблица трассировки.

Таким образом, выводится значение переменной k, равное 103.

Ответ: k = 103.

Таблицу трассировки можно записывать упрощённо (подразумевая, что условие s < 1024 не выполняется, а при его первом же выполнении трассировка прекращается):

Задача 2. Запишите число, которое будет напечатано в результате выполнения следующей программы. Для Вашего удобства программа представлена на пяти языках программирования.

Бейсик

Python

Алгоритмический язык

Паскаль

Си

Решение

Выполним трассировку программы:

2*x*x

Условие цикла

x

k

0

0

0

истина

1

3

2

истина

2

6

8

истина

3

9

18

истина

4

12

32

истина

5

15

50

истина

6

18

72

истина

7

21

98

ложь

Ответ: 21.

Задача 3. Ниже приведена программа. При каком наибольшем введенном числе d после выполнения программы будет напечатано 55?

Решение

В предыдущей задаче требовалось определить конечное значение вычисляемой переменной, а теперь наоборот, нужно найти по заданному конечному значению исходное.

1) Анализируем алгоритм:

в цикле ПОКА задано условие выполнения цикла — до тех пор, пока значение s не превышает 365;

внутри цикла значение переменной s увеличивается на заданное значение d, а значение переменной п увеличивается на 5;

по завершении цикла на экран выводится значение переменной n.

2) Тогда, согласно условию, значение n равно 55. Учитывая, что изначально переменная n обнуляется, это означает, что цикл выполнился 55/5 = 11 раз.

3) Учитывая, что переменная s изначально тоже обнуляется, получаем, что за эти 11 проходов цикла переменная s увеличивается на 11 ∙ d и становится больше 365 (условие прекращения работы цикла). Тогда получаем неравенство:

11d > 365, откуда d > 365/11, т.е. d > 332/11 /или, учитывая, что числа — целые, d > 34.

4) Чтобы теперь оценить верхнюю границу интервала возможных значений d, надо учесть, что при слишком большом значении d цикл мог бы прерваться ещё после 10 проходов (а то и раньше). Значит, нам нужно определить значение d, на единицу меньшее, чем минимальное значение d, обеспечивающее выполнение 10 проходов цикла. В этом случае неравенство будет таким:

10d > 365, тогда d > 365/10, или d > 36,5.

5) Рассуждая аналогично п. 3, можно заключить, что минимальное значение d, при котором цикл завершится через 10 проходов, равно 37 (ближайшее целое число, большее 36,5). Нам же требуется значение d, на единицу меньшее. Это число 36.

Таким образом, диапазон возможных значений d, обеспечивающих выполнение 11 проходов цикла, составляет [34..36], а искомое максимальное значение d, при котором будет выведено число 55, равно 36.

Ответ: 36.





загрузка...

загрузка...