Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   And or одновременно. (http://www.flasher.ru/forum/showthread.php?t=136852)

in4core 27.02.2010 01:46

And or одновременно.
 
Интересно вдруг стало, а можно ли использовать операторы одновременно, таким образом типа :
Код AS1/AS2:

if(a==b and or b==c) { }

( возможно просто подругому пишется, это пример)

или же в любом случае только так :
Код AS1/AS2:

 if(a==b and  b==c) {}if(a==b or  b==c) {};


mooncar 27.02.2010 01:53

Логика "И" как бы исключает логику "ИЛИ".
"ИЛИ-НЕ" возможно, "И-НЕ" возможно, а вы о чем-то странном говорите.
Как вы себе представляете эту логику?

Это как понимать?
Код AS1/AS2:

if(a==b and  b==c) {} ; 
 if(a==b or  b==c) {};

Я раньше только слышал о так называемом "индусском коде", но теперь вижу его в действии.

djyamato 27.02.2010 02:15

а что описать-то можно такой логикой ?
Ну, пример я имею ввиду приведите :)

mooncar 27.02.2010 02:37

У нас была учительница в школе, у нее замечательная логика была.

" - Марина Сергеевна, на дневник обложка нужна или не надо?
- Да!..."

И все в таком духе.

samana 27.02.2010 02:49

Цитата:

Сообщение от mooncar (Сообщение 889661)
У нас была учительница в школе, у нее замечательная логика была.

" - Марина Сергеевна, на дневник обложка нужна или не надо?
- Да!..."

И все в таком духе.

:taunt:

in4core 27.02.2010 03:35

Нет. все проще. Заказчик попросил сделать для анкеты алгоритм. Так вот, алгоритм не простой, Некоторые логики подразумевают ответы типа - Да на 1 вопрос и нет на все остальные = действие. В этом случае формурется последовательность типа 10000. Тоесть ответ да , дает единичку в моем случае. С этими логиками все просто , но есть еще и нестандартные немного логики типа - если ДА на 1 вопрос и/или да на 2 вопрос + да на 5 вопрос.... и т.п - вот для таких логик приходится писать длинные последовательности логических операторов. Когда вопросов 5 это еще не так напряжно, но если больше то ужасно. Поэтому и спросил насчет БЫСТРОГО применения и/или . Ибо не хочется писать длинные строки))))))) лентяй)

Добавлено через 15 минут
to MoonCar _))
Если ты считаешь что ты настолько умен что бы написать данную строку не на ИНДУССКОМ коде - прошу докажи).... Именно за этим я и создал тему узнать можно ли. Раз можешь то покажи.

Вот алгоритм : Если ДА на 1 вопрос и/или ДА на второй вопрос, + ДА на 5 вопрос + любой другой ответ на все остальные, то ДЕЙСТВИЕ1. П.с. вопросов всего 6.

Моя реализация ( по другому не умею):
строка 1 : 110010 если и
строка 2: 010010 если или1
строка 3: 100010 если или2

Код AS1/AS2:

if(str.substr(0,1)=="0" or str.substr(0,1)=="1" and str.substr(1,1)==str.substr(4,1)=="1"){catch}
if(str.substr(0,1)=="1" and str.substr(1,1)=="0" or str.substr(1,1)==str.substr(4,1)=="1"){catch}


djyamato 27.02.2010 03:51

Цитата:

Сообщение от mooncar (Сообщение 889661)
У нас была учительница в школе, у нее замечательная логика была.

" - Марина Сергеевна, на дневник обложка нужна или не надо?
- Да!..."

И все в таком духе.

