Разветвляющийся вычислительный процесс с различными логическими условиями: оператор if... Else, условная операция (?:)

Цель работы: Изучить реализацию в языке ветвящихся вычислительных процессов . Научиться писать программы, используя операторы: ветвления if...else, переключения switch в паре с оператором break,оператор перехода goto, тернарную условную операцию (?:).

Теоретические сведения

Условный операторимеет сокращенную форму:

if (выражение_условие) оператор;

где в качестве выражения_условия могут использоваться: арифметическое выражение, отношение и логическое выражение. Оператор, включенный в условный, выполняется только в случае истинности (т.е. при ненулевом значении) выраж-ния_условия. Пример:

if (х < 0 && х > -10) х=-х:

Кроме сокращенной формы, имеется еще и полная форма условного оператора:

if (выражение_условие)

оператор _1;

else

оператор _2;

Здесь в случае истинности выражения-условия выполняется только оператор_1, при нулевом значении выражения-условия выполняется только оператор_2. Например:

if (x > 0)

b=х ;

Else

b=-х;

Оператор в сокращенном варианте оператора if, и оператор_1 и оператор 2 в полном операторе if могут быть как отдельными, так и составными операторами.

Например, при решении алгебраического уравнения 2-й степени ax2+bx+c=0 действительные корни имеются только в случае, если дискриминант (b2~4ас) неотрицателен. Следующий фрагмент программы иллюстрирует использование условного оператора при определении действительных корней х1, х2 квадратного уравнения:

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

d=b*b- 4*а*с; /* d - дискриминант*/

if (d>=0.0)

{

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

х2=(-b-sqrt(d))/2/а;

printf("\n Корни: xl=%e, x2=%e", xl, х2);

}

Else

printf("\n Действительные корни отсутствуют.");

Во фрагменте предполагается, что переменные d, b, a, xl, х2 - вещественные (типа floatлибо double).До приведенных операторов переменные а, b, с получили конкретные значения, для которых выполняются вычисления. В условном операторе после ifнаходится составной оператор, после else- только один оператор - вызов функции printf(). При вычислении корней используется библиотечная функция sqrt() из стандартной библиотеки компилятора. Ее прототип находится в заголовочном файле math.h.

Операции отношений (сравнения):

< меньше, чем (ранг 6); ,

> больше, чем (ранг 6);

<= меньше или равно (ранг 6);

>= больше или равно (ранг б);

== равно (ранг 7);

!= не равно (ранг 7).

Операнды операций отношений должны быть арифметического типа или могут быть указателями. Результат целочисленный: 0 (ложь) или 1 (истина). Последние две операции (операции сравнения на равенство) имеют более низкий приоритет по сравнению с остальными операциями отношений. Таким образом, выражение

(х < В ==А < х) есть 1,

когда значение х находится в интервале от А до В и А<В либо х, А, В равны. (Вначале вычисляются х<В и А<х, к результатам применяется операция сравнения на равенство ==.)

Логические бинарные операции:

