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

Вниз

Проще или красивее, не?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.08 c
2-1271157207
Sergey2
2010-04-13 15:13
2010.08.27
экспорт в excel


4-1236148613
ТЧеловек
2009-03-04 09:36
2010.08.27
Запуск второй копии приложения только для другого пользователя ?


11-1219838416
Maloric
2008-08-27 16:00
2010.08.27
OwnerDraw для ListView


15-1273351433
Игорь Шевченко
2010-05-09 00:43
2010.08.27
С днем победы!


8-1204756138
Rave4Life
2008-03-06 01:28
2010.08.27
Деформация изображения BMP