# Глава 4. Последовательности Ранее уже было указано, что строка — это последовательность символов. **Nim** также поддерживает последовательности произвольного типа, называемые `seq`. Например, последовательность целых чисел записывается как `seq[int]`, а последовательность объектов `Point` — как `seq[Point]`. Мы хотим иметь возможность рисовать не только отдельные пиксели. Процедура `putPixels` позволяет это сделать: ```nim proc putPixels(points: seq[Point]; col: Color) = # 1 for p in items(points): # 2 pixels.putPixel p.x, p.y, col # 3 putPixels(@[Point(x: 2, y: 3), Point(x: 5, y: 10)], Gold) # 4 ``` - 1 `putPixels` принимает список точек. - 2 Итератор `items` позволяет перебирать параметр `points`. - 3 Каждый нарисованный нами пиксель имеет один и тот же цвет `col`. Вызов процедуры `putPixel` выполняется из модуля `pixels`. Как можно видеть, идентификатор можно дополнить указанием модуля, в котором он был объявлен. Иногда это улучшает читаемость кода. - 4 Вызов новой процедуры `putPixels` с помощью последовательности `@[Point(x: 2, y: 3), Point(x: 5, y: 10)]`. Последовательность можно создать с помощью `@[...]`. Пустая последовательность — в виде `@[]`. Последовательности обеспечивают произвольный доступ: доступ к `i`-му элементу можно получить через `s[i]`. Индексация начинается с 0. Такое же обозначение доступно для строк.