11. Простые типы, определяемые пользователем
Любой тип, вводимый в рассмотрение пользователем, можно описать непосредственно при описании переменных или этому типу можно присвоить имя в разделе описания типов, а затем использовать имя типа при описании переменных. Для того чтобы отличать имена типов от имен других программных объектов, можно начинать имя типа с префикса t_.
Раздел описания типов:
Идентификатор имя типа. Описание типа определяется правилами языка для каждого вида типов.
Из простых типов, определяемых пользователем, рассмотрим интервальные и перечисляемые. Указательный тип будет рассмотрен ниже.
Ввод числовых данных
Перед набором числа допускается набор пустых символов (пробел, табуляция, переход к новой строке). После ввода числа должен быть введен хотя бы один пустой символ, в противном случае произойдет ошибка ввода. Разделителями при последовательном вводе чисел являются пустые символы. Пустые символы, предшествующие числу, считываются из буфера, но игнорируются. Затем считывается число, и его значение присваивается соответствующей переменной. Пустой символ после числа служит только признаком конца считывания, но он остается в буфере ввода, и с него начнется следующее считывание.
Пример 1.
var n:word; Набрать значенияnиrможно в одной
r :real; строке, ,
begin или в разных строках,
read(n,r);
... {операторы} .
end.
СТАНДАРТНЫЙ ВЫВОД
Вывод на дисплей выполняют процедуры writeиwriteLn.
Синтаксическая диаграмма вызова процедуры write:
Процедура writeвычисляет и выводит на экран значения выражений, перечисленных в качестве параметров. Выражения могут бытьчисловыми,символьными,логическимиистроковыми.
В
12 3 k
w
123k
12 3 k
Значения типа realвыводятся в форме с плавающей точкой в следующем виде:
(| )<цифра>.<цифра>{<цифра>}E(+|)<цифра><цифра> (1)
К
1.2345000000E+02
write(123.45) выведет .
Процедура writeLnвыполняется так же, как иwrite, но после вывода значений переводит курсор в начало новой строки.WriteLnможно использовать и без параметров для перехода к новой строке.
Выбирающий оператор
В Паскале два вида выбирающего оператора: условный оператор и оператор переключатель.
1. Условный операториспользуется при кодировании развилок, то есть для организации бинарного ветвления.
При отсутствии ветви еlse условный оператор будем называть неполным. После ключевых словthen и еlse синтаксис требует наличия только одного оператора. Если же по какой-либо ветви нужно выполнить несколько операторов, то следует использовать составной оператор. Перед еlse точка с запятой недопустима, так как в этом случае междуthenиelseбудут два оператора, один из которых пустой.
Если оператор, выполняемый по ветви thenили еlse, является условным, то говорят о вложенных условных операторах. В случае вложенных условных операторов каждое еlse относится к ближайшему предшествующемуthen.
Примеры вложенных условных операторов(каждоеelse рекомендуется располагать под соответствующим then):
a) Оператор присваивает переменнойmaxmaximum{a,b,c}:
if a>b then if a>c then max:=a
else max:=c
else if b>c then max:=b
elsemax:=c;
б) Оператор, эквивалентный приведенной слева развилке, имеет вид
if a>b then
begin
if a>c then a:=0
end
elsea:=1;
В приведенном примере вложенный условный оператор неполный, поэтому он заключен в операторные скобки. При отсутствии операторных скобок неполным будет внешний оператор.