Самообучение языку MQL5 с полного нуля - страница 42

 
MrBrooklin:

Продолжаю изучение языка программирования MQL5 и выкладываю код скрипта, который является продолжением одного задания со стороны участников данной темы. Скрипт проверил на всех режимах. Проблемы не выявлены. Для начала установил минимальное количество входных параметров. Код скрипта написан на английском языке, а комментарии к коду на русском языке, чтобы облегчить усвоение материала. В данном скрипте постарался всё расписать, как ранее и обещал, в изложении доступном для ученика 1-го класса школы программирования.

С уважением, Владимир.

ок

теперь делаем код алгоритмической логики более читаемым

он получается всего лишь в две строки:

if(have_time()>=Period_learning && have_time()!=0 && have_patience()==true)Print("Я выучу язык MQL5!");
else Print("Я не выучу язык MQL5!");

Здесь уже даже комментарии не нужны

 
Renat Akhtyamov:

ок

теперь делаем код алгоритмической логики более читаемым

он получается всего лишь в две строки:

if(have_time()>=Period_learning && have_time()!=0 && have_patience()==true)Print("Я выучу язык MQL5!");
else Print("Я не выучу язык MQL5!");

Здесь уже даже комментарии не нужны

Здравствуйте, Ренат! Согласен, сильно расписывать комментарии может и не стоит, но они помогут разобраться всем новичкам с нулевым уровнем знаний в программировании. Если бы эту работу, кто-нибудь сделал до меня, то обучение шло гораздо быстрее. Комментарии помогают самому быстрее запомнить свой же код. Дальше комментарии, возможно, будут короче.

С уважением, Владимир.

 
Roman Shiredchenko:


Код и логика у вас  верны. На мое ИМХО, я вчера смотрел, сам нулю сначала удивился, но потом фишку разности догнал... :-)

Здравствуте, Роман! Да, это последствия технического образования и логика мышления у меня немного другая, но Петер был прав по поводу нуля, поэтому изменил код скрипта.

С уважением, Владимир.

 
MrBrooklin:

Продолжаю изучение языка программирования MQL5 и выкладываю код скрипта, который является продолжением одного задания со стороны участников данной темы. Скрипт проверил на всех режимах. Проблемы не выявлены. Для начала установил минимальное количество входных параметров. Код скрипта написан на английском языке, а комментарии к коду на русском языке, чтобы облегчить усвоение материала. В данном скрипте постарался всё расписать, как ранее и обещал, в изложении доступном для ученика 1-го класса школы программирования.

С уважением, Владимир.

Проблемы с логикой остаются:

1. Функции должны что то вычислять. В данном случае, обе функции инициализируют глобальные переменные значением инпутных переменных и больше ничего не делают. То есть, если в условии поставите инпутные переменные - ничего не поменяется. 

2. Have_time равно Days_passed, которое задается пользователем. В условии написано: if(have_time() >= period_learning... который 500, и далее, написано && have_time() >0...   это логическая ошибка. Если have_time() больше-равно 500, то have_time уже больше нуля, следовательно, эта запись лишняя.

3. Результат вопроса выучу/не выучу не должен зависить только от инпута. Нужно придумать какую то переменную с неопределенным значением, которая будет влиять на расчеты независимо от Вашего желания. Иначе, никакого вопроса нет - что ввели, то и получили.


П.С. если запись have_time > 0 контроллирует т.образом значение peroid_lerning, на случай ввода отрицательного значения или нуля, то правильнее поставить в условии && period_learning > 0.
 
Fast235:

учите сперва работу со string переменными, у Дмитрия Федосеева, инфостринги сильно туманят разум на этапе изучений чужого кода,

в статье которую он разобрал, все понятно, и там же попутно научитесь части работы многих моментов, это я говорю как читатель большинства статей здесь, думаю больше меня здесь никто не прочитал еще)

Здравствуйте! Спасибо за совет. Статьи Дмитрия Федосеева читал и читаю, но пока тяжело дается обучение по его статьям, т.к. базовой подготовки у меня нет. Надеюсь, что дальше будет легче. Кстати, написание скрипта Learning_MQL5.mq5 сильно помогло мне понять, что такое функция, для чего она нужна и как она создается!

С уважением, Владимир.

 
Реter Konow:
Проблемы с логикой остаются:

