Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум_2семестр.doc
Скачиваний:
59
Добавлен:
15.06.2014
Размер:
983.04 Кб
Скачать

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

В отличие от порядковых типов значения вещественных типов опреде­ляют число лишь с некоторой точностью, зависящей от внутреннего форма­та числа. Вещественное число в памяти ПК представляется в экспоненци­альной форме и состоит из знака, мантиссы и порядка числа. Десятичная точка подразумевается перед левым (старшим) разрядом мантиссы (такая мантисса называется нормализованной). При выполнении операций десятичная точка сдвигается путем выполнения умножения мантиссы на E (экспоненту) с порядком:

<Знак><Мантисса>Е<Порядок> или <Знак><Мантисса>*10<Порядок>.

В зависимости от числа разрядов, отводимых под мантиссу и поря­док, в ТП различают следующие вещественные типы (табл.5).

Все типы, кроме REAL, могут использоваться только при особых ре­жимах компиляции среды или подключенном сопроцессоре. Подключение соп­роцессора производится до выполнения программы указанием ключа $N+; отключает сопроцессор ключ $N-. Арифметический сопроцессор всегда обрабатывает числа в формате EXTENDED, другие типы получаются усечени­ем результатов до нужных размеров.

Таблица 5

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

Длина,

байт

Название типа

Значащие цифры мантиссы

Диапазон десятич­ного порядка

4

6

8

10

8

SINGLЕ

REAL

DOUBLE EXTENDED

COMP

7..8

11..12

15..16

19..20

19..20

-45..+38

-39..+38

-324..+308

-4951..+4932

-2E63+1..2E63-1

Тип COMP трактуется как "большое" целое число со знаком. В то же время в выражениях он полностью совместим с другими вещественными ти­пами и порядковым не считается. Для работы с вещественными типами определены встроенные функ­ции: sin, cos, arctаn, ln, exp, sqr, abs, sqrt, а также функции табл.6.

Операции +,-,*,/ дают вещественный результат, если хотя бы один из аpгументов вещественный.

Таблица 6

Встроенные функции

Обращение

Тип параметра

Тип результата

Примечание

Pi

Frac(Х)

Int(x)

Random

Randomize

вещественный

вещественный

вещественный

вещественный

вещественный

вещественный

Pi=3,141592653

Дробная часть Х

Целая часть x

0<x<1  случайное целое число

Инициализация датчика случайных чисел

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

Массивыупорядоченная структура однотипных данных, хранящихся последовательно. Массив обязательно имеет размеры. Описывается в разделе TYPE или VAR следующим образом:

Type <имя>=array[индексный тип] of <базовый тип>; или

Var <Имя_переменной>: array [ диапазон_индексов] of <базовыйтип>;

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

Пpимер: TYPE

array10=array[1..10] of integer;

array11=array[11..22] of real;

VAR V:array[-3..2] of char; {массив из 6 элементов}.

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

TYPE

DIAP=1..100;

VECTOR=array[DIAP] of real;

PRIZ=array[Boolean] of char;

При записи сложных массивов индексы разных диапазонов могут при­надлежать разным типам. Например:

VAR V: array[0..10,'A'..'C',Boolean] of char;

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

CONST

K=10; L=5;

VAR

A:ARRAY[1..K] OF INTEGER;

B,С:ARRAY[1..K,1..L] OF REAL;

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

Обращение к элементу массива производится указанием имени массива и индексов, заключенных в квадратные скобки:

<имя>[<индексы>].

Пример:

A[1]:=1; B[8,5]:=В[8,1]+B[8,2];

V[1,'B',False] или V[1]['B'][False].

В данном типе определена единственная операция присваивания. Мож­но присваиваить массив лишь массиву, например: A:=С.

Операции сравнения производятся только поэлементно.

Обнуление элементов массива выполняется циклом

FOR I:=1 TO K DO A[I]:=0.

Разрешается обьявлять массивы массивов, например:

TYPE VECTOR=array[1..5] of real;

MATRIX=array[1..10] of VECTOR;

или

MATRIX=array[1..10] of array[1..5] of real;

или

MATRIX=array[1..10,1..5] of real;

Приведенные три последних вида записей эквивалентны.

Слову array может предшествовать ключевое слово PACKED, которое означает «упакованный». Заметим, что в Турбо Паскале все массивы хра­нятся в упакованном виде, поэтому PACKED писать не рекомендуется.