Лабораторная работа № 3
ПРОГРАММИРОВАНИЕ ПРОЦЕССОВ с разветвляющейся структурой
Цель работы: овладение практическими навыкам и разработки алгоритмов и программ с разветвляющейся структурой на языках Turbo Pascal и С.
Теоретический материал
На практике редко удается представить схему алгоритма решения задачи в виде линейной структуры. Часто в зависимости от каких-либо значений промежуточных результатов необходимо организовать вычисления по одним или другим формулам. В зависимости от выполнения некоторого логического условия вычислительный процесс осуществляется по одной или другой ветви.
Алгоритм такого вычислительного процесса называется алгоритмом разветвляющейся структуры.
В качестве условия в разветвляющемся алгоритме может быть использовано любое понятное исполнителю утверждение, которое может соблюдаться (быть истинно) или не соблюдаться (быть ложно). Такое утверждение может быть выражено как словами, так и формулой. Таким образом, алгоритм ветвления состоит из условия и двух последовательностей команд.
В зависимости от того, в обеих ветвях решения задачи находится последовательность команд или только в одной, разветвляющиеся алгоритмы делятся на полные и не полные (сокращенные).
Стандартные блок-схемы разветвляющегося алгоритма приведены ниже:
Условные конструкции в тр.
Разветвления в программах используют операторы перехода, условный и выбора варианта.
-
Оператор безусловного перехода GOTO позволяет изменять последовательность выполнения операторов в программе.
Формат записи оператора:
GOTO <метка>; где
<метка> - имя метки, отличающей ту строку, на которую требуется выполнить переход.
Имя метки должно быть предварительно описано в разделе описания меток Label.
Неправильное использование в программе оператора GOTO усложняет читаемость программы.
Например:
Label 1,3,8,10;
. . . . .
Goto 8
. . . . .
8: x : = A+ B
2) Составной оператор ( begin … end ) представляет собой совокупность последовательно выполняемых операторов, заключенных в операторные скобки begin … end.
Этот оператор записывается следующим образом:
begin
<оператор 1>;
<оператор 2>;
. . . . . . . . . . . . . . . . . .
<оператор N>
end;
Составной оператор используется в тех случаях, когда в соответствии с правилами записи языка TURBO PASCAL можно записать только один оператор, в то время как требуется выполнить несколько операторов.
Отдельные операторы внутри составного оператора отделяются друг от друга точкой с запятой. Перед символом end точку с запятой можно не ставить, т. к. это слово не является отдельным оператором. Если же « ; » будут поставлены, то они будут рассматриваться как пустой оператор, т. е. оператор не выполняющий никакого действия. Сам блок операторов программы является ( можно считать ) составным оператором, т. к. он тоже заключен в операторные скобки BEGIN . . . END, внутри которых располагается последовательность операторов, разделенных « ; ».
Например:
Begin
A:=2;
B:=x+y;
End;
3) Условный оператор IF обеспечивает в зависимости от условия выбор одного из возможных действий.
Существует два варианта записи оператора:
-
Полный вариант:
If S then A else B ;
-
Укороченный вариант:
If S then A ;
где: S – условие (логическое выражение), которое проверяется на истинность.
A – оператор (только один!), выполняющейся, если выражение S – истинно.
B – оператор (только один!), выполняющейся, если выражение S – ложно.
Если вместо A или B требуется использовать несколько операторов, то применяется составной оператор (BEGIN . . . END).
Примеры использования оператора IF приведены в Приложении 1.
-
Оператор выбора варианта Case … of … end.
Используется для обработки ситуаций с несколькими вариантами решения (путем выбора одного из нескольких операторов), выбираемых в зависимости от некоторого выражения, называемого селектором.
Существует две формы записи этого оператора:
c1: <оператор 1>; c2: < оператор 2>; …………………. cN: < оператор N> else < оператор> end; |
c1: <оператор 1>; c2: < оператор 2>; …………………. cN: < оператор N> end; |
где S – выражение порядкового типа, значение которого вычисляется;
сl,c2,...,сN—это константы или метки, с которыми сравниваются значения выражения селектора (S). Они должны быть одного гита с селектором.
Выбор оператора определяется совпадением значения селектора S и константы (метки сl,c2,...,cN), стоящей перед оператором.
< оператор 1 >, < оператор 2 >, < оператор N > — один оператор, либо составной оператор (begin... end),
< оператор > — оператор, который выполнится, если значение выражения S не совпадет ни с одной из меток (констант) сl,c2,...,cN.