Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Переменные и константы. Типы данных



Переменные и константы. Типы данных

Для объявления переменных и констант в программе выделены особые синтаксические разделы. Раздел объявления констант начинается со служебного слова const и содержит перечень всех используемых в программе констант, например, описание константы Radius, принимающей значение 4, в программе выглядит следующим образом:

Const

Radius = 4;

Раздел объявления переменных начинается со служебного слова var и содержит описание всех переменных:

Var

Radius: integer

Типы данных. С понятием данных тесно связано понятие типа данных. Тип — это такая характеристика данных, которая, с одной стороны, задает границы изменения данных, а с другой — определяет множество операций над ними.

Типы данных принято делить на простые (или базовые) и структурированные.

К простым (базовым) типам в языке Pascal относятся:

• целый;

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

• логический;

• символьный;

• перечисляемый;

• тип-диапазон.

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

К стандартным структурированным типам относятся:

• массив;

• запись;

• строка;

• множество;

• файл.

 

Целый тип данных

 

Целый тип присваивается данным (переменным и константам), которые во время работы программы могут принимать лишь целочисленные значения.

Например, программа вычисления функции факториал для натурального числа N(f=1*2*3*…*n) оперирует с целыми числовыми значениями: n и f— натуральные числа.

В стандарте языка Pascal определен единственный целый тип данных Integer. В современных реализациях языка целый тип данных представлен множеством типов:

 

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

Область изменения данных

Занимаемый размер в байтах

Знак числа

Integer

-32768..32767(-231...23l-1)

2(4)

Целое со знаком

Shortint

-128..127

 

Целое со знаком

Srnallint

-32768..32767

 

Целое со знаком

Longint

-231..23l-l

 

Целое со знаком

Byte

0..255

 

Целое без знака

Word

0..216- 1

 

Целое без знака

Long word

0..4294967295

 

Целое без знака

Например, для переменных X, Y, Z, описанных в разделе объявления переменных, как



var

X: byte;

Y: smallint;

Z: word;

операторы X:= 2000; Y:= -40000; Z:= -2 будут некорректными, так как переменная X не может принимать значение, большее чем 255, Y не может быть меньше чем -32768, Z должно быть положительным.

 

Логический тип данных

Данные логического типа (Boolean) в стандарте языка могут принимать одно из двух значений: True или False. Переменная или константа логического типа занимает 1 байт, в который записывается 1, если переменная или константа имеет значение True, и 0 в противном случае.

Например, для переменной Flag, описанной в разделе объявления переменных как

Var

Flag: Boolean;

корректны операторы:

Flag:= true;

Flag:= false;

В современных реализациях языка (Turbo Pascal V 7.0, Object Pascal) добавлено еще три логических типа (для совместимости с другими языками программирования и со средой Windows). Основные отличия этих типов от стандартного заключаются, во-первых, в фактическом размере (в байтах), а во-вторых — в величине, соответствующей значению True. Для всех логических типов значению False соответствует число 0. записанное в соответствующее количество байтов. Значению же True в случае стандартного типа соответствует только 1, записанная в байт, а в случае других логических типов — любое число, отличное от 1.

 

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

Область изменения данных

Занимаемый размер в байтах

Boolean

True.. False

 

ByteBool

True..False

 

WordBool

True..False

 

LongBool

True..False

 

Между значениями True и False имеют место следующие отношения:

 

Boolean

ByteBool, WordBool, LongBool

False < True

False о True

Ord(False) = 0

Ord(False) = 0

Ord(True) = 1

Ord(True) о 0

Succ(False) = True

Succ(False) = True

Pred(True) = False

Pred(False) = True

 

 

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

Данные стандартного символьного типа представляют собой символы раскладки ASCII. Переменная или константа символьного типа занимает 1 байт памяти. В соответствии с синтаксисом языка значение символа заключается в одинарные кавычки: 'Р', 'а', V, 'с', 'а', Т.

