Алгоритм, реализующий разветвление по значению, схема алгоритма, пример решения задачи.
⇐ ПредыдущаяСтр 8 из 8 Для описания даже простых вычислительных процессов оказывается недостаточно лишь одних линейных алгоритмов. Например, алгоритм вычисления функции, заданной формулой уже не является линейным, т. к. в нем должна быть заложена операция выбора одной из формул в зависимости от заданного значения аргумента 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|