Циклы DO LOOP

 
AD Реклама Google — средство выживания форумов :)
+
-
edit
 

Balancer

администратор
★★★★★
Формат вызова:

...
DO
   ...
   ...
LOOP
...


Перед словом DO на стек кладутся конечное и начальное значение цикла. Эти числа при выполнении слова DO снимаются со стека (и кладутся на стек возврата - но это в стандарте не оговаривается)

Тело цикла выполняется хотя бы один раз.

Слово LOOP увеличивает на единицу переменную цикла, сверяет с конечным значением, и если занчения точно равны - завершает цикл. Иначе - повторяется тело цикла.

Если изначально стартове значения равны, то цикл получается бесконечным (реально - до переполнения целочисленной переменной, до тех пор, пока переменная цикла и конечное значение не сравняются).

Для избегания зацикливания, при возможном наличии на входе равных переменных, есть слово ?DO - полный аналог DO, за исключением дополнительной проверки. Если числа на старте равны, то цикл не выполняется ни разу.

Для работы с шагом цикла отличным от +1 существует слово +LOOP

Ему на вход требуется положить на стек шаг цикла. Шаг цикла может быть и отрицательным. Значения в конце цикла не обязательно должны совпасть - выход из цикла осуществляется, когда пересекается граница конечного значения.

Считать переменную цикла можно словом I



: test
	5 0 DO I . LOOP  распечатает 0 1 2 3 4
	0 0 ?DO I . LOOP  ничего не делает
	10 0 DO I . 2 +LOOP  распечатает 0 2 4 6 8
	10 0 DO I . 3 +LOOP  распечатает 0 3 6 9
	-10 0 DO I . -1 +LOOP  распечатает 0 -1 -2 -3 -4 -5 -6 -7 -8 -9
;
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

в начало страницы | новое
 
Поиск
Настройки






Твиттер сайта
Статистика
Рейтинг@Mail.ru
АвиаТОП
 
Яндекс.Метрика
website counter
 
free counters