Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизКак уменьшить такую конструкцию? Найти похожие ветки
← →
Германн © (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;
Скачать: [xml.tar.bz2];
Память: 0.68 MB
Время: 0.06 c