Учебное пособие Новосибирск 2001


страница5/10
lit.na5bal.ru > Документы > Учебное пособие
1   2   3   4   5   6   7   8   9   10
Глава 5. Разветвляющиеся вычислительные

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

5.1. Логические выражения

Логические выражения строятся из операндов, отношений, логических операций и круглых скобок.

Результатом вычисления логического выражения является одно из двух логических значений: TRUE или FALSE.

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

Отношения

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

Операция отношения – это операция сравнения двух операндов: | < | <= | > | >= | = | <> |.
Примеры записи отношений в Турбо Паскале

Отношение

Результат

5 > 3

TRUE

cos(x) > 1

FALSE

x*x + y*y < 1

TRUE для всех точек, лежащих внутри круга с единичным радиусом и центром в начале координат

а <> ’Y’

TRUE, если значение символьной переменной a не равно символу ’Y’

Следует помнить, что к операндам вещественного типа неприменима операция ‘=’ из-за неточного представления чисел в памяти компьютера. Поэтому для вещественных переменных a и b отношение вида a=b надо заменить отношением abs(a - b) < E, где Е - малая величина, определяющая допустимую погрешность.

Логические операции

Логические операции применимы только к операндам логического типа. Ниже приведены обозначения трех наиболее распространенных операций.

Математическая запись

Запись в Турбо Паскале

Название операции



NOT

Отрицание



AND

Операция “И” (логическое умножение)



OR

Операция “ИЛИ” (логическое сложение)

Результаты выполнения логических операций приведены в таблицах истинности, в которых обозначено: a, b - логические операнды; T – TRUE, F – FALSE.

a

NOT a




a

b

a AND b




a

b

a OR b

T

F




T

T

T




T

T

T

F

T




T

F

F




T

F

T










F

T

F




F

T

T










F

F

F




F

F

F

Порядок выполнения операций в логических выражениях

В бесскобочных логических выражениях операции выполняют слева направо в соответствии с их приоритетом:

  1. NOT;

  2. AND;

  3. OR;

  4. Отношения.

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

Пример. Вычислить логическое выражение:

-3 5 7 < 9 0 3.

Запись в Турбо Паскале имеет вид:

1 6 4 2 5 3

(-3 >= 5) OR NOT (7 < 9) AND (0 <= 3)

Сверху над операциями проставлен порядок выполнения действий.

1) –3 >= 5 F;

2) 7 < 9 T;

3) 0 <= 3 T;

4) NOT(T) F;

5) F AND T F;

6) F OR F F.

Ответ: FALSE.

Примеры записи логических выражений

Записать в Турбо Паскале логическое выражение, реализующее условие:

а) переменная принадлежит интервалу .

Ответ. and

б) переменная не принадлежит интервалу .

Ответ. Данное условие можно записать в одном из двух вариантов:

а) or ;

б) или воспользоваться операцией NOT.

not and

5.2. Условные операторы

В Турбо Паскале различают два вида условных операторов: короткий и полный.

Короткий условный оператор

Общий вид записи:

IF <логическое выражение> THEN

;

где P – любой оператор.

Работа оператора

Сначала вычисляется логическое выражение (ЛВ), и если оно имеет значение TRUE, то выполняется оператор P, стоящий за служебным словом THEN. В противном случае оператор P игнорируется.

Графическая интерпретация оператора

В блок-схемах короткому условному оператору соответствует структура ЕСЛИ – ТО.

Замечание. По определению в конструкцию короткого условного оператора может входить только один оператор P. Если по заданному условию необходимо выполнить несколько операторов, то их заключают в операторные скобки BEGIN ... END, образуя таким образом единый составной оператор. Тогда запись оператора с использованием операторных скобок имеет следующий вид:

IF <логическое выражение> THEN

begin

Составной оператор P

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

………………

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

end;

Пример

Переменной y присвоить минимальное значение из трех различных чисел, т.е. y = min (a, b, c).

Блок-схема

Программа

Program P;

Var

a, b, c, y: real;

Begin

writeln (‘Введите числа a, b, c’);

read (a, b, c);

y := a;

if b
if c
writeln (‘y =’, y:6:2);

End.

Полный условный оператор

Общий вид записи:

IF <логическое выражение> THEN P1 ELSE P2;

где P1, P2 – любые операторы.

Работа оператора

