Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛекцииЯзыки прогрИб.doc
Скачиваний:
27
Добавлен:
12.11.2019
Размер:
922.11 Кб
Скачать

1.2. Процедурное (модульное) программирование

В результате исследовательских работ 60-70-ых годов XX века была разработана технология процедурного (говорят еще структурного, модульного программирования), внесшая ясность в написание программ, простоту тестирования и отладки, легкость модификации. Технология процедурного программирования – это дисциплинированный подход к написанию программ по сравнению с неструктурированными программами. Процедурное программирование основано на модели построения программы как иерархии подпрограмм (процедур), отсюда и название метода.

Для изучения процедурного программирования в 1971 году Н. Виртом был создан язык программирования Pascal, нашедший большое применение в университетах. На протяжении 70-ых годов создавался язык С на базе концепции предшествующих двух языков – BCPL и B, разработанных для написания компиляторов и операционных систем. Язык C получил широкую популярность в результате его использования в разработке операционной системы UNIX. В конце 70-ых был создан «классический» язык Кернигана и Ритчи. На этом языке были написаны фактически все новые операционные системы и системные программные продукты.

Технология процедурного программирования основана на использовании следующих методов (приёмов) программирования:

  1. Метод декомпозиции (нисходящего проектирования), т.е. разделение программы на подпрограммы простейшей структуры и представление программы в виде иерархии подпрограмм.

  2. Метод модульной организации, т.е. группировка подпрограмм и обрабатываемых ими данных в модули, которые программируются и компилируются отдельно. Преимущества данного метода заключаются в параллельной и независимой работе программистов, удобстве программирования, возможности создания библиотек.

  3. Метод структурного программирования подпрограмм.

Метод структурного программирования заключается в следующем:

  • разделение подпрограммы на вложенные блоки, что позволяет локализовать переменные и операторы их обработки, структурировать подпрограмму;

  • использование операторов ветвления и циклов, осуществляющих передачу управления только сверху - вниз, что приводит к ясности алгоритма, к облегчению программирования и сопровождения программ; операторы безусловной передачи управления использовать не рекомендуется;

  • форматирование текста подпрограммы, т.е. использование отступов для отображения вложенности блоков, применение идентификаторов, несущих смысл, и использование комментариев, что приводит к повышению читабельности программ и к облегчению их сопровождения.

Наиболее известными процедурными языками программирования являются PL1, ALGOL-68, Pascal, C, C++.

Проектирование и реализация информационных систем в экономике и управлении привело к появлению больших по объему программ и к необходимости использования различных собственных типов данных пользователя, например, структур данных, представляющих собой совокупность реквизитов документов.

В связи с этим, проявились недостатки технологии процедурного программирования:

  • Программы не всегда объективно отражают объекты реального мира, и поэтому не могут быть повторно используемыми. Поэтому в каждом новом проекте приходится программировать все сначала и получать похожие программы, т.е. каждый новый проект трактуется как новая задача. А хотелось бы считать новый проект как расширение чего-то созданного.

  • Обнаружились сложности сопровождения и модификации больших программ, когда 80% стоимости программного обеспечения приходится на эти этапы. Появилось стремление к созданию программ, которые лучше организованы, более понятны, и которые легче сопровождать и модифицировать.

Процедурное программирование не обеспечивает в достаточной степени абстракции данных. Потребовался основной принцип абстрактного типа данных: никакие другие подпрограммы, кроме специальных, не должны иметь доступа к этим данным. Для реализации абстрактного типа данных был предложен новый тип - класс, как совокупность данных и подпрограмм.