Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.53 MB
Время: 0.063 c
3-1241011773
worldmen
2009-04-29 17:29
2010.08.27
Возвратить ID вставленной записи


2-1274169749
Sergey2
2010-05-18 12:02
2010.08.27
Перехватить ошибку при выполнении хранимой процедуры


11-1221347021
Лотос
2008-09-14 03:03
2010.08.27
Папка из OpenSaveDialog


2-1270733493
Виктор
2010-04-08 17:31
2010.08.27
DBGrid и DBEdit


2-1267876445
worldmen
2010-03-06 14:54
2010.08.27
Поиск пикселя в картинке.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский