- •Ф.Ф. Павлов языки программирования
- •Санкт-Петербург
- •230201 - Информационные системы и технологии
- •Тема 2 посвящена изучению жизненного цикла программы и основным этапам решения задач на эвм.
- •Тема 4 изучает типы пользовательских интерфейсов, классификацию диалогов и основные компоненты графических пользовательских интерфейсов.
- •Тема 8 посвящена структурам данных фиксированного размера (массивы), а также типам данных, определяемых пользователем (структуры, объединения, перечисления).
- •Тема 10 изучает динамические структуры данных: виды и способы реализации списков, динамическое выделение памяти.
- •Тема 12 затрагивает вопросы обработки файлов данных: понятия записи, файла данных и способы доступа, операции и средства обработки файлов, контроль операций обработки файлов.
- •Тема 14 вводит в технологию объектно-ориентированного программирования.
- •Раздел I Принципы программирования на языках высокого уровня
- •Тема 1. Эволюция языков программирования
- •1.1. Неструктурированное, «стихийное» программирование
- •1.2. Процедурное (модульное) программирование
- •1.3. Объектно-ориентированное программирование
- •1.4. Компонентные технологии программирования
- •Тема 2. Жизненный цикл программы и основные
- •2.1. Дружественность, жизненный цикл программы
- •2.2. Постановка задачи и спецификация программы
- •2.3. Проектирование и реализация программы
- •2.4. Способы записи алгоритма
- •2.5. Критерии качества программы
- •3.1. Классификация программных продуктов
- •3.3. Модели программирования в ms-dos и Windows
- •Тема 4. Диалоговые программы
- •4.1. Типы пользовательских интерфейсов
- •4.2. Классификация диалогов и их реализация
- •4.3. Основные компоненты графических
- •Тема 5. Программа на языке высокого уровня
- •5.1. Структура программы и функции
- •5.2. Стандартные типы данных и операции над ними
- •5.3. Адресные типы данных: указатели и ссылки
- •5.4. Стандартные библиотеки языка
- •5.5. Классы памяти
- •Раздел 2 Управляющие структуры и структуры данных
- •Тема 6. Представление управляющих структур
- •6.1. Структура следования
- •6.2. Структуры ветвления
- •6.3. Структуры повторения
- •Int kol, //счетчик введенных оценок
- •Int god; //число лет
- •Тема 7. Адресные типы данных
- •7.1. Указатели
- •7.2. Ссылки
- •Тема 8. Структуры данных фиксированного размера
- •8.1. Массивы
- •8.2. Типы данных, определяемые пользователем
- •Тема 9. Функции (процедуры)
- •9.1. Определение, прототип и вызов функции
- •9.2. Передача параметров
- •9.3. Программирование рекурсивных алгоритмов
- •Тема 10. Динамические структуры данных
- •10.1. Списки: основные виды и способы реализации
- •10.2. Динамическое выделение памяти
- •Раздел 3 Процедурное программирование
- •Тема 11. Ввод/вывод данных
- •11.1. Видеофункции библиотеки conio.H
- •11.2. Функции библиотеки потокового ввода/вывода
- •Тема 12. Обработка файлов данных
- •12.1. Записи и файлы данных
- •12.2. Операции и средства обработки файлов
- •12.3. Контроль операций обработки файлов
- •Тема 13 Технология процедурного программирования
- •13.1. Способы конструирования программ
- •13.2. Проектирование программы: методы декомпозиции и и модульного программирования
- •13.3. Реализация программы: методы структурного
- •Тема 14. Введение в технологию объектно-
- •14.1. Основные понятия объектно-ориентированного
- •14.2. Проектирование программы
- •14.3. Реализация программы
- •Утверждаю
- •Рабочая программа
- •Технология программирования
- •Санкт-Петербург
- •Тема 1. Технология программирования и этапы ее
- •Тема 2. Жизненный цикл программы и основные этапы
Тема 13 Технология процедурного программирования
13.1. Способы конструирования программ
Наиболее распространённым методом программирования является традиционный метод процедурного программирования (говорят еще структурного программирования), который базируется на модели построения программы как иерархии функций. Процедурное программирование основано на использовании следующих методов (приёмов программирования).
Метод функциональной декомпозиции
Программа логически разделяется на функциональные части – функции согласно ,например, опциям меню, затем эти части делятся дальше на функции согласно выполняемым операциям, например, ввода, вывода, обработки и т.д. Принцип декомпозиции заключается в выделении общего фрагмента нескольких функций в новую функцию нижнего уровня. Таким образом, программа представляет собой иерархию функций.
Метод модульной организации
Функции и данные группируются в модули, которые программируются и компилируются отдельно. Преимущества данного метода заключаются в параллельной и независимой работе программистов, удобстве программирования, возможности создания библиотек.
Модульное программирование напоминает метод функциональной декомпозиции. Определяется состав и подчиненность функций, затем – набор и подчиненность модулей, реализующих эти функции. Один и тот же модуль может реализовать однотипные функции. Программа представляет собой иерархию модулей.
Метод структурного программирования функций
Данный метод используется при программировании функций. Этот метод заключается в следующем:
- разделение функций на вложенные блоки, что позволяет локализовать переменные, структурировать функцию;
- использование операторов ветвления и циклов, осуществляющих передачу управления только сверху - вниз, что приводит к ясности алгоритма, к облегчению программирования и сопровождения программ; операторы безусловной передачи управления использовать не рекомендуется (говорят «позорный goto») , программы с использованием данных операторов программисты называют «спагетти».
- форматирование текста функции: использование отступов для отображения вложенности объектов, применение идентификаторов, несущих смысл, и использование комментариев, что приводит к повышению читабельности программ и к облегчению их сопровождения; читается, что «тактика непрозрачности программ - плохая идея».
Рассмотрим способы конструирования программ методом процедурного программирования.
Процедурное (еще говорят структурное) программирование позволяет создавать программы более простые для понимания, чем не структурированные, более простые для проверки, отладки, модификации.
Произвольное соединение отдельных символов блок-схем может привести к неструктурированным программам. Следовательно, профессиональное программирование заключается в выборе комбинаций символов блок-схем , соответствующих ограниченному множеству управляющих структур, и в построении структурированных программ соответствующим комбинированием управляющих структур двумя простыми способами.
Для упрощения используются только структуры с единственным входом и единственным выходом, т.е. имеющие только одну точку входа и одну точку выхода. Это упрощает формирование структурированных программ последовательным соединением управляющих структур: выход одной структуры подключается непосредственно к входу следующей, т.е. управляющие структуры просто размещаются в программе одна за другой. Такой способ соединения называется «пакетированием управляющих структур». Правила конструирования структурированных программ позволяют также вкладывать структуры друг в друга.
Рассмотрим правила конструирования структурированных программ:
Начинайте с простейшей блок-схемы.
Каждый прямоугольник (действие) может быть замещен двумя последовательными прямоугольниками (действиями).
Каждый прямоугольник (действие) может быть замещен любой управляющей структурой (следования, if, if/else, switch, while, do/while, for).
Правила 2 и 3 могут применяться неограниченно и в любой последовательности.
Эти правила полагают, что символ прямоугольника на блок-схеме может использоваться дл того, чтобы указать любые действия, включая ввод и вывод информации.
Применение правил всегда приводит к структурированной блок-схеме, сконструированной исключительно по принципу компоновки из стандартных блоков. Например, повторное применение правила 2 к простейшей блок-схеме приводит к структурированной блок-схеме, содержащей множество последовательных прямоугольников. Отметим, что правило 2 генерирует пакет управляющих структур; это правили можно назвать правилом пакетирования.
Правило 3 называется правилом вложения. Повторное применение правила 3 к простейшей блок схеме приводит к блок-схеме исключительно вложенных управляющих структур. Например, прямоугольник простейшей блок -схемы сначала замещается структурой двойного выбор (if/else). Затем правило 3 снова применяется к обоим прямоугольникам в структуре двойного выбора, заменяя каждый из них новой структурой двойного выбора.
Правило 4 позволяет конструировать большие, сложные структуры с произвольным уровнем вложенности.
Блок-схемы, возникающие в результате применения правил, составляют множество всех возможных структурированных блок-схем и , следовательно, всех возможных структурированных программ.
Преимущество структурного подхода в том, что мы используем всего семь структур с одним входом и одним выходом и соединяем их всего двумя простыми способами. Частично перекрывающиеся стандартные блоки не могут появиться в структурированных блок-схемах, поскольку игнорируется оператор goto.
Если следовать правилам конструирования, неструктурированные блок-схемы не могут быть созданы. Если вы сомневаетесь, является ли некоторая блок-схема структурированной, примените правила в обратной последовательности и попытайтесь свернуть блок-схему в простейшую. Если блок-схема свернется в простейшую, значит исходная блок-схема структурирована, в противном случае – нет.
Итак, мы рассмотрели, как составлять функции и программы из управляющих структур. Основной структурной единицей программ при процедурном программировании является функция.
Разработка программы задачи состоит из этапов постановки задачи, определения спецификаций, проектирования программы, реализация программы.