Лекция 3. Операторы цикла. Массивы.
Операторы цикла
Эти операторы служат для повторного выполнения какого-либо действия.
Существует 3 вида операторов цикла.
Оператор while
Синтаксис этого оператора:
While <выражение логического типа> do
<оператор1>;
Порядок выполнения этого оператора:
- Вычисляется выражение логич. типа.
- Если результат есть true, то выполняется оператор1, затем снова вычисляется выражение. И так эти 2 пункта повторяются, пока результат выражения не станет равным false.
- Если результат выражения равен false, оператор1 не выполняется, и программа переходит к выполнению операторов, расположенных далее по тексту, то есть после ;
Примечания:
1. Понятно, что возможен случай, когда оператор1 не выполнится ни разу.
2. Понятно также, что возможен случай, когда этот цикл не прекращает работы. Такой случай называют зацикливанием.
3. Если нужно, чтобы повторно выполнялась группа операторов, применяйте
СОСТАВНОЙ оператор.
Оператор repeat
Синтаксис этого оператора:
repeat
<операторы>
until
<выражение логического типа>;
Порядок выполнения этого оператора:
- Выполняются (в обычном порядке) операторы, расположенные между repeat и until.
- Вычисляется выражение логич. типа.
- Если результат есть false, переходим к пункту 1, то есть повторно выполняются операторы и вычисляется выражение. И так до тех пор, пока выражение не станет
= true.
- Если результат выражения равен true, программа переходит к выполнению операторов, расположенных далее по тексту, то есть после ;
Оператор for
Синтаксис этого оператора:
1-й вариант: возрастание переменной цикла.
for <переменная цикла> := <начальное значение> to
<конечное значение> do <оператор1>;
2-й вариант: убывание переменной цикла.
for <переменная цикла> := <начальное значение> downto
<конечное значение> do <оператор1>;
------- где: ----
<переменная цикла> - переменная одного из ПОРЯДКОВЫХ типов.
<начальное значение>, <конечное значение> - выражения
того же типа, что и переменная цикла.
Порядок выполнения этого оператора (1-й вариант):
- Переменной цикла (ПЦ) присваивается начальное значение.
- Значение ПЦ сравнивается с конечным значением (КЗ).
- Если ПЦ >= КЗ, то выполняется оператор1, затем ПЦ увеличивается на 1.
Затем переходим на пункт 2, то есть сравниваем ПЦ с КЗ. Пункты 2 и 3 повторяются до тех пор, пока выполняется ПЦ >= КЗ.
- Если же ПЦ >= КЗ, то оператор1 не выполняется, и далее выполняется оператор, расположенный далее по тексту, то есть после >;
В отличие от предыдущих, для оператора for легко определить сколько раз выполнится
оператор1.
Пример: напечатаем русский алфавит строками по 10 букв. Текст программы:
var cc: char;
begin
for cc:= 'а' to 'я' do
begin
write(cc:2); {ширина поля=2, чтобы был отступ}
if (byte(cc) - 159) mod 10 = 0 { код буквы "а" = 160 }
{ mod - остаток от деления }
then writeln; { через каждые 10 букв - новая строка}
end;
writeln('Для выхода - нажмите Enter.');
readln;
end.
Результат работы программы:
Видим, что между "п" и "р" расположены символы псевдографики - для рисования таблиц в текстовом режиме.
Внутри составного оператора, выполняемого в цикле, можно использовать процедуры break и continue - для "досрочного" прекращения повторного выполнения цикла. Обычно эти процедуры вызываются при выполнении некоторого условия, то есть совместно с оператором if. При этом выполнение процедуры break передает управление на оператор, расположенный сразу ПОСЛЕ оператора, выполняемого циклически. А выполнение процедуры continue приводит к тому, что управление передается на первый из операторов составного оператора.
Разработка циклических алгоритмов очень подробно рассмотрена в книге
[ 3 ]
Краткие сведения о
МАССИВАХ см. здесь.
Применение массивов показано в примере 2 и
примере 3.
Пример 1. Цикл while (решение задачи)
.
Программа вводит значение допустимой погрешности eps, число х ( по модулю меньшее 0,7 ) и вычисляет
приближенное значение cos(x), используя разложение cos(x) в ряд по формуле:
x2 x4 x6 x2*n
cos(x) = 1 - --- + --- - --- + ... + -------- + ...
2! 4! 6! (2*n)!
Приближение считается полученным, если очередное слагаемое по модулю < eps.
Решение можно увидеть здесь.
Пример 2. Цикл for, одномерные массивы (решение задачи)
.
Даны координаты N точек на плоскости: X[1], Y[1], ..., X[N], Y[N] (N = 20). Найти номера двух точек, расстояние между которыми наибольшее.
Решение можно увидеть здесь.
Задания по этой тематике: задачник-справочник, кнопка "Задания", Задание 3. Операторы цикла и одномерные массивы.
Пример 3
Умножение матриц. Двумерные массивы, вложенные циклы.
Задания по этой тематике:
задачник-справочник, кнопка "Задания", Задание 5. Матрицы."
Другие операторы: пустой оператор
Пустой оператор. Практически ненужный оператор, но он есть. Просто поставьте точку с запятой. Это обозначает пустой оператор. Применялся для того, чтобы перед ним поставить
метку, то есть чтобы передать управление в эту точку программы (с помощью goto). Однако применение goto не рекомендуется, т к осложняет понимание структуры программы.