Для обработки ЭВМ данные представляются в виде величин и их совокупностей. С понятием величины связаны такая важная характеристика, как ее тип.
Тип определяет:
- возможные значения переменных, констант, функций, выражений, принадлежащих к данному типу;
- внутреннюю форму представления данных в ЭВМ;
- операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.
В языке Паскаль тип величины задают заранее. Все переменные, используемые в программе, должны быть объявлены в разделе описания с указанием их типа. Обязательное описание типа приводит к избыточности в тексте программ, но такая избыточность является важным вспомогательным средством разработки программ и рассматривается как необходимое свойство современных алгоритмических языков высокого уровня.
Иерархия типов в языке Паскаль такая: —>
- Простые
- Порядковые
- Целые
- Логические
- Символьные
- Перечисляемые
- Интервальные
Простые типы данных
В таблице приведены простые типы данных Турбо Паскаль, объем памяти, необходимый для хранения одной переменной указанного типа, множество допустимых значений и применимые операции.
Идентификатор | Длина (байт) | Диапазон значений | Операции |
Целые типы | |||
2 | -32768..32767 | +, -, /, *, Div, Mod, >=, , |
|
1 | 0..255 | +, -, /, *, Div, Mod, >=, , |
|
2 | 0..65535 | +, -, /, *, Div, Mod, >=, , |
|
1 | -128..127 | +, -, /, *, Div, Mod, >=, , |
|
4 | -2147483648..2147483647 | +, -, /, *, Div, Mod, >=, , |
|
Вещественные типы | |||
6 | 2,9×10 -39 — 1,7×10 38 | +, -, /, *, >=, , |
|
4 | 1,5×10 -45 — 3,4×10 38 | +, -, /, *, >=, , |
|
8 | 5×10 -324 — 1,7×10 308 | +, -, /, *, >=, , |
|
10 | 3,4×10 -4932 — 1,1×10 4932 | +, -, /, *, >=, , |
|
Логический тип | |||
1 | true, false | Not, And, Or, Xor, >=, , |
|
Символьный тип | |||
1 | все символы кода ASCII | +, >=, , |
Перечисляемый и интервальный тип относятся к типам, определяемым пользователем и будут рассмотрены нами позже.
Дополнительные сведения о типах данных..
Порядковые типы, выделяемые из группы простых типов, характеризуются следующими свойствами:
- все возможные значения порядкового типа представляют собой ограниченное упорядоченное множество;
- к любому порядковому типу может быть применена стандартная функция Ord, которая в качестве результата возвращает порядковый номер конкретного значения в данном типе;
- к любому порядковому типу могут быть применены стандартные функции Pred и Succ, которые возвращают предыдущее и последующее значения соответственно;
- к любому порядковому типу могут быть применены стандартные функции Low и High, которые возвращают наименьшее и наибольшее значения величин данного типа.
В языке Паскаль введены понятия эквивалентности и совместимости типов. Два типа Т1 и Т2 являются эквивалентными (идентичными), если выполняется одно из двух условий:
- Т1 и Т2 представляют собой одно и то же имя типа;
- тип Т2 описан с использованием типа Т1 с помощью равенства или последовательности равенств. Например:
Менее строгие ограничения накладываются на совместимость типов. Так, типы являются совместимыми, если:
- они эквивалентны;
- являются оба либо целыми, либо действительными;
- один тип — интервальный, другой — его базовый;
- оба интервальные с общим базовым;
- один тип — строковый, другой — символьный.
В Турбо Паскаль ограничения на совместимость типов можно обойти с помощью приведения типов. Приведение типов позволяет рассматривать одну и ту же величину в памяти ЭВМ как принадлежащую разным типам. Для этого используется конструкция Имя_Типа(переменная или значение)
Напрмер, Integer(‘Z’) представляет собой значение кода символа ‘Z’ в двухбайтном представлении целого числа, а Byte(534) даст значение 22, поскольку целое число 534 имеет тип Word и занимает два байта, а тип Byte занимает один байт, и в процессе приведения старший байт будет отброшен.
Волгоградский государственный педагогический университет
Кафедра алгебры, геометрии и информатики
Программирование. Числовые типы данных Pascal-Паскаль
- Скачено бесплатно: 7800
- Куплено: 414
- Pascal-Паскаль->Программирование. Числовые типы данных Pascal-Паскаль
Числовые типы данных Pascal-Паскаль
Наиболее распространенные в математике числовые типы – это целые числа, которые представляют бесконечное множество дискретных значений, и действительные числа, которые представляют неограниченный континуум значений.
Описание числовых типов данных (целые) Паскаля
В пределах одного языка могут быть реализованы различные подмножества множества целых чисел. Диапазон возможных значений целых числовых типов зависит от их внутреннего представления, которое может занимать один, два или четыре байта. Так, в Паскале 7.0 используются следующие целые числовые типы данных:
Числовые типы данных (ЦЕЛЫЕ ТИПЫ) Паскаля | ||
---|---|---|
Название числового типа данных | Длина, байт числового типа данных | Диапазон значений числового типа данных |
Byte | 1 | 0..255 |
ShortInt | 1 | -128..+127 |
Word | 2 | 0..65535 |
Integer | 2 | -32768..+32767 |
LongInt | 4 | -2 147 483 648..+2 147 483 647 |
С целыми числовыми типами данных Паскаля можно выполнять следующие операции:
- Арифметические:
сложение(+);
вычитание(-);
умножение(*);
остаток от деления (mod);
возведение в степень;
унарный плюс (+);
унарный минус (-).
- Операции отношения:
отношение равенства (=);
отношение неравенства (<>);
отношение меньше ( );
отношение не меньше (>=);
отношение не больше ( <+ | ->r , где M – мантисса числа; r – порядок числа (r – целое число); P – основание системы счисления. Например, для десятичного основания представление 2Е-1 (здесь Е – основание десятичной системы счисления) будет иметь вид: 2*10 -1 =0.2, а представление 1.234Е5 будет соответствовать: 1.234*10 5 =123400.0.
В Паскале используются следующие типы вещественных чисел, которые определяют произвольное число лишь с некоторой конечной точностью, зависящей от внутреннего формата вещественного числа:
Длина числового типа данных, байт | Название числового типа данных | Количество значащих цифр числового типа данных | Диапазон десятичного порядка числового типа данных |
---|---|---|---|
4 | Single | 7..8 | -45..+38 |
6 | Real | 11..12 | -39..+38 |
8 | Double | 15..16 | -324..+308 |
10 | Extended | 19..20 | -4951..+4932 |
8 | Comp | 19 . .20 | -2*10 63 +1..+2*10 63 -1 |
При описании вещественной переменной типа real в памяти компьютера будет создана переменная размерностью 4 байта. При этом 3 байта будут отданы под мантиссу, а один – под порядок.
Над действительными числовыми типами данных можно выполнять следующие операции:
Исходники Pascal (127)
Справочник
Справочник по паскалю: директивы, функции, процедуры, операторы и модули по алфавиту
Содержание раздела PASCAL
Тип переменной задает вид того значения, которое ей присваивается и правила, по которым операторы языка действуют с переменной, например:
Если переменные A и B целочисленного типа, то программа:
Выведет на экран строку: “3.14 2.71 5.85”
Если же они строкового типа, то программа:
Выведет: “3.14 2.71 3.142.71”, так как оператор сложения просто добавит строку B в конец строки A.
Тип константы определяется способом записи ее значения:
Можно использовать выражения. Выражения должны в качестве операторов содержать только константы, в том числе ранее объявленные, а так же знаки математических операций, скобки и стандартные функции.
BYTE | целое число от 0 до 255, занимает одну ячейку памяти (байт). |
BOOLEAN | логическое значение (байт, заполненный единицами, или нулями), true, или false. |
WORD | целое число от 0 до 65535, занимает два байта. |
INTEGER | целое число от –32768 до 32767, занимает два байта. |
LONGINT | целое число от –2147483648 до 2147483647, занимает четыре байта. |
REAL |
число с дробной частью от 2.9*10-39.до 1.7*1038, может принимать и отрицательные значения, на экран выводится с точностью до 12-го знака после запятой, если результат какой либо операции с REAL меньше, чем 2.9*10-39, он трактуется как ноль. Переменная типа REAL занимает шесть байт.
число с дробной частью от 5.0*10-324.до.1.7*10308, может принимать и отрицательные значения, на экран выводится с точностью до 16-го знака после запятой ,если результат какой либо операции с DOUBLE меньше, чем 5.0*10-324, он трактуется как ноль. Переменная типа DOUBLE занимает восемь байт.
При обьявлении переменной строкового типа можно заранее указать ее длину в байтах – X:
MyString:STRING[X];
При присвоении этой переменной строки длиннее X, присваиваемая строка будет обрезана с конца после X-того символа.
Размер переменной типа STRING в памяти можно узнать следующим способом:
Size:=SizeOf(MyString);
Функция SizeOf() возвращает размер, занимаемый переменной, служащей параметром. Параметром может служить и тип переменной; строка:
Writeln(SizeOf(STRING));
Выведет на экран число 256, так как по умолчанию под все строки отводится по 256 байт.
Кроме того, можно узнать, сколько символов в строке (индекс последнего непустого символа в строке):
Size:=Ord(MyString[0]);
Используется ибращение к нулевому элементу (символу) строки, в котором хранится ее длина, но MyString[0] – значение типа CHAR, тоесть символ, код которого равен длине строки, нужный нам код – число возвращает функция Ord()Таким же образом можно обратиться к любому N – тому элементу строки:
MyChar:=MyString[N];
ARRAY[a..b,c..d,….] OF “тип элемента”; | массив некоторой размерности, содержащий элементы указанного типа. |
Диапазоны индексов для каждого измерения указываются парами чисел или констант, разделенных двумя точками, через запятую (a..b,c..d). После OF записывается тип элементов массива. В памяти массив занимает место, равное: (b-a)*(d-c)*..* SizeOf(“тип элемента”). Размер массива не может превосходить 65536 байт.
Обращение к элементам массива происходит следующим образом:
X:=MyArray[a,b,c. ];
При этом переменная X должна быть того же типа, что и элементы массива или приводимого типа. Число индексов (a,b,c. ) должно быть равно числу обьявленных при описании измерений массива.
В Паскале существуют ограничения на присвоение значений одних переменных другим. Если переменные которую и которой присваивают одного типа, то никаких проблем не возникнет. Но если они разных типов, присвоение не всегда может быть произведено. Это связано стем, что при таком присвоении необходимо отсечь часть информации, а какую – компьютер “не знает”.
Проблема возникает при следующих присвоениях:
I:=J;
A:=B;
В то же время, такие присвоения будут выполнены вполне корректно:
J:=I;
B:=A;
При этом переменная J примет значение с нулевой дробной частью, а B – станет строкой, содержащей один символ – из A.
В первом же случае, можно поизвести следующие операции:
I:=Trunc(J); <функция trunc() возвращает целую часть аргумента>
I:=Round(J);
Кроме рассмотренного случая может существовать множество других, но наиболее общее правило таково: следить за однозначностью присвоения с потерями информации и не удивляться, а экспериментировать переделывать программу, если компилятор выдает сообщение о невозможности присвоения.