ЛЕКЦИЯ 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. Типы данных Паскаля
Стандартные | Определяемые программистом | ||
Логические | Простые | Составные | |
Целые Вещественные Символьный Строковый Адресный Файловые | Перечисляемый Интервальный Адресные | Массивы Строки Записи Множества | Файлы Процедурные типы Объекты |
Стандартные типы не требуют предварительного определения. Для каждого типа существует ключевое слово, которое используется при описании переменных, констант и т. д. Если же программист определяет собственный тип данных, он описывает его характеристики и сам дает ему имя, которое затем применяется точно так же, как имена стандартных типов. Описание собственного типа данных должно задавать всю информацию, необходимую для его использования: внутреннее представление и допустимые действия.
Сначала мы рассмотрим стандартные типы, используемые в простейших программах. Рассмотрение каждого типа будем вести в соответствии с определением типа.