Подскажите. Правильно ли будет работать... - страница 4

 
Yurixx:

Это вы все, господа, о совершенно простом выражении Integer'a

А как быть в советнике, который реализует более сложную логику, например, такого бинарного дерева:

if (x1>A)
{  if (x2>B)
   {  if (x3>C)
      {  if (x4>D) procedure_1(....);
         else procedure_2(....);
      }
      else
      {  if (x5>E) procedure_3(....);
         else procedure_4(....);
      }
   }
   else
   {  if (x6>F)
      {  if (x7>G) procedure_5(....);
         else procedure_6(....);
      }
      else
      {  if (x8>H) procedure_7(....);
         else procedure_8(....);
      }
   }
}
else
{  if (x9>I)
   {  if (x10>J)
      {  if (x11>K) procedure_9(....);
         else procedure_10(....);
      }
      else
      {  if (x12>L) procedure_11(....);
         else procedure_12(....);
      }
   }
   else
   {  if (x13>M)
      {  if (x14>N) procedure_13(....);
         else procedure_14(....);
      }
      else
      {  if (x15>O) procedure_15(....);
         else procedure_16(....);
      }
   }
}

А процедуры похожие?
 
Просто я обычно создаю массивы с параметрами, а код в процедурах одинаковый. Передаю в процедуру индекс массива (массивов). Уменьшается код, легче искать ошибки.
 
Yurixx:

Это вы все, господа, о совершенно простом выражении Integer'a

А как быть в советнике, который реализует более сложную логику, например, такого бинарного дерева:

 
         else procedure_16(....);
      }
   }
}

На мой взгляд, тут нужно переделывать логику. Программа не должна быть такой сложной.

На самом деле, если вникнуть, все программы довольно просты по своей логике.

С уважением - С.Д.
 

Вопрос же не в процедурах, а в том, чтобы это дерево if-ов записать, как грозился Sart, без вложений.

В простейших случаях это, конечно, возможно. Но в общем случае стремиться к этому ...

Я, например, не испытываю по отношению к таким структурам никаких предубеждений. Наоборот, грамотно записанная такая структура отлично проявляет логику. И отлаживать ее - никаких проблем. И исполняется быстрее чем сложные логические выражения или, тем более, процедуры в одну строку.

 
Yurixx:

Вопрос же не в процедурах, а в том, чтобы это дерево if-ов записать, как грозился Sart, без вложений.

В простейших случаях это, конечно, возможно. Но в общем случае стремиться к этому ...

Я, например, не испытываю по отношению к таким структурам никаких предубеждений. Наоборот, грамотно записанная такая структура отлично проявляет логику. И отлаживать ее - никаких проблем. И исполняется быстрее чем сложные логические выражения или, тем более, процедуры в одну строку.


Простейший вариант

// A<B && B<C
 
int i=0; 
if (X1>A) i++;
if (X1>B) i++;
if (X1>C) i++;
Я использую такой вариант.
 

ПризнАюсь честно, связи с моим примером не вижу.

В вашем случае если (X1>A && X1>B && X1<C) и если (X1>A && X1<B && X1>C) все равно i=2. И как же различить эти два варианта ?

 
Sart:
На мой взгляд, тут нужно переделывать логику. Программа не должна быть такой сложной.

На самом деле, если вникнуть, все программы довольно просты по своей логике.

С уважением - С.Д.

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

Если все программы, которые вы писали в своей жизни, просты по своей логике, то это не значит что просты ВСЕ программы. :-))

 
Нет, Yurixx, логику переделывать не обязательно. Но разбить всю программу на блоки (функции) размером не более 30-50 строк каждая вполне можно.
 
Mathemat:
Нет, Yurixx, логику переделывать не обязательно. Но разбить всю программу на блоки (функции) размером не более 30-50 строк каждая вполне можно.
Совершенно верно. Когда-то очень давно я работал в военной конторе и там одно из требований к исходным текстам программ заключалось в слудующем-

- исходный текст любой функции должен умещаться на странице А4.

А программы были не простыми , с нашими экспертами их не сравнить. ..

С уважением - С.Д.
 
Mathemat:
Нет, Yurixx, логику переделывать не обязательно. Но разбить всю программу на блоки (функции) размером не более 30-50 строк каждая вполне можно.


А разве я когда-то говорил обратное ?

Кстати, пример, который я привел, всего лишь пример. Просто стоит избегать необоснованных обобщений. Не правда ли ?

Причина обращения: