- •СОДЕРЖАНИЕ
- •Раздел 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
- •ЛИТЕРАТУРА
Раздел закрывается точкой с запятой (;).
Раздел может быть пустым (может отсутствовать), только если в модуле нет меток.
Метки в разделе меток могут быть перечислены в произвольном порядке. Например, для примера 6.1:
Label 5, M1;
6.3. Раздел констант
Если в программе некоторые константы используются многократно, то удобно присвоить им имя.
Например,
e := 2.71;
Такое присвоение удобно сделать один раз и далее в программе обращаться к константе уже по имени.
Присвоение константе имени выполняется в разделе описания констант. Раздел начинается служебным словом Const и имеет формат, который иллюстрирует рисунок 6.6.
<Раздел_констант> ::=
Const <Описание_константы>
<Описание_типиз_константы>
Рисунок 6.6 – Синтаксическая диаграмма раздела констант
Таким образом, в разделе констант могут быть объявлены обычные (нетипизованные) константы и типизованные константы.
Формат описания нетипизованной константы представляет рисунок 6.7. Описание константы вводит идентификатор (<Ид.> на синтаксической
диаграмме), под которым подразумевается некоторое константное выражение. Тип константы определяется типом данного выражения.
Константное выражение – это выражение, вычисляемое на этапе компиляции. Константное выражение не может содержать имен переменных и типизированных констант, оператора получения адреса @ или включать
134
обращение к определенным пользователем функциям. В константных выражениях допустимо обращение к следующим стандартным функциям: Abs, Chr, Hi, Lo, Length, Odd, Ord, Pred, Ptr, Round, Sizeof, Succ, Swap, Trunc.
<Описание_константы> ::= <Ид.> = <Константное_выражение> ;
Рисунок 6.7 – Синтаксическая диаграмма описания нетипизованной константы
В константных выражениях могут быть использованы только имена констант.
Если некоторая константа используется в программе один раз, то ей можно не присваивать имя в разделе констант. В этом случае значение константы будет записываться непосредственно в выражениях раздела операторов.
Таким образом, раздел констант может быть пустым (отсутствовать).
Пример 6.2.
Объявление нетипизованных констант.
Const
E = 2.7115;
I = 10000;
Eps1 = 0.0001;
Eps2 = Eps1 / 100.0;
Pi1 = -2 * Pi;
Типизованные константы аналогичны инициализированным переменным.
Инициализированные переменные – это переменные, которым при входе в блок присваиваются начальные значения.
Различают скалярные и структурные типизованные константы. Синтаксис объявления типизованных констант представляет рисунок 6.8. На данном рисунке <Ид.> - идентификатор типизованной константы.
<Константа> представляет собой скалярную типизованную константу. Остальные виды констант – это структурные типизованные константы.
135
Структурные типизованные константы будут детально представлены в подразделах, описывающих соответствующие типы данных.
<Описание_типизованной_константы> ::= <Ид.> : <Тип> = <Типиз._константа> ;
<Типизованная_константа> ::=
<Константа>
<Константа-массив>
<Константа-запись>
<Константа-множество> <Константа-указатель>
Рисунок 6.8 – Синтаксическая диаграмма описания типизованных констант
Типизованные константы можно использовать аналогично переменным того же типа. Их значения можно изменять в процессе вычислений. Они могут использоваться в левой части оператора присваивания.
Типизованные константы инициализируются только один раз – в начале выполнения программы или подпрограммы. При каждом новом входе в подпрограмму типизованные константы заново не инициализируются.
Типизованные константы из всех подпрограмм располагаются в сегменте данных. Поэтому их общий объем ограничен 64К байтами.
Пример 6.3.
Объявление скалярных типизованных констант.
Const
MaxI: Integer = 10000;
MinI: Integer = 0;
Eps: Real = 0.0001;
Pi2: Real = 4 * Pi;
136
Типизованные константы не могут использоваться в объявлении других констант или типов.
6.4. Раздел типов
Язык Паскаль позволяет программистам наряду со стандартными типами значений вводить в употребление свои типы данных.
Каждый вводимый тип необходимо описать и присвоить ему имя. Это выполняется в разделе типов.
Раздел начинается служебным словом Type и имеет вид, который представляет рисунок 6.9.
<Раздел_типов> ::=
Type <Имя_типа> = <Тип> ;
Рисунок 6.9 – Синтаксическая диаграмма раздела типов
За словом Type следуют описания типов, разделенные точкой с запятой (;). Описание типа задает имя типа и присваиваемый ему тип. Тип определяется в соответствии с диаграммой, которую иллюстрирует рисунок 6.10.
<Тип> ::= <Имя_типа>
<Задание_типа>
Рисунок 6.10 – Синтаксическая диаграмма описания типа
Таким образом, в описании типа может быть использовано имя описанного ранее или стандартного типа (верхнее ребро синтаксической диаграммы, см. рисунок 6.10) или задан нестандартный тип данных (нижнее ребро диаграммы).
137