- •Содержание
- •Часть 1. Основные понятия программирования §1.1. Этапы разработки программного обеспечения
- •§1.2. Основные сведения об алгоритмах Понятие алгоритма
- •Свойства алгоритма
- •Формы записи алгоритмов
- •Блок-схемы алгоритмов
- •§1.3. Языки программирования
- •§1.4. Паскаль и Object Pascal, Турбо-Паскаль и Delphi
- •Контрольные вопросы
- •Язык, оболочка и интегрированная среда разработки
- •Часть 2. Общие сведения о языке Паскаль §2.1. Алфавит и служебные слова
- •Описание общих конструкций языка
- •§2.2. Структура программы
- •§2.3. Разделы описаний Описание меток
- •Определение констант
- •Определение типов
- •Описание переменных
- •Контрольные вопросы
- •Часть 3. Простые типы данных Иерархия типов
- •§3.1. Целые типы
- •§3.2. Вещественные типы
- •§3.3. Логический тип
- •§3.4. Литерный тип
- •§3.5. Перечисляемый тип
- •§3.6. Диапазоны (интервальный тип)
- •Дополнительные типы в Delphi
- •Контрольные вопросы
- •Глава 4. Операторы языка Паскаль Выражения
- •§4.1. Оператор присваивания
- •§4.2. Ввод-вывод данных
- •§4.3. Составной оператор
- •§4.4. Пустой оператор
- •§4.5. Безусловный оператор перехода
- •§4.6. Условный оператор
- •§4.7. Оператор цикла с параметром for
- •§4.8. Оператор цикла с предусловием while
- •§4.9. Оператор цикла с постусловием repeat
- •§4.10. Оператор выбора case
- •Контрольные вопросы
- •Глава 5. Процедурное программирование §5.1. Функции
- •Параметры – значения
- •Параметры – переменные
- •Бестиповые параметры
- •§5.2. Процедуры
- •Правила использования подпрограмм
- •Рекурсия
- •Директивы
- •Процедурные типы
- •Пример использования подпрограмм
- •Контрольные вопросы
- •Глава 6. Структурированные типы данных
- •§6.1. Массивы
- •§6.2. Строки
- •§6.3. Записи
- •§6.4. Множества
- •Пример использования множеств
- •§6.5. Файлы
- •Установочные и завершающие операции
- •Операции ввода-вывода
- •Перемещения по файлу
- •Пример работы с файлом
- •Обработка ошибок ввода-вывода
- •Специальные операции
- •Пример объединения двух файлов
- •Текстовые файлы
- •Стандартные текстовые файлы
- •Файлы без типа
- •Контрольные вопросы
- •Глава 7. Динамические структуры данных §7.1. Динамические переменные
- •§7.2. Указатели
- •Работа с динамическими переменными
- •Пример двухсвязанного циклического списка
- •Указатели без типа
- •Контрольные вопросы
- •Глава 8. Низкоуровневые возможности Паскаля §8.1. Язык Ассемблер
- •§8.2. Доступ к аппаратуре Доступ к памяти
- •Доступ к портам ввода-вывода
- •Работа по прерываниям
- •Контрольные вопросы
- •Глава 9. Модули §9.1. Основные понятия
- •§9.2. Использование модулей
- •§9.3. Стандартные модули
- •§9.4. Модуль Crt
- •Работа с экраном в текстовом режиме
- •Работа с клавиатурой
- •Работа со звуком
- •§9.5. Модуль dos
- •§9.6. Графический режим монитора
- •Контрольные вопросы
- •Глава 10. Введение в объектно-ориентированное программирование §10.1. История развития программирования
- •Понятие объекта
- •§10.2. Свойства объектов
- •Раннее и позднее связывание
- •§10.3. Виртуальные методы
- •Конструкторы и деструкторы
- •§10.4. Динамические объекты
- •Скрытые поля и методы
- •Контрольные вопросы
- •Литература
§3.5. Перечисляемый тип
Часто в программах число используется не в качестве арифметической величины, а как указатель некоторого элемента множества. В Паскале предусмотрена возможность называть элементы множества своими именами, то есть можно определить новый тип путем явного перечисления всех его возможных значений, причем каждое такое значение будет определяться только именем. Считается, что значения перечисляемого типа указаны в порядке возрастания, начиная с нулевого, поэтому над этими элементами можно выполнять операции отношения. Причем наиболее часто используются операции = и .
При описании этого типа используется список, заключенный в круглые скобки, а его значения (константы) являются именами:
(<имя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;
Так как диапазоны есть подмножества других типов, то для них определены и соответствующие операции.
Дополнительные типы в Delphi
В Delphi определен новый тип данных – денежный, описываемый словом Currency. Он аналогичен вещественному формату Comp, не имеющему дробной части. Здесь же добавлено 4 значащих цифры после запятой, то есть точность вычислений составляет 0.0001.
К логическому типу добавлено еще 3 разновидности для совместимости со стандартами Windows: ByteBool, WordBool, LongBool, с занимаемой памятью соответственно 1, 2 и 4 байта.
К символьному типу добавлены типы AnsiChar и WideChar. Первый полностью аналогичен Char, хотя в Windows и используется кодировка ANSI вместо АSСII. Второй же используется для хранения символов в кодировке UNICODE с размером таблицы 65 536 символов, поэтому под каждый символ выделяется 2 байта.
Контрольные вопросы
Что такое тип переменной?
Что означает выражение «типизированный язык программирования»?
Перечислите служебные слова, которыми в Турбо-Паскале обозначаются целые типы со знаком, каков их размер?
Каков диапазон короткого целого со знаком?
Каков приблизительно диапазон стандартного целого со знаком?
Каков приблизительно диапазон длинного целого со знаком?
Перечислите служебные слова, которыми в Турбо-Паскале обозначаются целые типы без знака, каков их размер?
Каков диапазон беззнакового однобайтного целого?
Каков приблизительно диапазон беззнакового двухбайтного целого?
Что такое целая константа?
Какие системы счисления используются и как обозначаются в Турбо-Паскале?
Какие операции используются над целыми значениями?
Какие две операции предназначены только для целого типа данных?
Кроме арифметических, какие еще группы операций можно использовать над целыми данными?
Какова точность представления (в количестве цифр мантиссы) и занимаемый объем памяти для вещественных чисел типа Real?
Какова точность представления (в количестве цифр мантиссы) и занимаемый объем памяти для вещественных чисел типа Single?
Какова точность представления (в количестве цифр мантиссы) и занимаемый объем памяти для вещественных чисел типа Double?
Какова точность представления (в количестве цифр мантиссы) и занимаемый объем памяти для вещественных чисел типа Extended?
Какова точность представления (в количестве цифр мантиссы) и занимаемый объем памяти для вещественных чисел типа Comp?
Как представляются константы с фиксированной точкой?
Как представляются константы с плавающей точкой?
Запишите три формы представления числа «двойка».
Какие операции используются над вещественными значениями?
Какое служебное слово используется для описания логических переменных?
Как записываются логические константы?
Перечислите четыре логические операции, используемые в Турбо-Паскале.
Как выполняются логические операции над целыми данными?
Перечислите операции отношения (сравнения).
Какой тип результата дают операции отношения?
Какое служебное слово используется для описания литерных (символьных) переменных?
Какая кодировочная таблица используется в Турбо-Паскале?
Как обычно записываются символьные константы, отображаемые на экране монитора?
Как записываются любые символьные константы?
Как записываются управляющие коды в виде литерных констант?
Какие операции можно выполнять над литерными данными?
В каких целях используется перечисляемый тип?
Как описываются значения перечисляемого типа?
Что такое свойство различимости для перечисляемого типа?
Что такое свойство упорядоченности для перечисляемого типа?
В каких целях используются диапазоны?
Что такое дискретный тип?
Какой простой тип нельзя использовать как базовый в диапазонах?
Какие операции допускается использовать для интервальных типов?
