End Sub. При выполнении первой подпрограммы (proc1) в этом примере происходит вызов процедуры (AcB)

 

При выполнении первой подпрограммы (proc1) в этом примере происходит вызов процедуры (AcB). При выполнении второй подпрограммы (proc2) происходит вызов функции (AiB).На рисунке 12.1 представлено окно сообщения с результатом выполнения процедуры слияния двух строк "qwe" и "asd". Точно так же будет выглядеть окно с результатом вызова функции.

 

 

Рис. 12.1. Окно сообщения с результатом выполнения примера 6

 

Необходимость разработки больших программных систем привела к появлению модульного программирования. Это такой способ программирования, при котором вся программа (точнее, проект) разбивается на составные части, называемые модулями, причем каждый из них имеет свой контролируемый размер, четкое назначение и детально проработанный интерфейс с внешней средой. Единственная альтернатива модульности – монолитная программа, конечно же, может быть удобна только при решении достаточно простых задач.

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

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

Если концепция структурного программирования предлагает некоторый универсальный алгоритмический базис, то модульное программирование состоит в разработке под конкретную задачу или круг задач (предметную область) собственного базиса в виде набора модулей, позволяющего наиболее эффективно по целому ряду критериев построить программный комплекс. Модули, входящие в базис, это целые программы (в отличие от «макрооператоров» структурного программирования – подпрограмм), решающие некоторые подзадачи и часто оформляемые в виде отдельных файлов, причём так называемые модули расширения, могут быть написаны на совершенно другом языке.

 

12.3 Рекурсивные алгоритмы *

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

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

Рекурсивная программа не может вызывать себя бесконечно, иначе она никогда не остановится, таким образом в программе (функции) должен присутствовать еще один важный элемент – так называемое терминальное условие, то есть условие при котором программа прекращает рекурсивный процесс.

Рекуррентность – это рекурсивное определение функции. Классический пример такого рода функций – факториал. Напомним, факториал нуля равен 1, а факториал натурального числа N определяется как произведение натуральных чисел от единицы до N, что выражается рекуррентной формулой: N!=N (N-1)!, для N>=1 и 0! = 1. То есть для определения факториала одного числа требуется знать или вычислить факториал другого, уменьшенного на единицу. А это, в свою очередь, может потребовать определения факториала ещё меньшего числа. И так далее, до единицы. Этому напрямую соответствует нижеследующая рекурсивная функция:

 

Function factorial(N As Integer) As Long

If N=0 Then factorial=1 Else factorial=N*factorial(N-1)