Какие данные необходимы для организации цикла
Перейти к содержимому

Какие данные необходимы для организации цикла

  • автор:

2. Организация циклов

Цикл — это фрагмент программы, повторяемый многократно. В Паскале три оператора цикла — while, repeat и for. В принципе, без них можно обойтись, поскольку любой цикл можно реализовать с помощью условного оператора if и оператора перехода goto, но операторы цикла гораздо удобнее и нагляднее. У каждого из них есть предпочтительная область применения. Все циклы имеют схожую структуру (рис. 2.1). Операторы, ради многократного выполнения которых организуется цикл, называются телом цикла. Остальные операторы служат для управления процессом повторения вычислений: это начальные установки, проверка условия продолжения цикла и модификация параметра цикла. Один проход цикла называется итерацией. На этапе начальных установок (до входа в цикл) задаются значения переменных, которые в нем используются. Эти значения могут задаваться явно или неявно. Цикл завершается, если условие его продолжения не выполняется. Возможно принудительное завершение как текущей итерации (для этого применяется процедура continue), так и цикла в целом (процедура break и оператор goto). Передавать управление извне внутрь цикла не рекомендуется, потому что при этом не выполнятся начальные установки. Иными словами, выйти из цикла можно в любой момент, а войти — только в начало (примерно как в самолете). 2.1 Цикл с предусловием while В цикле с предусловием проверка условия продолжения цикла выполняется перед телом цикла (рис. 2.1,а). Если при входе в цикл условие не выполняется, он не будет выполнен ни разу. Оператор цикла имеет вид while выражениеоператорРис. 2.1. Структурная схема операторов цикла: а — цикл с предусловием; б — цикл с постусловием 2.2 Цикл с постусловием repeat Оператор цикла с постусловием реализует структурную схему, приведенную на рис. 2.1,б, и имеет вид repeat тело цикла until выражение В отличие от цикла while, этот цикл будет выполняться, пока ложно логическое выражение, указанное после слова until. Как только результат выражения станет истинным, произойдет выход из цикла. Вычисление выражения выполняется в конце каждой итерации цикла. Тело цикла заключено между служебными словами repeat и until, поэтому дополнительно заключать его между ключевыми словами begin и end не требуется. Цикл repeat применяется в тех случаях, когда тело цикла необходимо обязательно выполнить хотя бы один раз: например, если в нем вводятся данные и выполняется их проверка. Если же такой необходимости нет, предпочтительнее пользоваться циклом с предусловием. 2.3 Цикл с параметром for Параметром цикла называется переменная, которая используется при проверке условия продолжения цикла и принудительно изменяется на одну и ту же величину на каждой итерации. Если параметр цикла целочисленный, он называется счетчиком цикла. В циклах for языка Паскаль используется счетчик, который автоматически либо увеличивается, либо уменьшается на единицу. Соответственно, есть две формы записей этого цикла: for параметр := выражение_1 to выражение_2 do оператор for параметр : = выражение_2 downto выражение_1 do оператор Параметр цикла должен быть порядкового типа. Напомним, что к порядковым из стандартных типов относятся целые, символьный и логические типы. Выражения должны быть совместимы по присваиванию с переменной цикла. Они вычисляются один раз до входа в цикл. Оператор for реализован в Паскале как цикл с предусловием. Таким образом, если в первой форме выражение_1 будет больше, чем выражение_2, а во второй — меньше, тело такого цикла не будет выполнено ни разу. ВНИМАНИЕ Если в теле цикла необходимо выполнить более одного оператора, необходимо заключить их в блок с помощью ключевых слов begin и end. Оператор for применяется, если требуется выполнить тело цикла заранее заданное количество раз. После нормального завершения цикла значение счетчика не определено. Фактически, оно равно значению, которое принимает счетчик цикла на последней итерации, но использовать это значение в программах не рекомендуется. Это может привести к зацикливанию программы. Циклы с параметром обычно применяются при работе с массивами, которые рассмотрим на следующих практических занятиях. Приведенная далее задача предназначена просто для иллюстрации синтаксиса. Практические советы

  1. При написании любого цикла надо иметь в виду, что в нем всегда явно или неявно присутствуют четыре элемента, реализующие: начальные установки, тело цикла, модификацию параметра цикла и проверку условия продолжения цикла.
  2. Области применения операторов щикла:
    • оператор for применяется, если требуется выполнить тело цикла заданное число раз;
    • оператор repeat используют, когда цикл требуется обязательно выполнить хотя бы один раз, например, при анализе корректности ввода данных;
    • оператор while удобнее во всех остальных случаях.
  3. Выражение, определяющее условие продолжения циклов while и repeat, вычисляется в соответствии с приоритетами операций и должно иметь тип boolean.
  4. Для принудительного перехода к следующей итерации цикла используется процедура continue, для преждевременного выхода из цикла — процедура break.
  5. Чтобы избежать ошибок при программировании циклов, рекомендуется:
    • заключать в блок тело циклов while и for, если в них требуется выполнить более одного оператора;
    • проверять, всем ли переменным, встречающимся в правой части операторов присваивания в теле цикла, присвоены до этого начальные значения, а также возможно ли выполнение других операторов;
    • проверять, изменяется ли в цикле хотя бы одна переменная, входящая в условие выхода из цикла;
    • если количество повторений цикла заранее не известно, предусматривать аварийный выход из цикла по достижении некоторого достаточно большого количества итераций.

