Ein Unterprogramm ist ein Teil eines Computerprogramms, das eine bestimmte Funktionalität bereitstellt. Es kann von anderen Programmen/Programmteilen aufgerufen werden, um eine Aufgabe zu übernehmen und verzweigt danach wieder an die aufrufende Stelle zurück. Ein Unterprogramm wird i. d. R. durch einen Bezeichner (z. B. einen Namen) identifiziert, und ihm können zur Verarbeitung Daten als Argumente übergeben werden.[1]
Bezüglich der Terminologie kennt man aus der Praxis einen großen Reichtum an Varianten, die teilweise synonym, teilweise mit semantischen Unterschieden angewendet werden.[1] Bezeichnungen wie Prozedur (procedure), Funktion (function), Routine oder Subroutine, Operation, Section, Modul sind teils historisch und oft im Umfeld verschiedener Programmiersprachen entstanden, entsprechen aber im Wesentlichen der Bedeutung ‚Unterprogramm‘ oder werden so genannt. So sind im Kontext der objektorientierten Programmierung Methoden (methods) – je nach Programmiersprache – einer Klasse, einem Objekt oder einer generischen Funktion als in sich abgeschlossene Einheiten zugeordnet.
Bezüglich der Erstellung, Wartung und Ausführung können Unterprogramme je nach Art der Implementierung eigenständige Komponenten sein (‚Unterprogramme‘ im engeren Sinn, die oft vorübersetzt in Programmbibliotheken zusammengefasst sind) oder, zusammen mit anderen Funktionsteilen, den Programmcode eines bestimmten Programms bilden.