1. Функции должны что то вычислять. В данном случае, обе функции инициализируют глобальные переменные значением инпутных переменных и больше ничего не делают. То есть, если в условии поставите инпутные переменные - ничего не поменяется. 

2. Have_time равно Days_passed, которое задается пользователем. В условии написано: if(have_time() >= period_learning... который 500, и далее, написано && have_time() >0...   это логическая ошибка. Если have_time() больше-равно 500, то have_time уже больше нуля, следовательно, эта запись лишняя.

3. Результат вопроса выучу/не выучу не должен зависить только от инпута. Нужно придумать какую то переменную с неопределенным значением, которая будет влиять на расчеты независимо от Вашего желания. Иначе, никакого вопроса нет - что ввели, то и получили.

Здравствуйте, Петер! Знал, что у Вас возникнут вопросы, особенно по пункту 2.

Здесь код не лишний, а весьма продуманный. Если вдруг попробуете убрать из кода скрипта && have_time()!=0 (Вы его прописали, как  && have_time()>0), то при входных параметрах Period_learning=0 и Days_passed=0 будет результат "Я выучу язык MQL5!", а это не допустимо с точки зрения догики!

По другим пунктам согласен - есть над чем подумать.

С уважением, Владимир.

 
MrBrooklin:

Здравствуйте, Петер! Знал, что у Вас возникнут вопросы, особенно по пункту 2.

Здесь код не лишний, а весьма продуманный. Если вдруг попробуете убрать из кода скрипта && have_time()!=0 (Вы его прописали, как  && have_time()>0), то при входных параметрах Period_learning=0 и Days_passed=0 будет результат "Я выучу язык MQL5!", а это не допустимо с точки зрения догики!

По другим пунктам согласен - есть над чем подумать.

С уважением, Владимир.

Ок, посмотрите: функция have_time(), по сути, возвращает значение инпутной переменной Days_passed. Если Days_passed поставить ноль, то запись if(...have_time()!=0...   не пропустит нас в условие, НО, если Period_learning поставить ноль, в условие мы пройдем. Поэтому, запись Period_learning >0 одновременно защитит нас от нуля в переменной Days_passed, и от нуля в переменной Period_learning, а запись if(... have_time()!=0 ... только от нуля в Days_passed.)
 
Реter Konow:
Ок, посмотрите: функция have_time(), по сути, возвращает значение инпутной переменной Days_passed. Если Days_passed поставить ноль, то запись if(...have_time()!=0...   не пропустит нас в условие, НО, если Period_learning поставить ноль, в условие мы пройдем. Поэтому, запись Period_learning >0 одновременно защитит нас от нуля в переменной Days_passed, и от нуля в переменной Period_learning, а запись if(... have_time()!=0 ... только от нуля в Days_passed.)

Понятно.

С уважением, Владимир.

 
MrBrooklin:

Понятно.

С уважением, Владимир.

В главном, безусловно, Вы сделали серьезный шаг вперед - освоили и начали использовать функции, с чем Вас конечно нужно поздравить!)

Такими темпами скоро до трейлинга дойдете.

П.С. извините, что не поздоровался. Тут, на форуме обычно не здороваются, что конечно не стоит воспринимать как проявление неуважения. Помню, около пяти лет назад модератор сделал замечание, когда я здоровался с форумчанами. )) С тех пор, не здороваюсь здесь, только в личке. Еще раз сорри.)))
 
Реter Konow:
В главном, безусловно, Вы сделали серьезный шаг вперед - освоили и начали использовать функции, с чем Вас конечно нужно поздравить!)

Такими темпами скоро до трейлинга дойдете.

П.С. извините, что не поздоровался. Тут, на форуме обычно не здороваются, что конечно не стоит воспринимать как проявление неуважения. Помню, около пяти лет назад модератор сделал замечание, когда я здоровался с форумчанами. )) С тех пор, не здороваюсь здесь, только в личке. Еще раз сорри.)))

Спасибо, Петер, за слова поддержки!

По поводу вежливого общения, особенно приветствия и пожелания всем хорошего дня и настроения. На мой взгляд на форуме этого очень не хватает. Уважительное отношение к собеседнику - это то, чему учили наше поколение ещё с советских времен. Если со стороны администрации сайта (форума) мне сделают замечание по поводу приветствия к участникам, то приму с сведению и буду следовать правилам.

С уважением, Владимир.

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