Типы переменных
Типы могут быть простыми (элементарными):
|Целые| |Символьные(Литерные)| |Вещественные|
а также сложными:
|Ограниченные| |Перечисляемые| |Булевские| |Строковые| Элементарные типы объявляются в разделе var. Сложные же объявляются в разделе types и используются для описания переменных в разделе var.
Типы |
Диапазон допустимых значений |
Shortint |
[-128, 127] |
Integer |
[-32768, 32767] |
Longint |
[-21 47483648, 21 47483647] |
Byte |
[0, 255] |
Word |
[0, 65535] |
Выбор типа зависит от диапазона возможных значений переменной. Разнообразие поощряет разработку программ, экономно расходующих память. Это особенно важно в случае конструирования составных типов ( массивов, записей, файлов), состоящих из целочисленных компонент. Наверх
Эти типы задаются самим программистом. Это во многих случаях повышает надежность программ. Пример:
type
Index = 1..25;
var
i : Index;
{переменная принимает значения}
{только в диапазоне от 1 до 25}
т.е. при попытке присвоения i : = 30 компилятор выдаст ошибку. Включение проверки на корректность - директива $R Наверх
Символьный (Литерный) тип |
Представляют собой упорядоченное множество из 256 символов ASCII. Значение занимает 1 байт и представляет собой символ:
var
c:char;
begin
c:='c';
c:=#100;
{т.е. равна 'd'если использовать}
{символы ASCII-таблицы}
end.
Наверх
Некие константы последовательно нумеруются целыми числами, начиная с 0, и порядковый номер константы становится ее внутренним представлением.
Пример
Type Month=(January, February,
March, April, May, June, July,
August, September, October,
November, December);
Var m: month;
...
for m:=September downto March do
case m of
March..May :...
June, Septembr:...
...
end;
Наверх
Имеет 2 возможных значения - true и false. Для внутреннего представления используется число 0 (false) и 1 (true) размером 1 байт.
var
f,t: byte;
...
t : = TRUE;
f : = (a mod 2);
{=TRUE,если a-четное число}
...
Наверх
Типы |
Диапазон допустимых значений |
Значащие цифры |
Real |
2.9*10-39 .. 1.7*1038 |
11-12 |
Single |
1.5*10-45 .. 3.4*1038 |
7-8 |
Double |
5.0*10-324 .. 1.7*10308 |
15-16 |
Extended |
3.4*10-4932 .. 1.1*104932 |
19-20 |
Comp |
-2*1063+1 .. 1.7*1063-1 |
19-20 |
Значения могут быть в привычном виде 0.234 или в виде мантиссы и порядка (если нет указания на форматирование представления):
3.141592=.3144592 E 01; 0.0001=.1 E -03; Тип real непосредственно обеспечивается компилятором Pascal. Доступ к другим типам обеспечивается через директиву {$N+} или {$E+}. Иначе будет выдаваться следующее сообщение - "Must be in 8087 mode to compile this". Первая включает режим обработки типа real сопроцессором, как extended; вторая - эмулирует работу сопроцессора. Пример ошибочного кода:
var
R : single;
begin
R : = 0.23;
end.
Наверх
Данный тип сложный, может содержать текст, представляет собой набор литер.
var
S1 : string[20]; {S1 - строка длиной до 20 символов}
S2 : string; {S2 - строка может содержать до 255 символов
один символ - служебный, содержит информацию о длине строки
идентична записи S: array[1..256] of char;}
...
S1: = 'text';
S2: = '2+2=4';
...
S1: = '2002 год';
Данный тип может динамически изменять длину, имея похожую на массив структуру. См. раздел Пример
В системе Turbo Pascal имеется несколько полезных стандартных процедур и функций, ориентированных на работу со строками.
- Length ( S : string ) : integer Функция возвращает в качестве результата значение текущей длины строки-параметра.
- Concat ( si, [s2, ..., sn] : string ) : string Функция выполняет слияние строк-параметров, которых может быть произвольное количество. Каждый параметр является выражением строкового типа. Если длина результирующей строки превышает 255 символов, то она усекается до 255 символов. Данная функция эквивалентна операции конкатенации "+" и работает немного менее эффективно, чем эта операция.
- Copy ( S : string;Index : integer; Count : integer ) : string Функция возвращает подстроку, выделенную из исходной строки S, длиной Count символов, начиная с символа под номером index.
- Delete ( var S : string; Index, Count : integer ) Процедура удаляет из строки-параметра S подстроки длиной Count символов, начиная с символа с номером Index. Insert ( Source : string;
- Insert ( Source : string; var S : string; Index : integer ) Процедура предназначена для вставки строки Source в строку s, начиная с символа Index этой строки.
- Роs ( Substr, S : string ) : byte Функция производит поиск в строке s подстроки Substr. Результатом функции является номер позиции подстроки в исходной строке.Наверх
-
Чтобы получить код внутреннего представления символьного, булевского или перечислимого типов, нужно к значению такого типа применить операцию преобразования. W := byte(S) ;
-
Несколько дополнительных замечаний по поводу перечислимых типов. Кроме операций сравнения, для значений перечислимых типов определены стандартные функции Pred и Succ. Они вызываются с одним операндом и возвращают значение, предшествующее значению операнда в множестве типа или следующее за ним. (Эти функции определены для всех дискретных типов, но для перечислимых они являются единственными допустимыми операциями). В версии 7.0 языка Turbo Pascal появились две новые стандартные функции Low и High, позволяющие получать граничные значения перечислимых (и некоторых других) типов. Эти функции очень удачно дополняют функции Pred и Succ.
(c) http://hosting.ulstu.ru/ip/