Структурное и модульное программирование
Императивное программирование– это исторически первая методология программирования, которой пользовался каждый программист, программирующий на любом из «массовых» языков программирования – Бейсик, Паскаль, Си. Она ориентирована на классическую фон Неймановскую модель, остававшуюся долгое время единственной аппаратной архитектурой. Методология императивного программирования характеризуется принципом последовательного изменения состояния вычислителя пошаговым образом.
Императивное программирование наиболее пригодно для решения задач, в которых последовательное исполнение каких-либо команд является естественным. Примером здесь может служить управление современными аппаратными средствами. Поскольку практически все современные компьютеры императивны, эта методология позволяет порождать достаточно эффективный исполняемый код.
Однако с ростом сложности задач программы становятся все более объёмными и менее читаемыми. Поэтому программирование и отладка больших программ, написанных исключительно на основе методологии императивного программирования, может затянуться на долгие годы.
Структурноепрограммирование, являясь развитием императивной методологии, зиждется на двух основных принципах: последовательная декомпозиция алгоритма решения задачи и использование структурного кодирования. Идея структурного программирования заключается в том, что структура программы должна отражать структуру решаемой задачи, чтобы алгоритм решения был ясно виден из текста программы.
Последовательная декомпозиция алгоритма решения задачи представляет собой так называемое нисходящее проектирование («сверху вниз») и предполагает разложение общей функции обработки данных на более простые функциональные элементы, подзадачи, каждая из которых также разбивается на более детальные до тех пор, пока алгоритм решения всей задачи не будет реализован в терминах языка программирования.
Структурное кодирование заключается в использовании только трех основных управляющих алгоритмических конструкций, каждая из которых имеет по одному входу и выходу, и их суперпозиции. Оператор безусловного перехода (GOTO) в структурном программировании не используется, так как он порождает трудно отслеживаемые при отладке связи.
С целью уменьшения сложности разработки программного обеспечения в технологии структурного программирования вводится понятие подпрограммы(программы в программе) – набора операторов, выполняющих нужное действие и не зависящих от других частей программы. Подпрограммы бывают двух видов –процедуры и функции. Процедура выполняет группу операторов (над некоторыми операндами), а функция, кроме того, возвращает (то есть передаёт обратно) в точку вызова вычисленное значение определённого типа.
Данные передаются подпрограмме в виде параметров или аргументов. Параметры, которые указываются в тексте заголовка, называются формальными. Они нужны только для формальногоописаниятела подпрограммы. При выполнении программы, в момент вызова подпрограммы, подставляются конкретные значения (или ссылки на значения – переменные) –фактическиепараметры (см., в котором происходит слияние двух строк "qwe" и "asd"). Приведём код подпрограмм (модуль «Пример6_ПроцедураФункция»), вызов которых используется в этом примере:
Sub proc1()
Dim s$
'Вызов процедуры AcB с параметрами s, "qwe", "asd"
Call AсB(s, "qwe", "asd")
MsgBox s
End Sub
'Объявление процедуры AсB с параметрами c$, a$, b$
Sub AсB(c$, a$, b$)
c = a + b
End Sub
'Объявление функции AiB с параметрами a$, b$
Function AiB(a$, b$) As String
AiB = a + b
End Function
Sub proc2()
Dim s$
'Вызов функции AiB с параметрами "qwe", "asd"
s = AiB("qwe", "asd")
MsgBox s
End Sub
При выполнении первой подпрограммы (proc1) в этом примере происходит вызов процедуры (AcB). При выполнении второй подпрограммы (proc2) происходит вызов функции (AiB).На рисунке 12.1 представлено окно сообщения с результатом выполнения процедуры слияния двух строк "qwe" и "asd". Точно так же будет выглядеть окно с результатом вызова функции.
Рис. 12.50. Окно сообщения с результатом выполнения примера 6
Необходимость разработки больших программных систем привела к появлению модульного программирования. Это такой способ программирования, при котором вся программа (точнее, проект) разбивается на составные части, называемые модулями, причем каждый из них имеет свой контролируемый размер, четкое назначение и детально проработанный интерфейс с внешней средой. Единственная альтернатива модульности – монолитная программа, конечно же, может быть удобна только при решении достаточно простых задач.
Концепция модульного программирования является основой всех современных подходов к проектированию и реализации программных систем. В то же время суть ее проста и отражает широко известные научные и технические методы, заключающиеся в поиске и реализации некоторого базового набора элементов, комбинации которых дают решение всех задач из определенного круга.
С применением модульного программирования появляются возможности коллективной разработки программ как набора «независимых» частей, последовательного уменьшения сложности методом разбиения сложной задачи на более простые подзадачи и, наконец, возможности повторного использования созданного ранее кода, в том числе применение восходящего («снизу вверх») проектирования.
Если концепция структурного программирования предлагает некоторый универсальный алгоритмический базис, то модульное программирование состоит в разработке под конкретную задачу или круг задач (предметную область) собственного базиса в виде набора модулей, позволяющего наиболее эффективно по целому ряду критериев построить программный комплекс. Модули, входящие в базис, это целые программы (в отличие от «макрооператоров» структурного программирования – подпрограмм), решающие некоторые подзадачи и часто оформляемые в виде отдельных файлов, причём так называемые модули расширения, могут быть написаны на совершенно другом языке.
- Информатика
- Режим доступа к электронному аналогу печатного издания: http://www.Libdb.Sssu.Ru
- Содержание
- Предисловие
- Основные понятия информатики
- Понятие информации
- Свойства информации
- Понятие количества информации
- Предмет и задачи информатики
- Информационное общество
- Вопросы и тестовые задания для самоконтроля
- Системы счисления и представление информации в эвм
- Представление (кодирование) данных
- Понятие об основных системах счисления
- Перевод чисел из одной системы счисления в другую
- Представление чисел в различных системах счисления
- Двоичная арифметика
- Арифметические действия над двоичными числами
- Представление чисел в эвм
- Примеры представления целых чисел в шестнадцатиразрядных двоичных кодах
- Представление десятичных чисел в четырёхразрядном коде Грея
- Кодирование информации в эвм
- Базовая таблица кодировки ascii
- Вопросы и тестовые задания для самоконтроля
- Логические основы построения эвм
- Основы алгебры логики
- Операции сравнения
- Примеры операторов сравнения в разных языках программирования
- Логические операции
- Основные логические операторы
- Результаты, возвращаемые логическими операциями
- Основы элементной базы эвм
- Условные обозначения и диаграммы работы логических элементов
- Rs-триггер
- Элементы теории множеств
- Элементы теории графов
- Типы вершин блок-схем алгоритмов
- Вопросы и тестовые задания для самоконтроля
- Технические средства реализации информационных процессов
- История развития эвм
- Классификация эвм
- Архитектура эвм
- Состав персонального компьютера
- Внешние устройства
- Вопросы и тестовые задания для самоконтроля
- Системное программное обеспечение эвм
- Базовые понятия ос
- Классификация операционных систем
- Файловая структура эвм
- Примеры общепринятых расширений для популярных типов файлов
- Файловые системы Microsoft Windows
- Драйверы устройств
- Служебные программы
- Обзор операционных систем unix и Linux
- Обзор операционных систем Windows
- Вопросы и тестовые задания для самоконтроля
- Прикладное и инструментальное программное обеспечение
- Прикладное программное обеспечение общего назначения
- Прикладное программное обеспечение специального назначения
- Инструментальное по
- Нумерация версий программ
- Правовой статус программ
- Текстовые редакторы и процессоры
- Программы подготовки презентаций
- Вопросы и тестовые задания для самоконтроля
- Электронные таблицы
- Основные понятия электронных таблиц Excel
- Ввод, редактирование и форматирование данных
- Вычисления в таблицах
- Диаграммы
- Вопросы и тестовые задания для самоконтроля
- Модели решения функциональных и вычислительных задач
- Моделирование как метод познания
- Классификация моделей
- Классификация видов моделей
- Компьютерное моделирование
- Информационные модели
- Примеры информационных моделей
- Базы данных
- Искусственный интеллект
- Вопросы и тестовые задания для самоконтроля
- Основы алгоритмизации
- Основные этапы компьютерного решения задач
- Понятие алгоритма и его свойства
- Исполнители алгоритмов
- Способы описания алгоритмов
- Обозначение и функциональное назначение наиболее часто употребляемых символов в схемах данных и программ
- Базовые управляющие структуры алгоритмов (основные алгоритмические конструкции)
- 2) Альтернатива (ветвление);
- 3) Итерация1 (цикл).
- Алгоритмы линейной структуры
- Алгоритмы ветвящейся структуры
- Алгоритмы циклической структуры
- Способы комбинации базовых управляющих структур (основных алгоритмических конструкций)
- Примеры комбинации основных алгоритмических структур
- Вопросы и тестовые задания для самоконтроля
- Основы программирования на языках высокого уровня
- Основные понятия языков программирования
- Примеры использования имён
- Операторы в арифметических и логических выражениях
- Типы данных и операторы описания переменных
- Некоторые базовые типы переменных
- Описание переменных в разных языках
- Синтаксис операторов описания сложных типов переменных
- Основные операторы
- Синтаксис некоторыхоператоров
- Вопросы и тестовые задания для самоконтроля
- Основные операторы языка visual basic for applications
- Оператор присваивания
- Примеры использования оператора присваивания
- Условный операторIf … then
- Оператор выбора варианта*
- Операторы цикла
- Оператор циклаFor … next
- Математические функции
- Краткие сведения о математических функциях в vba и Паскале
- Функции обработки строк*
- Краткие сведения о строковых функциях
- Функции преобразования данных
- Краткие сведения о функциях преобразования данных
- Вопросы и тестовые задания для самоконтроля
- Технологии программирования
- Концепция программирования
- Характеристика трудоёмкости разработки программ
- Структурное и модульное программирование
- Рекурсивные алгоритмы *
- Объектно-ориентированное программирование
- Вопросы и тестовые задания для самоконтроля
- Языки и системы программирования
- Уровни языков программирования
- Системы программирования
- Классификация языков программирования
- Процедурные языки программирования
- Объектно-ориентированные языки
- Декларативные языки
- Языки программирования для баз данных и компьютерных сетей
- Языки моделирования *
- Вопросы и тестовые задания для самоконтроля
- Основные понятия компьютерной графики
- Виды компьютерной графики
- Графические форматы
- Цветовые модели *
- Программные средства создания растровых изображений
- Программы векторной графики
- Программные средства обработки трехмерной графики
- Вопросы и тестовые задания для самоконтроля
- Основные понятия баз данных
- Задачи, решаемые с помощью баз данных
- Классификация бд
- Реляционная модель данных
- Свойства полей базы данных
- Типы данных
- Безопасность и объекты баз данных
- Проектирование баз данных *
- Вопросы и тестовые задания для самоконтроля
- Средства автоматизации проектных, опытно-конструкторских и научно-исследовательских работ.
- Задачи, решаемые с помощью систем автоматического проектирования
- Программные продукты MathWorks
- Сапр в легкой промышленности
- Вопросы и тестовые задания для самоконтроля
- Основы компьютерных сетей
- Основы передачи данных
- Назначение и классификация сетей
- Сетевая модель osi/iso
- Сетевое оборудование
- Основные стандарты и протоколы
- Т Вопросы и тестовые задания для самоконтроля
- Глобальная сеть интернет
- Подключение к Интернет
- Службы Интернет
- Поиск информации в Интернете
- Наиболее известные и популярные поисковые системы
- Поиск с использованием языка запросов *
- Логические операторы
- Вопросы и тестовые задания для самоконтроля
- Основы информационной безопасности
- Угрозы информационной безопасности
- Методы и средства защиты информации
- Правовые основы информационной безопасности
- Ответственность за преступления в области информационных технологий
- Криптографические механизмы защиты информации
- Компьютерные вирусы и вредоносные программы
- Методы защиты от вирусов
- Вопросы и тестовые задания для самоконтроля
- Библиографический список
- Учебное издание информатика Учебное пособие