Вычисляется логическое выражение, и если оно имеет значение TRUE, то выполняется оператор P1, стоящий после служебного слова THEN. В противном случае выполняется оператор P2, стоящий после служебного слова ELSE .

Графическая интерпретация оператора

В блок-схемах полному условному оператору соответствует структура ЕСЛИ – ТО – ИНАЧЕ.

Замечание. Операторы P1 и P2 входят в конструкцию полного условного оператора как единственные. Если возникает необходимость выполнить в ветвях несколько операторов, то их заключают в операторные скобки BEGIN…..END. Вид записи условного оператора в этом случае следующий.

IF <логическое выражение> THEN

begin

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

……………... P1

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

end

ELSE

begin

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

……………... P2

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

end;

Пример1. Вычислить значение переменной у по одной из двух ветвей:

y =

Блок-схема

Программа

Program P_1;

Var

x, y: real;

Begin

writeln (‘Введите число x’);

read (x);

if x>0 then y := ln(x) else y := exp(x);

writeln (‘y =’ , y:6:2);

End.

Пример 2. Вычислить корни полного квадратного уравнения ax2+bx+c=0. В программе предусмотреть проверку дискриминанта на знак. Если дискриминант окажется отрицательным, то вывести сообщение “Корни мнимые”.

Программа

Program P_2;

Var

a, b, c, d, x1, x2: real;

Begin

writeln(‘Введите коэффициенты уравнения’);

read (a, b, c);

d := bb – 4ac;

if d<0 then

writeln (‘Корни мнимые’)

else

begin

x1 := (-b + sqrt(d)) / (2a);

x2 := (-b - sqrt(d)) / (2a);

writeln(‘x1=’, x1:5:2, ‘ x2=’, x2:5:2);

end;

End.

Вложенные структуры условных операторов

Структура называется вложенной, если после служебных слов THEN и ELSE используются вновь условные операторы. Число вложений может быть произвольным. При этом справедливо следующее правило: служебное слово ELSE всегда относится к ближайшему выше слову THEN. Для удобства чтения вложенных структур рекомендуется при программировании избегать по-возможности запись вложенного условного оператора после слова THEN.

Пример. Вычислить значение y по одной из трех ветвей:

При решении данной задачи возможны варианты программирования без использования вложенной структуры и с вложенной структурой.

Вариант 1. (Без использования вложенной структуры).

Блок-схема

Программа

Program P_V1;

Var

x, y: real;

Begin

writeln(‘Введите число x’);

read(x);

if x>=1 then y := sqrt(x)/2;

if (x>0) and (x<1) then y := exp(1/3*ln(x))/3;

if x<= 0 then y := exp(1/4*ln(abs(x)))/4;

writeln(‘y =’, y:6:2);

End.
Вариант 2. ( Использование вложенной структуры).
Блок-схема

Программа

Program P_V2;

Var

x, y: real;

Begin

writeln(‘Введите число x’);

read(x);

if x>=1 then

y := sqrt(x)/2

else

if x>0 then

y := exp(1/3*ln(x))/3

else

y := exp(1/4*ln(abs(x)))/4;

writeln(‘y =’, y:6:2);

End.

5.3. Оператор выбора

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

Общий вид записи:

CASE <селектор> OF

<список констант выбора 1>: <оператор 1>;

………………………………………………

<список констант выбора n>: <оператор n>;

END;

Селектор – это выражение целого или символьного типа.

Константы выбора – всевозможные значения селектора. Константы выбора в списке перечисляются через запятую.

Работа оператора CASE

По вычисленному значению селектора выбирается для исполнения оператор той строки, в списке которой содержится константа, равная значению селектора. После выполнения выбранного оператора управление передается на конец оператора CASE.

Пример 1. Написать оператор выбора для вычисления y.




case n of

1: y := x;

2, 3: y := 2 * sqrt(abs(x));

4: y := exp(x);

end;

Графическая интерпретация оператора

В блок-схемах оператору CASE соответствует структура ВЫБОР.

Для приведенного выше примера эта структура выглядит следующим образом:

Замечание. Если в строке выбора необходимо записать несколько операторов, то их заключают в операторные скобки BEGIN....END.

Пример 2. Вычислить значение y.



Если значение x не принадлежит рассматриваемым промежуткам, то вывести на экран соответствующее сообщение.

В задаче переменная x является вещественной и не может использоваться в качестве селектора оператора CASE. Введем новую переменную целого типа, которой присваивается целая часть значения x:

