Введение в язык паскаль. Общая характеристика языка паскаль, страница 9

Раздел операторов тела программы задает те действия, которые должны быть выполнены по данной программе. Этот раздел начинается служебным словомbegin и заканчивается служебным словомend - эти слова играют роль операторных скобок. Внутри этих скобок задается последовательность операторов, отделенных друг от друга разделителем " ; ". Выполнение раздела операторов (а тем самым и программы) начинается с выполнения первого по порядку оператора - таковым в нашей программе является оператор процедуры. Этот оператор состоит из имени read стандартной процедуры (поэтому в программе описание этой процедуры отсутствует), за которым в круглых скобках перечисляются фактические параметры, к которым должна применяться эта процедура. Выполнение этого оператора влечет последовательное чтение из файла input двух очередных чисел, которые присваиваются в качестве текущих значений переменным А и В соответственно. В качестве фактических параметров процедуры read могут быть использованы переменные — целого, вещественного и литерного типа.

Чтобы знать, при каких именно исходных данных выполнялась программа, введенные исходные данные целесообразно вывести на печать. Для вывода данных в паскале предусмотрены стандартные процедуры write и writeln.

Выводимые данные задаются с помощью фактических параметров, число которых (как и у процедуры read) может быть произвольным. Каждый фактический параметр должен быть либо выражением, значение которого (целого, вещественного, логического или литерного типа) подлежит выводу, либо явно заданной, последовательностью выводимых литер. Для вывода числового значения фактическим параметром должно быть арифметическое выражение, задающее правило вычисления этого значения. Частным случаем выражения является переменная - в этом случае на печать выводится текущее значение этой переменной. При этом выводимое значение предварительно преобразуется из внутреннего (машинного) представления во внешнее его представление — в последовательность литер, с помощью которой принято изображать число в десятичной системе счисления. Полученная при этом последовательность литер и печатается на бумаге (или высвечивается на экране дисплея).

Довольно часто возникает необходимость вывести на печать некоторый фиксированный текст (последовательность литер): заголовок таблицы, пояснение к выводимому числовому значению и т.д. Для достижения этой цели в качестве фактического параметра надо задать строку - явно заданную последовательность литер, взятую в апострофы. В этом случае на печать выводятся литеры, записанные между апострофами; сами же апострофы не печатаются - они служат лишь признаком того, что данный фактический параметр является строкой, в явном виде задающей выводимую последовательность литер. Обратим внимание на то, что в строке пробел является значащей литерой. Это обстоятельство использовано в нашей программе для того, чтобы отделить печатаемую строку литер от левого края бумаги или от предшествующего ей напечатанного числа.

Наличие в языке двух процедур вывода связано со следующим обстоятельством.

Предполагается, что выводимые данные, представленные строкой литер, предварительно накапливаются в некотором буфере вывода, для размещения которого отведен определенный участок памяти машины (к началу выполнения программы этот буфер считается пустым). Размер этого буфера языком не определен, но в каждой реализации языка этот размер зафиксирован, так что зафиксирована и максимальная длина строки литер, которая может храниться в буфере.

По процедуре write (писать) литеры, представляющие выводимые данные, последовательно размещаются в свободной части буфера. По заполнении буфера сформированная в нем строка литер фактически выводится на печать, буфер очищается и начинается формирование очередной выводимой строки. Таким образом, при выполнении оператора процедуры write на печать выводятся только полные строки. Если же последняя порция подлежащих выводу данных лишь частично заполняет буфер вывода, то эта порция не будет выдана на печать по данному оператору процедуры. Для устранения неудобств, которые могут возникнуть в связи с этим обстоятельством, предусмотрена стандартная процедура без параметров writein (от слов write и line) - эта процедура служит для вывода на печать текущего содержимого буфера независимо от степени его заполнения. В частности, если к моменту выполнения оператора процедуры writein буфер был пуст, то на бумагу АЦПУ будет выведена пустая строка литер, т.е. будет осуществлен пропуск чистой строки на бумаге.