Subrutina

Diagrama del funcionament d'una subrutina.

En computació, una subrutina o subprograma, com a idea general, es presenta com un subalgorisme que forma part de l'algorisme principal, el qual permet resoldre una tasca específica. Alguns llenguatges de programació, com Visual Basic, .NET o Fortran, utilitzen el nom "funció" per referir-se a subrutines que retornen un valor.

En llenguatges programació diferents una subrutina pot ser anomenada procediment, una funció, una rutina, un mètode, o un subprograma. A vegades s'utilitza el terme genèric unitat exigible.[1]

Una subrutina en ser cridada dins d'un programa fa que el codi principal es detingui i es dirigeixi a executar el codi de la subrutina, en canvi quan es parla d'una macro, el compilador pren el codi de la macro i l'implanta al lloc on va ser escrita la macro, augmentant així el codi font i per tant l'objecte.

Maurice Wilkes, David Wheeler, i Stanley Gill se'ls atribueix la invenció d'aquest concepte, que van denominar-lo com una subrutina tancada,[2][3] en contrast de la subrutina oberta o macro.[4]

Elements de la declaració d'una subrutina

[modifica]

Les declaracions de subrutines generalment són especificades per:

  • Un nom únic a l'àmbit: nom de la funció amb el qual s'identifica i es distingeix de les altres. No hi podrà haver una altra funció ni procediment amb aquest nom (excepte sobrecàrrega o polimorfisme en programació orientada a objectes).
  • Un tipus de dada de retorn: tipus de dada del valor que la subrutina retornarà en acabar la seva execució.
  • Una llista de paràmetres: especificació del conjunt d'arguments (poden ser zero, un o més) que la funció ha de rebre per realitzar la seva tasca.
  • El codi o ordres de processament: conjunt d'ordres i sentències que ha d'executar la subrutina.

Exemples

[modifica]
PROGRAMA principal  instrucció 1  instrucció 2  ...  instrucció N  ...  Subrutina NombreX  .......  FI subrutina  ...  FI PROGRAMA principal. 

La següent funció en C és l'analogia al càlcul de la mitjana matemàtica. La funció "Mitjana" retorna un valor decimal corresponent a la suma de 2 valors enters d'entrada (A i B):

float Mitjana (int A, int B){  float r;  r = (A+B)/2.0;  return r; } 

Així una subrutina anomenada "Mitjana (3,5)" retornarà el valor de tipus real (float) 4,0.

Referències

[modifica]
  1. U.S. Election Assistance Commission. «Definitions of Words with Special Meanings». Voluntary Voting System Guidelines, 2007. Arxivat de l'original el 2012-12-08. [Consulta: 14 gener 2013].
  2. Wheeler, D. J.. «The use of sub-routines in programmes». A: Proceedings of the 1952 ACM national meeting (Pittsburgh) on - ACM '52, 1952, p. 235. DOI 10.1145/609784.609816. 
  3. Wilkes, M. V.; Wheeler, D. J.; Gill, S. Preparation of Programs for an Electronic Digital Computer. Addison-Wesley, 1951. 
  4. Dainith, John. «"open subroutine." A Dictionary of Computing. 2004..». Encyclopedia.com. [Consulta: 14 gener 2013].

Vegeu també

[modifica]