&& - конъюнкция (И) арифметических операндов или отношений (ранг 11. Целочисленный результат 0 (ложь) или 1 (истина);

|| - дизъюнкция (ИЛИ) арифметических операндов или отношений (ранг 12). Целочисленный результат 0 (ложь) или 1 (истина). (Вспомните о существовании унарной операции отрицания '!'.)

Результаты отношений и логических операций:

3<5 равняется 1;

3>5 равняется 0;

3=5 равняется 0;

3!=5 равняется 1;

3!=5 || 3=5 равняется 1;

3+4>5 && 3+5>4 && 4+5>3 равняется 1.

Условная трехместная операция (ранг 13). В отличие от унарных и бинарных операций условная тернарная операция используется с тремя операндами. В изображении условной операции применяются два символа '?' и ':' и три выражения-операнда:

выражение_1 ? выражение_2 : выражение_3

Первым вычисляется значение выражения_1. Если оно истинно, т.е. не равно нулю, то вычисляется значение выражения_2, которое становится результатом. Если при вычислении выражения_1 получится 0, то в качестве результата берется значение выражения_3. Классический пример:

х < 0 ? -х : х;

Выражение возвращает абсолютную величину переменной х.

Ход работы

1 В соответствии с индивидуальным заданием разработать программу с применением операторов ветвления, выбора варианта, разрыва, перехода (при составлении программы использовать операторы if…else).

2 Набрать программу и устранить ошибки.

3 Изучить работу операторов, различные возможности их применения.

4 Получить результаты.

5 Оформить отчет и сделать выводы по работе, изучив контрольные вопросы по теме.

Индивидуальное задание к лабораторной работе

Вычислить значение функции

y = f(x), где

ì f1(z), если z < 0;

x = í f2(z), если 0 £ z £ 8;

î f3(z), если z > 8;

z = cos(с).

Значения функций приведены в таблице 15.

Таблица 15 - индивидуальное задание

Вар. f(x) f1(z) f2(z) f3(z) c
x2+8x-6 z3-3z2 zln(z) Ez-e-z 5,1
X3lnx2 e-z+3z ln|z| Cosz+z2 5,4
X1/4+sinx 2z-ln|z| tgz-2z Sin3z 4,1
X4+2sinx2 sinz+tgz cos3z+3/z Z2+lnz2 3,2
Cosx3 z2+2sinz lnz+2z Ez+1/z 4,7
Sinx+2lnx 2z+tgz lnz4+2z Cosz+2z 1,3
Sin4x2 sinz2-z3 Разветвляющийся вычислительный процесс с различными логическими условиями: оператор if... Else, условная операция (?:) - student2.ru 2sinz2 1,6
Tgx-4x3 1/cos2z z-ln|z| Z3+sinz 1,5
Lnx-e2x z2+ez cos4z/z3 Tg(z+1/z) 2,7
2x-lnx 2cosz+1/z z3-2ln|z| Tg2z+z3 3,8
3x-sinx 3tg3z 1/cos4z E2z+sinz 1,6
4x2+cosx 3z/sinz z2+2sinz 2z-ln|z| 2,4
Разветвляющийся вычислительный процесс с различными логическими условиями: оператор if... Else, условная операция (?:) - student2.ru +cosx z2+lnz2 ez+1/z Z4-sinz 4,1
x1/3+2x ln|cosz| 2z+ez Tg2z 2,5
Sin4x+2x z5/sin2z e-2z+tgz Cos4z+z1/3 3,2
Tg4x+1/x z/sinz1/5 2ztg3z Z Разветвляющийся вычислительный процесс с различными логическими условиями: оператор if... Else, условная операция (?:) - student2.ru +8 1,4
Ln(1/x) zsin2z-8 lnsinz0,8 Разветвляющийся вычислительный процесс с различными логическими условиями: оператор if... Else, условная операция (?:) - student2.ru -2,5 2,3
e2x+4x cos(p /4)-z 1/(ez+1) arctg(z+3) 4,1
Cosx4+x/2 sin(z+30° ) lncos(pz/6) e-tg(z-2) 3,2
2tgx+ex z+cos(p +z) z3+z1/3 Z4-lnz 2,8
2lnx2 arccosz2 sinz+lncosz Z3-sin(p x) 1,7
Cos2x/3 z2+ln(z+4) e(z-5)+sinz Разветвляющийся вычислительный процесс с различными логическими условиями: оператор if... Else, условная операция (?:) - student2.ru 2,2
1/tgx4 e-4z+2+z2 cos(z1/3+2) Sin(p +4z2) 5,6
e2x-x3 tg(z2+ Разветвляющийся вычислительный процесс с различными логическими условиями: оператор if... Else, условная операция (?:) - student2.ru ) ln(sinz+5) Z4+z2-cosz 3,4
Tgx-2lnx arcsin(z+3) z3-z2+cosz Ln(z3+4z) 2,5
Cosx4+x/2 lnsinz0,8 cos(p /4)-z Z/sinz1/5 3,7
Ln(x+x2) 2ztg3z sin(p +4z2) Z3+z1/3 2,6
Cosx4+2x tg(z+1/z) e2z+sinz Cosz1/5 3,8
Sin4x+2x z2+lnz2 cos3z+3/z Cos(p /4)-z 5,8
3ln(x2+5) z4-lnz sinz+tgz Sinz+lncosz 3,5

Контрольные вопросы для подготовки и самостоятельной работы

1 Какой тип должно иметь <выражение> в операторахifи switch?

2 Можно ли использовать оператор goto для передачи управления наelse, метку case…; default:?

3 С помощью каких операторов можно досрочно завершить выполнение операторов if…else, switch?

4 Можно ли использовать в качестве <выражения> в оператореswitch указатель?

5 Можно ли использовать в качестве константного <выражения> в операторе switchконстанту?

6 Обязательно ли использовать операторbreakв операторе switch? Каково его действие? Что происходит при отсутствии break?

7 Какому из вложенных операторов if относится else при наличии и отсутствии операторных скобок ¢¢{¢¢и ¢¢}¢¢.

8 Какие типы операндов допустимы в условной операции (? :)?

9 Объясните работу операторов в приведенных примерах.

10 Как объявить и использовать метки в программе?

Лабораторная работа 7

Наши рекомендации