Циклы. Операторы цикла for, while-do, repeat-until. Операторы завершения цикла break, continue
- 1. Какие преимущества дает использование операторов цикла в программе?
- 2. Какие есть виды операторов цикла в языке Паскаль?
- 3. Какой общий вид оператора цикла с параметром for?
- 4. Какой вид имеет оператор цикла с предусловием while-do?
- 5. Какой вид имеет оператор цикла с постусловием repeat-until?
- 6. Пример вычисления суммы с помощью различных операторов цикла.
- 7. Какие есть операторы завершения цикла?
- 8. Пример использования оператора break.
- 9. Пример использования оператора continue.
1. Какие преимущества дает использование операторов цикла в программе?
Иногда алгоритм решения задачи может быть реализован таким образом, что нужно выполнять одни и те же операции несколько раз. Алгоритм, в котором определенная последовательность команд повторяется несколько раз называется циклическим.
Операторы цикла используются для удобной организации циклического процесса в программе.
2. Какие есть виды операторов цикла в языке Паскаль?
В языке Паскаль предусмотрено три разновидности операторов цикла:
- цикл с параметром (for-to-do);
- цикл с предусловием (while-do);
- цикл с послеусловием (repeat-until).
3. Какой общий вид оператора цикла с параметром for?
Цикл с параметром имеет два варианта реализации.
Вариант 1. Общий вид цикла с параметром:
for Счетчик := НачальноеЗначение to КонечноеЗначение do begin // Инструкции, операторы end;
где Счетчик – переменная перечислительного типа, которая в цикле имеет шаг прироста равный 1; НачальноеЗначение – начальное значение параметра Счетчик; КонечноеЗначение – конечное значение параметра Счетчик.
Если НачальноеЗначение больше за КонечноеЗначение, то инструкции между begin и end не выполняются. Если между begin и end есть лишь одна инструкция (оператор), то ключевые слова begin и end можно опустить.
Вариант 2. Общий вид цикла с параметром:
for Счетчик := НачальноеЗначение downto КонечноеЗначение do begin // Инструкции, операторы end;
В этом случае значение параметра Счетчик не возрастает на 1, а уменьшается на 1 (шаг изменения равен -1).
Пример применения оператора цикла с параметром.
Составить программу для вычисления факториала. Факториал вычисляется по следующей формуле:
n! = 1 * 2 * 3 * … * n.
... var i,n:integer; f:real; ... begin // n - задается f:=1; for i:=1 to n do f:=f*i; // f - результат факториала end.
4. Какой вид имеет оператор цикла с предусловием while-do?
Общий вид оператора цикла с предусловием:
while условие do begin // некоторые инструкции end;
Пример применения оператора цикла с предусловием. Фрагмент кода, в котором осуществляется вычисление суммы:
S = 2 + 4 + 6 + … + 200
s := 0; i := 0; while i<200 do begin i:=i+2; s:=s+i; end;
5. Какой вид имеет оператор цикла с постусловием repeat-until?
Общий вид оператора цикла с постусловием:
repeat // некоторые инструкции until условие;
Операторы, размещенные между ключевыми словами repeat и until будут выполняться до тех пор, пока логическое выражение, указанное после until, не примет значение true.
6. Пример вычисления суммы с помощью различных операторов цикла.
Задача.
С помощью оператора цикла вычислить сумму:
S = 1 + 2 + … + 100
Решение 1. Использование оператора цикла с параметром for.
// описание переменных var s, i : integer; begin ... s:=0; for i := 1 to 100 do s := s + i; ... end.
Решение 2. Использование оператора цикла с предусловием while.
// описание переменных var s, i : integer; begin ... s := 0; i := 0; while i<100 do begin i := i + 1; s := s + i; end; ... end.
Решение 3. С помощью оператора цикла с постусловием repeat.
// описание переменных var s, i : integer; begin ... s := 0; i := 0; repeat i := i + 1; s := s + i; until i>=100; ... end.
7. Какие есть операторы завершения цикла?
Для всех операторов цикла выход из цикла осуществляется как вследствие естественного завершения оператора цикла, так и с помощью операторов перехода и выхода.
В стандартном Паскале определены стандартные операторы Break и Continue.
Оператор Break выполняет безусловный выход из цикла. Оператор Continue обеспечивает переход к началу новой итерации цикла.
8. Пример использования оператора break.
Иногда бывает удобно выйти из цикла не по результату проверки, которая осуществляется в начале или в конце цикла, а каким-то другим способом. Такую возможность представляет инструкция break.
Фрагмент программного кода, который определяет наличие заданного элемента в массиве m1. Значение элемента описывается в переменной x. Если элемент есть, то нецелесообразно осуществлять поиск в массиве дальше. В этом случае используется есть операция break.
... f_is := false; // переменная, определяющая есть ли элемент x в массиве m1 for i := 1 to 100 do begin if m1[i]=x then begin f_is := true; // элемент x есть в массиве чисел break; // выход из цикла, нецелесообразно проводить поиск дальше, // поскольку элемент уже найден end; end; ...
9. Пример использования оператора continue.
Инструкция continue используется, если нужно остановить текущую итерацию и перейти к следующей итерации.
Пример фрагмента кода, который множит на 2 все положительные элементы массива m1 из 100 целых чисел. Если встречается отрицательный элемент, то он пропускается.
... for i := 1 to 100 do begin if m1[i]<0 then // пропустить отрицательный элемент continue; // и перейти к следующей итерации m1[i] := m1[i]*2; end; ...