При вызове функции Ord(Ch), где Ch — значение типа Char, возвращается порядковый номер Ch. Любое значение символьного типа можно получить с помощью стандартной функции Chr(X), где X — значение типа byte (или используя знак «#» перед числом, например #30 = Chr(30)).

Для следующих объявлений переменных

var

С:Char;

В: byte;

справедливы операторы:

С:= #3; В:= Ord(C);

В:= 125; С:= Chr(B);

 

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

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

<Перечисляемый тип>:= -(Идентификатор типа> =

(<Список идентификаторов^-); <Идентификатор типа >:= < Идентификатор>

<Список идентификаторов>:= <Идентификатор>|<Идентификатор>,

<Список идентификаторов>

Упорядочение наборов выполняется в соответствии с последовательностью, в которой перечисляются идентификаторы. Порядковый номер перечисляемой константы определяется ее позицией в списке идентификаторов при объявлении. Первый идентификатор в списке имеет порядковый номер 0, второй — порядковый номер 1 и т.д. Один и тот же идентификатор можно использовать в объявлении только одного перечисляемого типа.

Приведем примеры перечисляемого типа:

Туре

Color = (Red, Green, Blue, Black);

Operator = (Plus, Minus, Multiply, Divide);

 

Порядковые типы

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

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

Название

Действие

Тип аргумента (параметра)

Тип

результата

Примеры

Pred(X)

Возвращает предыдущее значение X. При применении к первому элементу возникает ошибка

Логический, символьный, целый, пере­числяемый

Тот же, что и у аргумента

Pred(true) = false; Pred(0) = -1; Pred(Minus) = Plus Pred(Plus) — error!

Succ(X)

Возвращает после­дующее значение X. При применении к последнему элементу возникает ошибка

Логический, символьный, целый, пере­числяемый

Тот же, что и у аргумента

Succ(false) = true; Succ(‘1’) = ‘2’; Succ(0) = 1;

Odd(X)

Проверка аргумента на нечетность: возвращает true, если аргумент не­четный, и false, если аргумент четный

Longint

Boolean

Odd(3) = true; Odd(6) = false;

Inc(X [,N])

Процедура. Увеличивает значение переменной X на 1 (если второй пара­метр отсутствует) или на N

Тип X — це­лый, логический, символьный, перечисляе­мый; Тип N — Longint

 

Inc(X) аналогично X:=X+ 1,

если X — целое; Succ(X),

если X — перечис­ляемое

Dec(X [,N])

Процедура. Уменьшает значение переменной X на 1 (если второй пара­метр отсутствует) или на N

Тип X — це­лый,

логический, символьный, перечисляе­мый; Тип N — Longint

 

Dec(X)

аналогично X:=X—1,

если X — целое; Pred(X), если X — перечис­ляемое

Ord(X)

Возвращает целое число, которое показывает, какое положение зани­мает значение X по отношению к другим значениям.

Логический, символьный, целый, пере­числяемый

Longint

Ord(false) = 0; Ord(‘1’) = 34; Ord(Club) = 0

 

Тип-диапазон

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

<Тип-диапазон>:= <Имя типа> = <Мин. значение>..<Макс. значение>; <Имя типа>:= <Идентификатор> <Мин. значение>:= <Константа> <Макс. значение>:= <Константа>

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

О.. 999

-100.. 100

Red.. Blue

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

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

const

X = 5;

Y = 10;

type

Operator = (Plus, Minus, Multiply, Divide);

Height = (X - Y) * 2.. (X + Y) * 2;

В соответствии с правилами синтаксиса языка любое определение типа, начинающееся с круглой скобки, воспринимается, как определение перечисляемого типа (см. определение типа Operator). Однако целью объявления Height является задание типа-диапазона. Решением этой проблемы является либо преобразование первого выражения, задающего минимальное значение, так, чтобы оно не начиналось с круглой скобки, либо задание другой константы, равной значению этого выражения, и затем использова­ние этой константы в определении типа, например:

type

Height = 2 * (X - Y).. (X + Y) * 2;

 

Вещественный тип данных

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

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

Тип Comp фактически является целым типом расширенного диапазона, но при этом на считается порядковым (т.е. к переменным типа Comp нельзя применять процедуры и функции, определенные только для порядковых типов — Inc, Dec и т.п.).

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

 

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

Область изменения данных

Занимаемый размер в байтах

Кол-во знача­щих цифр

Real

5.0-lO"324.. 1.7-10308

 

15-16

Real48

2.9-10"39.. 1.7 1 038

 

11-12

Single

1.5-10-*5..3.4-1038

 

7-8

Double

5.0-10"324.. 1.7-10308

 

15-16

Extended

3.6-10-495,..1.1-104932

 

19-20

Comp

-263+ 1..263 - 1

 

19-20

Currency

-922337203685477.5808..922337203685477.5807

 

19-20

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

 

Название

Назначение

Примеры

Round(X)

Округление вещественного числа до целого

Round(3.456) = 3; Round(5.678) = 6;

Trunc(X)

Выделение целой части числа

Trunc(3.456) = 3; Trunc(5.678) = 5;

 

Типизованные константы

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

 

Синтаксис объявления типизированной константы следующий:

-«Типизированная константа>::= <Идентификатор>:<Тип данных> =

<3начение>;

Константы простого типа

Объявление типизированной константы простого типа содержит в своем описании указание на простой тип данных (например, Integer, Real или Char):

const

Maximum: Integer = 999;

Factor: Real = -0.1;

Breakchar: Char = #3;

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

const

Min: Integer = 1,

Мах: Integer = 1000;

type

Vector = array [Min..Max] of Integer;

Объявление Vector является недопустимым, поскольку Min и Max являются типизированными константами.

 


Дата добавления: 2015-10-21; просмотров: 24 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
Выражение — это синтаксическая единица языка, задающая порядок и способ вычисления некоторого значения. | Целью данной курсовой работы является разработка cструктурированной кабельной системы (СКС) локальной вычислительной сети административного здания. Сетевые технологии на протяжении своего развития

mybiblioteka.su - 2015-2024 год. (0.029 сек.)