Материал: Мансуров. Основы программирования в среде Lazarus. 2010

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Глава 3 Более сложные элементы языка

____________________________________________________________________

 

 

 

Таблица 3.1

Тип

Диапазон значений

Размер памяти (байты)

Формат

Byte

0..255

1

без знака

ShortInt

-128..+127

1

со знаком

Word

0..65535

2

без знака

SmallInt

-32768..+32767

2

со знаком

Integer

-2147483648..+2147483647

4

со знаком

LongInt

-2147483648..+2147483647

4

со знаком

LongWord

0..4294967295

4

без знака

Cardinal

0..4294967295

4

без знака

Int64

-263..+263-1

8

со знаком

Как видите, количество целочисленных типов достаточно велико, однако наиболее часто используемыми являются типы integer и cardinal. Эти два типа обеспечивают максимальную производительность на 32-битных платфор-

мах. Заметим, что указанный диапазон, соответствующий LongInt, верен только для режимов компиляции OBJFPC и DELPHI. В остальных случаях (в т.ч. и по умолчанию) Integer соответствует SmallInt (2 байта).

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

Интервальный тип определяется на основе порядкового типа и позволяет ограничить диапазон допустимых значений в виде некоторого интервала вида:

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

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

Естественно, максимальное значение должно быть больше минимального. Опи-

сание переменной интервального типа имеет вид:

var <Переменная>: Минимальное значение..Максимальное значение;

Например:

var day: 1..31;

month: 1..12;

year: 2000..2008;

161

3.2 Еще раз о типах данных

____________________________________________________________________

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

В этом типе, как следует из названия, значения задаются простым пере-

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

var education: (student, bachelor, graduate, doctor);

course: (first, second, third, fourth, fifth);

Порядковый номер элемента списка начинается с 0, таким образом student имеет порядковый номер 0, bachelor порядковый номер 1, graduate

номер 2, doctor номер 3.

3.2.1.4. Множества

Множество в Object Pascal представляют собой группу элементов, с

которыми можно сравнивать другие элементы с целью определения входят эти элементы в состав множества или нет. Множества предоставляют программи-

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

Set of <Базовый тип>

Например:

var

num: set of 1..10;

num1: set of 20..100;

Здесь num – множество, состоящее из десяти целых чисел.

num1 – множество состоящее из целых чисел от 20 до 100. Значением пе-

ременной типа множество является набор значений или интервалов порядково-

го типа, заключенных в квадратные скобки. Такая форма определения множе-

ства называется конструктором множества.

Присвоение значения переменным: num:=[1, 3, 5, 7, 9]; num1:=[21..75, 81, 82..95];

162

Глава 3 Более сложные элементы языка

____________________________________________________________________

Чтобы определить принадлежит ли переменная множеству, используется оператор in:

if 81 in num1 then

<Какие-то действия >

Можно множество заранее не определять, а сразу использовать конструк-

тор множества в операторе in:

if range in [1..50, 75..100] then

<Какие-то действия >

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

Логический тип имеет только два значения true (истина, да) и false

(ложь, нет). Причем, логическому true соответствует порядковое число 1, а false 0. Таким образом true "больше" false!

Возможные логические типы представлены в таблице 3.2.

 

Таблица 3.2

Тип

Размер памяти (байты)

 

 

Boolean

1

 

 

ByteBool

1

 

 

WordBool

2

 

 

LongBool

4

 

 

Рекомендуется использовать тип boolean, остальные типы введены для совместимости с другими языками.

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

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

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

163

3.2 Еще раз о типах данных

____________________________________________________________________

Основные вещественные типы представлены в таблице 3.3.

 

 

 

 

 

 

 

Таблица 3.3

Тип

Диапазон значений

Число значащих

Размер

памяти

 

 

 

 

 

разрядов

(байты)

 

Real48

2.9

10 39 ..

1.7

1038

11 – 12

6

 

Real

5.0

10 324 ..

1.7

10308

15 – 16

8

 

Single

1.5 10 45 ..

3.4

1038

7 – 8

4

 

 

 

 

 

 

 

 

 

Double

5.0

10 324 ..

1.7

10308

15 – 16

8

 

Extended

3.6

10 4932 ..

1.1 104932

19 – 20

10

 

 

 

 

 

 

 

 

Comp

-263 .. 263

 

 

19 – 20

8

 

Currency

-922337203685477.5808

19 – 20

8

 

 

+922337203685477.5807

 

 

 

 

 

 

 

 

 

 

 

Максимальную производительность и точность обеспечивает тип

Extended. Тип Currency минимизирует ошибки округления и его целесооб-

разно применять для денежных расчетов. Тип Comp на самом деле целое 64-х

разрядное число, но оно обрабатывается так же как и вещественные типы, т.е. в

выражениях полностью совместим с вещественными типами.

3.2.1.7. Указатели

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

вом своего значения (адреса). Примером указателя в обычной жизни может служить номер телефона. Само по себе это число ничего не значит, но если вы наберете этот номер в своем мобильном телефоне, вы "попадете" к нужному абоненту.

Указатели бывают типизированные и нетипизированные. При объявлении типизированного указателя всегда указывается тип данных, на которые ссыла-

ется указатель. Описание указателя имеет вид:

164

Глава 3 Более сложные элементы языка

____________________________________________________________________

var имя переменной: ^тип;

Например:

var px: ^integer; // указатель на данные целого типа py: ^real; // указатель на данные вещественного типа pname: ^string; // указатель на данные типа строка

pphone: ^string[7];

Компилятор строго следит за правильностью использования указателя и типом данных, на которые ссылается этот указатель.

Для нетипизированных указателей тип данных не указывается. В этом слу-

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

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

var p: pointer;

Более подробно мы будем изучать указатели в главе 4.

В дальнейшем мы рассмотрим еще типы данных, в частности, в следую-

щем разделе познакомимся с типами данных, позволяющих обрабатывать сим-

вольную информацию.

3.3.Обработка символьной информации в Паскале

3.3.1Символьные и строковые типы данных.

Первые применения ЭВМ были в основном для решения так называемых вычислительных задач, т.е. задач возникающих в математике, в научно – тех-

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

дач составляет всего 20 – 25% по сравнению с их применением в других облас-

тях. К таким задачам относятся задачи, возникающие в лингвистике, логике,

165

Смотрите также:

11 Горм +
113
14
1433
1511
1632
199
204
2N4264RE
3773