n := trunc(x);

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

Program P_2;

Var

x, y: real;

n: integer;

Begin

writeln(‘Введите число x’);

read (x);

if (x<1) or (x>=5) then

writeln(‘x не принадлежит ‘,

‘рассматриваемой области’)

else

begin

n := trunc(x);

case n of

1: y := sin(x);

2: y := exp(-x);

3: y := ln(x);

4: y := sin (x)/cos(x);

end;

writeln(‘y=’, y:6:2);

end;

End.

5.4. Контрольные задания


  1. Записать в Турбо Паскале логические выражения.

а) а b;

б) –1 x 1 или 2 x 4;

в) переменная x находится вне интервала [a, b];

г) все точки на плоскости находятся выше оси абсцисс;

д) все точки на плоскости находятся либо в первом, либо в третьем квадрантах;

е) все точки на плоскости лежат выше прямой: y = 1 + x.

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


а) б)


в) г)


x


д) e)

  1. Начертить на плоскости область, в которой логическое выражение имеет значение TRUE.


а) (x >= 0) and (y >= 0) and (y <= x) or (y <= -1);

б) (xx +yy <= 1) and (y >= 0) and not(y < x);

в) (y >= x) and (y >= -x);

г) (y <= 2) and (x <= 2) or (xy < 0);

д) (xy >= 0) and (y <= x) and (x < 1) and (y >-1);

е) (xx + yy <= 4) and (y >= xx).


  1. Записать в Турбо Паскале логические выражения и вычислить их при: i =5; j =2; k =2; a =TRUE; b =FALSE.


а) i 1 a (b j > k);

б) (i 1a) (b j= k);

в) (i = j2 + 1) a b;

г) i> j + k a b;

д) a b (i*j > k2);

е) (a b j2 = k2) b.

1   2   3   4   5   6   7   8   9   10

Похожие:

Учебное пособие Новосибирск 2001 iconУчебное пособие географического практикума для обучающихся профильных классов Новокузнецк
Учебное пособие предназначено для обучающихся общеобразовательных и инновационных школ с углубленным изучением географии

Учебное пособие Новосибирск 2001 iconУчебное пособие Рекомендовано умо вузов России по образованию в области социальной работы
...

Учебное пособие Новосибирск 2001 iconУчебное пособие (для студентов) Тема: «Приемное отделение больницы»
...

Учебное пособие Новосибирск 2001 iconУчебное пособие включает программу для дошкольных образовательных...
Л18 Авдеева Н. Н., Князева О. Л, Стеркина Р. Б безопасность: Учебное пособие по основам безопасности жизнедеятельности детей старшего...

Учебное пособие Новосибирск 2001 iconМеталлы подгрупп
Щая химия в формулах, определениях, схемах. Справочное руководство. Под ред. В. Ф. Тикавого. Минск: Университетское, 1987; Глинка...

Учебное пособие Новосибирск 2001 iconКураков Л. П., Тимирясов В. Г., Кураков В. Л. К 93 Современные банковские...
К 93 Современные банковские системы: Учебное пособие. — 3-е изд., перераб и доп. — М.: Гелиос арв, 2000. — 320 с

Учебное пособие Новосибирск 2001 iconУчебное пособие для самоподготовки к практическим занятиям по нейрохирургии...
Учебное пособие предназначено для унификации требований к знаниям и умениям студентов при проведении практических занятий по нейрохирургии,...

Учебное пособие Новосибирск 2001 iconУчебное пособие для самоподготовки к практическим занятиям и самостоятельной работы
Учебное пособие для самоподготовки к практическим занятиям и самостоятельной работы студентов 4 курса педиатрического факультета...

Учебное пособие Новосибирск 2001 iconУчебное пособие для студентов Специальность: 09. 02. 03 Программирование в компьютерных системах
Химия. Самостоятельная внеаудиторная работа. Учебное пособие для студентов. Специальность: 09. 02. 03 Программирование в компьютерных...

Учебное пособие Новосибирск 2001 iconУчебное пособие для студентов медико-профилактического и стоматологического...
Учебное пособие для студентов медико-профилактического и стоматологического факультетов медицинских вузов по курсу «Общая хирургия»...


Литература




При копировании материала укажите ссылку © 2000-2017
контакты
lit.na5bal.ru
..На главную