Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Как уменьшить такую конструкцию?   Найти похожие ветки 

 
Германн ©   (2010-02-01 03:15) [80]


> А ты можешь представить реально нужный пример кода в Windows,
>  когда нужно применять XOR?
>

Вот and, or или not - это понятно.


 
Юрий Зотов ©   (2010-02-01 05:10) [81]

> Германн ©   (01.02.10 03:15) [80]
> А ты можешь представить реально нужный пример кода в Windows,
> когда нужно применять XOR?

Хм... а при чем тут Windows?


 
Думкин ©   (2010-02-01 07:49) [82]

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


 
KilkennyCat ©   (2010-02-01 08:34) [83]

Ну вот, пришел Думкин и 80 постов испортил :)


 
Ega23 ©   (2010-02-01 11:46) [84]


> А ты можешь представить реально нужный пример кода в Windows,
>  когда нужно применять XOR?
>


Значение регистра обнулить? Заксорить самого на себя...


 
Alx2 ©   (2010-02-01 12:01) [85]

В случае с xor у меня по удобочитаемости идет такой порядок:
1. if a<>b then ...
2. if a xor b then ...
....
1000. if (a and not b) or ((not a) and b) then...
2000. if ((not a) or (not b)) and (a or b) then...


 
TUser ©   (2010-02-01 12:15) [86]

XOR отличиается от других логических операций уже тем, что для него нет слова в русском (английском) языке. И, ИЛИ и НЕ мы в разговорной речи употребляем. ИСКЛЮЧАЮЩЕЕ_ИЛИ - ни разу не слышал.

Это показывает, что XOR гораздо реже употребляется человеками. То есть он человекам менее понятен, чем три другие операции. А стало быть из двух операций

A <> B

и

A xor B

первая понимается проще.

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


 
KilkennyCat ©   (2010-02-01 12:25) [87]


> Это показывает, что XOR гораздо реже употребляется человеками.

Ну, если электронщиков не считать человеками, то тогда да.


 
TUser ©   (2010-02-01 12:39) [88]

Если их считать человеками, то все равно - на истинность утверждения "XOR гораздо реже употребляется человеками" применительно ко всему человечеству они не повлияют. Мало их.


 
Ega23 ©   (2010-02-01 12:55) [89]

ИМХО.
Вообще не дело логические операторы и битовые одинаково именовать. Это не для конкретного языка, это "вообще".
В этом плане мне разделение в TSQL нравится. С его побитовыми &, ~, | и ^


 
Anatoly Podgoretsky ©   (2010-02-01 13:01) [90]

> KilkennyCat  (01.02.2010 12:25:27)  [87]

электронщиков не считать человеками, без всяких если.


 
Anatoly Podgoretsky ©   (2010-02-01 13:04) [91]

> Ega23  (01.02.2010 12:55:29)  [89]

Это тлетворное влияние СИ


 
Вариант   (2010-02-01 14:55) [92]


> Ega23 ©   (01.02.10 12:55) [89]


> ИМХО.
> Вообще не дело логические операторы и битовые одинаково
> именовать.

Согласен


 
Кто б сомневался ©   (2010-02-01 15:08) [93]


> TUser ©   (01.02.10 12:15) [86]


Я уже писал что человек если произносит союз "или" - подразумевает свойство XOR. Иначе надо было говорить "или\и" - а мы так не говорим.
Получается xor ("или") обычно используется повсеместно в чел. жизни.
Or (или\и) никогда - по крайнем мере в русском и англ. языке.


 
Кто б сомневался ©   (2010-02-01 15:12) [94]


> A <> B
>
> и
>
> A xor B
>
> первая понимается проще.


Опять же проще для тебя. Для меня они одинаково просто доходят, т.к. в свое время я часто с битовой логикой работал.
В твое случае ты чаще работаешь с <> чем с xor поэтому и доходит быстрее первое. На деле до программиста знающего как работает XOR но не работающего с ним - не трудно припомнить свойство - всего 3 секунды.


 
Ega23 ©   (2010-02-01 15:22) [95]

