Для того чтобы машина смогла обработать какие бы то ни было входные данные, она должна «понимать», к какому типу принадлежат переменные, в которые занесены значения. При отсутствии информации о формате данных компьютер не сможет определить, допустима ли в конкретном случае та или иная операция: например, интуитивно понятно, что нельзя возвести букву в степень или взять интеграл от строки. Таким образом, пользователь должен определить, какие действия позволительно осуществлять с каждой переменной.
Как и в других языках программирования высокого уровня, типы переменных в Паскале оптимизированы для выполнения задач различной направленности, имеют различный диапазон значений и длину в байтах.
Подразделение типов переменных
Типы переменных в Паскале делятся на простые и структурированные. Простые включают в себя вещественные и порядковые типы. К структурированным относятся массивы, записи, множества и файлы. Отдельно выделяются указатели, объекты и процедурные типы.
Рассмотрим порядковые и вещественные типы. К порядковым относятся 5 целых типов, логический, символьный, перечисляемый и тип-диапазон.Порядковые типы
Существует 5 целых типов, различающихся длиной в байтах и диапазоном значений.
Длина Byte и ShortInt – 1 байт. Различие между ними состоит в том, что Byte хранит только неотрицательные значения, а ShortInt позволяет хранить и отрицательные (от -128 до +127). Аналогично соотносятся друг с другом типы Word и Integer, с тем лишь различием, что их размер – 2 байта.
Наконец, LongInt позволяет хранить и отрицательные, и положительные значения, используя 4 байта – в числовом измерении это 2 в 16-й степени в обе стороны от нуля. Различные виды переменных в Паскале способствуют эффективному решению пользовательских задач, поскольку в каждом конкретном случае может требоваться как малый, так и большой диапазон значений, а также не исключено наличие ограничений по объему выделяемой памяти.
Важно понимать, что нуль занимает столько же места в памяти, сколько и любое другое число. Таким образом, при формировании диапазона значений минимальное отрицательное число по модулю будет на единицу больше, чем положительное: например, от -128 до +127.Переменные, принадлежащие к логическому типу (BOOLEAN), могут принимать значение TRUE (истина) или FALSE (ложь) и требуют 1 байт памяти.
Тип CHAR позволяет хранить любой из множества символов, существующих в памяти компьютера. При этом в символьных переменных в Паскале реально хранится лишь код знака, в соответствии с которым отображается его графическая форма.
Вещественные типы
Среди типов переменных в Паскале выделяется несколько числовых с возможностью записи дробной части. Различие между типами Single, Real, Double и Extended сводится к диапазону принимаемых значений, количеству значащих цифр после запятой и размеру в байтах.
В соответствии с порядком, представленным выше, переменная каждого типа будет занимать 4, 6, 8 или 10 байт.
Массивы
Структурированные типы данных являются сложными и позволяют объединять в рамках одной переменной ряд простых значений. Яркий пример представляет собой массив, который можно задать следующим образом:
Type
String=array [1..100] of char;
Var Y=String;
Таким образом, мы получили тип под названием String, позволяющий задавать переменные длиной в 100 символов. В последней строке задан непосредственно одномерный массив Y, имеющий тип String. Описание переменных в Паскале осуществляется путём размещения с левой стороны идентификатора, а справа, после знака равенства, значения переменной.
Диапазон индексов, записанный в квадратных скобках, позволяет обращаться к каждому конкретному элементу массива:readln(Y[2]);
В данном случае мы произвели чтение второго элемента созданного ранее массива Y.
Частным случаем одномерного массива являются и строковые переменные в Паскале, ведь строка – это последовательность символов, т. е. элементов типа char.
Записи
Запись состоит из нескольких полей, заполненных данными любых типов кроме файлового. В целом переменная такого типа похожа на элемент базы данных. Например, можно занести в неё имя человека и номер его телефона:
type NTel = Record
NAME: String[12];
NUMBER: String[10]
end;
var one: NTel;
В первой строке слева указывается имя типа, а справа – служебное слово record. Во второй строке задано поле с именем, в третьей – номер телефона. Слово «end» говорит о том, что мы ввели все поля, которые хотели, и на этом процесс создания записи завершается.
Наконец в последней строке мы задаём переменную One, имеющую тип NTel.
Обращаться можно как к записи в целом, так и к отдельным её компонентам, например: one.NAME (т. е. имя_переменной.имя_поля_записи).
Файлы
Паскаль позволяет работать с текстовыми, типизированными и нетипизированными файлами, которые представляют собой структурированную последовательность компонент, имеющих одинаковый тип.
При чтении из файла или записи в него может использоваться как полный адрес, так и краткая его форма:
‘File1.DAT’
‘C:\Folder\File2.txt’
Краткая форма используется в случае размещения файла в папке, где хранится сама программа, обращающаяся к нему. Полная форма может использоваться в любых обстоятельствах.
Задать переменную файлового типа можно следующим образом:
var
f1: file of integer;
Для работы с файлами используются различные функции и процедуры, связывающие переменную с файлом на диске, открывающие его для чтения, записи и перезаписи, закрывающие по окончании работы, позволяющие создавать новое имя и удаляющие файл с компьютера.В заключение
Без умения использовать различные типы переменных в Паскале пользователь не сможет реализовать даже простейшую задачу. Для того чтобы программа выполняла алгоритм без ошибок, требуется выучить как служебные слова, так и синтаксис, поскольку машина умеет «понимать» команды только в том случае, если они написаны единственно верным способом.