begin
var n := ReadInteger('n =');
var a := ArrRandom(n, -10, 99);
a.Println;
var b := a.Select((v,i) -> (i + 1) * v).ToArray;
b.Println;
end.
Если СПТ умеет автоматически строить оглавление документа, да ещё размещать его как в конце, так и в начале по желанию пользователя, то это уже не форматер. А если СПТ позволяет подготовить на экране или включить в документ рисунок, выполненной другой программой, то независимо от плюсов и минусов в других графах перечня операций это — настольное издательство.
Такая классификация удобна пользователю-покупателю. Но и она не отражает сути вопроса, так как разработчики сложных систем, особенно в процессе развития удачных версий, стремятся привлечь покупателя «экзотическими» возможностями. При этом система, как будет показано ниже, не переходит в другой класс, но уловить это по перечню операций крайне трудно.
Итак, единого классификационного признака нам пока обнаружить не удалось. Но может быть этого и не нужно пользователю, к тому же только начинающему работать и жаждущему скорее приступить к делу, чем выслушивать «парламентские прения»? Говорят, «скупой (в данном случае — на время чтения) платит дважды», а конструктивная классификация имеет не абстрактный смысл, но позволяет оценить предполагаемую покупку не только по красоте упаковки…
Сначала, не заботясь о различиях других классов систем подготовки текстов, попробуем «отсечь» форматеры. В словаре [7] можно найти следующие определения:
V«Форматер (formatter)1 — программа или часть системы подготовки текстов, выполняющая форматирование. См. тж. text formatting.»…
«Text formatting (форматирование текста) — в системах подготовки текстов — преобразование текста в вид, в котором он должен печататься: формирование абзацев, центрирование заголовков, выравнивание полей, разбиение на страницы.»
Var
S:real;
n:integer;
Begin
S:=0;
Write('n = ');
ReadLn(n);
For n:= 1 to n do
S:=S+n/(n+1);
WriteLn('S = ',S)
End.