Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Глава 3. Простые типы данных





Иерархия типов

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

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

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

Турбо-Паскаль наследует систему типов стандартного языка, но несколько расширен, что представлено на схеме рис. 3.1.

Базовыми являются стандартные типы, на основе которых по определенным правилам образуются все остальные. Новые типы, появившиеся в Турбо-Паскале, отмечены звездочкой, в языке Delphi введены и еще дополнительные типы. Каждому типу соответствует свое имя, указываемое при описании переменных или введении новых типов.

 

Рис. 3.1. Иерархия стандартных типов языка Паскаль.

Целые типы

В Паскале есть только один целый тип – Integer. В Турбо-Паскале это группа из пяти типов, обозначающих множества целых чисел в разных диапазонах. Их характеристики приведены в табл. 3.1.

Таблица 3.1. Целые типы данных

Обозначение целого типа Диапазон значений Размер памяти в байтах
Shortint -128...127  
Integer -32768...32767  
Longint -2 147 483 648...2 147 483 647  
Byte 0...255  
Word 0...65535  

 

Целая константа – это последовательность цифр со знаком или без знака. Константы записываются в десятичной системе счисления, но в Турбо-Паскале может использоваться и шестнадцатеричная. В этом случае перед числом ставится знак $ и разрешается дополнительно к цифрам использовать буквы от А до F ($f5). Обычно шестнадцатеричная система счисления используется с целыми типа Byte и Word. Пример описания типа:

Const X:Word=$ff25;

Var i:byte;

l,m:integer;

Над целыми значениями допустимы следующие арифметические операции:

+ сложение,

- вычитание,

* умножение,

/ деление.

Если первые три операции дают целый точный результат, то последняя – вещественный, который может быть приближенным, например 1/3=0.3333333. Для точного выполнения деления используются операции целочисленной арифметики:

div – деление нацело;

mod – остаток от целочисленного деления. Например:

1 div 3 = 0

1 mod 3 = 1

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

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

В Паскале есть только один вещественный тип – Real. В Турбо-Паскале это группа из пяти типов, обозначающих множества вещественных чисел в разных диапазонах и с различной точностью, ориентированных на представление информации в конкретных процессорах – фирмы Intel. Их характеристики приведены в табл. 3.2.

Таблица 3.2. Вещественные типы данных

Обозначение типа Диапазон значений Число десятичных цифр мантиссы Размер памяти в байтах
Real 2.9*10-39 ... 1.7*10+38 11-12  
Single 1.5*10-45 ... 3.4*10+38 7-8  
Double 5.0*10-324 ... 1.7*10+308 15-16  
Extended 3.4*10-4932 ... 1.1*10+4932 19-20  
Comp -9.2*10+18 ...9.2*10+18 19-20  

 

Использование последних четырех типов возможно только с использованием математического сопроцессора (должна быть включена соответствующая опция транслятора). Тип Comp хотя и считается вещественным, но на самом деле содержит целые числа из весьма большого диапазона.

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

[<знак>]<целая часть>.<дробная часть>

Наличие точки является признаком вещественного типа числа.

 

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


[<знак мантиссы>]<целая часть мантиссы> [.<дробная часть мантиссы>] E [<знак порядка>]<порядок>

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

1234.5610 = 1.23456E3 (1,23456×103) = 1234.56E0,

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

Таким образом, признаком вещественного числа является наличие точки или разделителя. Так, число «единица» может быть представлено в трех разных форматах:

1Е0 – вещественное число с плавающей точкой;

1.0 – вещественное число с плавающей точкой;

1 – целое число.

Над вещественными значениями допустимы следующие операции:

+ сложение;

- вычитание;

* умножение;

/ деление.

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

Применение операций отношения дает логический результат.

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

Логический тип основан на правилах Булевой алгебры, широко используемой в цифровой электронике. Этот тип определяет всего два значения True (истина) и False (ложь), которые и являются константами. Описывается этот тип словом Boolean, определенным как

Type Boolean = (False,True);

Над значениями логического типа определены следующие операции:

NOT – «НЕ», логическое отрицание или инверсия, в отличие от остальных выполняется над одним операндом (унарная операция);

OR – «ИЛИ», логическое сложение или дизъюнкция;

AND – «И», логическое умножение или конъюнкция;

XOR – «исключающее ИЛИ», сложение по модулю 2 (в стандартном Паскале отсутствует).

 

