powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Помогите упростить булеву логику.
37 сообщений из 37, показаны все 2 страниц
Помогите упростить булеву логику.
    #38720599
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Можно ли написать ниже-приведенный запрос более коротко ?

Код: c#
1.
2.
3.
      object ob1, ob2;
      if ( ((ob1 == null) && (ob2 != null)) || ((ob1 != null) && (ob2 == null)) )
          throw new ApplicationException ("ля ля")



Логика проверки простая - оба объекта должны быть либо NULL либо НЕ NULL. Но только вместе.
Если один так, а другой так - ошибка, сгенерить исключение.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720614
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
if ((ob1 == null) != (ob2 == null))
    throw new ApplicationException ("ля ля")
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720619
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Яростный Меч,

Гениально и просто :)
Спасибо.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720654
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
if (!(ob1 == null ^ ob2 == null))
    throw new ApplicationException ("ля ля")
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720662
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тьфу... "Если один так, а другой так - ошибка, сгенерить исключение".

Код: c#
1.
2.
3.
4.
if (ob1 == null ^ ob2 == null)
{
    throw new ApplicationException ("ля ля")
}
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720680
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТьфу... "Если один так, а другой так - ошибка, сгенерить исключение".

Код: c#
1.
2.
3.
4.
if (ob1 == null ^ ob2 == null)
{
    throw new ApplicationException ("ля ля")
}


вот имхо. чем в if все тупее и проще,тем легче понимать.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720687
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanвот имхо. чем в if все тупее и проще,тем легче понимать.+100
потом читаешь свой код через полгода и думаешь, блин, что я тут имел ввиду.
ну или камент писать - тогда получится еще длиннее ))
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720691
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanskyANAТьфу... "Если один так, а другой так - ошибка, сгенерить исключение".

Код: c#
1.
2.
3.
4.
if (ob1 == null ^ ob2 == null)
{
    throw new ApplicationException ("ля ля")
}


вот имхо. чем в if все тупее и проще,тем легче понимать.Разве оператор XOR труден для понимания?
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720692
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAnetivanпропущено...

вот имхо. чем в if все тупее и проще,тем легче понимать.Разве оператор XOR труден для понимания?
нет. но скажем так я использовал его пару раз. Предпочитаю & or. Видимо я плохой программист.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720694
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanskyANAпропущено...
Разве оператор XOR труден для понимания?
нет. но...То есть не труден, но и не лёгок? Информатику в школе прогуливал?
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720744
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAnetivanпропущено...

нет. но...То есть не труден, но и не лёгок? Информатику в школе прогуливал?

Скажу прямо - в логических условиях c# вижу его в первый раз.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720770
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигай
Код: c#
1.
2.
3.
      object ob1, ob2;
      if ( ((ob1 == null) && (ob2 != null)) || ((ob1 != null) && (ob2 == null)) )
          throw new ApplicationException ("ля ля")



Самый внятный и правильный код. Ничего сокращать не надо. Легко линейно читается, легко добавляются к указанному коду новые и более сложные конструкции. Оставить как есть и не морочить себе голову.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720772
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisskyANAпропущено...
То есть не труден, но и не лёгок? Информатику в школе прогуливал?

Скажу прямо - в логических условиях c# вижу его в первый раз.в логических условиях он по сути то же самое, что и "не равно".
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720811
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечPallarisпропущено...


Скажу прямо - в логических условиях c# вижу его в первый раз.в логических условиях он по сути то же самое, что и "не равно".

Само собой, только видишь такое - и бровь ползет вверх.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720832
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУРостигай
Код: c#
1.
2.
3.
      object ob1, ob2;
      if ( ((ob1 == null) && (ob2 != null)) || ((ob1 != null) && (ob2 == null)) )
          throw new ApplicationException ("ля ля")




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

Согласен на все 100. Чем понятней и проще, тем лучше! Болезнь, выраженная в стремлении зашифровать логику в одну строку с помощью хитрожопых конструкций, проходит вместе со взрослением.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720864
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttСогласен на все 100. Чем понятней и проще, тем лучше!
Нюанс в том, что критерии понятности и простоты у каждого свои. Для меня вот лично в данной ситации самый простой и понятный вариант - с XOR'ом.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720890
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisskyANAпропущено...
То есть не труден, но и не лёгок? Информатику в школе прогуливал?

