- •СОДЕРЖАНИЕ
- •Раздел 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
- •ЛИТЕРАТУРА
3)метод применим к программам любой структуры (разветвляющимся и циклическим);
4)возможно автоматическое применение данного метода.
Недостатки метода:
1)структурированная форма схемы алгоритма сильно отличается от топологии исходной схемы, что затрудняет ее понимание;
2)дополнительные затраты времени на анализ и установку значений переменной сосотояния;
3)громоздкость результирующей схемы.
3.3.3. Метод булевого признака
Сущность метода булевого признака заключается в следующем.
Впрограмму, содержащую циклы, вводится некоторый признак. Начальное значение признака задаётся до цикла. Цикл выполняется, пока признак сохраняет своё исходное значение. Значение признака изменяется при наличии некоторых условий внутри цикла.
Рассмотрим применение метода булевого признака на примере преобразования неструктурированной схемы, которую представляет рисунок
3.16.
Схема алгоритма (см. рисунок 3.16) не является структурированной, поскольку входящий в нее цикл (блоки 1, 2, 3) содержит один вход и два выхода. На данной схеме в блоках 1 и 2 записаны некоторые условия, определяющие выполнение того или иного участка вычислений. Данные условия обозначены как номера блоков 1 и 2. Значения 1 и 0 возле выходов символов «Решение» соответствуют логическим значениям «да» и «нет».
Всоответствии с рассматриваемым методом в исходную схему вводится признак (например, J). Схема приобретает структурированный вид и легко реализуется конструкциями обобщенного цикла и принятия двоичного решения
(рисунок 3.17).
Принцип доказательства того, что данная схема является структурированной, подробно рассмотрен в пп. 3.3.1 – 3.3.2.
Рисунок 3.17 схематично иллюстрирует шаги последовательности преобразований Бома-Джакопини:
1)блок 4, функциональный блок J := 1 → блок I;
2)блоки 2, 3, I → блок II;
3)блок 5, функциональный блок J := 1 → блок III;
4)блоки 1, II, III → блок IV;
5)условный блок (решение) J = 1, блок IV → блок V;
6)блоки J := 0, V → блок VI.
64
1 |
|
1 |
|
|
|
|
0 |
|
2 |
1 |
5 |
|
||
|
0 |
|
3 |
|
4 |
Рисунок 3.16 – Исходная неструктурированная схема |
Каждый из этих шагов преобразований на схеме (см. рисунок 3.17) показан пунктирным функциональным блоком.
Достоинства метода булевого признака:
1)компактность, экономичность;
2)топология исходной схемы изменяется незначительно.
Недостаток метода булевого признака: метод предназначен для использования только в циклах.
Иногда можно обойтись без специального признака, используя те условия, которые уже есть в исходной схеме.
Например, рассмотренную исходную неструктурированную схему можно представить так, как иллюстрирует рисунок 3.18.
На данном рисунке условие «(1 и 2) = 0» означает одновременное равенство нулю условий, записанных в блоках 1 и 2 исходной неструктурированнтй схемы (см. рисунок 3.16). Таким образом, тело цикла 3 будет выполнено в том случае, если оба условия 1 и 2 не выполняются.
65
VI |
|
|
|
|
J := 0 |
|
|
V |
|
|
|
|
J=1 |
да |
Выход |
|
|
||
|
нет |
|
|
IV |
|
1 |
|
|
1 |
|
|
|
|
|
|
|
0 |
|
III |
|
|
|
|
II |
0 |
1 |
5 |
|
|
||
|
2 |
|
|
|
|
I |
|
|
3 |
4 |
J := 1 |
|
|
J := 1 |
|
|
Рисунок 3.17 − Структурированная форма исходной схемы, |
||
|
преобразованная по методу булевого признака |
66