Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
почему-то дома на улицах нумеруют с 1
этажи в зданиях (обычно) с 1
комнаты с 1
ордера почему с 0?
А часы, минуты и секунды нумеруют с 0.
А часы, минуты и секунды нумеруют с 0.
так и же скорость и др величины
потому что 0 на спидометре имеет физический смысл - нулевая скорость
а нулевой ордер это нонсенс
в человеческом языке принято говорить "во-первых", "во-вторых" ...
кто-нибудь слышал чтобы говорили "в-нулевых"?
...........
все равно приходится единицу из TotalOrders() вычитать
не понимаю эту упертость кто говорит что с нуля удобнее
равно как и из ArraySize единицу вычитать
в чем удобство?
вообще тема все больше напоминает сборник анекдотов про программистов
не хочу никого обидеть если что
вот например
-- программист спрашивает коллегу -- одолжи тысячу до зарплаты
-- бери уж 1024 для ровного счета
не убедительно
каковы преимущества счета с 0 ?
для человека, не для машины
Как-то и не ставил цели кого-то убеждать, главное, что сам убедился. Для этого надо покодить всякие сложные алгоритмы с массивами.
да и я тоже своего мнения не навязываю
когда мне пришлось работать с матрицами я видел что часто удобно чтобы сдвиг совпадал с его индексом элемента если в цикле перебирать
но было и множество противоположных примеров когда интуитивно проще чтобы последний индекс был равен размерности
или вот такой пример: for(int i=0; i<variables+constants; i++)
здесь перебор переменных и констант, было бы интуитивно удобнее чтобы i=variables+1 означало переход в область констант
то есть по числу переменных + 1 - значит переменные закончились, начались константы - все просто
но нет - приходится помнить убавлять на единицу (либо отдельно делать перевод номера переменной в индекс массива)
так что не все так однозначно
да и я тоже своего мнения не навязываю
когда мне пришлось работать с матрицами я видел что часто удобно чтобы сдвиг совпадал с его индексом элемента если в цикле перебирать
но было и множество противоположных примеров когда интуитивно проще чтобы последний индекс был равен размерности
или вот такой пример: for(int i=0; i<variables+constants; i++)
здесь перебор переменных и констант, было бы интуитивно удобнее чтобы i=variables+1 означало переход в область констант
то есть по числу переменных + 1 - значит переменные закончились, начались константы - все просто
но нет - приходится помнить убавлять на единицу (либо отдельно делать перевод номера переменной в индекс массива)
так что не все так однозначно
Потому что вы никак не можете отойти от школьной математики с отсчетом от единицы.
При отсчете от 0 не требуется помнить ни о каких единицах, все складывается само собой чудесным образом.
Все просто и наглядно:
for(int i=0; i<variables; i++) {}
for(int i=variables; i<variables+constants; i++) {}
или
for(int i=0; i<variables+constants; i++){if(i<variables){}else{}}
Если вдруг потребовался отсчет от 1, значит в алгоритме что-то не так.
так и же скорость и др величины
потому что 0 на спидометре имеет физический смысл - нулевая скорость
а нулевой ордер это нонсенс
в человеческом языке принято говорить "во-первых", "во-вторых" ...
кто-нибудь слышал чтобы говорили "в-нулевых"?
...........
все равно приходится единицу из TotalOrders() вычитать
не понимаю эту упертость кто говорит что с нуля удобнее
равно как и из ArraySize единицу вычитать
в чем удобство?
Кто вас заставляет говорить о "нулевых"? Говорите как вам удобно, о первых например. Но не забывайте об индексации.
OrdersTotal() выдаст вам 10, если количество открытых позиций == 10. Если вы вычитаете потом единицу, то вносите ошибку в расчёты.
ArraySize() выдаст вам 10 если массив имеет 10 ячеек. Если вы вычитаете потом единицу (не для обращения к ячейке по индексу, а для манипуляций с размером массива), то вносите ошибку в расчёты.
Количество ордеров вам выдаётся в привычном для вас формате. Если их 10, то и получите 10. А вот при обращении к элементу массива по индексу, нужно не забывать о начале с нуля.
for(int i=0; i<variables+constants; i++){if(i<variables){}else{}}
вот в этом самом месте теряется физический смысл переменной i
я не понимаю как вы можете всерьез всё это говорить
это же противоестественно считать с нуля
в древнем вавилоне считали по 12 но ловкие евреи придумали десятичную систему потому что 10 пальцев на руках и до сих пор все пользуются
римляне придумали ужасные цифры, но сообразительные арабы сперли у индусов нормальные цифры и это прижилось
люди повсеместно считают с 1 и только маленький процент живут не так как все
например int n=OrdersTotal();
тогда было бы совершенно легко и интуитивно понятно for(i=1; i<=n; i++) {OrderSelect(i,.......);} // если бы нумерация была нормальной человеческой
и физический смысл переменной i прост и ясен как солнечный свет: выбрал первый ордер, выбрал второй, третий... пока не дошел до последнего
в любой момент можно вывести переменную i и по её значению сказать с каким ордером работаем и без всяких сдвигов
вот например функция void DisplayChart(int draw_bars) - отрисовывает draw_bars последних баров
чтобы обратиться к первому бару в индикаторном буфере приходится вычитать 1: draw_bars-1
просто каждый раз лишнее действие и морока помнить это
почему-то дома на улицах нумеруют с 1
этажи в зданиях (обычно) с 1
комнаты с 1
ордера почему с 0?
Этажи в зданиях? Это - где как. То что у русских называется "первый этаж", у немцев называется "эрдгешосс", второй этаж у немцев называется "эрсте шток". В школе это вызвало у меня культурный шок, который потом прошёл - есть много друг Горацио...
У англичан кое-где не бывает 13-х номеров, что домов, что квартир.
У ордеров нулевого тикета не бывает. А то что счёт с нуля, так про это в документации специально сказано.
Хотите программировать - программируйте по правилам программистов.