Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.52 MB
Время: 0.044 c
3-1239426880
Роман
2009-04-11 09:14
2010.08.27
визуализация данных БД


15-1275628520
12
2010-06-04 09:15
2010.08.27
MSSQL2005, Что за прикол с датами..


6-1217592758
user
2008-08-01 16:12
2010.08.27
Как перебрать все файлы с FTP ?


6-1221941736
WBcodderW
2008-09-21 00:15
2010.08.27
WebBrowser, формы и JS кнопки


2-1267479305
worldmen
2010-03-02 00:35
2010.08.27
Turbo Pascal 7. Использование BlockWrite, BlockRead




   Наверх