Тип данных text в паскале. Turbo Pascal. Типы данных

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

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

По способу представления и обработки типы данных бывают:

  • простые
  • структурированные
  • указатели
  • объекты
  • процедуры

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

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

Сюда входят несколько целочисленных типов, которые различаются диапазоном значений, количеством байт отведённых для их хранения и словом, с помощью которого объявляется тип.

Тип Диапазон Размер в байтах
shortint -128…127 1
integer -32 768…32 767 2
longint -2 147 483 648…2 147 483 647 4
byte 0…255 1
word 0…65 535 2

Объявить целочисленную переменную можно в разделе Var, например:

Над переменными этой категории можно выполнять все арифметические и логические операции за исключением деления (/), для него нужен вещественный тип. Также могут быть применены некоторые стандартные функции и процедуры.

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

В Паскале бывают следующие вещественные типы данных:

Тип Диапазон Память, байт Количество цифр
Real 2.9e-39 … 1.7e38 6 11-12
Single 1.5e-45 … 3.4e38 4 7-8
Double 5.0e-324 …1.7e308 8 15-16
Extended 3.4e-4932 … 1.1e493 10 19-20
Comp -9.2e63 … (9.2e63)-1 8 19-20

Над ними может быть выполнено большее количество операций и функций, чем над целыми. Например, эти функции возвращают вещественный результат:

sin(x) – синус;

cos(x) – косинус;

arctan(x) – арктангенс;

ln(x) – натуральный логарифм;

sqrt(x) – квадратный корень;

exp(x) – экспонента;

Логический тип

Переменная, имеющая логический тип данных может принимать всего два значения: true (истина) и false (ложь). Здесь истине соответствует значение 1, а ложь тождественная нулю. Объявить булеву переменную можно так:

Над данными этого типа могут выполняться операции сравнения и логические операции: not , and, or, xor.

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

Символьный тип данных – это совокупность символов, используемых в том или ином компьютере. Переменная данного типа принимает значение одного из этих символов, занимает в памяти компьютера 1 байт. Слово Char определяет величину данного типа. Существует несколько способов записать символьную переменную (или константу):

  1. как одиночный символ, заключенный в апострофы: ‘W’, ‘V’, ‘п’;
  2. указав код символа, значение которого должно находиться в диапазоне от 0 до 255.
  3. при помощи конструкции ^K, где K – код управляющего символа. Значение K должно быть на 64 больше кода соответствующего управляющего символа.

К величинам символьного типа данных применимы операции отношения и следующие функции:

Succ(x) - возвращает следующий символ;

Pred(x) - возвращает предыдущий символ;

Ord(x) - возвращает значение кода символа;

Chr(x) - возвращает значение символа по его коду;

UpCase(x) - переводит литеры из интервала ‘a’..’z’ в верхний регистр.

Для плодотворной работы с символьным типом рекомендую пользоваться .

Строковый тип

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

Var <имя_переменной>: string[<длина строки>];

Каждый символ в строке имеет свой индекс (номер). Индекс первого байта – 0, но в нем храниться не первый символ, а длина всей строки, из чего следует, что переменная этого типа будет занимать на 1 байт больше числа переменных в ней. Номер первого символа – 1, например, если мы имеем строку S=‘stroka’, то S=s;. В одном из следующих уроков строковый тип данных будет рассмотрен подробнее.

Перечисляемый тип данных

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

