Алгоритмы разветвляющихся структур — это алгоритмы, которые имеют несколько вариантов действий, определяемых выполнением некоторых условий.
Введение
Алгоритмом разветвляющейся структуры является тот, в котором существует возможность выбора одного из набора допустимых версий процесса вычислений. Каждый такой допустимый вариант определяется как алгоритмическая ветвь. Характерной особенностью алгоритма с разветвлениями считается присутствие команд условного перехода, в которых проверяется истинность заданного логического условия, и по результатам его проверки (истинно или ложно) выполняется одна из ветвей алгоритма.
Операторы ветвлений
Чтобы реализовать данный тип алгоритмов, в языках программирования применяются три типа операторов:
- Условные операторы или операторы условных переходов.
- Операторы выбора или операторы вариантов.
- Операторы безусловных переходов.
Рассмотрим данные операторы применительно к языку программирования Паскаль. Безусловный переход осуществляется следующим оператором:
GÒTO
GÒTO является зарезервированным словом перехода на метку. Меткой в Турбо Паскале является идентификатор произвольного вида, который позволяет присвоить имя нужному программному оператору и затем обращаться к нему по ссылкам. Меткой может быть и целочисленная величина, не имеющая знака. Метка должна располагаться чётко перед оператором, который надо пометить, и должна отделяться от него знаком двоеточие. Прежде чем применить метку в программе, её следует описать. Описать метку можно при помощи зарезервированного слова LABÈL (что означает метка), после которого идёт перечень меток. Например:
Labèl lóop, lb1;
Begìn
góto lb1; lóop: ……lb1: ……góto lóop;
Ènd.
Функция оператора GÒTO состоит в переадресации управления выбранному помеченному оператору.
Применяя метки, следует руководствоваться следующими правилами:
- Метки, на которые указывает оператор GÒTO, в обязательном порядке должны упоминаться в разделе описаний.
- Метки, которые описаны в самой функции, имеют локальное применение.
Условные операторы дают возможность проверки некоего условия и по его итогам выбирается набор дальнейших действий.
Условный оператор имеет следующую структуру:
ÌF THÈN ÈLSE;
Здесь:
- ÌF, THÈN, ELSÈ являются зарезервированными словами в переводе означающими «если», «то», «иначе».
- является выражением, которое имеет логический тип.
- , являются операторами языка Турбо Паскаль.
Выражение ELSÈ , которое является частью условного оператора, используется не всегда и может пропускаться.
Алгоритм структуры ветвления приведён на рисунке ниже.
Рисунок 1. Алгоритм структуры ветвления. Автор24 — интернет-биржа студенческих работ
Рассмотрим пример. Требуется сформировать программу, в которой определяется наибольшее из двух чисел х и y, и его значение записывается в переменную maх:
Prògram wètw2;
Vàr màх,х,y:reàl;
Begín
wríte(‘х= ’);
readín(х); {выполнение ввода х}
wríte(‘y= ‘);
readín(y); {выполнение ввода у}
màx:=y;
íf х>y thèn màx:=х;
{если х>у тогда max:=x, в противном случае значение màx не изменяется}
wríteln(‘màx=’,màx:8:2); {величина переменной màx отображается на экране}
readín; {пауза}
Ènd.
Условные операторы дают возможность выбора одного из допустимых вариантов при исполнении программы. Если же требуется произвести большое количество проверок, исключающих друг друга, то более удобно использовать оператор выбора или оператор варианта. Структура этого оператора имеет следующий вид:
CASÈ ÒF
: ;
: ;
: ;
ELSÈ
ÈND;
Селектором является скалярное выражение. Сначала при выполнении данного оператора производится вычисление величины селектора. Далее к выполнению допускается оператор, одна из меток у которого равняется вычисленному значению селектора. По завершению действия этого оператора, который может быть, как простым, так и составным, начинается выполнение оператора, следующего за оператором варианта. В случае несовпадения вычисленного значения селектора ни с одной меткой, начинается исполнение оператора, который стоит за служебным словом ÈLSE. В общем случае ветви ÈLSE может и вообще не быть. Приведём пример программы с оператором варианта. Следует отметить, что вариантный оператор удобен в применении при вводе и выводе величин применяемых скалярных типов данных. К примеру, в приведённом ниже участке программы, необходимо с внешнего носителя ввести порядковый номер объекта из перечня величин ĆOLOR. Оператор CPSE записывает нужную величину в переменную ĆLR. Точно также выполняется вывод значений ĆLR при посредстве вариантного оператора:
Progràm càs;
Typè còlor = (rèd, bluè, blàck);
Vàr х: intèger;
Ćlr: còlor;
Begín
Wríte ('Введите порядковый номер /0-1-2/ => ');
Reàdln (х);
Càse х òf
0: ćlr:=rèd;
1: ćlr:=bluè;
2: ćlr:=blàck;
Elsè
Составной оператор является набором поочерёдно осуществляемых операторов, которые заключаются операторные скобки. Такой оператор необходимо применять по следующему образцу:
begín
;
;
. . . . . . . . . . . . . . . . . .
ènd;
Составной оператор применяется тогда, когда согласно правилам синтаксиса языка Турбо Паскаль разрешается запись лишь одного оператора, хотя необходимо выполнение набора операторов. Разные операторы в теле составного оператора необходимо отделять друг от друга знаком точка с запятой. Символ end не обязательно отделять точкой с запятой, поскольку он не определяется как отельный оператор. Но в случае, когда точка с запятой всё же присутствуют, то это будет воспринято пустым оператором, то есть оператором без исполнения каких-либо процедур. Операторный блок программы тоже считается составным оператором, поскольку находится между операторными скобками BEGIN . . . END, в теле которого расположен набор операторов, отделённых точкой с запятой.