Скачать MetaTrader 5

Объясните на русском языке что дает функция while?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
asasusa
396
asasusa  
Объясните на русском языке что дает функция while? Читал в учебнике и понял только то что пока условие while истино, то выполняется программа внутри него, а как только условие стало ложным, то выполняется все что написано за пределами while, это так?
techno
1226
techno  
sss2019:
Объясните на русском языке что дает функция while? Читал в учебнике и понял только то что пока условие while истино, то выполняется программа внутри него, а как только условие стало ложным, то выполняется все что написано за пределами while, это так?

правильно понял.

asasusa
396
asasusa  

Тогда что за дребедень я написал?

int start()
{


int i = 0;
while(i < 5)
{
i++;
Alert("i Все еще меньше 5 и равно", i);
}
Alert("i уже равно 5");
return(0);


}
Вроде на каждом новом тике i должно становится больше на 1, и так до тех пор пока i не станет равным 5, а у меня на одном тике сразу прибавляется 5 значений вылазиет 5 сообщений, 

i Все еще меньше 5 и равно 1

i Все еще меньше 5 и равно 2

 i Все еще меньше 5 и равно 3

i Все еще меньше 5 и равно 4

 i уже равно 5

В чем проблема? 

Alexander
4156
Alexander  
sss2019:

В чем проблема?

В том что на каждом тике запускается функция start и переменная i обнуляется (инициализируется). Если не нужно её обнуления то объявите её статической переменной static или глобальной.

ЗЫ while это не функция, а оператор цикла. А цикл отрабатывает 5 раз как и положено.

techno
1226
techno  
while - Это цикл, он исходя из твоего условия повторяет операторы в своем теле 4 раза+1 после, поэтому и 5 сообщений выпадает
asasusa
396
asasusa  

Ну а вот еще такая штука.

int start()
{
int i = 1.3960;
while(Bid < i)
{

}
Alert("Цена выше уровня 1.3960");
return(0);
}

По идее пока цена ниже уровня 1.3960 ничего не должно происходить, а как только поднимется, то должно вылезти сообщение, а у меня наоборот! Что здесь неправильного?

asasusa
396
asasusa  
Techno:
while - Это цикл, он исходя из твоего условия повторяет операторы в своем теле 4 раза+1 после, поэтому и 5 сообщений выпадает
Значит даже на одном тике while будет прибавлять 1, до тех пор пока условие не станет ложным? Я то думал он с каждым тиком будет прибавлять 1,
Vadim Zhunko
5226
Vadim Zhunko  
Объявите переменную i на глобальном уровне.
Eugeni Neumoin
2097
Eugeni Neumoin  
goldtrader:
В том что на каждом тике запускается функция start и переменная i обнуляется. Если не нужно её обнуления то объявите её статической переменной static или глобальной.


Все равно при первом проходе цикла будут выведены все 5 значений.

techno
1226
techno  
sss2019:
Значит даже на одном тике while будет прибавлять 1, до тех пор пока условие не станет ложным? Я то думал он с каждым тиком будет прибавлять 1,
да, сразу на одном тике, для этого циклы и существуют.
Алексей Тарабанов
7327
Алексей Тарабанов  
sss2019:

Ну а вот еще такая штука.

int start()
{
int i = 1.3960;
while(Bid < i)
{

}
Alert("Цена выше уровня 1.3960");
return(0);
}

По идее пока цена ниже уровня 1.3960 ничего не должно происходить, а как только поднимется, то должно вылезти сообщение, а у меня наоборот! Что здесь неправильного?

double i=...
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий