Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Глава 3 Стандартные типы данных

Поиск

Данные. Типы

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

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

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

Для обработки ЭВМ данные представляются в виде величин и их совокупностей. С понятием величины связаны такая важная характеристика, как ее тип.

Тип определяет:

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

· внутреннюю форму представления данных в ЭВМ;

· операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.

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

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

Рисунок 3.1 - Иерархия типов данных

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

К вещественным типам данных, используемым в языке программирования Turbo Pascal, относятся Real, Single, Double, Extended и Соmр. Они отличаются друг от друга диапазонами допустимых значений (т.е. значений, которые могут принимать переменные этих типов) Для хранения переменных того или иного вещественного типа требуются различные объемы памяти. Соответствующие характеристики вещественных типов представлены в табл. 3.1.

Таблица 3.1. Характеристики вещественных типов, принятых в Turbo Pascal

Вещественный тип Диапазон значений Число значащих цифр мантиссы Требуемая память (байт)
Real 2.9E-39.. 1.7Е38 11-12  
Single 1.5Е-45..3.4Е38 7-8  
Double 5.0Е-324.. 1.7Е308 15-16  
Extended 1.9E-4951.. 1.1Е4932 19-20  
Comp -2E+63+1..2Е+63-1 19-20  

 

Вот как выглядят описания переменных вещественных типов.

Var

a:real; b:single; c:double; d:extended; e:comp;

Среди упомянутых выше вещественных типов особого внимания заслуживает Соmр. Данный тип — нечто среднее между вещественным и целочисленным типами; он обла­дает свойствами одного и другого. Переменные типа Comp могут принимать только це­лые значения — особенность целочисленных типов. Однако при этом Comp не является порядковым типом, и именно потому его относят к категории вещественных типов.

Применимые операции

К вещественным числам применимы четыре арифметических действия; полученный при этом результат также будет вещественным числом. Речь идет о таких действиях, как сложение (+), вычитание (—), умножение (*) и деление (/). В одном выражении могут присутствовать переменные как одного, так и разных вещественных типов. Например, объявленные выше переменные a, b, с, d и e могут участвовать в следующих выражениях.

a+b+e; c-d; (a*b+c*d)/2; e/(c+d);

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

К вещественным значениямприменимы все операции сравнения; эти операции представлены в таблице 3.2.

Таблица 3.2 Операции сравнения

Обозначение Операция
= Равно
<> Не равно
> Больше
< Меньше
>= Больше или равно
<= Меньше или равно

Любая из этих операций даст логический результат.

Применимые стандартные подпрограммы

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

Функция Abs — возвращает абсолютную величину параметра.

Функции Sin, Cos и ArcTan — возвращают соответственно синус, косинус и арктангенс параметра.

Функция Exp — возвращает экспоненту параметра.

Функции Sgr и Sgrt — возвращает соответственно квадрат и квадратный корень параметра.

Функции Int и Frac — возвращают соответственно целую и дробную части параметра.

Функции Ln — возвращает натуральный логарифм параметра.

Функции Pi — возвращает значение Pi (Pi=3.1415926535897932385).

Функция Round —округляет (согласно правилам округления) значение вещественного типа до ближайшего значения целочисленного типа.

Функция Trunc — превращает значение вещественного типа в целочисленное значение путем отбрасывания дробной части.

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

К целочисленным относятся такие типы данных, как Integer, Shortlnt, Longlnt, Byte и Word. Так же, как и вещественные типы, они отличаются диапазонами допустимых значений и объемом памяти, требуемой для содержания переменных этих типов. Соот­ветствующие характеристики для упомянутых типов представлены в табл. 3.3.

Таблица 3.3. Характеристики целочисленных типов

Целочисленный тип Диапазон значений Требуемая память (байт)
Integer -32768.. 32767  
Shortlnt -128.. 127  
Longlnt -2147483648.. 2147483647  
Byte 0.. 255  
Word 0.. 65535  

Из целочисленных типов, помимо Integer, мы имели дело с Longlnt.

