Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Алгоритм, реализующий разветвление по значению, схема алгоритма, пример решения задачи.




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

уже не является линейным, т. к. в нем должна быть заложена операция выбора одной из формул в зависимости от заданного значения аргумента X. Такого рода алгоритмы называются разветвляющимися, или ветвящимися.

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

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

Для реализации разветвлений в Турбо Паскале используются условные операторы и оператор выбора. Кроме них может оказаться необходимым оператор перехода.

Условный оператор. Одна из форм условного оператора имеет вид:IF <условие> THEN <оператор1> ELSE <оператор 2>

Здесь IF (ecлu), THEN (то, тогда), ELSE (иначе) —ключевые слова языка; <условие> — логическое выражение; <оператор1 и оператор2> — один исполняемый оператор.

Смысл условного оператора: если условие при текущих значениях входящих в него переменных истинно, то выполняется <оператор1> (<оператор2> не выполняется), если же условие ложно, то выполняется <оператор2> (<оператор1> не выполняется). После выполнения <оператора1> или <оператора2> управление передается очередной строке программы, если в <операторах1 и 2> не предусмотрено программное изменение последовательности выполнения строк.

Примеры записи условного оператора: 1) для нахождения большего из двух значений: IF A >В THEN X:=A ELSE Х:=В; 2) для нахождения большего из двух значений с фиксацией его имени:

IF A >В THEN

BEGIN

X:=A;

F:=’A’

END

ELSE

BEGIN

X:=B;

F:=’B’

END;

Здесь F переменная символьного типа.

В конструкции условного оператора ветвь «иначе» не обязательна, она может отсутствовать. В этом случае имеет место сокращенная форма условного оператора:

IF <условие> THEN <оператор>

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

Очевидно, что один условный оператор в полной форме можно заменить двумя в сокращенной форме; например для нахождения большего из двух значений с фиксацией его имени

IF A >В THEN

BEGIN

X:=A;

F:=’A’

END;

IF A <= В THEN

BEGIN

X:=B;

F:=’B’

END;

В условном операторе после ключевых слов THEN и ELSE можно использовать другой условный оператор. Получающиеся конструкции называются вложенными условными операторами.

Примеры вложенных условных операторов:

IF Х > 0 THEN

IF Х<= 1 THEN Y:=1 +X

ELSE Y:=X*X;

Здесь возможна неоднозначность исполнения программы с ветвью, следующей за ELSE. Чтобы ее исключить принимается, что ELSE «закрывает» последний «незакрытый» THEN.

Примеры использования условного оператора

Пример 1.3. Вычислить функцию:

1 –e-x при x < 0,

y = 1 +р при х = 0,

1/(x+p) при 0 < x < 1,

1+psin x при x1.

Решение.

Фрагмент программы

IF X<0 THEN Y:= l + EXP(-X);

IF X=0 THEN Y:=1+P;

IF (X > 0) AND (X < 1) THEN Y:=1/(X+P);

IF X>=1 THEN Y:=1+P*SIN(X);

Оператор перехода (безусловного перехода) используется для изменения естественной последовательности выполнения строк программы. Общая форма оператора:

GOTO <метка>

Смысл оператора: управление программой передается оператору с указанной меткой. Например:

GOTO Metka;

GOTO 200;

Метка назначается пользователем и представляет собой правильный идентификатор или целое число без знака, содержащее не более четырех цифр. Используемые в программе метки должны быть описаны в разделе описания меток.

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

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

Учитывая эти два противоречивых высказывания, можно сделать вывод: следует рационально использовать оператор перехода, исключив его использование, там, где можно использовать другие средства.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...