Скажу прямо - в логических условиях c# вижу его в первый раз.Ну все бывает в первый раз :)

XOR (исключающее ИЛИ, строгая дизъюнкция) - это булева функция, которой в C# соответствует оператор ^. Грех не воспользоваться по назначению.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720893
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забавно то, что в первом посте мы видим не что иное, как запись XOR в виде ДНФ (дизъюнктивная нормальная форма). А вы тут делаете удивленное лицо :)
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720907
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЗабавно то, что в первом посте мы видим не что иное, как запись XOR в виде ДНФ (дизъюнктивная нормальная форма). А вы тут делаете удивленное лицо :)

Проблема надраконенности мозга на узнавание. Решая каждый день тысячи задач "и","или","не" в повседневной жизни, я не могу слету понять, что происходит в случае с XOR, надо задуматься, вспомнить. Тогда как конструкция тса проста в понимании.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720919
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallarisчто происходит в случае с XOR, надо задуматься, вспомнить
XOR по-русски - это всего навсего ЛИБО
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720944
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offskyANA, конкуренты ?
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720984
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisskyANAЗабавно то, что в первом посте мы видим не что иное, как запись XOR в виде ДНФ (дизъюнктивная нормальная форма). А вы тут делаете удивленное лицо :)

Проблема надраконенности мозга на узнавание. Решая каждый день тысячи задач "и","или","не" в повседневной жизни, я не могу слету понять, что происходит в случае с XOR, надо задуматься, вспомнить. Тогда как конструкция тса проста в понимании.КО: да, ДНФ проще для понимания, для того она и существует.

Только вот ТС просит обратное, а Вы его что, отговариваете что-ли?

P.S.: а про надроконенность мозга... Ну просто у нас в школе преподавали логику и информатику, а в институте математическую логику. Видимо не всё у меня из головы вылетело
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720989
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ
offskyANA, конкуренты ?
Нет. Система на внутренний рынок ориентирована, а не на выездной туризм. Но это маячок, что начали наконец внутренний рынок осваивать.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720992
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAP.S.: а про надроконенность мозга... Ну просто у нас в школе преподавали логику и информатику, а в институте математическую логику. Видимо не всё у меня из головы вылетело Карты Карно?
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38720998
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvskyANAP.S.: а про надроконенность мозга... Ну просто у нас в школе преподавали логику и информатику, а в институте математическую логику. Видимо не всё у меня из головы вылетело Карты Карно?В школе проходили.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721042
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЗабавно то, что в первом посте мы видим не что иное, как запись XOR в виде ДНФ (дизъюнктивная нормальная форма). А вы тут делаете удивленное лицо :)
Да ничего сложного в XOR нету, но когда читаешь вот такой код, невольно хочется убить его автора.

Код: c#
1.
2.
3.
4.
if ((((in.fraction.ll & (((USItype) 1 << F_D_BITOFF) - 1)) != 0) ^ ((((x ^ y) >> I_F_BITS) & 1) == 0)) || ((z ^ x) >> I_F_BITS) & 1)
{
   Console.Write("Ну да, верно, чувак");
}



Хотя, чего может быть непонятного в побайтовых сдвигах и ксорах? Во всём должна быть рациональность. И самое главное - без фанатизма.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721049
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСамый внятный и правильный код. Ничего сокращать не надо. Легко линейно читается, легко добавляются к указанному коду новые и более сложные конструкции. Оставить как есть и не морочить себе голову.
Правильно! К чёрту эти все операторы!
Код: c#
1.
2.
if (((ob1 == null == true) == (ob2 == null == false)) == (((ob1 == null == false) == (ob2 == null == true)) == false))
                throw new ApplicationException("ля ля");
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721072
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныhVosttСогласен на все 100. Чем понятней и проще, тем лучше!
Нюанс в том, что критерии понятности и простоты у каждого свои . Для меня вот лично в данной ситации самый простой и понятный вариант - с XOR'ом.

