Программирование алгоритмов циклической структуры 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Программирование алгоритмов циклической структуры



Программы циклической структуры могут быть организованы с помощью следующих операторов IF, FOR, WHILE, REPEAT. Условный оператор IF требует задания начального параметра цикла, проведения в цикле вычисления с этим параметром, изменения его на величину шага и проверки условия окончания цикла. Если цикл не закончен, то вычисления продолжаются.

Пример 5.                                                                                                               Составить схему алгоритма и программу для вычисления выражения.              

Схема алгоритма и программа имеют вид:

 Схема алгоритма и программа имеют вид:

Начало


КОНЕЦ
N, X, Y
I=I+1
Y=Y+COS(I+X2/4)
I=1
Y=0
N, X
I≤N
                                      PROGRAM SUMIP;

                                                LABEL 3;

                                                VAR      X,Y: REAL;

                                                         I,N:INTEGER;

                                                BEGIN

                                                         WRITELN(‘ВВЕСТИN,X’);

                                                         READ(N, X);

                                                         Y:=Ø;

                                                         I:=1;

                                                3: Y:=Y+COS(I+SQR(X)/4);

                                                  I:=I+I;      

Рис. 4                                               IF X<=N THEN GOTO 3;

                                                WRITELN(‘N=’,N);

                                                WRITELN(‘X=’,X, ‘ ‘,’Y=’,Y);                                           END.

Оператор цикла FOR используется для организации цикла с известным числом повторений. При этом различают две формы записи:                                                                    

А) с организацией счета при изменении параметра цикла от начального        (меньшего) значения до конечного (большего) значения этого параметра цикла. Такой оператор цикла имеет вид:                                                   

FOR K:=NZ TO KZ DO

Б) с организацией счета при изменении параметра цикла от начального(большего) значения до конечного(меньшего) значения этого параметра. Этот оператор имеет вид:

FOR K: = NZ DOWNTO KZ DO

Где К- параметр цикла (целочисленная переменная), NZ, KZ-выражения, задающие соответственно начальное и конечное значения параметра цикла;                                                                                                               S–простой или составной оператор (тело цикла).

Оператор цикла выполняется следующим образом. Параметру цикла К присваивается начальное значение NZ. Затем уравнение передается в тело цикла и выполняется оператор S, после выполнения которого параметр цикла меняет свое значение на единицу(шаг изменения параметра цикла). При этом шаг равен +I, если используется оператор цикла с ключевым словом TO(случай а), а если используется оператор цикла с ключевым словом DOWNTO (случай б), то шаг равен –I. Далее измененное значение параметра цикла сравнивается с конечным значением KZ и, если параметр цикла не превышает К(случай а) или превышает KZ (случай б), то управление передается в тело цикла и выполняется оператор S; в противном случае осуществляется выход из цикла.                                                                                            Рассмотрим фрагменты записи операторов цикла:                                                            VARY,I: INTEGER;                                                                                    1) Y:=0; FOR I=3 TO 5 DO Y=Y+1;                                                                            2) Y:=0; FOR I=12 DOWNTO 6 DO Y:=Y+1;

В результате выполнения первого оператора цикла параметр цикла I будет изменяться от начального значения I=3 до конечного значения I=5 с шагом, равным +I, причем после окончания цикла значения переменной Y=3. При выполнении второго оператора цикла параметр цикла I будет изменяться от начального значения I=I2 до конечного значения I=6 с шагом, равным –I. После окончания цикла Y=7.

Пример 6.

Используя условия примера 5 программу с изменением оператора цикла FOR.

PROGRAM SUM;

VAR X,Y: REAL;

I,N: INTEGER;

BEGIN

WRITELN(‘ВВЕСТИN,X ‘);

READ(N, X);

 Y:=Ø;

FOR I:=1 TO N DO

Y:= Y+ COS (I+SQR(X)/4);

WRITELN (‘N=’, N,’ ‘, ‘X=’,X);

WRITELN(‘Y=’,Y);

END.       

Оператор цикла WHILE позволяет организовать цикл, количество повторений которого зависит от включенного в него условия, т.е цикл с неизвестным числом повторений. Этот оператор имеет вид                                                                              WHILE LV DO

Где LV- логическое выражение;                                                                                                     S- простой или составной оператор.                                           Выполнение оператора начинается с проверки выражения LV. Если логическое выражение имеет значение TRUE, то выполняется оператор S. Выполнение оператора S продолжается до тех пор, пока значение выражения LV не станет равным FALSE. В этом случае уравнение передается оператору, следующему за оператором S. Если же выражение LV имеет значение FALSE при первоначальной проверке, то оператор S не выполняется ни разу. При этом, чтобы выйти из цикла, внутри его должно быть организовано изменение значений переменных, входящих в логическое выражение. Иначе оператор цикла будет выполняться бесконечное число раз.

Пример 7.                                                                                                                                      Составим программу, используя условия примера 5. Программа запишется в виде:

PROGRAM SUMWHL;

VARX,Y: REAL;                                                                                                      I,N:INTEGER;                                                                                         BEGIN                                                                                                             WRITELN(‘ВВЕСТИN,X’);                                                                                         READ(N,X);                                                                                                     Y:=Ø;                                                                                                                I:=1;                                                                                                        WHILE I<=N DO                                                                                  BEGIN                                                                                                              Y=Y+ COS(I+SQR(X)/4);                                                                                I:=I+1;                                                                                                 END;                                                                                                             WRITELN(‘N=’,N,’ ‘,’X=’,X);                                                                         WRITELN(‘Y=’,Y);                                                                               END.

Оператор цикла REPEAT также позволяет организовать цикл с неизвестным числом повторений. Такой оператор имеет вид:                                                       REPEATS                                                                                                                             UNTILLV                                                                                                                             где S – простой или составной оператор;                                                                    LV- логическое выражение.

Выполнение оператора REPEAT начинается с вычисления оператора S и продолжается до тех пор, пока не выполняется LV т.е. когда значение этого логического выражения равно FALSE. Это означает, что проверка LV проводится после каждой итерации и в случае принятия LV значения TRUE осуществляется выход из цикла. При использовании составного оператора S операторные скобки (BEGIN и END) не требуются. Кроме того оператор, стоящий перед словом UNTIL, не имеет после себя точку с запятой.

Пример 8.                                                                                                                                            Задан массив вещественных чисел, состоящий из десяти элементов. Требуется вывести четные элементы этого массива. Программа имеет вид:    

PROGRAM MAS;                                                                                

VAR I: INTEGER;                                                                                                  A: ARRAY[1…10] OF REAL;                                                                     BEGIN                                                                                                                     WRITELN(‘ ВВЕСТИМАССИВ(1..10)’);                                                              FOR I:=1 TO 10 DO;                                                                                                  READ (A[I]);                                                                                                    I:=0;                                                                                                         REPEAT                                                                                                 I=I+2;                                                                                                                WRITE (A[I]:5:2)                                                                                              UNTIL I>10;                                                                                              END.



Поделиться:


Последнее изменение этой страницы: 2021-07-18; просмотров: 72; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.14.130.24 (0.007 с.)