Существование в Turbo Pascal нескольких целочисленных типов обусловлено теми же причинами, которые выше упоминались для вещественных типов. В самом деле, если в некоторой программе имеется переменная, определяющая порядковый номер дня в году понятно, что допустимые для нее значения лежат в диапазоне от 1 до 366. В этом случае объявить данную переменную как принадлежащую типу Longlnt нерационально, а типы Shortlnt и Byte здесь просто не подходят, поскольку значения переменной могут выйти за пределы соответствующих диапазонов. Для этой переменной наиболее подходят типы Integer и Word, причем последний предпочтительнее, поскольку наша переменная может принимать только положительные значения (т.е. исключаются ситуации, когда переменная случайно может принять отрицательное значение).

Применимые операции

К значениям целочисленных типов применимы те же арифметические операции, что и к вещественным значениям. Причем если операции сложения (+), вычитания (-) И умножения (*) над двумя целыми значениями приведут к целочисленному результату, то операция деления (/), примененная к двум целым значениям, даст вещественный результат.

Кроме обычных арифметических операций, к целочисленным значениям в Turbo Pascal применимы две специальные операции деления, обозначаемые зарезервирован­ными словами DIV и MOD. Предположим, программе определены две целочисленные переменные: а и Ь. Тогда результатом Операции a div b будет целая часть частного от деления а на b.

33 div 2 = 16;

3 div 7 = 0;

8 div 2=4;

А результатом операции a mod b будет остаток от деления а на b (не путайте остатокс дробной частью).

33 mod 2=1;

3 mod 7=3;

8 mod 2=0;

Применимые стандартные подпрограммы

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

К переменным и значениям целочисленных типов применимы также процедуры и функции для работы с порядковыми типами. Речь идет о подпрограммах Dec, Inc, Odd, Pred и Succ.

Процедура Dec — уменьшает значение переменной.

Процедура Inc — увеличивает значение переменной.

Функция Odd — проверяет, является ли параметр нечетным числом.

Функции Pred и Succ — возвращают значение того же порядкового типа, соот­ветственно предшествующее значению параметра либо следующее за ним.

Вот примеры использования представленных выше подпрограмм.

х:=Pred(6); {х присваивается значение 5}

y:=Succ(6); {у присваивается значение 7}

Функции Pred и Succ соответственно уменьшают и увеличивают на единицу зна­чение, указанное в качестве параметра функции.

if Odd(x)=True then х:=х+10;

Функция Odd проверяет на нечетность значение, заданное в качестве ее параметра. (Если значение оказывается нечетным, оно тут же увеличивается на десять.)

а:=5; Inc(а,6);

Процедура Inc увеличивает значение целочисленной переменной a (5) на 6 (т.е. а присваивается новое значение 11).

b:=4; Dec(b,3);

Процедура Dec уменьшает значение целочисленной переменной b(4) на 3 (т.е. b присваивается новое значение 1).

К переменным и значениям, принадлежащим одному из целочисленных типов, применимы также некоторые функции преобразования типов, такие как Chr, Ord, High и Low.

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

Вот примеры использования функций High и Low.

WriteLn(High(Integer)); WriteLn(bow(Integer));

WriteLn(High(Longlnt)); WriteLn(Low(Longlnt));

Операторы из первой строки вернут значения соответственно 32767 и -32768 (наибольшее и наименьшее значения, допустимые для типа Integer).

Операторы из второй строки вернут значения 2147483647 и -2147483648 — наи­большее и наименьшее значения типа Longlnt.

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

В Turbo Pascal принят единственный стандартный символьный тип данных — Char. Переменные этого типа предназначены для хранения отдельных символов — букв, цифр и специальных знаков. Каждому символу приписывается целое число в диапазоне 0... 255. Это число служит кодом внутреннего представления символа, его возвращает функция ORD. Для кодировки используется код ASCII (American Standard Code for Information Interchange - американский стандартный код для обмена информацией). Это 7-битный код, т. е. с его помощью можно закодировать лишь 128 символов в диапазоне от 0 до 127. В то же время в 8-битном байте, отведенном для хранения символа в Турбо Паскале, можно закодировать в два раза больше символов в диапазоне от 0 до 255. Первая половина символов ПК с кодами 0... 127 соответствует стандарту ASCII. Вторая половина символов с кодами 128... 255 не ограничена жесткими рамками стандарта и может меняться на ПК разных типов.

К типу CHAR применимы операции отношения, а также встроенные функции.

Применимые операции

Над значениями типа Char возможны операции сравнения =, <>, >, >=, <, <= (см. табл. 3.2). Причем они дают такой же результат, как и при применении их к ко­дам соответствующих символов.

Применимые стандартные подпрограммы

К переменным и значениям, принадлежащим символьному типу, применимы процедуры и функции для работы с порядковыми типами Dec, Inc, Pred и Succ (но не Odd).

К символьным переменным и значениям также применимы некоторые функции преобразования типов, такие как High, Low, Ord и UpCase.

Функция Ord возвращает порядковый номер значения, принадлежащего одному из порядковых типов.

Функция UpCase преобразует аргумент (значение типа Char) в соответствующий символ верхнего регистра.

CHR(B) - преобразует выражение В типа BYTE в символ;

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

for с:= 'a' to 'z' do write(c); где с - переменная типа char, приведет к выводу всех малых букв латинского алфавита:

abcdefghijklmnopqrstuvwxyz.

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

Вот примеры использования функций Ord и UpCase.

WriteLn(Ord('b');

Данный оператор определит код (или порядковый номер) символа "b", а затем вы­ведет полученное значение (98) на экран.

WriteLn(UpCase('а'));

Функция UpCase возвратит символ верхнего регистра (А), соответствующий пара­метру (a), который затем будет выведен на экран.

У символа малая буква а - код 97, заглавная буква А имеет код 65. Символы с кодами 0... 31 относятся к служебным кодам. Коды 32... 64 отводятся под специальные знаки и цифры.

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

#97 = chr(97) = ‘а’ (символ 'а'),

#0 = chr(O) = ‘’ (нулевой символ),

#32 = chr(32) =’ ‘ (пробел).

Символы, имеющие коды от 1 до 31 (управляющие), могут быть представлены их "клавиатурными" обозначениями - значком ^ и буквой алфавита с тем же номером (для диапазона кодов 1... 26) или служебным знаком (для диапазона 27... 31):

^А = #1 = chr(1) - код 1,

^В = #2 = chr(2) - код 2,

^[ = #27 = chr(27) - код 27,

в том числе "G - звонок (код 7), ^I - TAB (код 9), ^J - забой (код 10), ^М -возврат каретки (код 13).

 

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

Переменные типа Boolean принимают значения TRUE и FALSE (правда и ложь), которые также могут быть представлены в виде двоичных цифр — соответственно 1 и 0.

Применимые операции

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

К логическим значениям также применимы логические операции, которые пере­числены в табл. 3.4.

Таблица 3.4. Логические операции

Обозначение операции Выполняемое действие
AND(И) Логическое умножение
OR(ИЛИ) Логическое сложение
XOR (исключающее ИЛИ) Сложение по модулю 2
NOT (HE) Логическое отрицание

Предположим, в программе определены переменные а и b, принадлежащие типу Boolean. Результаты применения к этим переменным (при различных значениях) ло­гических операций демонстрирует табл. 4.5.

Таблица 4.5. Результаты применения логических операций

Значения Операции
а b a and b a or b axor b not a
false false true true false true false true false false false true false true true t rue false true true false true true false false

Применимые стандартные подпрограммы

Логический тип относится к порядковым типам, причем переменные и значения типа Boolean могут принимать только два значения: TRUE и FALSE (TRUE>FALSE).

К переменным и значениям, принадлежащим логическому типу, применимы (с учетом особенностей этого типа, изложенных в предыдущем абзаце) все проце­дуры и функции для работы с порядковыми типами, а также некоторые функции преобразования типов (такие, как High, Low, Ord).

 




Поделиться:


Последнее изменение этой страницы: 2017-02-17; просмотров: 506; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.176.238 (0.008 с.)