trains_hr.gif
 


В ПОМОЩЬ СТУДЕНТУ И ШКОЛЬНИКУ

 


Горбачев Л.И. Основы программирования в среде Turbo Pascal.

[НАЗАД]    [ДАЛЕЕ]

Типы данных.

   Каждый элемент данных относится к одному из конечного множества типов, допустимых для конкретной версии языка программирования. Тип - это множество значений, которые могут принимать объекты программы, и совокупность операций, допустимых над этими значениями.

   Понятие тип связано с фиксированным набором данных. Переменная относится к определенному типу, если ей можно присвоить данные, принадлежащие к набору, определяющему этот тип. В языке Турбо-Паскаль необходимо явное определение типа каждой из переменных в программе.

   Например, значения переменной, равные 1 или 10 относятся к целочисленному типу, их можно складывать, умножать и выполнять другие арифметические операции. В языке Паскаль для описания типа в общем случае используется зарезервированное слово Type.

Формат: type имя_типа = значение_типа;

   Все типы данных разделяются на две группы: скалярные (простые) и структурированные (составные). Скалярные типы в свою очередь подразделяются на стандартные и пользовательские. Стандартные типы данных предлагаются пользователям разработчиками системы Turbo Pascal.

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

   Данные целочисленных типов могут быть представлены как в десятичной, так и в шестнадцатеричной системах. Если число представлено в шестнадцатеричной системе, перед ним без пробела записывается знак "$". Диапазон изменений шестнадцатеричных чисел от $0000 до $FFFF.

   В десятичной системе числа с фиксированной точкой записываются по обычным правилам арифметики. Целая часть от дробной отделяется десятичной точкой. Если десятичная точка отсутствует, число считается целым. Перед числом может находиться знак "+" или "-". Если знак отсутствует, по умолчанию число считается положительным.

   Например, $1F - шестнадцатеричное число; 25 - целое десятичное число; -1.9 - отрицательное вещественное число; 13.1 - вещественное число;

   Вещественные десятичные числа в форме с плавающей точкой представлены в экспоненциальном виде: mE+p, где m - мантисса (целое или дробное число с десятичной точкой), "E" - означает "десять в степени", p - порядок (целое число).

Пример: 5.18E+02 - 5.18 * 10^2 = 518
10E-03 = 10 * 10^-3 = 0.01

   Пользовательские типы - перечисляемый и интервальный - разрабатываются самим программистом.

   Структурированные типы в своей основе имеют один или несколько скалярных типов данных. К структурированным типам относятся строки, массивы, множества, записи, файлы и данные процедурного типа и типа object.

   Набор основных типов переменных Турбо-Паскаля можно представить в виде следующей схемы:

5.1. Скалярные типы данных.

   5.1.1. Целочисленный тип.

   Целочисленные типы данных представляют собой значения, которые могут использоваться в арифметических выражениях и занимать память от 1 до 4 байт.

Тип Наименование Допустимые значения Занимаемая память
shortint короткое целое -128..127 1 байт
byte байт 0..255 1 байт
integer целое -32768..32767 2 байта
word слово 0..65535 2 байта
longint длинное целое -2*10^9..2*10^9 4 байта

Пример: var X1, X2 : byte;
Y1 : word;
K, L : integer;

   5.1.2. Вещественный тип.

   Вещественные типы данных представляют собой вещественные значения, которые используются в арифметических выражениях. Допускается представление вещественных значений как в виде с плавающей, так и с фиксированной точкой.
Тип Наименование Допустимые значения Число значащих цифр Занимаемая память
real вещественный 10^-38-10^38 11-12 6 байт
single с одинарной точностью 10^-38-10^38 7-8 4 байта
double с двойной точностью 10^-308-10^308 15-16 8 байт
extended с повышенной точностью 10^-4931-10^4931 19-20 10 байт
comp сложный(длиное целое) -9*10^18-9*10^18 19-20 8 байт

   Эффективное использование типом single, double, extended, comp возможно только при наличии сопроцессора 8087 при включенной директиве компилятора {$N+}. По умолчанию она находится в выключенном состоянии - {$N-}.
Пример: var Summa : single;
Root1, Root2 : double;

   5.1.3. Символьный тип.

   Символьный тип данных char обозначает множество символов кода ASCII (американский стандартный код для обмена информацией). Один символ требует для своего представления 8 бит = 1 байту. Символы пронумерованы от 0 до 127 в основной кодовой таблице и с 128 по 255 - в расширенной.

Тип Диапазон Требуемая память
Char Кодовая таблица ПЭВМ 1 байт

Пример: var Ch : char;
Let, Znak : char;

   В программе значения переменных и констант типа char должны быть заключены в апострофы. Например, 'A' означает букву A, ' ' - пробел, ';' - точку с запятой и т.д.

   Для типа данных char существуют следующие стандартные функции:
Функция Тип результата Результат выполнения функции  
Ord(X) integer Номер ASCII - символа X  
Chr(N) char ASCII - символ с номером <
UpCase(X) char Прописная буква X, если она есть  

   5.1.4. Логический (булевский) тип.

   Булевский тип представлен двумя значениями: True (истина) и False (ложь). Он широко применяется в логических выражениях и выражениях отношения.

Тип Диапазон Требуемая память
boolean True, False 1 байт

Пример: var Flag1, Flag2 : boolean;

