636 Приложение. Обзоры языков
Листинг П.10 (продолжение)
23 read(infile, a[j]);
24 write(a[j]:10:2)
25 end;
26 writeln;
27 writeln('sum = ', sum(a,k):6:4);
28 readln(infile)
29 end
30 end.
Строка 1. main — это имя программы. Файл input ссылается на стандартный
файл ввода (обычно это клавиатура), output — на стандартный файл вывода (обычно
это экран монитора), а infile — на файл данных, который используется внутри
программы. Здесь необходимо упоминать только файлы, используемые в программе.
Строка 3. Определяется новый тип данных Vector, который представляет со
бой массив вещественных чисел с диапазоном изменения индекса от 1 до 99. И верх
няя, и нижняя границы массива всегда должны указываться.
Строки 4–6. Оператор var определяет глобальные переменные, используемые
в программе. В данном случае infile — это текстовый файл, содержащий входные
данные. Файлы input и output объявлять не требуется.
Строка 7. Объявляется функция sum. У нее имеются параметры v типа Vector
и n типа integer, передаваемые по значению. Если бы требовалось передавать па
раметры по ссылке, то в объявлении функции надо было бы написать, например:
var v: Vector. Функция sum возвращает значение типа real (вещественное число).
Строка 10. Комментарии в Pascal задаются в фигурных скобках.
Строка 13. Оператор for, в котором переменная цикла i изменяется от 1 до n.
Если тело оператора for состоит более чем из одного оператора, то всю последова
тельность операторов, составляющую тело цикла, требуется помещать между опе
раторами begin и end (см. строки 22–25).
Строка 14. Функция возвращает вычисленное значение простым его присваи
ванием имени функции.
Строка 17. Оператор reset открывает файл для ввода. В данном случае он свя
зывает файл sample.data с внутренним объектом данных infile. Если данные вво
дятся стандартным образом с клавиатуры, то этот оператор не нужен. Оператор
rewrite открывает файл для записи.
Строка 20. Здесь считывается первое значение из файла infile и сохраняется
в переменной k. Если бы ввод осуществлялся с клавиатуры, то имя файла можно
было опустить. Это — ввод в свободной форме. Pascal считывает символы до запя
той или пробела и пытается перевести прочитанные данные в целочисленный фор
мат. Если бы переменная k была символьного типа (char), то был бы прочитан только
один символ из файла ввода.
Строка 24. Значение элемента вектора записывается в стандартный файл вы
вода (то есть отображается на экране монитора), так как в операторе write первым
параметром не задано имя файла, в который следует записывать данные. Необяза
тельные члены 10:2 предписывают печатать 10 десятичных цифр числа, причем
две цифры отводятся под дробную часть. Если эти параметры не указаны, то Pascal
использует умалчиваемый формат представления десятичных чисел. Следующие
операторы write записывают числа в ту же строку вывода до тех пор, пока не будет
выполнен оператор writeln (строка 26).