- •СОДЕРЖАНИЕ
- •Раздел 1. ОБЩИЕ СВЕДЕНИЯ О ПРОГРАММНОМ ОБЕСПЕЧЕНИИ
- •1.1. Принцип программного управления
- •1.2. Автоматическое выполнение команд программы
- •1.3. Этапы постановки и решения задачи на компьютере
- •1.4. Назначение и классификация языков программирования
- •1.4.1. Машинно-ориентированные языки
- •1.4.2. Машинно-независимые языки
- •1.5. Структура программного обеспечения
- •1.5.1. Системы программирования
- •1.5.2. Операционные системы
- •Раздел 2. ОСНОВЫ АЛГОРИТМИЗАЦИИ
- •2.1. Алгоритм и его свойства
- •2.2. Способы описания алгоритмов
- •2.2.1. Словесное описание
- •2.2.2. Графическое описание
- •2.2.3. Запись на алгоритмическом языке
- •2.3. Разновидности структур алгоритмов
- •2.3.1. Линейный вычислительный процесс
- •2.3.2. Разветвляющийся вычислительный процесс
- •2.3.3. Циклический вычислительный процесс
- •Раздел 3. СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ
- •3.1. Теория структурного программирования
- •3.2. Реализация структурного проектирования в современных языках программирования
- •3.3. Преобразование неструктурированных программ в структурированные
- •3.3.2. Метод введения переменной состояния
- •3.3.3. Метод булевого признака
- •3.4. Способы графического представления структурированных схем алгоритмов
- •3.4.1. Метод Дамке
- •3.4.2. Схемы Насси-Шнейдермана
- •Раздел 4. АЛГОРИТМИЧЕСКИЙ ЯЗЫК ПРОГРАММИРОВАНИЯ ПАСКАЛЬ
- •4.1. Общая характеристика языка Паскаль
- •4.2. Алфавит языка Паскаль
- •4.3. Основные понятия языка
- •4.3.1. Идентификаторы
- •4.3.2. Комментарии
- •4.4. Структура простейшей программы
- •4.5. Способы описания синтаксиса
- •4.5.2. Синтаксические диаграммы
- •Раздел 5. ОСНОВНЫЕ ТИПЫ ДАННЫХ
- •5.1. Классификация данных
- •5.2. Стандартные скалярные типы данных
- •5.2.1. Целочисленные типы
- •Формат
- •5.2.2. Вещественные типы
- •Функция
- •5.2.3. Символьный тип (тип Char)
- •5.2.4. Логический тип (тип Boolean)
- •Функция
- •5.3. Выражения
- •5.4. Оператор присваивания
- •Раздел 6. СТРУКТУРА ПРОГРАММЫ
- •6.1. Программный модуль
- •6.2. Раздел меток
- •6.3. Раздел констант
- •6.4. Раздел типов
- •6.5. Раздел переменных
- •6.6. Раздел операторов
- •Раздел 7. ОПЕРАТОРЫ
- •7.1. Составной оператор
- •7.2. Программирование линейных и разветвляющихся структур алгоритмов
- •7.2.1. Оператор перехода Goto
- •7.2.2. Условный оператор If
- •7.2.3. Оператор варианта (выбора) Case
- •7.2.4. Пустой оператор
- •7.3. Программирование циклических структур алгоритмов
- •7.3.1. Оператор цикла с параметром (оператор For)
- •7.3.2. Оператор цикла с постусловием
- •7.3.3. Оператор цикла с предусловием
- •7.3.4. Операторы Continue и Leave
- •Раздел 8. СТРУКТУРИРОВАНИЕ И ОФОРМЛЕНИЕ ПРОГРАММ
- •Раздел 9. ОПИСАННЫЕ СКАЛЯРНЫЕ ТИПЫ
- •9.1. Перечислимый скалярный тип
- •9.2. Тип диапазон
- •10.1. Массивы
- •10.1.1. Задание массивов
- •10.1.2. Действия над элементами массивов
- •10.1.3. Действия над массивами
- •10.1.4. Типизованные константы типа массив
- •10.2. Строковые данные
- •10.2.1. Строковые константы
- •10.2.2. Строковые переменные
- •10.2.3. Встроенные функции, определенные над данными типа String
- •ЛИТЕРАТУРА
End;
Case Den Of
Pn: Writeln (‘ПОНЕДЕЛЬНИК’); Vt: Writeln (‘ВТОРНИК’);
Sr: Writeln (‘СРЕДА’); Ch: Writeln (‘ЧЕТВЕРГ’); Pt: Writeln (‘ПЯТНИЦА’); Sb: Writeln (‘СУББОТА’);
Vs: Writeln (‘ВОСКРЕСЕНЬЕ’) End;
---------------------------------------------------
9.2. Тип диапазон
Этот тип данных называют еще ограниченным типом или
интервальным типом.
Тип диапазон задается путем накладывания ограничений на уже заданный или стандартный тип, называемый базовым типом. В качестве базового типа могут быть использованы скалярные типы, обладающие свойством перенумерованности (т.е. все скалярные типы, кроме вещественных).
Тип диапазон определяется в программе так, как представляет рисунок
9.2.
<Тип_диапазон_скалярного_типа> ::=
<Константа1> .. <Константа2>
Рисунок 9.2 – Синтаксическая диаграмма задания типа диапазон
Здесь <Константа1>, <Константа2> – это константы того базового типа, на основании которого вводится данный ограниченный тип. <Константа1> задает минимальное значение типа диапазон. <Константа2> задает максимальное значение типа диапазон.
Значение <Константы1> должно быть не более значения <Константы2>. Тип диапазон является перенумерованным. Порядковый номер элемента
совпадает с порядковым номером этого элемента в базовом типе.
Тип диапазон может быть определен либо в разделе типов, либо с помощью описания переменных в разделе Var.
170
Пример 9.6.
Объявление типа диапазон (применительно к примеру 9.1 предыдущего подраздела).
Type
Ned = (Pn, Vt, Sr, Ch, Pt, Sb, Vs);
God = (Yan, Fev, Mar, Apr, May, Iyn, Iyl, Avg, Sen, Oct, Nob, Dec);
Rabdn = Pon .. Pyat; |
{базовый тип Ned} |
|
Vesna = Mar .. May; |
{базовый тип God} |
|
Leto = Iyn .. Avg; |
{базовый тип God} |
|
Int = –100 .. 50; {базовый тип ShortInt} |
Здесь базовый тип опреде- |
|
Ch = ‘A’ .. ‘Z’; {базовый тип Char} |
ляется видом записи и |
|
Var |
|
величиной константы. |
|
|
|
Den: Ned; |
|
|
Vix: Sub .. Vos; |
|
|
Trud: Rabdn; |
|
|
Vs: Vesna; |
Объявления переменных с помощью явного |
|
Lt: Leto; |
задания типа с именем в разделе Type |
|
I: Int; |
|
|
Simvol: Ch; |
|
|
J: 1 .. 10; |
Объявления переменных с помощью неявного |
|
K: Integer; |
введения типа без имени |
В данном примере типы Rabdn, Vesna, Leto, Int, Ch являются типами диапазон. Переменные Vix, Trud, Vs, Lt, I, Simvol, J, K имеют тип диапазон.
Таким образом, множество значений типа диапазон принадлежит множеству значений базового типа. К значениям типа диапазон применимы все операции и функции, определенные над значениями базового типа.
Тип диапазон совместим со своим базовым типом, т.е. значения типа диапазон могут использоваться везде, где могут использоваться значения базового типа.
В одном и том же выражении могут быть использованы переменные как типа диапазон, так и соответствующего ему базового типа.
Тип диапазон совместим с базовым типом и по присваиванию, но лишь при условии, что значение, присваиваемое переменной ограниченного типа, принадлежит соответствующему диапазону.
171
Пример 9.7.
Совместимость типа диапазог с базовым типом (применительно к предыдущему примеру).
Den := Sub;
Trud := Pred (Den); {Trud станет равным Pyat, это входит в диапазон
Rabdn}
Vix := Sub;
K := Ord (Vix); {К станет равным пяти (как в базовом типе)}
Но если в данном примере исходное значение Den := Vos, то оператор
Trud := Pred (Den)
вызовет ошибку при выполнении программы. Если Trud := Pyat, то оператор
Den := Succ (Trud)
установит значение Den в Sub, что входит в диапазон значений переменной
Den.
Достоинства типа диапазон:
1)позволяет транслятору экономнее использовать память при представлении значений переменных;
2)обеспечивает возможность контроля как на этапе трансляции, так и во время выполнения программы за корректностью присваиваний, что помогает исправлять ошибки в программе;
3)обеспечивает наглядную форму представления решаемой задачи.
Тип диапазон широко применяется в комплексе с производными типами, в частности, в задачах обработки массивов.
172