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

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

1. !

2. &&

3. ||

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

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

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

(-3≥5) Порядок выполнения операций в логических выражениях - student2.ru (7<9)Порядок выполнения операций в логических выражениях - student2.ru(0≤3)

Запись на языке С++ имеет вид:

(-3>= 5) || ! (7 <9) && (0 <= 3)

1 6 4 2 5 3

Внизу под операциями указан порядок их выполнения.

Результаты:

1) -3>= 5=>F; 2) 7 <9 => Т; 3) 0 <= 3 => Т;

4) !(T) -> F; 5) F && T=>F; 6) F || F => F.

Ответ: FALSE (ноль).

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

Записать на языке С++ логические выражения, реализующие следующие условия:

a) переменная х принадлежит интервалу [а, b].

Ответ: (х>= a) && (x <= b)

б) переменная х не принадлежит интервалу [а, b].

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

1) (х <а) || (x> b);

2) или воспользоваться операцией отрицания:

! ((x>= a) && (х <= b))

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

На языке С++ различают два вида условных опе­раторов: короткий и полный.

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

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

if (логическое выражение) P;

где Р - любой оператор.

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

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

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

В схемах алгоритма короткому условному оператору соответству­ет структура ЕСЛИ—ТО.

(T)
(F)
Условие (ЛВ)
Р
 
(T)
(F)
Условие (ЛВ)
Р
 

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

if (логическое выражение)
{

Порядок выполнения операций в логических выражениях - student2.ru Составной оператор

}

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

Порядок выполнения операций в логических выражениях - student2.ru Схема алгоритма Программа

#include "stdafx.h"

#include<math.h>

int main()

{

float a, b, c,y;

printf("Введите числа а, b, с");

scanf("%f%f%f", &a,&b,&с);

у=а;

if (b<y) у = b;

if (c<y) у = с;

printf("y =%6.2f", y);

return 0;

}

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

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

if (логическое выражение) P1; else P2;

где Р1, Р2 - любые операторы или даже группы операторов.

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

Вычисляется логическое выражение, и если оно имеет значе­ние TRUE(не ноль), то выполняется оператор Р1, стоящий после логического выражения. В противном случае (FALSE (ноль)) оператор P1 пропускается, а выполняется оператор Р2, стоящий после служебного слова else.

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

(T))
(F)
Условие (ЛВ)
Р1
Р2
В схемах алгоритма полному условному оператору соответствует структура ЕСЛИ-ТО-ИНАЧЕ.

Замечание. Операторы Р1 и Р2 входят в стандартную конструкцию полного условного оператора как единственные. Если возникает не­обходимость выполнить в ветвях несколько операторов, то их за­ключают в операторные скобки { }. Вид записи условного оператора в этом случае следующий:

if (логическое выражение)

{

оператор 1;

………………

оператор n;

}

else

{

оператор 1;

………………

оператор m;

}

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

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

Схема алгоритма

Начало
x
(T)
(F)
x>0
y=lnx Порядок выполнения операций в логических выражениях - student2.ru
y
Конец
y= Порядок выполнения операций в логических выражениях - student2.ru

Программа

#include "stdafx.h"

#include<math.h>

int main()

{

float x,y;

printf("Введите число x= ");

scanf("%f",&x);

if( x>0) y = log(x) ;

else y= exp(x);

printf("y =%6.2f", y);

return 0;

}

Пример 2. Вычислить корни полного квадратного уравнения

ах2 + bх + с = 0.

В программе предусмотреть проверку дискриминанта на знак. Если дискриминант окажется отрицательным, то вывести сообщение «Корни мнимые».

#include "stdafx.h"

#include<math.h>

int main()

{

float a, b, с, d, x1, x2; // описание переменных

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

scanf("%f%f%f",&a, &b, &с); // ввод исходных данных

d = pow(b,2)-4*a*c; //вычисление дискриминанта

if ( d<0 ) // сравнение дискриминанта с нулем

printf ("Корни мнимые"); /*вывод «корни мнимые»,

если d окажется < 0 */

else // иначе

{

x1=(-b+sqrt(d))/(2*a); // вычисление первого корня

x2=(-b-sqrt(d))/(2*a); // вычисление второго корня

printf("x1=%f x2=%f",x1,x2); // вывод корней на экран

}

}

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