Пусть А и В – логические значения, тогда результат операций будет определяться по табл. 3.3:

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

А В not A A or B A and B A xor B
True True False True True False
True False False True False True
False True True True False True
False False True False False False

 

В Паскале, как и в цифровой электронике, True кодируется единицей, а False – нулем (0 – низкое напряжение, 1 – высокое; при использовании обратной логики – наоборот). Поэтому логические операции разрешены не только над логическими значениями, но и над целыми, представляемыми в двоичной системе счисления. Например, если А=21 (101012), а В=9 (10012), и они описаны как байты, то:

not A = 111010102 = 23410

A or B = 000111012 = 2910

A and B = 00000001

Обычно их используют над беззнаковыми целыми типа Byte или Word.

 

Шесть операций отношения или сравнения:

> < = ¹ ³ £,

применимые ко всем простым типам и многим структурированным, всегда дают логический результат. Более того, и над логическими значениями допускается выполнение операций отношения:

True > False ® True,

True < False ® False.

Возможны даже такие записи:

Var i:boolean;

...

For i:=False to True do

<оператор>;

Здесь оператор выполнится два раза, сначала со значением i = False, затем i = True.

Литерный тип

В качестве данных в Паскале могут выступать отдельные символы или литеры. Этот тип данных описывается словом Char и занимает 1 байт. Значениями здесь являются 256 символов кодировочной таблицы ASCII (American Standard Code for Information Interchange – Стандартный американский код обмена информацией), используемой в ОС DOS.


 

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

'*' 'A' '!'

Если символ нельзя отобразить в тексте программы (служебные и неотображаемые символы), то можно воспользоваться эквивалентной формой записи

#<целочисленный код символа>.

Например:

#$7F – Delete, стереть последний символ. Символом DEL, состоящим в двоичном коде из всех единиц, можно было забить любой символ. Устройства и программы игнорировали DEL так же, как NUL. Код этого символа происходит из первых текстовых процессоров с памятью на перфоленте: в них удаление символа происходило забиванием его кода дырочками (обозначавшими логические единицы).

#7 – Bell, звонок, звуковой сигнал. Имеет отношение не к монитору, а ко встроенному динамику.

 

Если используются специальные символы, называемые управляющими кодами (то есть с использованием префиксной клавиши Ctrl), то можно использовать запись, например вида ^C (символ с кодом 3: ext – конец текста). Все коды с номерами 0-31 являются управляющими, и их можно представить в таком виде. Например, BEL можно записать как ^G.

Над значениями литерного типа можно выполнять только операции отношения.

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

Часто в программах число используется не в качестве арифметической величины, а как указатель некоторого элемента множества. В Паскале предусмотрена возможность называть элементы множества своими именами, то есть можно определить новый тип путем явного перечисления всех его возможных значений, причем каждое такое значение будет определяться только именем. Считается, что значения перечисляемого типа указаны в порядке возрастания, начиная с нулевого, поэтому над этими элементами можно выполнять операции отношения. Причем наиболее часто используются операции = и ¹.

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

(<имя1>[,<имя2>...])

Например:

Type

Color = (Red,Yellow,Green); {Светофор}

Day = (Mon,Tue,Wed,Thu,Fri,Sat,Sun);

Var c:Color;

d:day;

...

If d>Fri Then Writeln ('Выходной день');

Для любого перечисляемого типа Т, определенного записью

T = (w0,w1,...,wn),

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

1. Различимости

wi ¹ wj, если i ¹ j.

2. Упорядоченности

wi < wj, если i < j.

Причем значениями типа Т могут быть только w0, w1,..., wn. Более того, эти имена должны быть уникальны, то есть не должны повторяться ни в других типах, ни при описании переменных.

§3.6. Диапазоны (интервальный тип)


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

Диапазоны можно задавать для любого простого, но дискретного типа. Дискретными или счетными типами являются такие, для которых можно указать два соседних значения, между которыми нельзя добавить еще одно. Например, для целого 1 и 2, для перечисляемого Sat и Sun и т. д. Единственным исключением здесь являются вещественные числа. В дальнейшем будет показано, что вещественные числа не могут использоваться в некоторых операторах и конструкциях языка Паскаль, в том числе и в диапазонах.

Для указания диапазона используются 2 точки:

Type C = '0'..'9';

Var Min,Sec:0..59;

Hour:0..23;

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







Date: 2016-07-22; view: 722; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.022 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию