Операторы организации циклов
Циклические операторы используются для многократного повторения некоторого фрагмента программы, который называется телом цикла. Количество повторений может быть заранее заданным или определяться выполнением некоторого условия.
В языке Паскаль имеется три вида операторов цикла:
– оператор цикла с предварительным условием;
– оператор цикла с последующим условием;
– оператор цикла с параметром.
Оператор цикла с параметром.
Оператор цикла с параметром используется в тех случаях, когда заранее известно, сколько раз должна повториться циклическая часть программы. Оператор цикла имеет вид:
for i := m1 to m2 do
Begin
операторы циклической части программы
End;
Здесь for, to, do – служебные слова; i – счетчик цикла (или управляющая переменная); m1, m2 – начальное и конечное значения параметра цикла.
Если в цикле выполняется один оператор, то операторные скобки begin и end не пишутся.
for i := m1 to m2 do
оператор;
Циклическая часть программы выполняется повторно для каждого значения параметра цикла i от его начального значения m1 до конечного значения m2 включительно.
В качестве параметра цикла может быть использована только простая переменная, относящаяся к целому, символьному, логическому, перечисляемому и диапазонному типам.
Возможные значения управляющей переменной определяются перед первым выполнением цикла. Если параметр цикла имеет целый тип, то он автоматически увеличивается на +1 от значения m1 до значения m2. Если параметр цикла должен уменьшаться на –1, то вместо служебного слова to используют downto.
В качестве m1 и m2 могут использоваться выражения, при этом их тип должен совпадать с типом i.
В теле цикла запрещается явное изменение управляющей переменной (например, оператором присваивания).
После завершения цикла управляющая переменная сохраняет свое последнее значение.
Если используется конструкция to и m1 больше m2 (downto и m1 меньше m2), то цикл не работает ни разу.
Пример 1. Параметр цикла возрастает от 1 до 5.
Var
s: real;
i: integer;
Begin
s:=0;
for i := 1 to 5 do
s := s+1;
End.
Пример 2. Параметр цикла убывает от 5 до 1.
Var
s: real;
i: integer;
Begin
s:=0;
for i := 5 downto 1 do
s := s+1;
End.
Пример 3. Параметр цикла является символьной переменной и принимает значения ‘A’, ‘B’, ‘C’, ‘D’.
Var
m: char;
s: real;
Begin
s:=0;
for m := ’a’ to ‘d’ do
s:=s+1;
End.
Ввод-вывод числовых одномерных массивов. Элементы одномерного массива можно вводить по одному (ввод каждого элемента заканчивается нажатием клавиши Enter) или все сразу (элементы вводятся друг за другом через пробел и в конце нажимают клавишу Enter).
(*Ввод по одному элементу с комментарием*)
for i := 1 to 10 do
Begin
Write(‘Введите b[ ’,i,’ ] =’);
ReadLn(b[i]);
end;
При выполнении данной группы операторов на экран будет выведено
Введите b[ 1 ]=
Следует с помощью клавиатуры набрать значение b[1], например 4 Enter.
Теперь на экран будет выведено
Введите b[ 2 ]=
Следует с помощью клавиатуры набрать значение b[2], например 24 Enter и т.д.
Вывод элементов одномерного массива можно осуществить всех элементов в одну строку или вывести в каждой строке по одному элементу массива.
(*Вывод всех элементов А в одной строке*)
WriteLn(‘Массив A’);
for i := 1 to 5 do
Write(a[i]:5:1,’ ‘);
WriteLn;
На экране, например, может быть выведено следующее:
-12.5 3.4 67.0 –8.6 3.2
Оператор цикла с предварительным условием
Используется, как правило, в тех случаях, когда заранее неизвестно число повторений цикла.
Форма записи оператора цикла с предусловием следующая:
while условие do
Begin
операторы циклической части программы (тело цикла)
End;
Здесь while, do – зарезервированные слова; условие - выражение логического типа.
Если в циклической части стоит всего один оператор, то операторные скобки begin и end можно не указывать и оператор цикла примет вид:
while условие do оператор;
Оператор цикла действует следующим образом. Предварительно проверяется логическое выражение – условие. Если оно истинно, то выполняются операторы циклической части программы. Если логическое выражение ложно, то происходит выход из цикла.
Если с самого начала значение логического выражения ложно, то операторы циклической части не выполняются ни разу.
Логическое выражение должно меняться в теле цикла, иначе цикл будет бесконечным.
Пример. Вычислить значения функции y при изменении х от с до d с шагом h.
Var
x, a, y, c, d, h: real;
Begin
(*Ввод исходных данных*)
WriteLn(‘Введите с,d,h,a’);
ReadLn(c, d, h, a);
(*присвоение х нижней границы интервала*)
x := c;
(*сравнение х с верхней границей интервала*)
while x <= d do
Begin
(*Вычисление y*)
if x > a then y := x * cos(a*x)
else y := sin(x) + a * x;
(*Вывод y и х*)
WriteLn(‘y= ’, y:10:2,’ x= ’,x:6:2)
(*Увеличение х на шаг и переход на
оператор while*)
x := x + h;
End;
End.
Дата добавления: 2017-01-29; просмотров: 1841;