07.02.2015 172.03 Кб 15 Академик НАНИ ЧРПОЛИТИКА МОСКОВСКОГО.doc

07.02.2015 247.3 Кб 7 Академику Чубар.doc

07.02.2015 29.7 Кб 23 аксиомы-определения-теоремы-1 четверть 7кл.doc

19.08.2019 73.73 Кб 5 Алгоритм проекта.doc

07.02.2015 833.54 Кб 83 Алгоритмизация и программирование 14.12.2011.doc

24.09.2019 7.68 Mб 6 Алгоритмизация и программирование ч.2.doc

06.02.2015 549.83 Кб 22 Алексеев Женя (вариант №2).docx

06.11.2019 71.59 Кб 3 Аллергия.docx

07.02.2015 181.25 Кб 18 Амилоидоз.doc

15.07.2019 118.78 Кб 0 Анализ ВЭД.doc

14.11.2019 352.26 Кб 5 Анализ денежных потоков.doc

Ограничение

Для продолжения скачивания необходимо пройти капчу:

Какие данные необходимы для организации цикла

Циклический процесс, или просто цикл, – это повторение одних и тех же действий. Последовательность действий, которые повторяются в цикле, называют телом цикла. Один проход цикла называют шагом, или итерацией. Переменные, которые изменяются внутри цикла и влияют на его окончание, называются параметрами цикла.

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

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

В языке Free Pascal для удобства программиста предусмотрены три оператора, реализующих циклический процесс: while, repeat… until и for.

Оператор цикла с предусловием while .. do

Оператор, реализующий этот алгоритм в языке Free Pascal, имеет вид:

while выражение do оператор;

здесь while .. do – зарезервированные слова языка Free Pascal, выражение – логическая константа, переменная или логическое выражение, оператор – любой допустимый оператор языка.

Работает оператор while следующим образом. Вычисляется значение выражения. Если оно истинно (True), выполняется оператор. В противном случае цикл заканчивается, и управление передается оператору, следующему за телом цикла. Выражение вычисляется перед каждой итерацией цикла. Если при первой проверке выражение ложно (False), цикл не выполнится ни разу.

Если в цикле надо выполнить более одного оператора, необходимо операторы, которые должны выполняться в теле цикла, заключить в операторные скобки begin . end:

Какие данные необходимы для организации цикла

Цикл — это последовательность каких-либо действий, которая может повторяться многократно.

В цикле всегда выделяют:

тело цикла — это те действия, что многократно повторяются;

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

По расположению управляющей части циклы делятся на циклы с предусловием и на циклы с постусловием.

В цикле с предусловием вначале определяется, можно ли выполнять тело цикла, и затем, если можно, тело цикла выполняется. И так происходит до тех пор, пока не станет ложным некоторое условие в заголовке цикла.

Цикл с постусловием всегда выполняется хотя бы один раз. В нём вначале выполняется тело цикла, а затем делается проверка: надо ли снова повторять цикл.

В языках С/С++ имеется три оператора цикла: for , while и do . Конечно, цикл можно организовать и искусственно, применяя операторы if и goto , но рекомендуется всегда использовать «настоящие» операторы цикла.

Цикл while

Слово while переводится как « пока ». То есть, пока истинно некое условие, повторять цикл.

Схематично этот цикл можно изобразить так, как показано на рисунке:

Как видим — это цикл с предусловием. Вначале проверяем истинность некоторого условия , а затем, если оно истинно, выполняем операторы (один или несколько), составляющие тело цикла.

Такой цикл не выполниться ни разу, если условие изначально ложно.

Условие — это любое выражение, имеющее результат логического или арифметического типа, т.е. условие для операторов цикла записывается точно также, как для оператора ветвления if .

Формально оператор while можно записать так:

