2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Логические операции
Сообщение08.01.2013, 19:55 


25/11/12
76
Здравствуйте. Помогите разобраться в логических операциях. Имеется пример: Tobe OR NOT Tobe, Tobe — переменная. Допустим Tobe = 1, тогда NOT Tobe = 0 и на выходе получим 1, т.е. true. Я правильно понимаю, что второе Tobe меняет значение на противоположное, т.е. на выходе всегда будем иметь true?
И еще такой NOT z AND x OR y, я читаю это так: не z и не? (x или y), т.е. на выходе false будет всегда, если мы все отрицаем?
И где вообще можно что-то толковое не сильно углубленное по этому поводу почитать что бы разобраться? Большое спасибо.

 Профиль  
                  
 
 Re: Логические опереции
Сообщение08.01.2013, 20:01 
Заслуженный участник


11/11/07
1198
Москва
А что тут читать, если не углубляться? Хватит таблиц истинности.
Trurlol в сообщении #668955 писал(а):
NOT z AND x OR y

Здесь должно быть ((NOT z) AND x) OR y.

 Профиль  
                  
 
 Re: Логические опереции
Сообщение08.01.2013, 20:15 


25/11/12
76
AV_77 в сообщении #668962 писал(а):
А что тут читать, если не углубляться? Хватит таблиц истинности.
Trurlol в сообщении #668955 писал(а):
NOT z AND x OR y

Здесь должно быть ((NOT z) AND x) OR y.

Т.е. если z = 1, x= 1, y = 1
NOT z = 0
0 AND x = 0
0 OR y = 1

И допустим z = 0, x = 1, y = 0
NOT z = 1
1 AND x = 1
1 OR y = 1

Правильно?

 Профиль  
                  
 
 Re: Логические опереции
Сообщение08.01.2013, 20:21 
Заслуженный участник


11/11/07
1198
Москва
Trurlol в сообщении #668971 писал(а):
Правильно?

Да.

 Профиль  
                  
 
 Re: Логические опереции
Сообщение08.01.2013, 20:31 
Заслуженный участник
Аватара пользователя


06/04/10
3152
Trurlol в сообщении #668955 писал(а):
Здравствуйте. Помогите разобраться в логических операциях. Имеется пример: Tobe OR NOT Tobe, Tobe — переменная.
Занятно, но результат операции может зависеть от реализации логических переменных. В простых случаях, конечно. истина, но ведь бывают и варианты, где допустима неопределённость - и тогда честный язык должен выдать ошибку, несмотря на...

 Профиль  
                  
 
 Re: Логические опереции
Сообщение08.01.2013, 20:53 
Аватара пользователя


31/10/08
1244
Логические операциями работают с логическими переменными.
Цитата:
Допустим Tobe = 1
тогда в зависимости от языка либо будет ошибка либо сработает автоматическое приведение типов.

Цитата:
И еще такой NOT z AND x OR y, я читаю это так: не z и не? (x или y), т.е. на выходе false будет всегда, если мы все отрицаем?
Обычно унарные операции имеют больший приоритет.

 Профиль  
                  
 
 Re: Логические опереции
Сообщение08.01.2013, 21:25 
Заслуженный участник


09/09/10
3729
Pavia в сообщении #668994 писал(а):
Логические операциями работают с логическими переменными.

Логическими операциями работают с логическими значениями. Да, спасибо ООП, люди теперь совершенно разучились различать переменную и ее значение, но... стоит все же это различие иметь в виду.

nikvic
Расскажите подробнее. Я еще не встречал языка, где вычисление выражения NOT BoolVariable имело бы побочный эффект в виде присваивания BoolVariable вычисленного значения этого выражения. Примерно то же относится и к OR.

 Профиль  
                  
 
 Re: Логические опереции
Сообщение08.01.2013, 21:32 
Заслуженный участник


27/04/09
28128
Pavia в сообщении #668994 писал(а):
тогда в зависимости от языка либо будет ошибка либо сработает автоматическое приведение типов.
В некоторых языках нет логического типа.

Возможно, тема вообще помещена не в тот раздел, и тогда ничего неправильного в обозначении логических значений 0 и 1 нет — так их зовут довольно часто.

 Профиль  
                  
 
 Re: Логические опереции
Сообщение08.01.2013, 22:02 
Заслуженный участник
Аватара пользователя


