| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Типы данных.Каждый элемент данных относится к одному из конечного множества типов, допустимых для конкретной версии языка программирования. Тип - это множество значений, которые могут принимать объекты программы, и совокупность операций, допустимых над этими значениями. Понятие тип связано с фиксированным набором данных. Переменная относится к определенному типу, если ей можно присвоить данные, принадлежащие к набору, определяющему этот тип. В языке Турбо-Паскаль необходимо явное определение типа каждой из переменных в программе. Например, значения переменной, равные 1 или 10
относятся к целочисленному типу, их можно складывать, умножать и выполнять
другие арифметические операции. В языке Паскаль для описания типа в общем случае
используется зарезервированное слово Type. Все типы данных разделяются на две группы: скалярные (простые) и структурированные (составные). Скалярные типы в свою очередь подразделяются на стандартные и пользовательские. Стандартные типы данных предлагаются пользователям разработчиками системы Turbo Pascal. К стандартным скалярным типам относятся целочисленные, вещественные, символьные, булевские типы данных и указатели. Данные целочисленных типов могут быть представлены как в десятичной, так и в шестнадцатеричной системах. Если число представлено в шестнадцатеричной системе, перед ним без пробела записывается знак "$". Диапазон изменений шестнадцатеричных чисел от $0000 до $FFFF. В десятичной системе числа с фиксированной точкой записываются по обычным правилам арифметики. Целая часть от дробной отделяется десятичной точкой. Если десятичная точка отсутствует, число считается целым. Перед числом может находиться знак "+" или "-". Если знак отсутствует, по умолчанию число считается положительным. Например, $1F - шестнадцатеричное число; 25 - целое десятичное число; -1.9 - отрицательное вещественное число; 13.1 - вещественное число; Вещественные десятичные числа в форме с плавающей
точкой представлены в экспоненциальном виде: mE+p, где m - мантисса (целое или
дробное число с десятичной точкой), "E" - означает "десять в степени", p -
порядок (целое число). Пользовательские типы - перечисляемый и интервальный - разрабатываются самим программистом. Структурированные типы в своей основе имеют один или несколько скалярных типов данных. К структурированным типам относятся строки, массивы, множества, записи, файлы и данные процедурного типа и типа object. Набор основных типов переменных Турбо-Паскаля можно представить в виде следующей схемы: 5.1. Скалярные типы данных.5.1.1. Целочисленный тип. Целочисленные типы данных представляют собой
значения, которые могут использоваться в арифметических выражениях и занимать
память от 1 до 4 байт.
Пример: var X1, X2 : byte; Y1 : word; K, L : integer; 5.1.2. Вещественный тип.Вещественные типы данных представляют собой вещественные значения, которые используются в арифметических выражениях. Допускается представление вещественных значений как в виде с плавающей, так и с фиксированной точкой.
Эффективное использование типом single, double,
extended, comp возможно только при наличии сопроцессора 8087 при включенной
директиве компилятора {$N+}. По умолчанию она находится в выключенном состоянии
- {$N-}. 5.1.3. Символьный тип. Символьный тип данных char обозначает множество
символов кода ASCII (американский стандартный код для обмена информацией). Один
символ требует для своего представления 8 бит = 1 байту. Символы пронумерованы
от 0 до 127 в основной кодовой таблице и с 128 по 255 - в
расширенной.
Пример: var Ch : char; Let, Znak : char; В программе значения переменных и констант типа char должны быть заключены в апострофы. Например, 'A' означает букву A, ' ' - пробел, ';' - точку с запятой и т.д. Для типа данных char существуют следующие стандартные функции:
5.1.4. Логический (булевский) тип. Булевский тип представлен двумя значениями: True
(истина) и False (ложь). Он широко применяется в логических выражениях и
выражениях отношения.
Пример: var Flag1, Flag2 : boolean; 5.2. Пользовательские типы.Кроме стандартных типов данных, Паскаль поддерживает скалярные типы, определенные самим пользователем. К ним относятся перечисляемый и интервальный типы. Данные этих типов занимают в памяти один байт, поэтому любой пользовательский тип не может содержать более 256 элементов. Их применение значительно улучшает наглядность программы, делает более легким поиск ошибок и экономит память. 5.2.1. Перечисляемый тип.Перечисляемый тип задается непосредственно перечислением всех значений, которые может принимать переменная данного типа. Отдельные значения указываются через запятую, а весь список заключается в круглые скобки. Переменная типа "перечисление" задается
перечислением значений, которые она может принимать. Описание этих переменных
имеет вид: Здесь A1, A2 - переменные типа "перечисление",
которые могут принимать любые из заданных значений. Описание типа перечисляемой
переменной одновременно упорядочивает ее значения. Для данного примера Zima <
Vesna < Leto < Osen (в операциях сравнения). В данном примере приведены два явно описанных типа данных пользователя - Gaz и Metall. Определены их значения - обозначения некоторых газов и металлов периодической таблицы Д.И.Менделеева. Переменные G1, G2, G3 и Met1, Met2 могут принимать только одно из перечисленных значений. Попытка присвоить им любое другое значение вызовет программное прерывание. Третий тип перечисления анонимный ( не имеет имени)
и задается перечислением значений в разделе Var. Season является переменной
этого типа и может принимать значения Winter, Spring, Summer и Autumn. Таким
образом может быть задан любой тип, но это не всегда приемлемо, так как первый
способ более понятен и больше соответствует характеру языка Паскаль. Имена из списка перечисляемого типа (внутри круглых
скобок) являются константами соответствующего типа перечисления и соответствуют
обычным правилам для констант. Эти идентификаторы должны быть уникальны в
пределах блока; недопустимы описания двух и более перечислимых типов с
совпадающими константами. Например, описания вида: Выражения и константы перечисляемого типа допустимы для использования в операторе CASE. Операция отношения и логические операции допустимы для значений перечисления одного и того же типа. Упорядочение осуществляется по номеру элемента в описании типа. Например, будет истинно выражение Winter < Spring, так как Spring имеет больший номер по порядку в описании типа, чем Winter. В отличии от данных других типов, Паскаль не поддерживает операции ввода-вывода значений пользовательского перечисляемого типа. При необходимости программист сам должен организовать ввод-вывод таких данных. Для работы с данными перечисляемого типа в языке
Паскаль предназначены стандартные функции Succ, Pred, Ord.
5.2.2. Интервальный тип.Интервальный тип позволяет задавать две константы, определяющие границы диапазона значений для данной переменной. Компилятор при каждой операции с переменной интервального типа генерирует подпрограммы проверки, определяющие, остается ли значение переменной внутри установленного для нее диапазона. Обе константы должны принадлежать одному из стандартных типов (напомним, что тип real здесь недопустим). Значение первой константы должно быть обязательно меньше значения второй. Для переменных ограниченного (диапазонного) типа
указывается подмножество значений, которые они могут принимать. Описание этих
переменных имеет вид: Здесь Min, Max - константы, определяющие левую и правую границы значений, которые может принимать ограниченная переменная. Эти константы могут быть целого, символьного или перечисляемого типа, например: type God: (Zima, Vesna, Leto, Osen); A1 = Vesna..Osen; L1 = 1..80; var X: A1; Y: L1; В самой программе (в разделе операторов)
используются имена переменных (X, Y), а не имена типов (A1, L1). В данном случае
тип God, из которого был "вырезан" тип A1, является базовым относительно типа
A1. В качестве базового типа можно использовать любой простой тип, кроме
REAL. В этом примере переменные WorkDay, BolnDay имеют тип DayMonth и могут принимать любые значения из диапазона 1..31. Выход из диапазона вызывает программное прерывание. Можно определить интервальный тип и более
универсальным способом, задав границы диапазона не значениями констант, а их
именами, например: 5.3. Структурированные типы данных.Структурированные типы данных определяют упорядоченную совокупность скалярных переменных и характеризуются типом своих компонентов. В языке Паскаль допускаются следующие структурированные типы данных: строки, массивы, множества, записи, файлы, указатели, процедурные типы и объекты. Все они требуют отдельного рассмотрения и будут подробно описаны (кроме объектов) ниже. |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
© Copyright(c) 2004 Amro Group. All rights reserved |
|