Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Чернов Шафеева.doc
Скачиваний:
47
Добавлен:
21.05.2015
Размер:
1.39 Mб
Скачать

Процедуры преобразования

STR(x[:w[:n]], Var s:string) преобразует числовое значение x в строковое s, x может быть переменной или выражением целого или вещест­венного типа. Для переменной x может быть указана ширина поля w, кото­рое она занимает, а также n  количество знаков после десятичной точ­ки. Параметры [:w[:n]] не обязательны. Если параметр n отсутствует для вещественного типа, то используется экспоненциальное представле­ние. Если w больше, чем реальное количество знаков в числе, то произ­водится выравнивание числа по правому краю. Для выравнивания по левому краю используется отрицательное значение w. Если в дробной части числа x знаков больше, чем указано в n, выполняется округление. Например:

str(6.66:8:1,s); {результат: S='6.7' c округлением}

str(6.66:-8:2,s); {результат: S='6.66'}

VAL(S:string,Var x,Var ErrCod) преобразует числовую строку S в числовую переменную x и формирует код ошибки ErrCod. Строка S не долж­на содержать незначащих пробелов, в том числе в начале и конце. ErrCod  целочисленная переменная. Она равна 0, если преобразование выполне­но. В противном случае (если преобразование невозможно) эта функция выдает код символа, на котором прекратилось преобразование, значение x в этом случае неопределено. Если в строке S имеется десятичная точка или символ E, то переменная x должна быть определена вещественной.

Например, результат преобразования VAL(1324,x,Cod) есть x=1324,Cod=0;

FILLCHAR(Var X; k:word; Value)  процедура заполнения k последо­вательных байт переменной Х значением Value. Х  многобайтовая пере­менная. Процедура служит для заполнения участков памяти ОЗУ одним и тем же однобайтовым значением.

2.8.5. Перечислимый тип

Перечислимый тип  это тип данных, в котором количество всех воз­можных значений конечно и определяется набором идентификаторов.

К предопределенным перечислимым типам относятся: Boolean, Byte, Char, Word (номера элементов в них 0,1,...), а также другие целые ти­пы: ShortInt, Int, Integer, LongInt (нумерация которых начинается с отрицательного числа). Эти типы можно расписать в ряд по значениям. Например:

TYPE

Boolean=(False,True);

Byte=(0,1,2,...,255);

ShortInt=(-128,-127,...,128).

В любом целом типе порядковый номер элемента определяется значе­нием числа.

В Турбо Паскале могут быть введены новые нестандартные типы. Для этого в разделе TYPE указывается имя типа и в круглых скобках, перечис­ляются значения, которые могут принимать элементы данного типа:

TYPE

<имя типа1>=(<значение1>,...,<значениеN>);

<имя типаK>=(<значение1>,...,<значениеM>);

Перечислимые данные должны иметь синтаксис идентификаторов, поэтому не могут перечисляться цифры и символы. Один и тот же идентификатор можно использовать только в определении одного перечислимого типа.

Пример: TYPE

TEST=(test1,test2,...,test5);

BOOLEAN3=(False_,Noinfo,True_);

в типе BOOLEAN3 для моделирования трехзначной логики видоизменены уже задействованные в BOOLEAN имена False и True.

Первый элемент всегда имеет номер 0. Максимальное количество эле­ментов в одном перечислимом типе равно 65535.

После описания новых типов и их значений могут вводиться перемен­ные данных типов. Например:

Var

T1,T2:TEST;

B1,B2:BOOLEAN3;

Begin ...

for T1:=test1 to test5 do <оператор>;

...

End.

Для работы с перечислимыми типами определены общепринятые функции Ord, Pred и Succ:

Ord(test1)=0, Ord(test5)=4,

Ord(False_)=0, Ord(True_)=2,

Pred(True_)=Succ(False_)=Noinfo.

Обратной функции для извлечения значения по его порядковому номеру в языке нет, хотя выражение вида

X:=<ИмяПеречислимогоТипа>(номер значения)

запишет в Х значение, соответствующее порядковому номеру элемента пе­речисления. Например, запись T1:=TEST(2) эквивалентна Т1:=test3.

Поскольку перечислимые значения упорядочены, их можно сравнивать:

True_ > Noinfo; test2 > test1.

Элементы разных типов сравнивать нельзя.

Перечислимые типы обладают рядом преимуществ:

1) улучшается числовая читаемость программы;

2) более четко проводится контроль значений;

3) перечислимые типы имеют компактное машинное представление.

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