Читайте также: |
|
ЦИКЛЫ
Циклы - это повторяющиеся действия в Паскале. Их можно описывать, используя операторы цикла. При записи циклов в программе необходимо следить за тем, чтобы цикл завершился естественным образом, т.е. по его естественному окончанию, в противном случае программа может зациклиться. Операторы, повторяющиеся в цикле, записываются в программе один раз. Переменные, используемые в цикле, должны быть заданы до начала цикла. Вход в цикл возможен только через его начало.
Цикл с параметром - цикл For
Его еще называют цикл со счетчиком. Оператор цикла For организует выполнение одного или нескольких операторов заранее определенное число раз.
Существует две формы оператора:
1) FOR <параметр>: = <nz> TO <kz> DO <оператор>;
2) FOR <параметр>: = <kz> DOWNTO <nz> DO <оператор>;
Здесь параметр цикла (счетчик) представляет собой переменную порядкового (ординального) типа; <nz> и <kz> - выражения, определяющие начальное и конечное значение счетчика; <оператор> - один (возможно составной) оператор, который называют телом цикла, повторяемый определенное число раз.
На первом шаге цикла параметр принимает значение nz. В этот же момент происходит вычисление kz - значения параметра на последнем шаге цикла. После каждого выполнения тела цикла, если параметр цикла не превышает kz, происходит изменение параметра на следующее большее или меньшее значение в зависимости от формы оператора for, т.е. неявно происходит выполнение одного из двух операторов:
<параметр>: = Succ (<параметр>);
<параметр>: = Pred (<параметр>);
В случае nz > kz в первой форме оператора или nz < kz во второй его форме ошибки не происходит, но цикл не выполняется ни разу. После завершения работы цикла значение параметра остается равно kz, либо kz+1 или kz-1.
Параметр этого цикла - это переменная целого, символьного, булевого типа. Если в начальном или конечном значении используются переменные, функции или выражение, то их значения должны быть заданы или могли быть вычислены. Значение, на которое изменяется значение каждого параметра цикла, называется шаг. Паскаль сам задает шаг по умолчанию, он равен 1 или равен –1. Если в цикле нужно выполнить несколько операторов, то используются операторные скобки.
Запишем цикл в следующем виде: FOR I: = c1 to c2 do <оператор>;
Правила для цикла FOR:
1) количество циклов считается (с1+с2)+1; где с1 и с2 должны быть того же типа, что параметры цикла;
2) проверка достижения конечного значения параметра цикла выполняется перед циклом и этот цикл может не выполнится ни разу;
3) цикл FOR используется, когда известно количество циклов или можно вычислить количество циклов;
4) если в качестве начального и конечного значения используется выражение, то оно вычисляется один раз перед выполнением цикла.
РЕКОМЕНДАЦИИ: Использовать цикл For при заранее известном количестве повторений. Не изменять параметр в теле цикла. При использовании кратных (вложенных) циклов применять разные переменные в качестве параметров. Определять до цикла значения всех используемых в нем переменных. Не ставить точку с запятой после do.
ПРИМЕР: Величину Y=A·X2 требуется вычислить для следующих значений X:0,2,4,6,8,10. Следовательно, цикл необходимо повторить шесть раз. Программу с использованием этого оператора назовем “OFOR”.
Program OFOR;
Uses Crt;
Const A=2;
Xmin=0; {Минимальное значение X}
HX=2; {Шаг дискретизации аргумента X, может быть вещественным}
K=6; {Число повторов цикла}
Var I,X,Y:Integer; {X и Y могут быть Real}
Begin
ClrScr;
For i:=1 to k do
Begin
X:=xmin+(i-1)*HX;
Y:=a*Sqr(x);
Writeln(‘ При x=’,x:2,‘ y=’,y:4);
End; {For_i}
Readln;
End. {OFOR}
Цикл FOR последовательно К раз запускает оператор, стоящий после слова DO. При этом после каждого шага цикла параметр цикла I автоматически увеличивается с шагом 1 (от 1 до К). После слова DO может исполняться один оператор. Поскольку в нашем случае необходимо выполнить сразу три оператора, то в программе применен составной оператор. Он получен с использованием операторных скобок begin и end.
Первый оператор в составном операторе необходим для последовательных вычислений значений аргумента. На первом шаге цикла, когда I=1, согласно формуле, указанной с правой стороны знака присваивания, значение X окажется равным минимальному значению XMIN.
На втором шаге, при I=2, X=XMIN+HX. С каждым последующим значением I величина аргумента увеличивается на HX. На последнем шаге, при I=K, будет наконец выполнен расчет Y и для последнего значения аргумента XMIN+(I-1)*HX, т.е. X=10. На каждом шаге производиться распечатка результатов X и Y.
Если же потребуется вычислить значение Y в прежнем интервале X, но с шагом, например, HX=0.2, то для этого следует рассчитать новое число повторений цикла K. Подобный расчет для значений XMIN, XMAX и HX осуществляется при помощи формулы K1=(XMAX-XMIN)/HX+1, где XMAX - максимальное значение аргумента.
Блок-схема для FOR
ПРИМЕР 1: Вводятся 10 чисел, посчитать среди них количество положительных.
Program cycle_for1;
Var I, kn: byte; x: real;
Begin
kn:=0;
For I: =1 to 10 do
Begin
Write ('Введите ', I,' число: '); Readln (x);
If x>0 then kn: =kn+1 {увеличиваем количество на 1}
End;
Writeln ('Вы ввели ', kn,' положительных чисел.');
Readln
End.
ПРИМЕР 2: Напечатать буквы от 'Z' до 'A'.
program cycle_for2;
var с:char;
begin
for c:='Z' downto 'A' do write(c);
WRITELN;
readln
end.
ПРИМЕР 3: Вычислить сумму ряда: S= 1+1/2+1/3+ … +1/100
Объявим переменную для накапливания суммы - Sum. Значение этой переменной необходимо предварительно обнулить. Паскаль не производит предварительной, начальной, инициализации переменных.
Поэтому сумма может быть искажена без Sum = 0.
PROGRAM SUMМ;
VAR I: INTEGER; SUM: REAL;
BEGIN
SUM: =0;
FOR I: = 1 TO 100 DO
SUM: = SUM + 1/I;
WRITELN (' СУММА = ', SUM:10:2);
END.
Дата добавления: 2015-07-08; просмотров: 418 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Задача 8 | | | Цикл с предусловием |