- •Методические указания
- •Содержание
- •1. Организация работы программ на паскале
- •1.1. Организация работы программ линейной структуры
- •1.2. Организация работы программ циклической структуры
- •1.2.1. Оператор цикла с предусловием while ... Do
- •1.2.2. Оператор цикла repeat ... Until
- •1.2.3. Оператор цикла с параметром (со счетчиком) for... Do
- •1.2.4. Вложенные циклы
- •1.3. Организация итерационных циклов в программе
- •2. Задание на лабораторную работу Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •3. Контрольные вопросы к лабораторной работе
- •Библиографический список
- •Методические указания
- •394026 Воронеж, Московский просп., 14
1.2.2. Оператор цикла repeat ... Until
Этот оператор организует так называемый цикл «ДО», или цикл с постусловием, так как проверка логического <Условия> завершения цикла осуществляется после каждого выполнения тела цикла (количество повторений цикла неизвестно). Вид цикла:
REPEAT (Повторять)
< тело цикла >
UNTIL (До тех пор)
< условие >;
Оператор цикла с постусловием состоит из ключевого слова repeat, за которым следуют операторы тела цикла, и замыкающего ключевого слова until, после которого указывается <Условие> окончания цикла. Логическое < Условие > выполнения цикла должно быть False, и как только <Условие> станет True (истинным), цикл прерывается.
Оператор repeat не требует использования операторных скобок Begin -End, когда в его теле необходимо записать более одного оператора. Кроме того, оператор repeat является не столь универсальным, как оператор while, поскольку его логическое <Условие> располагается в конце тела цикла и операторы его тела будут всегда выполняться как минимум один раз. Выражение, используемое в качестве логического <Условия> окончания цикла, должно давать результат булевского типа.
Общий принцип работы цикла с постусловием repeat такой же, как у цикла с предусловием while. Но логическое <Условие> проверяется не перед выполнением тела цикла, а после него, и управление циклом repeat прямо противоположно управлению циклом while. To есть цикл repeat продолжается, пока логическое <Условие> ложно (False), и заканчивается, когда логическое <Условие> становится истинным (True).
Например, вычислим значение функции Y = X2 при X = 8; X = 6; X = 4; X = 2.
PROGRAM 222;
Uses Crt;
Var X,Y: real;
Begin
ClrScr;
X: = 8;
WriteLn(Taбyлиpoвaниe функции');
WriteLn(' X Y');
WriteLn('--------');
Repeat
Y : = X * X;
WriteLn(X : 4 : 2, Y : 6 : 2);
X:=X-2;
Until X = 0;
ReadLn;
End.
Здесь аргумент X меняет свое значение от 8 до 2 с шагом - 2. Переменные X, Y объявляем как REAL. В переменную Y заносим вычисленное значение функции. Для организации цикла используем оператор цикла с постусловием repeat. До входа в цикл присваиваем начальное значение аргументу X, равное 8. Затем печатаем шапку таблицы (три оператора WriteLn перед оператором Repeat). Шапка таблицы используется для оформления таблицы. В теле цикла делаем вычисления по формуле, печать и изменение значений аргумента на шаг, который равен -2. Окончание цикла осуществляется проверкой в операторе Until. Как только X примет значение, равное нулю, цикл прервется и далее последует оператор ReadLn.
1.2.3. Оператор цикла с параметром (со счетчиком) for... Do
Оператор цикла со счетчиком for подходит для программирования только таких циклических фрагментов, в которых до выполнения цикла известны начальное и конечное значения счетчика повторений цикла. Это обусловливает его менее широкую сферу применения, чем более универсальных операторов while и repeat. Однако в тех случаях, когда его использование возможно, оператор for благодаря своей высокой наглядности имеет несомненное преимущество перед операторами циклов с условиями.
Упрощенно общую структуру оператора цикла for можно представить одним из следующих способов:
- Если счетчик при выполнении цикла наращивает свое значение:
FOR I: = N1 ТО N2 DO
<тело цикла >;
где I - управляющая переменная цикла, которая должна быть перечисляемого типа (целая, символьная и т. д.);
N1 - начальное значение управляющей переменной цикла;
N2 - конечное значение управляющей переменной цикла.
Шаг изменения управляющей переменной равен + 1.
Чтобы оператор выполнился хотя бы один раз, N1 (начальное значение счетчика) должно быть не больше, чем N2 (конечное значение счетчика).
- Если счетчик при выполнении цикла уменьшает свое значение, то при программировании может быть использован другой оператор цикла:
FOR I: = N2 DOWNTO N1 DO
< тело цикла >;
где I - управляющая переменная цикла, которая должна быть перечисляемого типа (целая, символьная и т. д.);
N2 - начальное значение управляющей переменной цикла;
N1 - конечное значение управляющей переменной цикла.
Шаг изменения управляющей переменной равен -1.
Чтобы оператор выполнился хотя бы один раз, нужно, чтобы N2 (начальное значение счетчика) было не меньше, чем N1 (конечное значение счетчика).
Цикл for выполняется заданное число раз. Чтобы прервать выполнение досрочно, необходимо увеличить I до конечного значения. Для оператора for, в отличие от while и repeat, установка начального значения счетчика циклов выполняется не перед заголовком цикла, а прямо в заголовке. Кроме того, после окончания тела цикла наращивание (уменьшение) значения счетчика происходит автоматически. Таким образом, специального оператора для увеличения значения счетчика I:=I+1 не требуется (этот оператор приведет к неправильной работе цикла).
Оператор for имеет два существенных ограничения:
- шаг изменения счетчика циклов может быть только или + 1 (если используется ключевое слово to), или - 1 (если используется ключевое словоdownto);
- переменная, выступающая в роли счетчика циклов, может быть только порядкового типа и должна быть локальной для того блока, в котором находится оператор for.
Например, вычислить значения двух величин по формулам:
А = 2*I и В = 2*I + 1, где I меняется от 1 до 4 с шагом 1.
Program 333;
Uses Crt;
Var I, В, А : Integer;
Begin
For I : = 1 To 4 Do
Begin
A : = 2 * I;
B: = 2*I+1;
WriteLn (A : 3, В : 3);
End;
End.
I - управляющая переменная циклом (по ее значению цикл начинается и завершается) принимает значения: 1=1,1 = 2,1 = 3,1 = 4 (шаг = 1). Всего цикл проработает четыре раза. При 1 = 4 последний раз идет вычисление А, В и управление передается за пределы цикла. Выполняются операторы циклической части: значения А и В вычисляются по формуле и принимают значения в процессе выполнения программы, представленные в табл.2.
Таблица 2
I - управляющая переменная циклом; А, В - выражения |
Проходы цикла |
|||
Первый |
Второй |
Третий |
Четвертый |
|
I |
1 |
2 |
3 |
4 |
А:=2*1 |
2 |
4 |
6 |
8 |
В:=2*1+1 |
3 |
5 |
7 |
9 |
Например, вычислим суммы квадратов чисел от 1 до N:
PROGRAM SUM_N;
Uses Crt;
var a, S, i, N: word;
begin
write('Введите N:'); readln(N);
S:= 0;
For i:= 1 to N do S:= S + i*i;
writeln('Cумма S=', S);
end.