Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизПроще или красивее, не? Найти похожие ветки
← →
12 © (2010-05-13 10:49) [0]if A then
if B then DOIT;
else
DOIT;
← →
12 © (2010-05-13 10:52) [1]А часть условия В, полностью В считать всегда - не выгодно
← →
oldman © (2010-05-13 10:52) [2]if (not A) or (A and B) then DOIT;
не?
← →
oldman © (2010-05-13 10:54) [3]
> полностью В считать всегда - не выгодно
не успел заметить...
← →
turbouser © (2010-05-13 10:56) [4]if A and B then
DOIT1
else
DOIT2;
← →
12 © (2010-05-13 10:57) [5]вернее, вру. А не часть В, но много общего. Но если не А, то точно не В..
> if (not A) or (A and B) then DOIT;
ща..
зы
критична скорость
← →
oldman © (2010-05-13 10:58) [6]
> if A then
> if B then DOIT;
> else
> DOIT;
if not A then DOIT
else if B then DOIT;
не?
← →
RWolf © (2010-05-13 11:03) [7]
> oldman © (13.05.10 10:52) [2]
> if (not A) or (A and B) then DOIT;
это то же самое, что not A or B.
← →
RWolf © (2010-05-13 11:04) [8]итого:
if not A or B then DOIT;
← →
12 © (2010-05-13 11:17) [9]
>
> if not A then DOIT
> else if B then DOIT;
походу так чуть быстрее, но почти как первоначально
возможно погрешность замера
или оставлю или поменяю.. ща еще раз померяю :)
спасибо
← →
RWolf © (2010-05-13 11:18) [10]а [8] чем плох?
← →
tesseract © (2010-05-13 11:31) [11]
> а [8] чем плох?
ХЗ - по диаграмме совпадает на 100 %.
← →
12 © (2010-05-13 11:53) [12]
> а [8] чем плох?
ничем.
Но если будет настроено на полное булевое вычисление - будет вычислять полностью, где можно не вычислять уже
← →
RWolf © (2010-05-13 11:59) [13]> [12]
его никто не включает.
но даже еcли оно будет включено в свойствах проекта — всегда можно вписать {$B-} куда-нибудь в начало модуля.
← →
Anatoly Podgoretsky © (2010-05-13 12:06) [14]И не прощи и не красиво
if A then
if B then DOIT;
else
DOIT;
Равноif A then
DOIT;
← →
Leonid Troyanovsky © (2010-05-13 12:30) [15]
> 12 © (13.05.10 10:49)
Непросто и некрасиво: не определена позиция else.
А так, конечно, [14].
--
Regards, LVT.
← →
12 © (2010-05-13 12:38) [16]
> не определена позиция else.
а _;_
получается, в среднем, по тикам, никакой вариант не быстрее
← →
Leonid Troyanovsky © (2010-05-13 12:41) [17]
> 12 © (13.05.10 12:38) [16]
> а _;_
";" not allowed before "ELSE"
--
Regards, LVT.
← →
Студент_404 (2010-05-13 12:56) [18]
> 12 © (13.05.10 10:49)
> if A then
> if B then DOIT;
> else
> DOIT;
Эм..... А "DOIT" во второй строке и "DOIT" в 4-й это одно и то же? о_о
Тогда естественно [14]...
← →
RWolf © (2010-05-13 13:20) [19]очевидно, что топикстартер подразумевал
if A then
if B then DOIT
else
else
DOIT;
но ошибся в записи.
← →
RWolf © (2010-05-13 13:24) [20]
> получается, в среднем, по тикам, никакой вариант не быстрее
оно и понятно, ведь они компилируются в один и тот же код, плюс-минус условный переход.
а вообще, выбирать тот вариант, что лучше читается.
← →
Дмитрий С © (2010-05-13 13:34) [21]
> Anatoly Podgoretsky © (13.05.10 12:06) [14]
Надо же, великий Anatoly Podgoretsky ошибся :)
← →
Anatoly Podgoretsky © (2010-05-13 13:50) [22]Кроме того первый код не откомпилируется.
← →
Anatoly Podgoretsky © (2010-05-13 13:52) [23]
> RWolf © (13.05.10 13:20) [19]
Это совсем другое дело, я в таких случаях использую begin end, что бы не ошибаться и было кристально чисто.
← →
Anatoly Podgoretsky © (2010-05-13 14:05) [24]
> Надо же, великий Anatoly Podgoretsky ошибся :)
Во первых не ошибся, а во вторых я знаю, что иногда ошибаюсь.
← →
Дмитрий С © (2010-05-13 14:21) [25]
> Во первых не ошибся,
Я про это:
> И не прощи и не красиво
> if A then
> if B then DOIT;
> else
> DOIT;
> Равно
>
> if A then
> DOIT;
Пробуем при
A = True
B = False
← →
kernel © (2010-05-13 14:33) [26]Всегда "вложенные" условия "обтягиваю" бегин-эндом/{...}. Смотрится что-ли более наглядно...
← →
12 © (2010-05-13 15:14) [27]да, ошибся я.
[19] надо
ЗЫ
а {} - нисколько не наглядно :)
никак не могу привыкнуть как форматировать, что б понятно было..
так
if ($flag == 0)
{$flag = $Elem;
$flag = $Elem;}
else
{echo " ";
echo " ";}
так
if ($flag == 0){
$flag = $Elem;
$flag = $Elem;}
else {
echo " ";
echo " ";}
так мне понятнее всего,
но скока ж места занимает, визуально вобщем-то пустого...
if ($flag == 0)
{
$flag = $Elem;
$flag = $Elem;
}
else
{
echo " ";
echo " ";
}
← →
Leonid Troyanovsky © (2010-05-13 15:34) [28]
> 12 © (13.05.10 15:14) [27]
> так мне понятнее всего,
И другим тоже.
> но скока ж места занимает,
Чего место жалеть, себя-то, небось, жальче.
--
Regards, LVT.
← →
RWolf © (2010-05-13 15:34) [29]
type
TProc=procedure {of object};
procedure Just(proc:TProc);
begin
if not A or B then proc;
end;
…
Just(DOIT);
← →
12 © (2010-05-13 15:43) [30]RWolf ©
не, у меня это на php, тут так упростил просто
← →
12 © (2010-05-13 15:49) [31]чтоб не путать народ. Все, спасибо, решил вообще ничего не менять..
мне сдать проект работы с БД надо на php
но сначала пишу ее на delphi, и если все начинает работать без глюков, начинаю на web морду переделывать
все. можно далее калякать, кому охота :)
← →
kernel © (2010-05-13 16:07) [32]
> 12 © (13.05.10 15:14) [27]
Я обычно первую скобку ставлю на той же строке, где и условие - небольшая экономия места и достаточно красиво смотрится. E.g.,if ($host == "yandex.ru") {
if VOtpuske("Platon Shukin") {
DoHostDDoS("yandex.ru");
pobeg = TRUE;
return StatiyaUKRFandSrok(pobeg);
} else {
pobeg = FALSE;
return IERR_PLATON_NEVOTPUSKE;
}
}
← →
han_malign (2010-05-14 10:48) [33]
> not A or B
- импликацию можно выразить -(A <=/*меньше или равно*/ B)
естественно о коротких булевых вычислениях можно забыть, но если A,B - переменные - это немного эффективнее (если A == true с большой вероятностью)
← →
12 © (2010-05-14 13:48) [34]
> han_malign (14.05.10 10:48) [33]
Логично..
Согласен присвоить самое красивое решение.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.063 c