Type Day=(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

Переменная A может принимать лишь значения определенные в разделе Type. Также можно объявить переменную перечисляемого типа в разделе Var:

Var A: (Monday, Tuesday);

К данному типу применимы операции отношения, при этом заранее определенно, что Monday

Интервальный тип данных

Когда необходимо задать какой то диапазон значений, то в таких ситуациях применяется интервальный тип данных. Для объявления используется конструкция m..n , где m – минимальное (начальное) значение, а n – максимально (конечное); здесь m и n являются константами, которые могут быть целого, символьного, перечисляемого или логического типа. Описываться величины интервального типа могут как в разделе типов, так и в разделе описания переменных.

Общий вид:

TYPE <имя_типа> = <мин. значение>..<макс. значение>;

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

В Паскале существуют простые типы двух видов: ординальные типы и вещественный тип. Ординальный тип либо определяется программистом (перечисляемый тип или диапазонный), либо обозначается именем одного из трех предописанных ординальных типов: Boolean, Integer или Char . Вещественный тип обозначается именем предописанного типа Real .

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

Диапазонный (ограниченный) тип задается с помощью минимального и максимального значений, относящихся к предварительно описанному ординальному типу. Так порождается новый ординальный тип.

Ординальные типы данных

Ординальный тип данных описывает конечное и упорядоченное множество значений. Эти значения отображаются на последовательность порядковых номеров 0,1,2,...; исключение делается лишь для целых ординальных чисел, которые отображаются сами на себя. Каждый ординальный тип имеет минимальное и максимальное значение. Для всех значений, кроме минимального, существует предшествующее значение, а для всех значений, кроме максимального - последущее.

Предописанные функции succ, pred, ord воспринимают аргументы любого из ординальных типов:
succ(X) - дает следующее за X ординальное значение
pred(X) - дает предшествующее X ординальное значение
ord(X) - дает ординальный номер для X

Для всех ординальных типов существуют операции отношения = , = и > , причем предполагается, что оба операнда одного и того же типа.

Логический тип (Boolean)

Логическое значение - одно из двух истиностных значений, обозначаемых предопределенными именами false и true .

Существуют следующие логические операции, дающие логическое значение при применении их к логическим операндам:
and - логическое И
or - логическое ИЛИ
not - логическое НЕ

Также любая из операций отношения (= , = , > , in) поставляет логический результат.

Кроме того логический тип определен так, что false

Существуют и предописанные логические функции (т.е функции, дающие логический результат):
odd(F) - true, если целое F-нечетное и результат false, если F-четное
eoln(F) - проверка на конец строки
eof(F) - проверка на конец файла

Целый тип (Integer)

Тип integer включает в себя множество целых чисел.

При работе с целыми операндами следующие арифметические операции дают целые значения:
* - умножение
div - целая часть от деления
mod - остаток от деления
+ - сложение
- - вычитание

В Паскале существует также предописанная константа с именем MaxInt , которая содержит максимальное значение целого типа Integer и равна 32767

Целый результат дают и четыре важные предописанные функции:
abs(I) - абсолютное значение целого значения I
sgr(I) - целое значение I, возведенное в квадрат при условии, что I trunc(R) - выдает целую часть вещественного числа R
round(R) - выдает округленное целое. При этом: для R>0 означает trunc(R+0.5) , а для R

Если I - целое значение, то:
succ(I) - дает следующее целое значение (I+1)
pred(I) - дает предыдущее целое значение (I-1)

Символьный тип (Char)

Значениями типа Char являются элементы конечного и упорядоченного множества символов. Значения такого типа обозначаются одним символом, заключенным в одни кавычки (апострофы). Если нужен сам апостроф, то он пишется дважды.
Примеры: "*" "G" "3" """" "X"

    Для типа Char справедливы следующие минимальные допущения:
  1. Десятичные цифры от 0 до 9 упорядочены в соответствии с их числовыми значениями и следуют одна за другой (например, succ("5") = "6").
  2. Могут существовать прописные буквы от "A" до "Z"; если это так, то они упорядочены в алфавитном порядке, но не обязательно следуют одна за другой (например, "A"
  3. Могут существовать строчные буквы от "a" до "z"; если это так, то они упорядочены в алфавитном порядке, но не обязательно следуют одна за другой (например, "a"

Для отображения заданного множества символов на порядковые номера и обратно существуют две предописанные функции:
ord(C) - дает порядковый номер символа С в упомянутом упорядоченном множестве символов
chr(I) - дает символ с порядковым номером I

Для аргументов типа Char предописанные функции pred и succ могут быть определены таким образом:
pred(C) = chr(ord(C)-I)
succ(C) = chr(ord(C)+I)

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

Вещественный тип (Real)

Значениями вещественного типа являются элементы определяемого реализацией подмножества вещественных чисел.

Все операции над величинами вещественного типа - приближенные, их точность определяется реализацией (машиной), с которой вы имеете дело. Вещественный тип относится к простому типу, это не ординальный тип. У вещественных значений нет ординального номера и для любого из них не существует предшествующего и следующего значений.

Если хотя бы один из операндов - вещественного типа (другой может быть и целым), следующие операции дают вещественный результат:
* - умножение
/ - деление (оба операнда могут быть целыми, но результат всегда вещественный)
+ - сложение
- - вычитание

Существуют предописанные функции, дающие вещественный результат при вещественном аргументе:
abs(R) - абсолютное значение R
sqr(R) - R в квадрате, если результат не выходит за диапазон вещественных чисел

А эти предописанные функции дают вещественный результат при целом или вещественном аргументе:
sin(X) - дает синус Х; Х выражено в радианах
cos(X) - дает косинус Х; Х выражено в радианах
arctan(X) - дает выраженное в радианах значение арктангенса от Х
ln(X) - дает значение натурального (с основанием е) логарифма для Х, Х>0
exp(X) - дает значение экспоненциальной функции (т.е в степени Х)
sqrt(X) - дает значение корня квадратного Х, Х>=0

Предупреждение. К вещественным аргументам нельзя применять функции pred, succ Нельзя использовать значения вещественного типа при индексировании массивов, для управления в цикле с параметром, для определения базового типа множеств, для индексирования в операторе варианта.

Любые данные – константы, переменные, значения функций характеризуются в Паскале типом данных.

Определим понятие типа данных . Как уже известно, все объекты программы (переменные, константы и т.д.) должны быть описаны.

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

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

Например, пусть переменная x имеет тип real и ее значение равно единице: x=1 . Соответствующее значение в памяти компьютера может быть и 0.999999999 , и 1.000000001 , и 1.000000000 . Но если переменная x будет объявлена как переменная целого типа, то единица в компьютере будет представлена абсолютно точно и переменная x не сможет принимать вещественные (дробные) значения – ведь она была описана как переменная целого типа.

Таким образом, тип данных определяет:

  • внутреннее представление данных в памяти компьютера;
  • множество значений, которые могут принимать величины этого типа;
  • операции, которые могут выполняться над величинами этого типа.

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

Множество типов данных языка Турбо Паскаль можно разделить на две группы:

  • стандартные (предопределенные) типы ;
  • типы, определяемые пользователем (пользовательские типы) .

К стандартным типам Турбо Паскаль относят:

  • целый тип – integer ;
  • вещественный тип – real ;
  • символьный тип – char ;
  • логический тип – boolean ;
  • строковый тип – string ;
  • указательный тип – pointer ;
  • текстовый тип – text .

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

К пользовательским типам относят:

  • перечисляемый тип;
  • интервальный тип;
  • указательный тип;
  • структурированные типы;
  • процедурный тип.

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

К простым типам относят: целый тип, вещественный тип, символьный тип, логический тип, перечислимый тип и интервальный тип.

Сложный тип представляет собой различные комбинации простых типов (массивы, записи, множества, файлы и т.д.)

Стандартные типы

Стандартный тип данных определен самим языком Паскаль. При использовании в программе стандартных типов достаточно указать подразделы необходимых типов (const , var) и далее описать используемые в программе константы и переменные. Необходимость использования подраздела Type отсутствует.

Например, если в программе используются только переменные:

i,j – integer (целые);

x,y - real (вещественные);

t,s - char (символьные);

a,b – boolean (логические),

то необходим только подраздел переменных – Var . Поэтому в описательной части программы объявления переменных записываются следующим образом:

Целые типы

Данные этого типа могут принимать только значения целых чисел. В компьютере значения целого типа представляются абсолютно точно. Если переменная отрицательная, то перед ней должен стоять знак «–», если переменная положительная, то знак «+» можно опустить. Данный тип необходим в том случае, когда какую-то величину нельзя представить приближенно – вещественным числом. Например, число людей, животных и т.д.

Примеры записи значений целых чисел: 17, 0, 44789, -4, -127.

Диапазон изменения данных целого типа, определяется пятью стандартными типами целых чисел и представлен в таблице:

Тип Диапазон Размер в байтах
Shortint -128...+128 1
Integer -32768...32767 2
Longint -2147483648...2147483647 4
Byte 0...255 1
Word 0...65535 2

Последние два типа служат для представления только положительных чисел, а первые три как положительных, так и отрицательных чисел.

В тексте программы или при вводе данных целого типа значения записываются без десятичной точки . Фактические значения переменной не должны превышать допустимых значений того типа (Shortint , Integer , Longint , Byte , Word), который был использован при описании переменной. Возможные превышения при вычислениях ни как не контролируются, что приведет к неверной работе программы.

Пример использования переменной целого типа

Var a:integer; b:word; c:byte; Begin a:=300; {a присвоено значение 300} b:=300; {b присвоено значение300} c:=200; {c присвоено значение200} a:=b+c; {a присвоено значение500} c:=b; {Ошибка! Переменная c может принимать значения не более 255. Здесь переменной c присваивается значение 500,что вызовет переполнение результата.} End.

Вещественные типы

Значения вещественных типов в компьютере представляются приближенно. Диапазон изменения данных вещественного типа определяется пятью стандартными типами: вещественный (Real), с одинарной точностью (Single), двойной точностью (Double), с повышенной точностью (Extended), сложный (Comp) и представлен в таблице:

Тип Диапазон Число значащих цифр Размер в байтах
Real 2.9E-39...1.7E+38 11-12 6
Single 1.5E-45...3.4E+38 >7-8 4
Double 5E-324...1.7E+308 15-16 8
Extended 3.4E-4951...1.1E+4932 19-20 10
Comp -2E+63+1...+2E+63-1 19-20 8

Вещественные числа могут быть представлены в двух форматах: с фиксированной и плавающей точкой.

Формат записи числа с фиксированной точкой совпадает с обычной математической записью десятичного числа с дробной частью. Дробная часть отделяется от целой части с помощью точки, например

34.5, -4.0, 77.001, 100.56

Формат записи с плавающей точкой применяется при записи очень больших или очень малых чисел. В этом формате число, стоящее перед символом «E», умножается на число 10 в степени, указанной после символа «E».

1E-4 1*10-4
3.4574E+3 3.4574*10+3
4.51E+1 4.51*10+1

Примеры чисел с плавающей точкой:

Число Запись на Паскале
0,0001 1E-4
3457,4 34574E-1
45,1 451E-1
40000 4E+4
124 0.124E+3
124 1.24E+2
124 12.4E+1
124 1240E-1
124 12400E-2

В таблице с 5 по 9 строку показана запись одного и того же числа 124. Изменяя положение десятичной точки в мантиссе (точка «плывет», отсюда следует название «запись числа с плавающей точкой») и одновременно изменяя величину порядка, можно выбрать наиболее подходящую запись числа.

Пример описания переменных вещественного типа.

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

Значениями символьного типа являются символы, которые можно набрать на клавиатуре компьютера. Это позволяет представить в программе текст и производить над ним различные операции: вставлять, удалять отдельные буквы и слова, форматировать и т.д.

Символьный тип обозначается зарезервированным словом Char и предназначен для хранения одного символа. Данные символьного типа в памяти занимают один байт.

Формат объявления символьной переменной:

<имя переменной>: Char;

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

Пример использования переменных символьного типа:

Var c:char; {c – переменная символьного типа} Begin c:=’A’; {переменной c присваивается символ ’A’} c:=#65; {переменной c также присваивается символ A. Его ASCII код равен 65} c:=’5’; {переменной c присваивается символ 5, End. здесь 5 это уже не число}

Логический тип

Логический тип данных называют булевским по имени английского математика Джорджа Буля, создателя области математики – математической логики.

Формат объявления переменной логического типа:

<имя переменной>: boolean;

Данные этого типа могут принимать только два значения:

  • True – истина;
  • False – ложь.

Логические данные широко используются при проверке правильности некоторых условий и при сравнении величин. Результат может оказаться истинным или ложным.

Для сравнения данных предусмотрены следующие операции отношений:

Пример использования операций отношения:

отношение 5>3 , результат true (истина);

отношение 5=3 , результат false (ложь).

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

Var a,b:boolean; {a,b – переменные логического типа} Begin a:=Тrue; {переменной a присваивается значение «истина»} b:=false; {переменной b присваивается значение «ложь»} End.

Константы

В качестве констант могут использоваться целые, вещественные числа, символы, строки символов, логические константы.

Константу необходимо объявить в описательной части с помощью зарезервированного слова const.

Формат объявления константы

Const <имя константы>= <значение>;

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

Const {объявление раздела констант} year=2003; {константа целого типа, т.к. нет в записи десятичной точки} time=14.05; {константа вещественного типа} N=24; {константа целого типа, т.к. нет в записи десятичной точки} P=3.14; {константа вещественного типа} A=true; {константа логического типа} str1=’7’; {константа символьного типа} str2=’A’; {константа символьного типа} str3=’Turbo’; {константа строкового типа} Var {объявление раздела переменных} X,y:integer; {переменные целого типа}

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

Из совокупности пользовательских типов рассмотрим только

  • перечисляемый тип;
  • интервальный тип.

Эти два типа нам будут необходимы при изучении массивов.

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

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

Формат перечисляемого типа:

<имя типа>= (константа1, константа2,..., константаN);

где
константа1 , константа2 ,..., константаN – упорядоченный набор значений идентификаторов, рассматриваемых как константы.

Пример описания перечисляемого типа:

Type ball=(one, two, three, four, five); var t:ball;

Здесь ball – имя перечисляемого типа; one , two , three , four , five – константы; t – переменная, которая может принимать любое значение констант.

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

  • константами числового типа: 1, 2, 3, 4 и т. д;
  • константами символьного типа: "a", "s", "1", "3" и т. д.;
  • константами строкового типа: "first", "second" и т.д.

Кроме того, к значениям этого типа не применимы арифметические операции и стандартные процедуры ввода и вывода Read , Write .

Пример использования переменных перечисляемого типа:

Type days = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday); Var day: days; begin if day = Sunday then writeln(‘Сегодня Воскресенье!’); End.

Элементы, входящие в определение перечисляемого типа, считаются упорядоченными в той последовательности, в которой они перечисляются. Нумерация начинается с нуля. Поэтому в приведенном примере дни недели имеют следующие порядковые номера

Для программного определения порядкового номера используется функция Ord() .

В нашем примере порядковые номера равны:

Ord(Monday) = 0;

Ord(Saturday) = 5;

Ord(Sunday) = 6.

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

Если какая-то переменная принимает не все значения своего типа, а только значения, содержащиеся в некотором диапазоне, то такой тип данных называется интервальным типом. Часто интервальный тип называют ограниченным типом и типом-диапазоном. Интервальный тип задается границами своих значений:

<минимальное значение>..<максимальное значение>

  • два символа «..» рассматриваются как один символ, поэтому между ними недопустимы пробелы;
  • левая граница диапазона не должна превышать его правую границу.

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

Пример описания интервального типа:

Type digit = 1..10; month = 1..31; lat = ’A’..’Z’;

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

Описание числовых типов данных (целые) Паскаля

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

С целыми числовыми типами данных Паскаля можно выполнять следующие операции:

  • Арифметические:
    сложение(+);
    вычитание(-);
    умножение(*);
    остаток от деления (mod);
    возведение в степень;
    унарный плюс (+);
    унарный минус (-).
  • Операции отношения:
    отношение равенства (=);
    отношение неравенства (<>);
    отношение меньше (<);
    отношение больше (>);
    отношение не меньше (>=);
    отношение не больше (<=).

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

Особое внимание следует уделить операции деления целых числовых типов данных. В Паскале допускается две операции деления, которые соответственно обозначаются "/" и div . Нужно знать, что результатом деления "/" является не целое, а вещественное число (это справедливо, даже если вы делите 8 на 2, т.е. 8/2=4.0). Деление div – это целочисленное деление , т.е. тип результата целый.

Описание числовых типов данных (действительные) Паскаля

К вещественному числовому типу данных относится подмножество вещественных чисел, которые могут быть представлены в так называемом формате с плавающей запятой и фиксированным числом цифр. С плавающей точкой каждый числовой тип данных представляется в виде двух групп цифр. Первая группа цифр называется мантиссой, вторая – порядком. В общем виде числовой тип данных в форме с плавающей точкой может быть представлено так: X= {+|-}MP {+ | -} r , где M – мантисса числа; r – порядок числа (r – целое число); P – основание системы счисления. Например, для десятичного основания представление 2Е-1 (здесь Е – основание десятичной системы счисления) будет иметь вид: 2*10 -1 =0.2, а представление 1.234Е5 будет соответствовать: 1.234*10 5 =123400.0.

В Паскале используются следующие типы вещественных чисел, которые определяют произвольное число лишь с некоторой конечной точностью, зависящей от внутреннего формата вещественного числа:

При описании вещественной переменной типа real в памяти компьютера будет создана переменная размерностью 4 байта. При этом 3 байта будут отданы под мантиссу, а один – под порядок.

Над действительными числовыми типами данных можно выполнять следующие операции:

  • Арифметические:
    сложение (+);
    вычитание(-);
    умножение(*);
    деление(/);
    возведение в степень;
    унарный плюс (+);
    унарный минус (-).
  • Операции отношения:
    отношение неравенства (<>);
    отношение меньше (<);
    отношение больше (>);
    отношение не меньше (>=);
    отношение не больше (<=).

Как видим, Паскаль характеризуется богатой гаммой вещественных типов, однако доступ к числовым типам данных single , double и extended возможен только при особых режимах компиляции. Эти числовые типы данных рассчитаны на аппаратную поддержку арифметики с плавающей точкой и для их эффективного использования в состав ПК должен входить математический сопроцессор.

Особое положение в Паскале занимает числовой тип данных comp , который трактуется как вещественное число без экспоненциальной и дробной частей. Фактически, comp – это «большое» целое число со знаком, сохраняющее 19..20 значащих десятичных цифр. В то же время числовой тип данных comp в выражениях полностью совместим с другими вещественными типами: над ним определены все вещественные операции, он может использоваться как аргумент математических функций и т.д.

О преобразовании числовых типов данных Паскаля

В Паскале почти невозможны неявные (автоматические) преобразования числовых типов данных. Исключение сделано только для типа integer , который разрешается использовать в выражениях типа real . Например, если переменные описаны следующим образом:

Var X: integer; Y: real;

То оператор

будет синтаксически правильным, хотя справа от знака присваивания стоит целочисленное выражение, а слева – вещественная переменная, компилятор сделает преобразование числовых типов данных автоматически. Обратное же преобразование автоматически типа real в тип integer в Паскале невозможно. Вспомним, какое количество байт выделяется под переменные типа integer и real : под целочисленный тип данных integer выделяется 2 байта памяти, а под real – 6 байта. Для преобразования real в integer имеются две встроенные функции: round (x) округляет вещественное x до ближайшего целого, trunc (x) усекает вещественное число путем отбрасывания дробной части.

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

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

Например , значения 1 и 2 относятся к целочисленному типу , их можно складывать, умножать и выполнять другие арифметические операции . Значения «монитор» и «Паскаль» носят лингвистический характер, они имеют свой набор допустимых операций. В большинстве широкоупотребительных языков могут использоваться только строго определенные, заранее известные типы. Pascal , наряду со стандартными типами, имеющимися в других языках высокого уровня, позволяет программисту образовывать собственные типы.

Все допустимые в языке Паскаль типы подразделяются на две большие группы: простые и сложные (структурированные).

Тип Диапазон Мантисса, знаков Требуемая память (байт)
REAL 2.9*10Е-39..1.7*10Е38 11-12
SINGLE 1.5*10Е-45..3.4*10Е38 7-8
DOUBLE 5.0*10Е-324..1.7*10Е308 15-16
EXTENDED 1.9*10Е-4951..1.1*10Е4932 19-20
COMP -2Е+63+1..2Е+63-1 10-20

Эффективное использование типов SINGLE, DOUBLE, EXTEND, COMP возможно только при включенной директиве {$N+}. По умолчанию она находится в выключенном состоянии. Для решения инженерно-экономических задач достаточно значений типа REAL.

Пример

Var Res, Summa, Itog: real;

Булевский тип данных описывается идентификатором BOOLEAN. Переменные и константы этого типа могут принимать только одно из двух значений: TRUE (истина) или FALSE (ложь).

Пример

Var Sel1, Sel2: boolean;

A,B,C,D: boolean;

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

Литерный (символьный) тип описывается стандартным идентификатором CHAR. Константы и переменные этого типа могут принимать одно из значений кодовой таблицы ASCII. Значение константы или переменной этого типа заключается в апострофы.

Например , Var Bukva, Znak, Simvol: char;

Bukva:=’A’; Znak:=’+’; Simvol:=’!’

Переменные символьного типа занимают в памяти 1 байт. Использование данных типа char в арифметических выражениях запрещено. К литерным значениям могут применяться операции сравнения, результат при этом зависит от номера литерной переменной или константы в кодовой таблице.

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

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

Формат

Type <имя типа>=(<значение1, значение2, ..., значениеN>);

Var <идентификатор, ...>: < имя типа>;

Пример

Type Season =(Spring, Summer, Autumn, Winter);

Var S1, S2: Season;

Autumn: (September, October, Nowember);

В данном примере приведен явно описанный тип данных пользователя Season. Определены их значения - обозначения времен года. Переменные S1 и S2 могут принимать только одно из перечисленных значений. Попытка присвоить им любое другое значение вызовет программное прерывание . Третий тип перечисления - анонимный (не имеет имени) и задается перечислением значений в разделе Var. Autumn является переменной этого типа и может принимать значения September, October, Nowember. Таким образом, может быть задан любой тип, но это не всегда приемлемо. Первый способ, безусловно, более понятен и больше соответствует характеру языка Pascal.

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

Формат

Type <имя типа> = <константа1> .. <константа2>;

Var <идентификатор>: < имя типа>;

Пример

Type Days = 1.. 31;

Var Work_d, Free_d: Days;

В этом примере переменные Work_d, Free_d имеют тип Days и могут принимать любые значения из диапазона 1 . . 31.

Выход из диапазона вызывает программное прерывание.

Можно определить интервальный тип, задав границы диапазона не значениями констант, а их именами:

Const Min = 1; Max = 31;

Type Days = Min .. Max;

Var Work_d, Free_d: Days;

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

строка - последовательность символов, заключенная в апострофы;

массив - структурированный тип данных, состоящий из фиксированного количества элементов одного и того же типа, доступ к которым осуществляется по индексу;

множество - набор выбранных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое;

запись - совокупность фиксированного числа компонентов разного типа;

файл - последовательность компонентов одного типа и одной длины.

Еще двум структурированным типам - процедурному и типу object (объектному) - трудно поставить в соответствие данные в обычном представлении.

Рисунок 1 - Набор основных типов языка Паскаль



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: