- •Информатика Учебно-методическое пособие
- •Часть 1
- •Режим доступа к электронному аналогу печатного издания: http://www.Libdb.Sssu.Ru
- •Содержание
- •Предисловие
- •11. Основные требования фгос впо и структура дисциплины
- •2Основные понятия информатики
- •2.1. Понятие информации
- •2.2. Свойства информации
- •Понятие количества информации
- •2.4. Предмет и задачи информатики
- •2.5. Представление (кодирование) данных
- •3. Системы счисления и представление информации в эвм
- •3.1. Понятие об основных системах счисления
- •3.2. Перевод чисел из одной системы счисления в другую
- •Представление чисел в различных системах счисления
- •3.3. Двоичная арифметика
- •3.4. Представление чисел в эвм
- •Примеры представления целых чисел в шестнадцатиразрядных двоичных кодах
- •Представление десятичных чисел в четырёхразрядном коде Грея
- •3.5. Кодирование информации в эвм
- •Базовая таблица кодировки ascii
- •4. Логические основы построения эвм
- •4.1. Основы алгебры логики
- •4.2. Операции сравнения
- •4.3. Логические операции
- •Основные логические операторы
- •4.4. Основы элементной базы эвм
- •4.5. Элементы теории множеств
- •4.6. Элементы теории графов
- •3Технические средства реализации информационных процессов
- •5.1. История развития эвм
- •5.2. Классификация эвм
- •5.3. Архитектура эвм
- •5.4. Состав персонального компьютера
- •5.5. Внешние устройства
- •6. Программное обеспечение эвм
- •6.1. Базовые понятия ос
- •6.2. Классификация операционных систем
- •6.3. Файловая структура эвм
- •6.4. Файловые системы Microsoft Windows
- •6.5. Драйверы устройств
- •6.6. Служебные программы
- •6.7. Обзор операционных систем unix и Linux
- •6.8. Обзор операционных систем Windows
- •Команды ms-dos и их описание
- •7. Прикладное и инструментальное программное обеспечение
- •7.1. Прикладное программное обеспечение общего назначения
- •7.2. Прикладное программное обеспечение специального назначения
- •7.3. Инструментальное по 1
- •7.4. Нумерация версий программ
- •7.5. Правовой статус программ
- •7.6. Текстовые редакторы и процессоры
- •8. Модели решения функциональных и вычислительных задач
- •8.1. Моделирование как метод познания
- •8.2. Классификация моделей
- •8.3. Компьютерное моделирование
- •8.4. Информационные модели
- •8.5. Примеры информационных моделей
- •8.6. Базы данных
- •8.7. Искусственный интеллект
- •9. Основы алгоритмизации
- •9.1. Понятие алгоритма
- •9.2. Свойства алгоритма
- •9.3. Исполнители алгоритмов
- •9.4. Способы описания алгоритмов 1
- •Обозначения, название и функциональное назначение
- •9.5. Основные алгоритмические конструкции
- •9.6. Структурный подход к разработке алгоритмов
- •10. Тематика практических занятий
- •11. Темы, выносимые на зачёт, и примеры тестовых заданий
- •Библиографический список
- •Часть 1
- •3 46500, Г. Шахты, Ростовская обл., ул. Шевченко, 147
9.6. Структурный подход к разработке алгоритмов
Реальные алгоритмы и вычислительные процессы представляют собой совокупность всех рассмотренных базовых структур. Все базовые структуры имеют один вход и один выход. Таким образом, любую базовую структуру можно представить в виде функционального модуля, также имеющего один вход и один выход (рис. 22). Для графического изображения функциональных модулей в схемах алгоритмов используется символ предопределённого процесса.
Рис. 22. Преобразование базовых структур
Совокупность функциональных модулей, в свою очередь, может образовывать рассмотренные выше базовые структуры, которые также могут быть представлены в виде функциональных модулей (в качестве примера на рисунке 22 приведено преобразование базовой структуры следования, состоящей из функциональных модулей в один функциональный модуль). Говоря другими словами, одна базовая структура может быть вложена в другую базовую структуру. Последовательное объединение базовых структур в функциональные модули в конечном итоге приводит к тому, что любой алгоритм может быть представлен одним функциональным блоком-модулем. При этом преобразование является дуальным, т.е. возможно и обратное преобразование.
При разработке любого алгоритма первоначально определяются исходные данные, требуемый результат и основные этапы, приводящие к решению поставленной задачи. При дальнейшей разработке необходимо придерживаться принципа постепенной детализации функциональных модулей, из которых составлялся первоначальный вариант алгоритма. Такая разработка алгоритмов получила название нисходящего («сверху вниз») проектирования, пример которого показан на рисунке 23.
Рис. 23. Нисходящее проектирование
Процесс проектирования начинается с составления спецификации и проектирования головного алгоритма. Затем для каждого функционального модуля головного алгоритма в свою очередь определяются спецификации и выполняется проектирование. Процесс продолжается до достижения приемлемого уровня детализации. При этом, в отличие от восходящего проектирования, заключающегося в объединении функциональных модулей в единый алгоритм, изменение в спецификациях, вызванных изменениями в более высокой иерархии алгоритма, менее вероятно.
Таким образом, функциональный модуль представляет собой совокупность логически связанных операций или функциональных модулей, выполняющих некоторое законченное действие. В теории алгоритмов доказано, что любой алгоритм можно представить композицией всего лишь четырёх базовых структур: СЛЕДОВАНИЕ, ВЕТВЛЕНИЕ, ЦИКЛ-ДО и ЦИКЛ-ПОКА. Строгое структурное проектирование определяет использование только этих структур (при этом следует отметить, что рассмотренная выше структура обход не является базовой). Однако в практике проектирования алгоритмов часто возникают типовые ситуации, такие, например, как досрочный выход из цикла, обход и прочие. Они легко преобразуются в структурные схемы, однако часто при этом теряется наглядность алгоритма (рис. 24).
Рис. 24. Преобразование неструктурного алгоритма
Поскольку нестандартные алгоритмы также имеют один вход и выход, то нестрогое структурное проектирование допускает их разумное использование.
В качестве примера структурного подхода рассмотрим решение следующей задачи.
Вывести на печать таблицу значений функции , где значение x изменяется в диапазоне от до с шагом ; для функции, имеющей вид:
Разработка алгоритма начинается с выделения основных этапов. Первоначально можно выделить два этапа: ввод исходных данных и вычисление таблицы значений функции. Проанализировав задачу и определив исходные данные для её решения, составим спецификацию на алгоритм для первого уровня детализации.
Назначение: построение таблицы значений функции.
Метод решения: неизвестен (определяется функциональным модулем).
Входные данные: n, y, xmin, xmax, x.
Выходные данные: определяются функциональным модулем.
Построим алгоритм по данной спецификации (рис. 25а). Выполним детализацию функционального модуля 3. Построение таблицы значений функции f (x, y) состоит из цикла с параметром x. В теле цикла, в зависимости от значения x, вычисление ведётся по одному из двух выражений, т.е. внутри цикла имеет место ветвление (на данном этапе можно было бы ограничиться лишь циклом, однако предлагаемый уровень детализации не ухудшает наглядность алгоритма).
Назначение: построение таблицы значений функции.
Метод решения: ветвление в цикле.
Входные данные: n, y – для вычисления выражений; xmin, xmax, x – параметры цикла.
Выходные данные: значения f(x, y) для каждого значения х.
Алгоритм, раскрывающий функциональный модуль 3 и разработанный с учётом вышеприведённой спецификации, приведён на рисунке 25б. Дальнейшей детализации требуют блоки 3 и 4. Алгоритмы для расчёта суммы в обоих случаях идентичны и представляют собой цикл, в котором выполняется суммирование и вычисление очередного значения y.
Назначение: вычисление значения функции.
Метод решения: суммирование в цикле.
Входные данные: n – верхний предел суммирования;
x – значение первой переменной;
y – значение второй переменной.
Выходные данные: значение f(x, y).
Перед началом цикла (рис. 25в, г) обнуляется значение переменной f, а значение переменной z, введенной для рекуррентного подсчёта yi, приравнивается значению y. Переменная z введена для того, чтобы не изменилось исходное значение y.
Рис. 25. Подетальная разработка алгоритма