ЛЕКЦИЯ 4. ВИДЫ ПРЕДСТАВЛЕНИЯ ДАННЫХ В ТУБО-ПАСКАЛЬ

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

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

Этот тип данных, обозначаемый ключевым словом char, служит для представления любого символа из набора допустимых символов. Под каждый символ отводится 1 байт. К символам можно применять операции отношения (<, <=, >, >=, =, <>), при этом сравниваются коды символов. Меньшим окажется символ, код которого меньше. Других операций с символами нет, да они и не имеют смысла.
Стандартных подпрограмм для работы с символами тоже немного (табл. 1.11).
Таблица 1.11. Стандартные функции для символьных величин

Имя Описание Результат Пояснения
ord Порядковый номер символа Целый ord('b') даст в результате 98 ord('ю') даст в результате 238
chr Преобразование в символ Символьный chr(98) даст в результате 'b' chr(238) даст в результате 'ю'
pred Предыдущий символ Символьный pred('b') даст в результате 'a'
succ Последующий символ Символьный succ('b') даст в результате 'c'
upcase Перевод в верхний регистр Символьный upcase('b') даст в результате 'B'

 

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

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

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

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

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

Константа — величина, не изменяющая свое значение в процессе работы программы. Классификация констант Паскаля приведена в табл. 1.1. Две нижние строки таблицы представляют собой примеры соответствующих констант.
Таблица 1.1. Классификация констант Паскаля

Константы
Целые Вещественные Символьные Строковые
Десятичные Шестнадцате- ричные С плавающей точкой С порядком    
2 15 $0101 $FFA4 –0.26 .005 21. 1.2e4 0.1E–5 'k' #186 ^M 'абырвалг' 'I''m fine'

Как видно из таблицы, десятичные целые константы представляются в естественной форме. Шестнадцатеричная константа представляет собой знак $, непосредственно за которым следуют шестнадцатеричные цифры (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F). В табл. 1.1 представлены в шестнадцатеричном виде числа 257 и 65 444. Вещественные константы записываются с точкой перед дробной частью. Либо целая, либо дробная часть может отсутствовать. Вещественная константа с порядком представляется в виде мантиссы и порядка. Мантисса записывается слева от знака E или e, порядок — справа от этого знака. Значение константы определяется как произведение мантиссы и возведенного в указанную в порядке степень числа 10. В табл. 1.1 представлены числа 1,2ґ104 и 0,1ґ10–5. Пробелы внутри числа не допускаются.
Символьные константы служат для представления любого символа из набора, используемого в данном компьютере. Так как под каждый символ отводится 1 байт, всего используется 256 символов. Каждому символу соответствует свой код. В операционной системе MS-DOS для кодировки символов используется стандарт ASCII, являющийся международным только в первой половине кодов (от 0 до 127); вторая половина кодов (от 128 до 255) является национальной и различна для разных стран. Более того, в нашей стране есть несколько видов кодировок русских букв. Кодовая таблица MS-DOS, используемая в Паскале, приведена в приложении 5 на с. . Первые 32 символа являются управляющими: хотя многие из них имеют графическое представление, предназначены они для передачи управляющих сигналов внешним устройствам, например монитору, принтеру или модему. Символьные константы записываются в одной из трех форм, представленных в табл. 1.1.

1.
Символ, заключенный в апострофы.
2.
Десятичный код символа, предваряемый знаком #. Применяется для представления символов, отсутствующих на клавиатуре (в табл. 1.1 приведено представление символа є).
3.
Буква, предваряемая знаком ^. Используется для представления управляющих символов. Код буквы должен быть на 64 меньше, чем код представляемого таким образом символа (в табл. 1.1 представлен символ с кодом 13, по которому при выводе выполняется переход к началу строки).
Строковая константа — это последовательность любых ASCII-символов, расположенная на одной строке и заключенная в апострофы. Если требуется представить сам апостроф, он дублируется. Максимальная длина строковой константы — 126 символов.

Переменная - это область оперативной памяти, занимающая несколько ячеек и имеющая свое имя. Переменная обладает следующими свойствами:

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

 

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

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

 внутреннее представление данных, а следовательно, и диапазон их возможных значений;

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

Классификация типов

Любая информация легче усваивается, если она “разложена по полочкам”. Поэтому, прежде чем перейти к изучению конкретных типов языка Паскаль, давайте рассмотрим их классификацию в табл. 1.2.

 

Таблица 1.2. Типы данных Паскаля

Стандартные Определяемые программистом
Логические Простые Составные  
Целые Вещественные Символьный Строковый Адресный Файловые Перечисляемый Интервальный Адресные Массивы Строки Записи Множества Файлы Процедурные типы Объекты


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