Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 13.doc
Скачиваний:
11
Добавлен:
20.11.2019
Размер:
858.62 Кб
Скачать

13.3. Оператор присваивания

Самым основным, фундаментальным оператором языка является оператор присваивания. С помощью оператора присваивания осуществляется преобразование информации. Он предназначен для вычисления нового значения некоторой переменной, а также для определения значения, возвращаемого функцией.

Он имеет вид:  < имя > := < выражение >

Имя слева от символа присваивания := является именем переменной, которой присваивается значение выражения, стоящего справа. Поэтому наряду со значением выражения важным атрибутом является его тип. Тип выражения в правой части оператора присваивания должен совпадать или быть совместимым с типом переменной из левой части. Компилятор на этапе синтаксического анализа программы осуществляет эту проверку - так называемый контроль типов. Допустимо присваивание переменным любых типов, за исключением типа File.

Root1 := Pi*(x - y)

Discriminant := Sqrt(b*b-4*a*c)/2/A

Index := Index + 1

Letter := Succ(Succ(Letter))

13.4. Операторы ввода и вывода

Для организации ввода – вывода данных в языке Pascal используются операторы – процедуры Write, Read, Writeln, Readln. С помощью этих операторов организуется ввод–вывод данных в/из файлы Input, Ouтput.

Текстовые файлы Input, Output представляются пользователю как текст, разбитый на строки и снабженный признаком конца текста и признаками концов строк. Каждая строка может содержать числа или символьные данные (т.е. строка состоит из нескольких данных типов Integer, Real, Сhar). Чтение/запись осуществляется через так называемый буфер файла. В момент обращения к файлу его буфер установлен на некоторое данное – элемент файла. Буфер файла может быть перемещен либо к следующему данному, либо к первому данному следующей строки.

Оператор Read(x) читает данное из Input в переменную х и перемещает буфер к следующему данному.

Оператор Writе(x) перемещает буфер в следующую позицию и пишет данное в Output из переменной х.

Оператор Readln(x) читает данное с новой строки из файла Input в переменную х.

Оператор Writеln(x) пишет данное с новой строки в Output из переменной х.

Оператор Readln без параметров реализует пропуск строки исходных данных (переход на следующую строку ввода).

Оператор Writеln без параметров реализует пропуск строки и переход к началу следующей строки.

Операторы ввода/вывода могут использоваться в более общей форме:

Read( <список переменных> ), Readln( <список переменных> )

Write( <список выражений или строк> ) Writeln( <список выражений или строк> )

Эта форма определяется синтаксическими диаграммами:

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

var rv, rs: real;

iw, ij: integer;

chc, chd: char;

................

read(rv, rs, iw, ij);

read(chc, chd);

Значения исходных данных при вводе с клавиатуры могут отделяться друг от друга пробелами и нажатием клавиш табуляции и <Enter>.

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

Вывод каждого значения в строку экрана происходит в соответствии с шириной поля вывода, определяемой конкретной реализацией языка. Форма представления значений в поле вывода соответствует типу переменных и выражений: величины целого типа выводятся как целые десятичные числа, действительного типа – как действительные десятичные числа с десятичным порядком, символьного типа и строки – в виде символов, логического типа – в виде логических констант true и false.

Оператор вывода позволяет задать ширину поля вывода для каждого элемента списка вывода. В этом случае элемент списка вывода имеет вид А:К, где А – выражение или строка, К – выражение либо константа целого типа. Если выводимое значение занимает в поле вывода меньше позиций, чем К, то перед этим значением располагаются пробелы. Если выводимое значение не помещается в ширину поля К, то для этого значения будет отведено необходимое количество позиций.

Для величин действительного типа элемент списка вывода может иметь вид А:К:М, где А – переменная или выражение действительного типа, К – ширина поля вывода, М – число цифр дробной части выводимого значения. К и М – выражения или константы целого типа. В этом случае действительные значения выводятся в форме десятичного числа с фиксированной точкой.

Пример записи операторов вывода:

. . . . . . . . . . . .

var ra, rb: real; ip,iq:integer;

br, bs: boolean;

cht, chv, chu, chw: char;

. . . . . . . . . . . .

writeln(ra, rb:10:2);

writeln(ip, iq:8);

writeln(br, bs:8);

writeln(cht, chv, chu, chw);