Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Цикл лабораторных работ по курсу.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.58 Mб
Скачать

5Методы процедурного программирования

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

Гораздо позже появилось объектно-ориентированное программирование (ООП), которое позволяет группировать функции и данные в единой сущности — «объекте». Чтобы объектно-ориентированный подход «работал», объект должен представлять собой законченную, интуитивно понятную сущность. То есть, объект — это нечто большее, чем просто «группировка» функций и данных.

Нельзя сказать, что объектный подход всегда лучше процедурного.

Как и любой образ мыслей, объектно-ориентированный подход может быть удобен или не удобен, в зависимости от ситуации.

Бывают задачи, в которых сложно выделить сущность. Например, «алгоритм нахождения наибольшего общего делителя». В нём есть два числа и численные операции над ними.

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

Назначение цикла ЛР по курсам «Основы программирования» и «Информатика» - приобретение студентами практических умений и навыков процедурного программирования на языке C++.

6Модульное проектирование

       Каждому известны два наиболее важных параметра программ: память и время выполнения. Однако существует еще один параметр, который необходимо учитывать, — время разработки, которое зависит от сложности программы. Сложность определяется размерностью программы и ее структурой (количеством ветвлений и циклов). Чем сложнее программа, тем труднее ее контролировать, тестировать, отлаживать и вносить изменения в процессе эксплуатации. Ограничив параметр сложности, мы можем получить намного легче поддающийся управлению процесс разработки надежных программ.

Существуют два подхода к обеспечению надежности: проведение исчерпывающего тестирования либо обеспечение высокого качества системы на всех стадиях разработки. Для большой программы невозможно провести исчерпывающего тестирования из-за огромного числа возможных вариантов ее выполнения, поэтому приходится управлять сложностью программ.         Метод, обычно используемый для управления сложностью, заключается в том, что процесс или структуру разбивают на небольшие, легко управляемые части, которые комбинируют для получения определенной функции. Такой подход используется во всех организациях: военных, административных и промышленных. Например, армия состоит из дивизий, дивизия – из полков, полки – из батальонов, и так далее.

Управлении сложностью программы включает следующие шаги:

  • модульное проектирование;

  • структурное программирование (управление сложностью в пределах каждого модуля);

Увеличение сложности программы не пропорционально увеличению ее размера. При увеличении размера программы вдвое сложность может возрасти в четыре и более раз.

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

Модули оформляются в виде отдельного файла, тестируются независимо от других модулей и могут включаться в программы на С++, например, с помощью оператора #include, что дает возможность составлять из модулей систему с более сложной структурой.

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

       Разбиение на модули и метод проектирования сверху вниз (это понятие объясняется ниже) позволяют нам контролировать сложность системы, определяя ее различные уровни. Детали нижнего уровня могут игнорироваться при выполнении текущего уровня, если нет необходимости в соответствующей этому уровню информации. Например, если выполняется основная программа и встретился вызов подпрограммы, печатающей заголовки некоторых сообщений, то можно пропустить эту подпрограмму и продолжать следовать логике основной программы. Если же заголовки запрограммированы как часть основной программы, то неизбежно выполнение этой части программы.         Следующий шаг в управлении общей сложностью — управление сложностью в пределах каждого модуля; этот процесс обычно называется структурным программированием.