А я в танке :( Не понимаю прикола

wvxvw 27.02.2010 04:09

Где-то на govnokod.ru попадался новый булевый оператор - "все равно", записывается так: &|, а его инвариант |&.
Операторы or и and устарели в AS2, правильно использовать || и && соответственно.
Если вам нужно проверить множество условий - самый правильный подход:
Код AS1/AS2:

var condition1:Boolean = true;
var condition2:Boolean = false;
var condition3:Boolean = true;
var condition4:Boolean = false;
var condition5:Boolean = true;
var conditionResult:Number = 0;
if (condition1) conditionResult |= 1;
if (condition2) conditionResult |= 2;
if (condition3) conditionResult |= 4;
if (condition4) conditionResult |= 8;
if (condition5) conditionResult |= 16;
trace(conditionResult.toString(2)); // 10101
var correctResult:Number = 22; // 10110
trace(correctResult.toString(2));
var i:Number = 0;
var k:Number = 1;
while (i++ < 5)
{
        if ((correctResult & k) == (conditionResult & k))
                trace("result " + i + " is correct");
        else trace("result " + i + " is incorrect");
        k <<= 1; // k *= 2;
}


mooncar 27.02.2010 04:10

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

Ум здесь не причем. А вот иногда вопрос, выдранный из контекста конкретной задачи, и сформулированный "в воздухе", может выглядеть достаточно.. как бы это помягче сказать, глупо.

VVall 27.02.2010 04:26

OR - достаточно выполнения любой части условия, AND - необходимо выполнение всех частей условия. Совместить это невозможно никак. Это аналогично попытке совместить + и - в одной операции.

alexcon314 27.02.2010 09:45

Цитата:

есть еще и нестандартные немного логики типа - если ДА на 1 вопрос и/или да на 2 вопрос + да на 5 вопрос.... и т.п
Если это выдержка из т.з., попросите заказчика уточнить, что он имел в виду, и не морочьте голову.

in4core 27.02.2010 13:32

Всем спасибо за ответы. А что заказчик имел ввиду я написал, 3 строки как это может выглядеть

mr_pol 27.02.2010 14:29

Вложений: 1
вот что у меня получилось) как я понял, нужно да на 1 и/или да на 2 + да на 5 + да на 3, либо на 4, либо на 6 :wacko:

да - 1
нет - 0

expl 27.02.2010 21:33

Цитата:

OR - достаточно выполнения любой части условия, AND - необходимо выполнение всех частей условия. Совместить это невозможно никак. Это аналогично попытке совместить + и - в одной операции.
Есть еще операция XOR - "либо - либо", но, к сожалению во флеше как булева операция она не реализована - приходится разбивать на комбинации AND и OR

Zik. 27.02.2010 22:24

Жизнь проходит или все начали пользоваться снова
Код AS1/AS2:

or 
and

вместо
Код AS1/AS2:

&&
||

?

in4core 27.02.2010 23:57

Да какая разница как писать? мне например быстрее написать or или and чем && так . Суть от этого не меняется и АС2 от этого АС1 не становится. Че к этому придираться полный бред.... это ВАМ не код в клипе писать. а просто разница написания всего то лишь.

mooncar 28.02.2010 00:04

У or и and вроде другие приоритеты, чем у || и && или это только в PHP?
Если не в этом дело, то наверное, разница все же есть, иначе зачем были введены эти наборы символов?

in4core 28.02.2010 00:08

Разницы НЕТ! читайте хелп

wvxvw 28.02.2010 00:41

Цитата:

Сообщение от in4core (Сообщение 889858)
Разницы НЕТ! читайте хелп

Если бы вы его читали в первую очередь, то увидели бы, что там фигурируе такое слово как deprecated, что значит - устаревший. Эти операторы больше не поддерживаются в следующей версии языка. Но, я думаю, на вас это не отразится т.как вы просто начинающий и ваш код все равно не будет долго использоваться, его не нужно будет поддерживать, или портировать, версия языка тут роли не сыграет.

udaaff 28.02.2010 00:43

Цитата:

Сообщение от mooncar (Сообщение 889857)
У or и and вроде другие приоритеты, чем у || и && или это только в PHP?
Если не в этом дело, то наверное, разница все же есть, иначе зачем были введены эти наборы символов?

Компилируется все в один и тот же код. Введены, видимо, для того, чтобы соответствовать определенным стандартам.

Цитата:

Разницы НЕТ! читайте хелп
Разница в том, что начиная с Flash Player 5 эти операторы являются нерекомендуемыми к использованию. В AS3 они уже отсутствуют.

in4core 28.02.2010 00:49

to wvxvw - Я не начинающий. я уже давно в языке. Просто по мелочам не ковыряюсь. Но и не супер продвинутый, хвалится тоже не собираюсь. Переносить мне код не придется тут все верно. АС3 я не изучаю совсем, поэтому и боятся этих операторов нечего. А разница в том что устраели - это не разница, не существенная точнее!.
Спасибо за ответы, и инетерсные вещи. полезно


Часовой пояс GMT +4, время: 11:15.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.