ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »