Главная » Статьи » Програмування » C [ Добавить статью ]

RUS Уроки по программированию на языке С (Логические операции.)

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

В программировании зачастую необходимо не только производить какие-то вычисления, но и сравнивать величины между собой. Для этого используются, так называемые логические операции. Результатом логических операций всегда является либо значение true, либо значение false, то есть истина или ложь. Логические операции делятся на три подгруппы:

1. Операторы сравнения

2. Операторы равенства

3. Логические операторы объединения и отрицательная инверсия.

Теперь давайте более детально разберем каждую группу операторов.

Операторы сравнения.

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

СИМВОЛ, ОБОЗНАЧАЮЩИЙ ОПЕРАТОР УТВЕРЖДЕНИЕ
< ЛЕВЫЙ ОПЕРАНД МЕНЬШЕ ЧЕМ ПРАВЫЙ ОПЕРАНД
> ЛЕВЫЙ ОПЕРАНД БОЛЬШЕ ЧЕМ ПРАВЫЙ ОПЕРАНД
<= ЛЕВЫЙ ОПЕРАНД МЕНЬШЕ ИЛИ РАВЕН ПРАВОМУ ОПЕРАНДУ
>= ЛЕВЫЙ ОПЕРАНД БОЛЬШЕ ИЛИ РАВЕН ПРАВОМУ ОПЕРАНДУ

Смысл операций сравнения (второе название - операции отношений) состоит в том, что если утверждение, заданное с помощью оператора верно, выражение, в котором он участвует, заменится на значение true, если не верно – на значение false. Например:

сout<<(5>3); // на экране будет единица, так как утверждение (5>3) истина.
сout<<(3<2); //на экране будет 0, так как (3<2) ложь.
Примечание: Вместо значений false и true на экран выводится 0 и 1, так как они эквивалентны значениям ложь и истина. В языке С в роли истины также может выступать любое другое число отличное от 1 и 0, как положительное, так и отрицательное.

Операторы равенства.

Используются для проверки на полное соответствие или несоответствие двух величин.

СИМВОЛ, ОБОЗНАЧАЮЩИЙ ОПЕРАТОР УТВЕРЖДЕНИЕ
== ЛЕВЫЙ ОПЕРАНД РАВЕН ПРАВОМУ
!= ЛЕВЫЙ ОПЕРАНД НЕ РАВЕН ПРАВОМУ

Применение этих операторов совпадает с принципом применения предыдущей группы, то есть, на выходе выражение заменяется либо на истину, либо на ложь, в зависимости от утверждения.

cout<<(5!=3); // на экране будет единица, так как утверждение (5!=3) истина.
сout<<(3==2); //на экране будет 0, так как (3==2) ложь.

Логические операции объединения и отрицательная инверсия.

В большинстве случаев невозможно обойтись только одним утверждением. Чаще всего необходимо комбинировать утверждения тем или иным образом. Например, чтобы проверить находится ли число в диапазоне от 1 до 10, необходимо проверить два утверждения: число должно одновременно > = 1 и <= 10. Для того чтобы реализовать такую комбинацию необходимо ввести дополнительные операторы.

ОПЕРАЦИЯ НАЗВАНИЕ
&& И
|| ИЛИ
!= НЕ
Логическое И (&&)

Логическое И объединяет вместе два утверждения и возвращает истину только в том случае, если и левое и правое утверждения истинны. Если хотя бы одно из утверждений или оба ложны, объединенное выражение заменяется на ложь. Логическое И работает по сокращенной схеме, то есть, если первое утверждение ложь, второе уже не проверяется.

УТВЕРЖДЕНИЕ 1 УТВЕРЖДЕНИЕ 2 УТВЕРЖДЕНИЕ 1&&УТВЕРЖДЕНИЕ 2
true true true
true false false
false true false
false false false

Теперь рассмотрим пример, в котором программа получает число и определяет, попадает ли это число в диапазон от 1 до 10.

#include <iostream>
using namespace std;
void main()
{
 int N;
 cout<<”Enter digit:\n”;
 cin>>N;
 cout<<((N>=1)&&(N<=10));
 cout<<”\n\nIf you see 1 your digit is in diapazone\n\n”;
 cout<<”\n\nIf you see 0 your digit is not in diapazone\n\n”;
}

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

Логическое ИЛИ (||)

Логическое ИЛИ объединяет вместе два утверждения и возвращает истину только в том случае, если хотя бы одно из утверждений верно, и ложь в том случае, если оба утверждения не верны. Логическое ИЛИ работает по сокращенной схеме, то есть, если первое утверждение истина, второе уже не проверяется.

УТВЕРЖДЕНИЕ 1 УТВЕРЖДЕНИЕ 2 УТВЕРЖДЕНИЕ 1||УТВЕРЖДЕНИЕ 2
true true true
true false true
false true true
false false false

Еще раз рассмотрим пример, в котором программа получает число и определяет, попадает ли это число в диапазон от 1 до 10. Только, теперь используем ИЛИ.

#include <iostream>
using namespace std;
void main()
{
 int N;
 cout<<”Enter digit:\n”;
 cin>>N;
 cout<<((N<1)||(N>10));
 cout<<”\n\nIf you see 0 your digit is in diapazone\n\n”;
 cout<<”\n\nIf you see 1 your digit is not in diapazone\n\n”;
}

В данном примере если оба утверждения будут ложными, (то есть число будет не меньше 1 и не больше 10) на место выражения подставится 0, в противном случае – 1. Соответственно пользователь, также как и в предыдущем примере, сможет проанализировать сложившуюся ситуацию и сделать вывод.

Логическое НЕ (!)

Логическое НЕ является унарным оператором и в связи с этим не может называться оператором объединения. Оно используется в том случае, если нужно изменить результат проверки утверждения на противоположный.

УТВЕРЖДЕНИЕ !УТВЕРЖДЕНИЕ
true false
false true
// на экране будет 1, так как (5==3) ложь и её инверсия это - истина.
cout<<!(5==3); 
//на экране будет 0, так как (3!=2) истина и её инверсия это - ложь.
сout<<!(3!=2); 

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

b==0
можно сокращенно записать с помощью инверсии:
!b
обе записи дают на выходе истину, в случае если b будет равно нулю.

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


Категория: C | Добавил: DEN-SHP (05.11.2012)
Просмотров: 809 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]