logo
Краткий курс лекций

Понятие переменной. Типы.

. КОНЦЕПЦИЯ ТИПА

ДЛЯ ДАННЫХ

В математике принято классифицировать переменные в соответствии с

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

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

В языке ПАСКАЛЬ существует правило: тип явно задается в описании переменной или функции, которое предшествует их использованию. Кон цепция типа языка ПАСКАЛЬ имеет следующие основные свойства:

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

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

-каждая операция или функция требует аргументов фиксированного ти па и выдает результат фиксированного типа.

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

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

-внутреннюю форму представления данных в ЭВМ; -операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.

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

К cкалярным типам относятся стандартные типы и типы, определяе мые пользователем.

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

Структурированные типы имеют четыре разновидности: массивы, мно жества, записи и файлы.

Кроме перечисленных, TURBO PASCAL включает еще два типа - проце дурный и объектный.

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

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

-к любому порядковому типу может быть применена стандартная функция Ord, которая в качестве результата возвращает порядко вый номер конкретного значения в данном типе;

-к любому порядковому типу могут быть применены стандартные

функции Pred и Succ, которые возвращают предыдущее и последующее значения соответственно;

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

величин данного типа.

В языке ПАСКАЛЬ введены понятия эквивалентности и совместимости типов. Два типа Т1 и Т2 являются эквивалентными (идентичными), если выполняется одно из двух условий:

-Т1 и Т2 представляют собой одно и то же имя типа;

-тип Т2 описан с использованием типа Т1 с помощью равенства или

последовательности равенств. Например:

type

T1 = Integer;

T2 = T1;

T3 = T2;

Менее строгие ограничения определены совместимостью типов. Напри мер, типы являются совместимыми, если:

-они эквивалентны;

-являются оба либо целыми, либо действительными;

-один тип - интервальный, другой - его базовый;

-оба интервальные с общим базовым;

один тип - строковый, другой - символьный.

В ТУРБО ПАСКАЛЬ ограничения на совместимость типов можно обойти с

помощью приведения типов. Приведение типов позволяет рассматривать

одну и ту же величину в памяти ЭВМ как принадлежащую разным типам.

Для этого используется конструкция

Имя_Типа(переменная или значение).

Например,

Integer('Z')

представляет собой значение кода символа 'Z' в двухбайтном представ лении целого числа, а

Byte(534)

даст значение 22, поскольку целое число 534 имеет тип Word и занимает два байта, а тип Byte занимает один байт, и в процессе приведения

старший байт будет отброшен.

Данные, как вы знаете, хранятся в памяти компьютера, но для указания на конкретную информацию очень неудобно все время записывать физические адреса ячеек. Эта проблема в языках программирования высокого уровня, в частности в Паскале, решена введением понятия переменной. Переменная в Паскале - именованный участок памяти для хранения данных определенного типа. Значение переменной (информация в соответствующих ячейках памяти) в ходе выполнения программы может быть изменено. Константами же, как вы уже знаете, называются величины, значение которых в ходе выполнения программы изменено быть не может. Конкретные переменные и константы представляют собой объекты уникальные и отличаются друг от друга именем.

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

К базовым типам относятся: тип целых чисел - Integer

тип "длинных" целых чисел - Longint

тип действительных (вещественных) чисел (то есть - с дробной частью) - Real

тип неотрицательных целых чисел от 0 до 255 - Byte

тип неотрицательных целых чисел от 0 до 65535 - Word

символьный тип - Char

строковый тип - String

логический тип - Boolean

Физически типы данных отличаются друг от друга количеством ячеек памяти (байтов), отводимых для хранения соответствующей переменной. Логическое же отличие проявляется в интерпретации хранящейся информации. Например, переменные типа Char и типа Byte занимают в памяти по одному байту. Однако в первом случае содержимое ячейки памяти интерпретируется как целое беззнаковое число, а во втором - как код (ASC) символа.

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

Раздел описания переменных начинается служебным словом Var, после которого следуют записи следующего вида: <Список имен переменных>:<Название типа>;

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

Пример:

Var

A,B,H_22,Angle : Real;

Name3 : String;

Flag : Boolean;

I,J,K,Count : Word;

П Е Р Е М Е Н Н Ы Е.

И Н И Ц И А Л И З А Ц И Я П Е Р Е М Е Н Н Ы Х

Тип переменных определяется пользователем в разделе описания переменных:{}

В настоящее время в профессиональном программировании принято записывать имена переменных с использованием так называемой венгерс кой нотации.

Венгерская нотация - это соглашение о наименованиях переменных и функций. Соглашение широко используется при программировании на языках PASCAL, C и в среде WINDOWS.

Венгерская нотация основывается на следующих принципах:

-имена переменных и функций должны содержать префикс, описывающий их тип;

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

Для языка PASCAL могут быть рекомендованы следующие префиксы для скалярных переменных и функций:

Префикс Тип

---------------------

by Byte

sh Shortint

i Integer

w Word

l Longint

r Real

si Single

d Double

e Extended

c Comp

ch Char

b Boolean

p Pointer

x,у координаты символа или точки на экране

Для величин структурированного типа могут быть использованы следующие префиксы:

a --Array

s --String

sz --Stringz

se --Set

re --Record

f ---File

t ---Text

Например:

rV, arVector[1..20], sName, iCount.

В откомпилированной программе для всех переменных отведено место в памяти, и всем переменным присвоены нулевые значения. Для задания начальных значений переменным (инициализации переменных) TURBO PASCAL позволяет присваивать начальные значения переменным одновременно с их описанием. Для этого используется конструкция

имя переменной: тип = значение;

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

const rWeight: Real = 0.4;