A <> B
и
A xor B

var
 A, B : real;


 
Кто б сомневался ©   (2010-02-01 15:24) [96]


> Ega23 ©   (01.02.10 15:22) [95]


Мы про boolean говорим - здесь ничего не надо вычислять.


 
xayam ©   (2010-02-01 15:33) [97]

Удалено модератором


 
Кто б сомневался ©   (2010-02-01 15:41) [98]


> xayam ©   (01.02.10 15:33) [97]


Нет, не поняли. Я имел ввиду в целом людей которые не часто работают с xor, но знают как он работает. Отправлял вчера эту конструкцию знакомому, сказал как поймешь сразу скажи как она работает (по скайпу). Он тоже программист (C#) - с xor работает не часто.

if a xor b then

Он ответил через 3 секунды. Просто знал присказку "или там или там, но не оба". :)


 
xayam ©   (2010-02-01 15:47) [99]

Удалено модератором


 
Ega23 ©   (2010-02-01 15:49) [100]


> Мы про boolean говорим - здесь ничего не надо вычислять.


Вот в том-то и дело. В случае Boolean - логическая. В случае числа - побитовая.
А если вспомнить, что false = 0, а true <> 0, то вообще всё весело.


 
KilkennyCat ©   (2010-02-01 15:56) [101]

var
 A, B : boolean;

A <> B  выглядит идиотски, так же, как if A <> true


 
Кто б сомневался ©   (2010-02-01 16:14) [102]


> А если вспомнить, что false = 0, а true <> 0, то вообще
> всё весело.


в boolean true = 1 всегда вы ж знаете. Это не bytebool и не bool.
Вообще A+B*C - здесь больше усилий нужно, чем A xor B.
если бы детей в школе учили xor на равне с операциями + - то не было бы и таких удивлений и спора. Просто бы шло на автомате. А человеку который пишет код, имхо вообще спорить по этому поводу глупо.


 
Alx2 ©   (2010-02-01 16:27) [103]

>KilkennyCat ©   (01.02.10 15:56) [101]


> A <> B  выглядит идиотски, так же, как if A <> true


Передерну в другую сторону: для завершенности картинки, нужно юзать только Штрих Шеффера. Чтобы одна функция на все-про все, и до оторопи понятно без въездов в контекст. :)
Но ведь есть локальные документы-соглашения о стиле кодирования в конкретных конторах и проектах. Лепят по ним.  Чего зря спорить?


 
xayam ©   (2010-02-01 16:32) [104]

Удалено модератором


 
Думкин ©   (2010-02-01 16:53) [105]

По заданорй задаче 3 исхода. В один зинелфс там не получится.

Это бы в свич - для высокого языка. Это красивее. А каждый внутренний заход в кэйсе - в языкопонятную функцию.


 
Ega23 ©   (2010-02-01 16:53) [106]


> в boolean true = 1 всегда вы ж знаете. Это не bytebool и
> не bool.


нету в Boolean ни 0, ни 1, ничего другого. Есть true и есть false.
0, 1 и другие значения - это уже не Boolean.

Вот Ord(True) - да, всегда единица.


 
Думкин ©   (2010-02-01 16:57) [107]


> По заданорй задаче 3 исхода.

Извините.

> По заданой задаче 3 исхода.

так.


 
Кто б сомневался ©   (2010-02-01 17:13) [108]


> Ega23 ©   (01.02.10 15:49) [100]
> А если вспомнить, что false = 0, а true <> 0, то вообще
> всё весело.



> Ega23 ©   (01.02.10 16:53) [106]
> нету в Boolean ни 0, ни 1, ничего другого. Есть true и есть
> false.
> 0, 1 и другие значения - это уже не Boolean.


Сам же написал. И сам же отрицаешь.. :)

