Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций по информатике.doc
Скачиваний:
28
Добавлен:
25.12.2018
Размер:
1.48 Mб
Скачать
    1. Примеры программ

Приведем примеры программ с использованием рассмотренных выше операторов.

Пример 3.1.

Написать программу вычисления десяти значений функции

y =

Значения х вводятся оператором READ.

Программа 3.1.

PROGRAM PR31;

LABEL 1,2;

VAR I:INTEGER;

X,Y:REAL;

BEGIN

I:=1;

1:IF I>10 THEN GOTO 2;

WRITE('X=');

READ(X);

IF X<0 THEN Y:=ABS(X)

ELSE

IF X<=1 THEN Y:=EXP(X)

ELSE Y:=1/(2*X+1);

WRITELN(' Y=',Y);

I:=I+1;

GOTO 1;

2:END.

Пример 3.2. Вводится непустая последовательность положительных чисел, за которой следует нуль - это признак конца последовательности. Вычислить среднее арифметическое этих чисел.

Программа 3.2.

PROGRAM PR32;

LABEL 1,2,3;

VAR I:INTEGER;

X,S:REAL;

BEGIN

S:=0;

I:=0;

1:READLN(X);

IF X<0 THEN GOTO 2;

IF X=0 THEN GOTO 3;

S:=S+X;

I:=I+1;

GOTO 1;

2:WRITELN ('Недопустимое значение Х');

GOTO 1;

3:IF I>0 THEN WRITELN ('Среднее арифметическое равно',S/I)

ELSE WRITELN ('Пустая последовательность')

END.

  1. Операторы цикла в языке программирования Паскаль

Операторы цикла заставляют выполнять входящие в их состав операторы несколько раз.

В Паскале существует три вида операторов цикла: оператор цикла с параметром, оператор цикла с предусловием, оператор цикла с постусловием.

    1. Оператор цикла с параметром

Формат оператора цикла с параметром:

for V:=E1 to E2 do S

где V - переменная порядкового типа, Е1, Е2 - выражения того же типа, S - оператор, называемый телом цикла. Выражения Е1 и Е2 вычисляются один раз при входе в цикл. Параметр V принимает сначала значение Е1 затем непосредственно следующее за ним (SUCC (V)) и т.д. до достижения Е2. При каждом значении V выполняется оператор S. Если в теле цикла необходимо выполнить несколько операторов, то их объединяют в один с помощью составного оператора. Если конечное значение Е2 меньше начального Е1, то оператор S не выполняется ни разу.

Оператор цикла с параметром применяется также в следующем виде:

for V:=Е1 downto E2 do S

В отличии от первого случая, V изменяется от Е1 до Е2, переходя от V к pred (V).

Отметим, что если V, Е1, Е2 типа INTEGER, то в первом случае это цикл с шагом +1, а во втором с шагом -1.

    1. Оператор цикла с предусловием

Формат оператора цикла с предусловием:

while B do S

где B - логическое выражение, S - оператор. Оператор S будет выполняться пока условие B будет истинно. Выполнение оператора цикла завершится когда выражение B впервые примет значение false.

    1. Оператор цикла с постусловием

Формат оператора цикла с постусловием:

repeat S until B

где B - логическое выражение, S - оператор. Оператор S выполняется до тех пор, пока B не станет истинным. Оператор REPEAT выполняется по крайней мере один раз, так как проверка истинности условия B осуществляется после выполнения оператора S.

Служебные слова REPEAT и UNTIL уже играют роль скобок, поэтому операторные скобки BEGIN и END являются необязательными.

    1. Примеры программ

В качестве примера использования операторов цикла рассмотрим программу вычисления факториала.

Программа 2.1.1. Цикл с параметром (шаг +1)

PROGRAM FACTORIAL1;

VAR I,N:INTEGER;

F:REAL;

BEGIN

WRITE('ВВЕДИТЕ N');

READLN(N); F:=1;

FOR I:=1 TO N DO F:=F*I;

WRITELN ('ФАКТОРИАЛ ОТ ',N,' РАВЕН ',F)

END.

Программа 2.1.2. Цикл с параметром (шаг -1)

PROGRAM FACTORIAL2;

VAR I,N:INTEGER;

F:REAL;

BEGIN

WRITE('ВВЕДИТЕ N');

READLN(N); F:=1;

FOR I:=N DOWNTO 1 DO F:=F*I;

WRITELN ('ФАКТОРИАЛ ОТ ',N,' РАВЕН ',F)

END.

Программа 2.2. Цикл с предусловием

PROGRAM FACTORIAL3;

VAR I,N:INTEGER;

F:REAL;

BEGIN

WRITE('ВВЕДИТЕ N');

READLN(N); F:=1; I:=1;

WHILE I<=N DO

BEGIN

F:=F*I;

I:=SUCC(I)

END;

WRITELN ('ФАКТОРИАЛ ОТ ',N,' РАВЕН ',F)

END.

Программа 2.3. Цикл с постусловием

PROGRAM FACTORIAL4;

VAR I,N:INTEGER;

F:REAL;

BEGIN

WRITE('ВВЕДИТЕ N');

READLN(N); F:=1; I:=1;

REPEAT

F:=F*I;

I:=SUCC(I)

UNTIL I>N;

WRITELN ('ФАКТОРИАЛ ОТ ',N,' РАВЕН ',F)

END.