Запустили как-то в проект продумана, критерием понятности которого является TRUE=0.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721099
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему монады никто не предлагает?
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721130
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAЗабавно то, что в первом посте мы видим не что иное, как запись XOR в виде ДНФ (дизъюнктивная нормальная форма). А вы тут делаете удивленное лицо :)
Да ничего сложного в XOR нету, но когда читаешь вот такой код, невольно хочется убить его автора.

Код: c#
1.
2.
3.
4.
if ((((in.fraction.ll & (((USItype) 1 << F_D_BITOFF) - 1)) != 0) ^ ((((x ^ y) >> I_F_BITS) & 1) == 0)) || ((z ^ x) >> I_F_BITS) & 1)
{
   Console.Write("Ну да, верно, чувак");
}



Хотя, чего может быть непонятного в побайтовых сдвигах и ксорах? Во всём должна быть рациональность. И самое главное - без фанатизма.Не в кассу. Из-за того, что оператор ^ предопределен для целых типов и bool, не надо смешивать логические и побитовые операции в одну кучу.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721203
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНе в кассу. Из-за того, что оператор ^ предопределен для целых типов и bool, не надо смешивать логические и побитовые операции в одну кучу.
В кассу. Ты понял, что я хотел сказать. Расширять и дополнять линейную логику гораздо проще и быстрее.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721219
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAне надо смешивать логические и побитовые операции в одну кучу
Вот оно, начинается. Это можно смешивать, это нельзя. Неужели ты плохо учился в институте и тебя не научили побитовым операциям? Это ж так просто :)
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721224
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как насчет простого библиотечного метода?
Код: c#
1.
2.
if (OnlyOneIsNull(ob1, ob2))
                throw new ApplicationException("ля ля");


По-моему будет самый наглядный вариант, может расширяться как в месте использования, так и в самом методе.
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721242
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAне надо смешивать логические и побитовые операции в одну кучу
Вот оно, начинается. Это можно смешивать, это нельзя. Неужели ты плохо учился в институте и тебя не научили побитовым операциям? Это ж так просто :)Гы... Ну вообще в if можно любое выражение запихнуть и результат сравнить с чем-нить. При чём тут логическое исключающее ИЛИ?
Код: c#
1.
if ((value = x * y / 100 + 15 - a) > 0)
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721251
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProКак насчет простого библиотечного метода?
Код: c#
1.
2.
if (OnlyOneIsNull(ob1, ob2))
                throw new ApplicationException("ля ля");


По-моему будет самый наглядный вариант, может расширяться как в месте использования, так и в самом методе.Давайте не будем. ТС захотел упростить конкретную форму, для этой конкретной формы есть конкретная короткая запись. Всё, профит.

Вы ещё предложите System.Diagnostics.Contracts добавить и ContractInvariantMethod
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721283
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУпропущено...

Вот оно, начинается. Это можно смешивать, это нельзя. Неужели ты плохо учился в институте и тебя не научили побитовым операциям? Это ж так просто :)Гы... Ну вообще в if можно любое выражение запихнуть и результат сравнить с чем-нить. При чём тут логическое исключающее ИЛИ?
Код: c#
1.
if ((value = x * y / 100 + 15 - a) > 0)



Хех. Побитовый сдвиг тоже можно в любое выражение запихнуть и результат сравнить с чем-нить. Причем тут грибы?

Код: c#
1.
2.
3.
4.
if ((((in.fraction.ll & (((USItype) 1 << F_D_BITOFF) - 1)) != 0) ^ ((((x ^ y) >> I_F_BITS) & 1) == 0)) || ((z ^ x) >> I_F_BITS) & 1)
{
   Console.Write("Ну да, верно, чувак");
}
...
Рейтинг: 0 / 0
Помогите упростить булеву логику.
    #38721410
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, я к тому, что пихать какие-то вычисления в if, вместо нормального их оформления - это одно. А приведение ДНФ к булевой функции и обратно - это другое.
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Помогите упростить булеву логику.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]