Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа3_КОС_2ч.doc
Скачиваний:
15
Добавлен:
16.04.2015
Размер:
337.92 Кб
Скачать

Лабораторная работа № 3

ПРОГРАММИРОВАНИЕ ПРОЦЕССОВ с разветвляющейся структурой

Цель работы: овладение практическими навыкам и разработки алгоритмов и программ с разветвляющейся структурой на языках Turbo Pascal и С.

Теоретический материал

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

Алгоритм такого вычислительного процесса называется алгоритмом разветвляющейся структуры.

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

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

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

Условные конструкции в тр.

Разветвления в программах используют операторы перехода, условный и выбора варианта.

  1. Оператор безусловного перехода GOTO позволяет изменять последовательность выполнения операторов в программе.

Формат записи оператора:

GOTO <метка>; где

<метка> - имя метки, отличающей ту строку, на которую требуется выполнить переход.

Имя метки должно быть предварительно описано в разделе описания меток Label.

Неправильное использование в программе оператора GOTO усложняет читаемость программы.

Например:

Label 1,3,8,10;

. . . . .

Goto 8

. . . . .

8: x : = A+ B

2) Составной оператор ( beginend ) представляет собой совокупность последовательно выполняемых операторов, заключенных в операторные скобки begin … end.

Этот оператор записывается следующим образом:

begin

<оператор 1>;

<оператор 2>;

. . . . . . . . . . . . . . . . . .

<оператор N>

end;

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

Отдельные операторы внутри составного оператора отделяются друг от друга точкой с запятой. Перед символом end точку с запятой можно не ставить, т. к. это слово не является отдельным оператором. Если же « ; » будут поставлены, то они будут рассматриваться как пустой оператор, т. е. оператор не выполняющий никакого действия. Сам блок операторов программы является ( можно считать ) составным оператором, т. к. он тоже заключен в операторные скобки BEGIN . . . END, внутри которых располагается последовательность операторов, разделенных « ; ».

Например:

Begin

A:=2;

B:=x+y;

End;

3) Условный оператор IF обеспечивает в зависимости от условия выбор одного из возможных действий.

Существует два варианта записи оператора:

  1. Полный вариант:

If S then A else B ;

  1. Укороченный вариант:

If S then A ;

где: S – условие (логическое выражение), которое проверяется на истинность.

A – оператор (только один!), выполняющейся, если выражение S – истинно.

B – оператор (только один!), выполняющейся, если выражение S – ложно.

Если вместо A или B требуется использовать несколько операторов, то применяется составной оператор (BEGIN . . . END).

Примеры использования оператора IF приведены в Приложении 1.

  1. Оператор выбора варианта Case … ofend.

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

Существует две формы записи этого оператора:

  1. Case S of

c1: <оператор 1>;

c2: < оператор 2>;

………………….

cN: < оператор N>

else < оператор>

end;

  1. Case S of

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.