Что такое подпрограммы? В чем их преимущества?
Подпрограмма — это именованный фрагмент программы, который выполняет отдельную задачу и может вызываться из разных мест программы.
В разных языках подпрограммы могут называться процедурами, функциями, методами или routines. Главная идея одна: выделить часть логики в самостоятельный блок.
Зачем нужны подпрограммы
Без подпрограмм большая программа быстро превращается в длинную последовательность команд. Ее трудно читать, проверять и изменять.
Подпрограммы позволяют разбить задачу на части.
Например, вместо одного большого алгоритма можно выделить:
- чтение входных данных;
- проверку корректности;
- вычисление результата;
- вывод результата.
Основные преимущества
1. Повторное использование
Если действие нужно выполнить несколько раз, его не нужно копировать. Достаточно вызвать подпрограмму.
function printLine() {
console.log("----------");
}
printLine();
console.log("Отчет");
printLine();function printLine(): void {
console.log("----------");
}
printLine();
console.log("Отчет");
printLine();package main
import "fmt"
func printLine() {
fmt.Println("----------")
}
func main() {
printLine()
fmt.Println("Отчет")
printLine()
}public class Example {
static void printLine() {
System.out.println("----------");
}
public static void main(String[] args) {
printLine();
System.out.println("Отчет");
printLine();
}
}def print_line():
print("----------")
print_line()
print("Отчет")
print_line()2. Уменьшение дублирования
Одинаковый код в нескольких местах опасен: если нужно изменить поведение, придется менять все копии.
Подпрограмма хранит логику в одном месте.
3. Улучшение читаемости
Хорошее имя подпрограммы объясняет, что делает блок кода.
Например, calculateAverage понятнее, чем набор арифметических команд внутри основного алгоритма.
4. Модульность
Программу можно разрабатывать по частям. Один разработчик пишет обработку данных, другой — интерфейс, третий — работу с файлами.
5. Упрощение тестирования
Небольшую подпрограмму легче проверить отдельно.
Можно вызвать ее с разными входными данными и убедиться, что результат правильный.
6. Сокрытие деталей
Код, который вызывает подпрограмму, может не знать, как именно она работает внутри. Ему важен интерфейс: имя, параметры и результат.
Параметры и результат
Подпрограмма может принимать параметры.
function square(x) {
return x * x;
}function square(x: number): number {
return x * x;
}func square(x int) int {
return x * x
}public class Example {
static int square(int x) {
return x * x;
}
}def square(x):
return x * xЗдесь x — параметр, а результат возвращается оператором return.
Подпрограммы и декомпозиция
Декомпозиция — разбиение сложной задачи на более простые подзадачи. Подпрограммы являются основным инструментом декомпозиции в программировании.
Требования к хорошей подпрограмме
Хорошая подпрограмма:
- решает одну понятную задачу;
- имеет ясное имя;
- не слишком длинная;
- имеет понятный набор параметров;
- не зависит от лишних внешних данных;
- возвращает предсказуемый результат.
Вывод
подпрограммы помогают структурировать программу, избегать дублирования, повторно использовать код, упрощать тестирование и делать систему понятнее.
Источники
- Семакин И.Г. Основы программирования и баз данных. Учебник. - М.: Академия, 2014. - 224 с.
- Симонова Е.В. Структуры данных в C#. Линейные и нелинейные динамические структуры. - Лань, 2018. - 152 с.
- Бертран Мейер. Почувствуй класс. Учимся программировать хорошо с объектами и контрактами. - М.: Национальный Открытый Университет "ИНТУИТ": БИНОМ. Лаборатория знаний, 2011. - 775 с.
- Мэтт Вайсфельд. Объектно-ориентированное мышление. - СПб.: Питер, 2014. - 304 с.
- Ривест Р., Штайн К., Лейзерсон Ч., Кормен Т. Алгоритмы: построение и анализ. - М.: Вильямс, 2007. - 1296 с.
- Стивенс Род. Алгоритмы. Теория и практическое применение. - М.: Эксмо, 2017. - 544 с.
- Рублев В.С. Основы теории алгоритмов. - 2-е издание, исправленное. - М.: Научный мир, 2008. - 128 с.
- Гольдберг Г.Л. Основы алгоритмизации и программирования. - М.: Академия, 2012. - 384 с.
- Лаврищева И.В. Технология программирования. - М.: Горячая линия - Телеком, 2011. - 400 с.
- Сергеев И.С., Сухоруков А.И., Шестаков А.А. Программирование: учебник для вузов. - М.: БИНОМ. Лаборатория знаний, 2013. - 512 с.