Есть в boolean и ноль и один. Просто интерпретация его как 0 - false 1 - true.
неважно как называется, можно назвать как черное и белое или как да и нет или как 0 и 1 - суть одна.
Ну а если строго на язык смотреть, тогда да, true и false. Но тогда это касается всех - и bool и bytebool и longbool итд.


 
Кто б сомневался ©   (2010-02-01 17:15) [109]


> Ну а если строго на язык смотреть, тогда да, true и false.


А вообще нет, если строго смотреть ,тогда как раз есть ноль и один. Просто для удобства назвали его false и true. Двоичная система.


 
tesseract ©   (2010-02-01 17:22) [110]


> А вообще нет, если строго смотреть ,тогда как раз есть ноль
> и один.


C COM работал? Там всё глубоко наоборот.


 
Думкин ©   (2010-02-01 17:45) [111]


> tesseract ©   (01.02.10 17:22) [110]
>
> > А вообще нет, если строго смотреть ,тогда как раз есть
> ноль
> > и один.
>
>
> C COM работал? Там всё глубоко наоборот.

Вот поэтому и не надо.

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

Писать надо понятно. А скорость придумывания терминов оставим философам.


 
Jeer ©   (2010-02-01 18:19) [112]


> То не стоит выносить мозг Гильбертом.


Это - да.


 
Юрий Зотов ©   (2010-02-01 22:55) [113]

> TUser ©   (01.02.10 12:15) [86]

Обоснование глыбоконаучное, спору нет.

Но как насчет "либо-либо"?

:o)


 
Ega23 ©   (2010-02-02 00:31) [114]


> Сам же написал. И сам же отрицаешь.. :)


Ты опу с пальцем путаешь.
Что будет:
if Boolean(2) then
 ShowMessage("True")
else
 ShowMessage("False")  

?


 
Не занят   (2010-02-02 02:25) [115]


> if Boolean(2)


Правда всегда одна, путей к ней много


 
Lamer@fools.ua ©   (2010-02-02 10:21) [116]

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

Лучше здесь перлы почитайте: http://govnokod.ru/
В частности, http://govnokod.ru/delphi


 
GrayFace ©   (2010-02-02 12:09) [117]

У меня результаты xor и <> полностью совпадают. В отличие от [34], замеры делал раздельно, на разных кнопках, иначе не достоверно.

Германн ©   (01.02.10 2:57) [79]
А ты можешь представить реально нужный пример кода в Windows, когда нужно применять XOR?

Реальный пример в голову не лезет, но
A xor B xor C
Если переводить на <>, то появятся скобки.
Гепотетический пример:
map[x, y, z]:= (x mod 2 = 0) xor (y mod 2 = 0) xor (z mod 2 = 0);
- заполнение каждой второй ячейки true.


 
GrayFace ©   (2010-02-02 12:10) [118]

по типу шахматной доски.


 
12 ©   (2010-02-02 12:16) [119]

$ifdef оффтоп

вот так еще прикольно получится
const
false = true;
true = false;
begin
if (1>0) = false then showmessage("(1>0) = false");
if (1>0) = true then showmessage("(1>0) = true");

а потом
const
true = false;
false = true;
begin
if (1>0) = false then showmessage("(1>0) = false");
if (1>0) = true then showmessage("(1>0) = true");


 
Ega23 ©   (2010-02-02 12:22) [120]


> map[x, y, z]:= (x mod 2 = 0) xor (y mod 2 = 0) xor (z mod  2 = 0);
> - заполнение каждой второй ячейки true.


А в один проход разве не судьба?



Страницы: 1 2 3 4 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.7 MB
Время: 0.054 c
4-1238744433
SunSh@dow
2009-04-03 11:40
2010.08.27
выключить монитор


2-1275239628
Б
2010-05-30 21:13
2010.08.27
Редактор блок-схем.


15-1270845004
Юрий
2010-04-10 00:30
2010.08.27
С днем рождения ! 10 апреля 2010 суббота


2-1275459989
novai
2010-06-02 10:26
2010.08.27
Не минимизация второй формы


2-1273824908
Игорек
2010-05-14 12:15
2010.08.27
Как лучше работать с файлом размером больше 100мб