while( условие ) // Заголовок

операторы тела цикла

Тело цикла практически всегда необходимо оформлять как блок, так как оператор while редко содержит в своём теле только один оператор.

Алгоритм работы оператора прост:

Вычисляется значение условия в заголовке оператора.

Если оно истинно, то выполняются операторы тела цикла , а затем управление снова передаётся на заголовок. Если условие ложно, то оператор заканчивает работу. После этого будет выполняться оператор, следующий сразу же за оператором цикла.

Пример . Найти сумму квадратов первых n натуральных чисел.

Возможный текст программы:

§ 5. Оператор цикла

Для записи оператора цикла с предусловием используется команда while. Формат команды:

while . Формат команды:

Условие в записи оператора цикла может быть простым и составным. Фигурные скобки могут быть опущены, если тело цикла состоит из одной команды.

Пример 5.1. Написать программу, которая определит количество цифр в натуральном числе n.

Этапы выполнения задания

I. Исходные данные: n (заданное число).

II. Результат: k — количество цифр в числе.

III. Алгоритм решения задачи.

1. Ввод исходных значений.
2. Начальное значение переменной k = 0.
3. Чтобы посчитать количество цифр в числе, будем делить число на 10 до тех пор, пока число больше 1. Поскольку условие продолжения работы неизвестно, то будем использовать цикл while .
4. В цикле будем уменьшать число n в 10 раз и увеличивать значение k на 1.
5. Вывод результата.

Цикл while работает до тех пор, пока условие цикла истинно. Для того чтобы цикл завершил свою работу, в теле цикла должны быть команды, выполнение которых приведет к тому, что условие цикла станет ложным. Если таких команд нет, цикл выполняется бесконечно. Такую ситуацию называют зацикливанием. В случае зацикливания нужно прервать выполнение программы. В Code::Blocks для этого можно использовать кнопку .

using namespace std ;

while ( n > 0 )

///уменьшение числа в 10 раз

5.2. Оператор цикла с постусловием

Цикл, в котором условие для завершения работы проверяется после выполнения тела цикла, в С++ записывается следующим образом:

Цикл работает, пока условие истинно, и прекращает работу, когда условие становится ложным. Этот цикл называют циклом с постусловием, так как проверка условия осуществляется после выполнения тела цикла. Использовать цикл do. while лучше в тех случаях, когда команды в теле цикла должны выполниться хотя бы один раз, либо когда внутри тела цикла происходит инициализация переменных, участвующих в проверке условия окончания его работы.

Фигурные скобки в записи цикла с постусловием могут быть опущены, если тело цикла состоит из одной команды.

Пример 5.2. Написать программу, которая будет генерировать случайные числа из промежутка [1; x ] до тех пор, пока не будет сгенерировано число, кратное k . Вывести это число и количество сгенерированных чисел. Значения k и x вводятся ( k < x ).

Этапы выполнения задания

I. Исходные данные: числа k и r .

II. Результат: r (искомое число) и n (количество чисел).

III. Алгоритм решения задачи.

1. Ввод исходных значений.
2. Инициализация счетчика n = 0.
3. Поскольку нам известно условие окончания цикла — получить число, кратное k , то будем использовать цикл с постусловием. Условие можно записать так: ( r % k ). Если значение этого выражения не равно нулю, то условие истинно.

3.1. Генерируем случайное число r . В С++ для этого используется функция rand() , которая генерирует случайное число в промежутке [0; 32767). Это число будет использоваться в условии проверки окончания работы цикла.
3.2. Чтобы случайное число попало в промежуток [1; x ], найдем остаток от деления на x числа, сгенерированного функцией rand() , и прибавим к нему 1.
3.3. Увеличим значение счетчика на 1.

4. Вывод результата.

Числа, сгенерированные функцией rand() , называют псевдослучайными, поскольку при каждом запуске программы будет сгенерирована одна и та же последовательность чисел. Каждое новое число в последовательности генерируется по определенному алгоритму из предыдущего. Первое число в этой последовательности — константа, известная компилятору. Такой подход удобен для отладки программы. Однако для получения результатов необходимо при каждом запуске получать другие числа. Функция srand(n) из библиотеки cstdlib позволяет изменить первое число в последовательности в зависимости от значения параметра n . Однако, если значение n является константой, то последовательность чисел изменится по отношению к начальной, но не будет меняться при новых запусках программы. Если в качестве значения n взять системное время (функция time(NULL) из библиотеки ctime ), то при каждом запуске программы будем получать новую последовательность случайных чисел.

Пример 5.2.

using namespace std ;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *