Тема 1.2. Разновидности структур алгоритмов
Подпрограмма – это самостоятельно оформленный фрагмент программы, к которому можно неоднократно обращаться. Для чего нужны подпрограммы?
1. Подпрограмма экономит место
2. Имеет преимущества перед повторением однотипных действий. Любое изменение (исправление ошибок, оптимизация, расширение функций) сделанные в подпрограмме автоматически отражается на всех ее вызовах, в то время как при дублировании каждое изменение необходимо вносить в каждое вхождение изменяемого кода.
3. Подпрограмма позволяет сократить размеры целостных блоков кола, составляющих программу, т.е. сделать программу более понятной и обозримой, позволяет строить сложные алгоритмы методом последовательной детализации.
Вначале подпрограмму надо описать. В описание входят:
- имя подпрограммы (оно необходимо для обращения к подпрограмме);
- список аргументов и результатов с указанием имен переменных;
- блок-схема подпрограммы, которая показывает, как из аргументов получаются результаты.
Для аргументов и результатов берут произвольные имена переменных. Поскольку при описании подпрограммы в этих переменных нет никаких значений, то они называются формальными (условными) параметрами. В блок-схеме подпрограммы участвуют формальные параметры. Если необходимо, в подпрограмму можно ввести вспомогательные переменные для промежуточных результатов.
Изображается блок обращения к подпрограмме:
При обращении к подпрограмме значения переменных для аргументов и результатов указывают фактические: аргументы, вычисленные в предыдущих действиях программы или введенные с клавиатуры, а результат – в фактических переменных объявленных в основной программе. Количество фактических аргументов и результатов должно совпадать с количеством формальных параметров в описании подпрограммы.
Между формальными и фактическими параметрами подпрограммы должны выполняться следующие правила соответствия:
1. по числу (сколько формальных, столько и фактических параметров);
2. по последовательности (первому формальному параметру соответствует первый фактический параметр, второму – второй и т.д.);
3. по типам (типы соответствующих формальных и фактических параметров должны совпадать).
Во время работы подпрограммы формальные параметры замещаются соответствующими фактическими значениями аргументов, поэтому она работает с этими значениями. Затем выполняется тело подпрограммы (команды внутри подпрограммы), после этого значение результата передается соответствующему фактическому параметру, и происходит переход к выполнению следующей команды основного алгоритма. Фактическими параметрами могут быть также значения, арифметические выражения. Результат – всегда имя переменной.
Для разных обращений к подпрограмме используют разные значения входных данных.
Результаты, полученные в подпрограмме, можно использовать в основной программе как обычные значения переменных и выполнять с ними различные арифметические о логические операции.
Пример. Оформить подпрограмму для вычисления наибольшего значения из двух величин. В основной программе ввести 4 числа и найти наибольшее из них.
Подпрограмма Основная программа
Мах (имя подпрограммы)
Арг. – х, у начало
Рез. – М
A,B,C,D
да нет Max
Арг. – A,B
Рез. – М1
Мах
М:=Х М:=У Арг. – С,D
Рез. – М2
Мах
Арг. –М1, М2
Рез. – М3
Вывод М3
конец
Формальные аргументы – х,у
Формальный результат – М
В основной программе фактические аргументы:
- в первом обращении – А,В
- во втором обращении – C,D
В третьем обращении – М1, М2
Результаты М1 и М2 первых двух обращений к подпрограмме являются аргументами для третьего обращения к этой же подпрограмме. Конечный результат – в переменной М3. Так как подпрограмма является фрагментом программы, то в ее описании отсутствуют блоки «Начало» и «Конец»
КОНТРОЛЬНЫЕ ВОПРОСЫ:
1. Дайте определение подпрограмме.
2. Как надо описывать подпрограмму?
3. Какие действия в программе надо выполнить, чтобы использовать подпрограмму?
ПРАКТИЧЕСКОЕ ЗАДАНИЕ:
Составить подпрограмму для вычисления наибольшего значения из трех величин. Ввести с клавиатуры величины a,b,c,d, e,f. Найти наибольшие значения для троек величин (a,b,c) и (d, e,f), а затем сумму этих наибольших значений вывести на экран.