При решении сложных объемных задач часто целесообразно разбивать их на более простые подзадачи. Метод последовательной детализации позволяет составить программу из действий, которые сами представляют собой достаточно самостоятельные программы. В этом случае говорят о подпрограммах.
Подпрограмма – это часть программы, оформленная в виде отдельной синтаксической конструкции и снабженная именем.
Использование подпрограмм позволяет сделать основную программу более наглядной, понятной, а в случае, когда одна и та же последовательность команд встречается в программе несколько раз, даже более короткой и эффективной.
«Вызов» подпрограммы, то есть выполнение заданных в подпрограмме действий, может быть произведен в некоторой точке основной программы посредством указания имени подпрограммы.
ПРИМЕР 9.Составить программу для нахождения общих элементов, содержащихся в двух заданных векторах. Эти векторы должны являться аргументами функции. Значением функции должен быть вектор, составленный из элементов, которые содержатся в первом и втором векторах.
Для решения этой задачи составить подпрограмму, определяющую, содержится ли число x в векторе v (1 - содержится, 0 - не содержится):
- пусть число в векторе не содержится
- проверяем каждый элемент y вектора v
- если элемент вектора = x, то t = 1
- возвращаем результат в основную программу
Основная программа сравнивает вектора v и w и возвращает вектор u, содержащий их общие элементы:
- № первого элемента вектора u
- проверяем каждый элемент x вектора v
- если x содержится в векторе w, то…
- присвоить значение x элементу вектора u с номером i
- увеличиваем порядковый номер на 1
- результат выполнения функции
Например, векторы и имеют общие элементы .
ЗАДАНИЕ 25. Составить программу вычисления корней квадратного уравнения ax2+bx+c=0. В качестве исходных параметров берутся значения коэффициентов a, b, c. Если дискриминант меньше нуля, то значением функции должно быть число 1000, в противном случае значение функции - вектор, содержащий корни уравнения. Оформите вычисление корней в виде отдельной подпрограммы.