Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А как быть в советнике, который реализует более сложную логику, например, такого бинарного дерева:
Ничего не надо делать - ясный и прозрачный код, ничего лишнего, оптимально как по быстродействию, так и по затратам умственных и физических усилий программиста. Студент, можете садиться - вам 5!!!:-)
Главное, чтобы форматирование было, тогда видно где что начинается, где что заканчивается.
Но и твой код можно сделать лаконичнее. Я не буду предлагать варианты, но тут явно повторяется одна и та же логическая конструкция, которую можно сделать функцией.
Без сомнений можно и лаконичнее и еще красивее. :-) Например, используя рекурсию. Но если, предположим, все процедуры в примере выполняют разные действия или отличаются наборами параметров, то мне очень интересно как вы это сделаете. В Си может быть, в MQL вряд ли.
Однако, повторяю еще раз вопрос, который спровоцировал Sart своим заявлением: можно ли это дерево if-ов переписать без вложений ? Ответ на него я пока так и не услышал. Кроме, конечно того, что написал Sart - надо менять логику. :-)
Все остальные замечания, при всей их справедливости, не в тему.
Любую конструкцию из вложенных if-ов можно написать с гораздо меньшим количеством вложений. Считаем, что condition уже объявлена и вычислена как bool. Конструкция
эквивалентна такой строчке: Если тип result другой - скажем, double:то эквивалентный код без вложений таков:
Если тип возвращаемых данных не существует, например:
то будет так:
а дальше я еще не придумал.
Конечно, я рассмотрел не все случаи, но принцип должен быть ясным.
Да ладно, Mathemat, это просто модельный пример.
И вопрос был адресован к Sart'у, но он уже от ответа ушел. Если вы не являетесь принципиальным борцом за торжество утверждения "Напишите код, скажем, с уровнем вложения 5, а я перепишу его Вам без вложений...", то не стОит тратить ни время, ни силы.
Переписать мой пример без вложений на самом дел очень просто. Достаточно написать 16 последовательных одинарных if-ов, в каждом из которых в условии будет сумма (&&) 4-х соответствующих операций сравнения, а исполняемым оператором будет соответствующая процедура. На языке медиков это называется удалять гланды через задний проход. :-)
Да ладно, Mathemat, это просто модельный пример.
И вопрос был адресован к Sart'у, но он уже от ответа ушел. Если вы не являетесь принципиальным борцом за торжество утверждения "Напишите код, скажем, с уровнем вложения 5, а я перепишу его Вам без вложений...", то не стОит тратить ни время, ни силы.
Запрограммировать можно все что угодно, были бы идеи. Если программа приносит прибыль, значит, говорят, автор - хороший программист.
А посмотрите на программу господина Решетова "Искуственный Интеллект". Да ведь эта программа, сама по себе, как программный продукт, не выносит никакой критики.
Она просто, с этой точки зрения, отвратительна. Но ведь никто и слова не сказал. А почему ? Потому, что идеи господина Решетова очень хороши.
Я, к примеру, сейчас, когда уловил суть всех возможностей этого языка, потерял к нему интерес и переключился на капитальное изучение теории: индикаторы, Волны Элиота и пр.
Когда появятся торговые идеи, тогда и будем программировать.
И еще - конечно, делать замечания на форуме с умным видом, легче чем кропотливо и по детски сидеть день за днем и штудировать теорию...Бывает такой грех и со мной , когда сильно устаю...
И еще, вот чтоя хочу сказать. Профессиональные программисты в своем большинстве , действительно, пишут плохие эксперты. А это происходит, именно от их любви к своему делу.
Они сидят месяцами вникая во все нюансы языка, и им это доставляет удовольствие. Мы все забываем зачем сюда пришли - ну очень интересно. Да так оно и есть - увлекательное дело.
С уважением - С.Д.
а я в последнее время вместо длинючих амперсандов (&&) делаю так:
фишка в том, что при изменении кода очень легко закоментировать условия..а ещё для bool можно использовать умножение:
но куча вложенных иф-ов будет быстрее, так так для длинных выражений считаются все сразу, сместо экономного выхода при первом же false...
А как быть в советнике, который реализует более сложную логику, например, такого бинарного дерева:
Ничего не надо делать - ясный и прозрачный код, ничего лишнего, оптимально как по быстродействию, так и по затратам умственных и физических усилий программиста. Студент, можете садиться - вам 5!!!:-)
Главное, чтобы форматирование было, тогда видно где что начинается, где что заканчивается.
правда не знаю, возможно ли такое в MQL, в Си, наверное, возможно.