06/04/10
3152
Joker_vD в сообщении #669013 писал(а):
Я еще не встречал языка, где вычисление выражения NOT BoolVariable имело бы побочный эффект в виде присваивания BoolVariable вычисленного значения этого выражения. Примерно то же относится и к OR.

Я не о том. Первый пример имеет вид "А или не А", и, конечно, должен давать истину для любого уже определённого значения А. Однако вполне допускаю языки, в которых одного объявления логической переменной недостаточно - для применимости операторов она должна быть ещё и инициализирована.

 Профиль  
                  
 
 Re: Логические опереции
Сообщение08.01.2013, 22:20 
Заслуженный участник


09/09/10
3729
nikvic в сообщении #669044 писал(а):
Однако вполне допускаю языки, в которых одного объявления логической переменной недостаточно - для применимости операторов она должна быть ещё и инициализирована.

Ну вот, теперь я вспомнил о языках, где переменная может иметь значение Undefined :-( ... наитупейшая идея, если честно: если есть переменная, у нее есть какое-то значение. Обращение к значению неинициализированной переменной ловится элементарно что в интерпретируемом, что в компилируемом языке, зачем еще это уродство... ну будет значение-сюрприз, я даже когда писал игрушечный компилятор, инициализировал локальные переменные с помощью rand() ;)

Ладно, спасибо за напоминание, что есть уродства еще на свете :-)

 Профиль  
                  
 
 Re: Логические опереции
Сообщение08.01.2013, 22:33 
Заслуженный участник


28/04/09
1933
Сделаю попытку окончательно запутать ТС: конструкция типа $\left(x=x\right)\text{OR}\left(x\ne x\right)$ вовсе не обязана давать TRUE (если $x$ $\text{---}$ переменная к-л типа с плавающей запятой формата IEEE 754).

 Профиль  
                  
 
 Re: Логические опереции
Сообщение09.01.2013, 00:23 
Заслуженный участник


04/05/09
4587
EtCetera в сообщении #669065 писал(а):
Сделаю попытку окончательно запутать ТС: конструкция типа $\left(x=x\right)\text{OR}\left(x\ne x\right)$ вовсе не обязана давать TRUE (если $x$ $\text{---}$ переменная к-л типа с плавающей запятой формата IEEE 754).
Справедливости ради, $\left(x=x\right)\text{OR} \text{ NOT}\left(x=x\right)$ даже в этом случае будет истиной.

 Профиль  
                  
 
 Re: Логические опереции
Сообщение09.01.2013, 05:33 
Аватара пользователя


31/10/08
1244
arseniiv

Цитата:
В некоторых языках нет логического типа.

Не помню таких. Разве что ассемблер.

Цитата:
Возможно, тема вообще помещена не в тот раздел, и тогда ничего неправильного в обозначении логических значений 0 и 1 нет — так их зовут довольно часто.

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

EtCetera

EtCetera в сообщении #669065 писал(а):
Сделаю попытку окончательно запутать ТС: конструкция типа $\left(x=x\right)\text{OR}\left(x\ne x\right)$ вовсе не обязана давать TRUE (если $x$ $\text{---}$ переменная к-л типа с плавающей запятой формата IEEE 754).

Пример неправильный. Вернёт true. Советую разобраться с числами с плавающей точкой.

 Профиль  
                  
 
 Re: Логические опереции
Сообщение09.01.2013, 10:54 
Заслуженный участник


28/04/09
1933
Pavia в сообщении #669140 писал(а):
Пример неправильный. Вернёт true.
Да, извиняюсь. Вот так, кажется, будет лучше: $\left(x<x\right)\text{OR}\left(x\ge x\right)$ или $\left(x<x\right)\text{OR}\left(x=x\right)\text{OR}\left(x> x\right)$. И с двумя переменными: $\left(x<y\right)\text{OR}\left(x\ge y\right)$ или $\left(x<y\right)\text{OR}\left(x=y\right)\text{OR}\left(x>y\right)$.

 Профиль  
                  
 
 Re: Логические опереции
Сообщение09.01.2013, 18:34 
Заслуженный участник


27/04/09
28128
Pavia в сообщении #669140 писал(а):
Не помню таких. Разве что ассемблер.
Если сейчас логический тип есть в C (не помню), его там не было очень много лет.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group