Здавалка
Главная | Обратная связь

КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ



Самым простым нелинейным алгоритмом является алгоритм организации ветвлений.

Алгоритм называется разветвляющимся, если в зависимости от выполнения определенных условий он реализуется по одному из нескольких, заранее предусмотренных направлений. Каждое отдельное направление называется ветвью вычислений. Выбор той или иной ветви осуществляется уже при выполнении программы в результате проверки некоторых условий.

Управляющими конструкциями для программной реализации таких алгоритмов являются условный оператор, оператор перехода, и выбора.

Оператор перехода имеет вид записи GOTO n; где п - метка.

С помощью оператора перехода управление передается оператору, помеченному меткой n. Далее выполняются операторы, стоящие за ним. Например,

GOTO 55;

. . .

. . .

55:

Безусловный переход можно осуществлять далеко не из каждого места программы. Так, нельзя с помощью этого оператора перейти из основной программы в подпрограмму или выйти из подпрограммы, не рекомендуется осуществлять переход внутрь структурированного (составного) оператора, т.к. он может дать неправильный результат, с помощью оператора перехода, расположенного вне условного оператора или оператора цикла, нельзя перейти внутрь этого условного оператора или оператора цикла и т.д.

Пустой оператор не предписывает никаких действий и используется для выхода из середины программы или составного оператора. Пустой оператор записывается меткой. Например, для выхода в конец программы пустой оператор записывается в виде . . . 24:END.

Условный оператор имеет следующие формы записи:

IF b THEN S;

IF b THEN S1 ELSE S2;

IF b1 THEN S1 ELSE IF b2 THEN S2 ELSE S3;

где b, b1, b2 - логические выражения; S, S1, S2, S3 - операторы.

Ограничение. Оператор который располагается после служебного слова THENне может быть условным.

Замечание. Так как условный оператор IF является самостоятельным, единым оператором (предложением), ни перед THEN, ни перед ELSEточку с запятой ставить нельзя.

Соглашение. Ключевое слово ELSE всегда относится к ближайшему ему IF.

Первая форма записи оператора позволяет организовать вычисление оператора S, если логическое выражение имеет значение TRUE, в противном случае оператор Sне выпол­няется, а выполняется оператор, стоящий за условным. В ка­честве оператора Sможно использовать любой простой или структурный оператор. Например:

IF G>2.4 THEN GOTO 10;

IF X<0 THEN J:=5*X;

Вторая форма записи оператора позволяет производить выбор одного из двух возможных направлений вычислений. Если логическое выражение принимает значение TRUE, то выполняется оператор S1, иначе выполняется оператор S2. Например:

IF X>0 THEN D:=SQR(Y+5.2*X) ELSE D:=X;

При значении X>0 переменная D получит значение в противном случае - значение D = X.

В третьей форме записи условный оператор расширен за счет вложенности новых условий. Это приводит к сокращению числа условных операторов, но снижает наглядность программы. Например:

IF X<=A THEN Z:=SIN(X)

ELSE IF X>B THEN Z:=SIN(X)/COS(X)

ELSE Z:=СOS(X);

При выполнении первого условия вычисляется значение z = sinx. В противном случае проверяется второе условие. При выполнении условия вычисляется значение z= sin x/cos х, в противном случае - значение z = cosx.

Составной оператор.

В тех случаях, когда в программе вместо нескольких необходимых операторов, по правилам языка можно поставить только один оператор, применяют составной оператор. Он представляет собой группу операторов ограниченных ключевыми словами Begin … End. В этом случае данная группа операторов, состоящая из произвольного количества любых операторов, воспринимается компилятором как один оператор.

Пример 1. Составить программу для вычисления корней квад­ратного уравнения ах2 + bx + с = 0.

Программа имеет вид

PROGRAM CORNI(INPUT,OUTPUT);

VAR A,B,C,D,X1,X2:REAL;

BEGIN

READ(A,B,C);

D:=B*B-4*A*C;

IF D>0 THEN BEGIN

X1:=(-B+SQRT(D))/(2*A);

X2:=(-B-SQRT(D))/(2*A);

WRITELN(X1,X2)

END;

IF D=0 THEN BEGIN

X1:=-B/(2*A);

WRITELN(X1);

END;

IF D<0 THEN WRITELN(‘Уравнение не имеет решений’);

Readln;

END.

Оператор «выбор»

Его часто используют для замены конструкций из вложенных условных операторов. Управляющая конструкция «выбор» является идеальным средством для обработки ситуаций с многими (более чем двумя) исходами, т.е. в случае, когда условие может принимать более двух значений. Оператор «выбор» имеет следующую структуру:

Case <выражение> of

<список константных значений 1 > : <оператор 1>;

<список константных значений 2 > : <оператор 2>;

. . .

{ else <оператор 0> }

end;

<выражение> - выражение, значение которой проверяется.

<список константных значений> содержит перечисленные через запятую различные константы, с которыми сравнивается значение <выражение>.

Выполнение оператора заключается в следующем:

n вычисляется значение выражения,

n если полученное значение указано в каком-либо списке констант - выполняется соответствующий оператор 1,2,...,

n если полученное значение не указано ни в одном списке констант - выполняется оператор 0.

{ } необязательная часть оператора.

Пример

Case CHISof

0: Writeln(‘Ноль’);

1,3,5,7,9: Writeln(‘Нечетное’);

2,4,6,8: Writeln(‘Четное’)

Else

Writeln(‘Не цифра’)

end;

 

Пример 2. Найти частное от деления целых чисел.

PROGRAM PUSTOPER(INPUT, OUTPUT);

Label

Out; (описание метки)

Var

X, Y, Res: Integer;

Begin

Write ('Введите делимое: ');

Readln (X);

Write ('Введите делитель: ');

Readln (Y);

If Y=0 then (ветвление)

Begin (составной оператор)

Writeln ('деление на ноль');

Goto Out; (оператор перехода)

End;

Res:= X div Y;

Writeln ('частное = ', Res);

Out: (метка на пустой оператор)

End.

 

Контрольные вопросы.

1. Для чего предназначен условный оператор?

2. Каковы формы записи условного оператора?

3. Может ли условный оператор содержать в себе другие условные операторы?

4. Когда и как применяется составной оператор?

5. Нарисуйте и объясните блок-схему выполнения условия.

6. Для чего предназначен оператор выбора?

7. Могут ли выполняться несколько ветвей оператора "выбор" за один раз?

8. Может ли сразу несколько констант фигурировать в качестве возможного значения переменной?

9. Назовите причины нежелательного использования оператора безусловного перехода.

10. Что такое метка? Как она описывается и используется?

11. Что такое пустой оператор?

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.