I relativi costrutti prendono diversi nomi nei vari linguaggi e in dipendenza dalle loro caratteristiche: procedure, subroutine, sottoprogrammi, funzioni, metodi, messaggi.
È pratica comune organizzare i programmi in più porzioni ognuna delle quali risolva un ben definito sottoproblema. I relativi costrutti prendono diversi nomi nei vari linguaggi e in dipendenza dalle loro caratteristiche: procedure, subroutine, sottoprogrammi, funzioni, metodi, messaggi. In ogni caso si tratta di blocchi di codice delimitati con precisione, in genere identificati con un nome e che si comportano come un piccolo programma in miniatura: elaborano dati e forniscono un risultato seguendo un determinato algoritmo. Sono definiti in un punto del programma e possono essere richiamati in altri punti. In corrispondenza della chiamata (detta anche invocazione o attivazione), l’esecuzione del programma salta al codice della procedura, lo esegue e poi riprende dall’istruzione successiva. La procedura può restituire un valore e può avere effetti collaterali, come modificare il valore di una variabile o effettuare delle operazioni di I/O ( input/output). Molti linguaggi utilizzano il termine funzione quando viene restituito un valore, procedura negli altri casi. A volte (come in C o in Java) le procedure sono considerate un caso speciale di funzioni il cui valore di ritorno sia irrilevante.