ВУЗ:
Составители:
Рубрика:
17
2.7. Повторы с ограничением. Функция генерации после-
довательностей
Генератор «с перезарядкой» |e позволяет генерировать все
значения e, затем происходит реинициализация и процесс повто-
ряется бесконечно.
Чтобы избежать бесконечного повторения процесса, исполь-
зуется ограничитель числа повторений: |e\n.
Например: every |(writes(7))\7 выведет 7777777,
так же, как и every (writes(|7\7)), и every i:=1 to 7 do writes(7).
Специальная функция seq() предназначена для генерации
бесконечных рядов значений
seq() генерирует 1,2,3,.............
seq(i) генерирует i,i+1,i+2........
seq(i,j) генерирует i+j,i+2j,i+3j..
every writes(" ",seq(2,2)\5) выведет 2 4 6 8 10
как и every writes(" ",seq(2,2))\5
2.8. Coevaluation – «Совычисления»
В общем виде совычисления представляются так:
e0(e1,e2,...,eN),
где e0 – выражение, вычисляющее номер выражения в скоб-
ках, которое генерирует значения, и может быть переменной, зна-
чение которой есть целое число, вычисляемое где-то в другом
месте программы. Действия остальных заключаются в активации
бэктрекинга.
«Вырожденная» форма:
(e1,e2,...,eN)
эквивалентна N(e1,e2,...,eN)
или (e1&e2&...&eN).
Пример:
procedure main()
K:=1
S:="qwertyu"
every writes(" ",K(!S,1 to 3))
write()
18
every writes(" ",(!S,1 to 3))
write()
every writes(" ",(!S & 1 to 3))
end
Выход:
q q q w w w e e e r r r t t t y y y u u u
1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
2.9. Множественные арифметические операции сравне-
ния
Такие операции, как a<b<c, Christopher относит к генерато-
рам. В связи с этим следует сказать об обычном в Icon'е програм-
мистском трюке. Если мы ходим выбрать наименьшее из x и y, то:
x:=x>y или x>:=y
2.7. Повторы с ограничением. Функция генерации после- every writes(" ",(!S,1 to 3))
довательностей write()
every writes(" ",(!S & 1 to 3))
Генератор «с перезарядкой» |e позволяет генерировать все
end
значения e, затем происходит реинициализация и процесс повто-
Выход:
ряется бесконечно.
qqqwwweeerrrtttyyyuuu
Чтобы избежать бесконечного повторения процесса, исполь-
123123123123123123123
зуется ограничитель числа повторений: |e\n.
123123123123123123123
Например: every |(writes(7))\7 выведет 7777777,
так же, как и every (writes(|7\7)), и every i:=1 to 7 do writes(7).
2.9. Множественные арифметические операции сравне-
ния
Специальная функция seq() предназначена для генерации
бесконечных рядов значений Такие операции, как ay или x>:=y
every writes(" ",seq(2,2)\5) выведет 2 4 6 8 10
как и every writes(" ",seq(2,2))\5
2.8. Coevaluation – «Совычисления»
В общем виде совычисления представляются так:
e0(e1,e2,...,eN),
где e0 – выражение, вычисляющее номер выражения в скоб-
ках, которое генерирует значения, и может быть переменной, зна-
чение которой есть целое число, вычисляемое где-то в другом
месте программы. Действия остальных заключаются в активации
бэктрекинга.
«Вырожденная» форма:
(e1,e2,...,eN) эквивалентна N(e1,e2,...,eN)
или (e1&e2&...&eN).
Пример:
procedure main()
K:=1
S:="qwertyu"
every writes(" ",K(!S,1 to 3))
write()
17 18
Страницы
- « первая
- ‹ предыдущая
- …
- 7
- 8
- 9
- 10
- 11
- …
- следующая ›
- последняя »