5.2. Пользовательские типы.

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

   Данные этих типов занимают в памяти один байт, поэтому любой пользовательский тип не может содержать более 256 элементов. Их применение значительно улучшает наглядность программы, делает более легким поиск ошибок и экономит память.

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

   Перечисляемый тип задается непосредственно перечислением всех значений, которые может принимать переменная данного типа. Отдельные значения указываются через запятую, а весь список заключается в круглые скобки.

   Переменная типа "перечисление" задается перечислением значений, которые она может принимать. Описание этих переменных имеет вид:
1) type имя_типа = (список_значений);
var имя_переменной = имя_типа;
или
2) var имя_переменной: (список_значений);

Пример: type God = (Zima, Vesna, Leto, Osen); var A1, A2: God;
или
var A1, A2: (Zima, Vesna, Leto, Osen);

   Здесь A1, A2 - переменные типа "перечисление", которые могут принимать любые из заданных значений. Описание типа перечисляемой переменной одновременно упорядочивает ее значения. Для данного примера Zima < Vesna < Leto < Osen (в операциях сравнения).
Пример: type Gaz = (C, O, N, F);
Metall = (Fe, Co, Na, Cu, Zn);
var G1, G2, G3 : Gaz;
Met1, Met2 : Metall;
Season : (Winter, Spring, Summer, Autumn);

   В данном примере приведены два явно описанных типа данных пользователя - Gaz и Metall. Определены их значения - обозначения некоторых газов и металлов периодической таблицы Д.И.Менделеева. Переменные G1, G2, G3 и Met1, Met2 могут принимать только одно из перечисленных значений. Попытка присвоить им любое другое значение вызовет программное прерывание.

   Третий тип перечисления анонимный ( не имеет имени) и задается перечислением значений в разделе Var. Season является переменной этого типа и может принимать значения Winter, Spring, Summer и Autumn. Таким образом может быть задан любой тип, но это не всегда приемлемо, так как первый способ более понятен и больше соответствует характеру языка Паскаль.
Пример: Для разработки программы управления уличным светофором можно использовать описание света, которое принимает три значения: красный, желтый и зеленый. Это можно описать так:
type Lights = (Red, Yellow, Green);
var Color: Lights;

   Имена из списка перечисляемого типа (внутри круглых скобок) являются константами соответствующего типа перечисления и соответствуют обычным правилам для констант. Эти идентификаторы должны быть уникальны в пределах блока; недопустимы описания двух и более перечислимых типов с совпадающими константами. Например, описания вида:
type Color1 = (Red, Yellow, Blue);
Color2 = (Green, Blue, Gray);
являются некорректными из-за повторного использования идентификатора Blue.

   Выражения и константы перечисляемого типа допустимы для использования в операторе CASE. Операция отношения и логические операции допустимы для значений перечисления одного и того же типа. Упорядочение осуществляется по номеру элемента в описании типа.

   Например, будет истинно выражение Winter < Spring, так как Spring имеет больший номер по порядку в описании типа, чем Winter.

   В отличии от данных других типов, Паскаль не поддерживает операции ввода-вывода значений пользовательского перечисляемого типа. При необходимости программист сам должен организовать ввод-вывод таких данных.

   Для работы с данными перечисляемого типа в языке Паскаль предназначены стандартные функции Succ, Pred, Ord.

Функция Тип результата Результат выполнения функции
Succ(X) порядковый тип X следующий за X в описании типа (если таковой существует)
Pred(X) порядковый тип X предшествующий X в описании типа (если таковой существует)
Ord(X) integer номер X в описании типа (начиная с 0

   5.2.2. Интервальный тип.

   Интервальный тип позволяет задавать две константы, определяющие границы диапазона значений для данной переменной. Компилятор при каждой операции с переменной интервального типа генерирует подпрограммы проверки, определяющие, остается ли значение переменной внутри установленного для нее диапазона. Обе константы должны принадлежать одному из стандартных типов (напомним, что тип real здесь недопустим). Значение первой константы должно быть обязательно меньше значения второй.

   Для переменных ограниченного (диапазонного) типа указывается подмножество значений, которые они могут принимать. Описание этих переменных имеет вид:
1) type имя_типа = Min..Max;
var имя_переменной: имя_типа;
или
2) var имя_переменной: Min..Max;

   Здесь 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.
Пример: type DayMonth = 1 .. 31;
var WorkDay, BolnDay : DayMonth;

   В этом примере переменные WorkDay, BolnDay имеют тип DayMonth и могут принимать любые значения из диапазона 1..31. Выход из диапазона вызывает программное прерывание.

   Можно определить интервальный тип и более универсальным способом, задав границы диапазона не значениями констант, а их именами, например:
const Min := 1;
Max := 31;
Type DayMonth = Min .. Max;
var WorkDay, BolnDay : DayMonth;

5.3. Структурированные типы данных.

   Структурированные типы данных определяют упорядоченную совокупность скалярных переменных и характеризуются типом своих компонентов. В языке Паскаль допускаются следующие структурированные типы данных: строки, массивы, множества, записи, файлы, указатели, процедурные типы и объекты. Все они требуют отдельного рассмотрения и будут подробно описаны (кроме объектов) ниже.

[НАЗАД]    [ДАЛЕЕ]


Главная
Новости
TurboPascal
Учебное пособие
Лекции
Исходники
Математика
Книги
Лекции
Шпоры
ЦТ и ЕГЭ
Физика

Книги

Шпоры
ЦТ и ЕГЭ

Литература

Сочинения

Краткие содержания

Другое
Мой родной край
Фотогалерея
Форум
Ссылки

Гостевая






 

                                        © Copyright(c) 2004 Amro Group. All rights reserved

 

Hosted by uCoz