КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Самым простым нелинейным алгоритмом является алгоритм организации ветвлений. Алгоритм называется разветвляющимся, если в зависимости от выполнения определенных условий он реализуется по одному из нескольких, заранее предусмотренных направлений. Каждое отдельное направление называется ветвью вычислений. Выбор той или иной ветви осуществляется уже при выполнении программы в результате проверки некоторых условий. Управляющими конструкциями для программной реализации таких алгоритмов являются условный оператор, оператор перехода, и выбора. Оператор перехода имеет вид записи 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 Все права принадлежат авторам размещенных материалов.
|